nixos-configs/nixosModules/gnome.nix

82 lines
2.4 KiB
Nix

{
lib,
config,
pkgs,
...
}:
{
options.my.gnome = {
enable = lib.mkEnableOption "GNOME desktop environment";
keep-default-apps = lib.mkEnableOption "keep gnome default apps";
};
config = lib.mkIf config.my.gnome.enable (
lib.mkMerge [
{
# Workaround for GDM 50 + NixOS 26.05: greeter PAM session strips PATH so
# gdm-wayland-session can't find `gnome-session` and exits 70.
# https://github.com/NixOS/nixpkgs/issues/523332 — drop once #523948 lands.
security.pam.services.gdm-launch-environment.rules.session.env-greeter = {
control = "required";
modulePath = "${config.security.pam.package}/lib/security/pam_env.so";
settings.conffile = pkgs.writeText "gdm-launch-environment-env-conf" ''
PATH DEFAULT="''${PATH}:${pkgs.gnome-session}/bin"
XDG_DATA_DIRS DEFAULT="''${XDG_DATA_DIRS}:/run/current-system/sw/share"
'';
settings.readenv = 0;
order = 12200;
};
services = {
xserver.excludePackages = [ pkgs.xterm ];
# Enable the GNOME Desktop Environment.
displayManager.gdm = {
enable = true;
debug = true;
};
desktopManager.gnome = {
enable = true;
extraGSettingsOverridePackages = [ pkgs.mutter ];
extraGSettingsOverrides = ''
[org.gnome.mutter]
experimental-features=['scale-monitor-framebuffer']
'';
};
gnome = {
tinysparql.enable = false;
localsearch.enable = false;
sushi.enable = true;
};
};
programs = {
dconf.enable = true;
gpaste.enable = true;
};
}
(lib.mkIf (!config.my.gnome.keep-default-apps) {
environment.gnome.excludePackages = with pkgs; [
cheese # photo booth
epiphany # web browser
evince # document viewer
geary # email client
gnome-maps
gnome-weather
gnome-tour
sysprof
orca # screen reader
gnome-weather
gnome-backgrounds
gnome-user-docs
yelp # help app
gnome-music
totem # video player
snapshot # camera
baobab # disk usage
];
})
]
);
}