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)
      ++
      [
        "appindicatorsupport@rgcjonas.gmail.com"
        "arcmenu@arcmenu.com"
        "dash-to-dock@micxgx.gmail.com"
        "ding@rastersoft.com"
        "flypie@schneegans.github.com"
        "Hide_Activities@shay.shayel.org"
        "pop-shell@system76.com"
        "top-bar-organizer@julian.gse.jsts.xyz"
        #"ubuntu-dock@ubuntu.com"
        "Vitals@CoreCoding.com"
        "user-theme@gnome-shell-extensions.gcampax.github.com"
      ];
...

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