Apply xfconf settings via home-manager in .nix

I’m using NixOS with XFCE environment, and I’m deploying my configuration by flakes.

In the past, I used GNOME as desktop environment with my dconf settings that have been deployed by home-manager like:

  home-manager.users.${username} = { pkgs, ...}: {
    home.packages = gnomeExtensionsList ++ fontList;

    dconf.settings = {
      "org/gnome/shell".disable-user-extensions = false;
      "org/gnome/shell".enabled-extensions = (map (extension: extension.extensionUuid) gnomeExtensionsList)

Now, in XFCE I would like to deploy xfconf settings via .nix file that can be manually applied by the following commands:

    xfconf-query -c xsettings -p /Net/ThemeName -s "$theme_name"
    xfconf-query -c xsettings -p /Net/IconThemeName -s "$icon_theme"
    xfconf-query -c xsettings -p /Gtk/CursorThemeName -s "$cursor_theme"
    xfconf-query -c xfwm4 -p /general/theme -s "Everblush-xfwm"

    # Iterate through the monitors and set the wallpaper
    for x in $(xfconf-query -c xfce4-desktop -lv | grep last-image | awk '{print $1}'); do xfconf-query -c xfce4-desktop -p $x -s $background_theme; done

Is there a similar approach like dconf.settings of GNOME for xconf settings in XFCE?

Have you seen xfconf.settings in the Home Manager manual?

Yes. I used it and it works. Thank you

1 Like