Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save Spencerx/7bf73131d6e84839bbdeffb12b040013 to your computer and use it in GitHub Desktop.

Select an option

Save Spencerx/7bf73131d6e84839bbdeffb12b040013 to your computer and use it in GitHub Desktop.
A sensible NixOS Xfce configuration

A sensible NixOS Xfce Configuration

NixOS provides good support for the Xfce desktop environment out-of-the-box, but the defaults are minimal. The files in this Gist provide a more complete experience, including a suite of basic software and plugins as well as an optional home-manager configuration for theming.

The key additions to the default Xfce provided by NixOS are:

  • MATE calculator app
  • MATE PDF viewer app
  • Complete bluetooth / audio support with panel indicators and apps
  • GParted app
  • GTK font manager app
  • Firefox and Thunderbird apps
  • Chromium app (which supports PWAs like Microsoft Teams)
  • Catfish file search app
  • Xfburn optical media app
  • Gigolo remote access app
  • Xfce dictionary app
  • Xfdashboard launcher
  • xwinmosaic window filter / navigator
  • Whisker menu
  • various system monitoring / weather panel plugins
  • elementary Xfce icon themes
  • zuki gtk / xfwm themes
  • Thunar plugins for volume, archive, and media library management
  • Support for GNOME keyring and services
  • GDM for rootless Xorg
{ config, pkgs, lib, ... }:
{
imports = [
./hardware-configuration.nix
./xfce.nix
];
# the rest of your nixos configuration
}
{ config, pkgs, lib, ... }:
{
imports = [
./xfce-home.nix
];
# the rest of your home-manager configuration
}
{ config, pkgs, lib, ... }:
{
gtk = {
enable = true;
iconTheme = {
name = "elementary-Xfce-dark";
package = pkgs.elementary-xfce-icon-theme;
};
theme = {
name = "zukitre-dark";
package = pkgs.zuki-themes;
};
gtk3.extraConfig = {
Settings = ''
gtk-application-prefer-dark-theme=1
'';
};
gtk4.extraConfig = {
Settings = ''
gtk-application-prefer-dark-theme=1
'';
};
};
programs.gpg.enable = true;
services.gpg-agent.enable = true;
}
{ config, pkgs, lib, ... }:
{
environment = {
systemPackages = with pkgs; [
blueman
chromium
elementary-xfce-icon-theme
firefox
font-manager
gparted
hunspell
hunspellDicts.en-us
libreoffice
mate.atril
mate.mate-calc
orca
pavucontrol
thunderbird
xfce.catfish
xfce.gigolo
xfce.xfburn
xfce.xfce4-appfinder
xfce.xfce4-clipman-plugin
xfce.xfce4-cpugraph-plugin
xfce.xfce4-dict
xfce.xfce4-fsguard-plugin
xfce.xfce4-genmon-plugin
xfce.xfce4-netload-plugin
xfce.xfce4-panel
xfce.xfce4-pulseaudio-plugin
xfce.xfce4-systemload-plugin
xfce.xfce4-weather-plugin
xfce.xfce4-whiskermenu-plugin
xfce.xfce4-xkb-plugin
xfce.xfdashboard
xfce.xfdesktop
xwinmosaic
zuki-themes
];
};
hardware = {
pulseaudio.enable = false;
bluetooth.enable = true;
};
programs = {
dconf.enable = true;
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
thunar = {
enable = true;
plugins = with pkgs.xfce; [
thunar-archive-plugin
thunar-media-tags-plugin
thunar-volman
];
};
};
security.pam.services.gdm.enableGnomeKeyring = true;
services = {
blueman.enable = true;
gnome.gnome-keyring.enable = true;
pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
};
xserver = {
enable = true;
excludePackages = with pkgs; [
xterm
];
displayManager.gdm.enable = true;
desktopManager.xfce.enable = true;
};
};
sound = {
enable = true;
mediaKeys.enable = true;
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment