diff options
author | Sandro <sandro.jaeckel@gmail.com> | 2022-04-13 11:37:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-13 11:37:32 +0200 |
commit | a39694b41fbe25e59c38bfab2b0cb6d29c56cc54 (patch) | |
tree | aeabc6dc770bc1daab67a41bcca85571c0e37613 /nixos | |
parent | f34f8a3a1814082de73bfe00d432e4792a307504 (diff) | |
parent | 28539842d8c2b4a41c7ab4b31da5eeae828dbe2f (diff) | |
download | nixpkgs-a39694b41fbe25e59c38bfab2b0cb6d29c56cc54.tar nixpkgs-a39694b41fbe25e59c38bfab2b0cb6d29c56cc54.tar.gz nixpkgs-a39694b41fbe25e59c38bfab2b0cb6d29c56cc54.tar.bz2 nixpkgs-a39694b41fbe25e59c38bfab2b0cb6d29c56cc54.tar.lz nixpkgs-a39694b41fbe25e59c38bfab2b0cb6d29c56cc54.tar.xz nixpkgs-a39694b41fbe25e59c38bfab2b0cb6d29c56cc54.tar.zst nixpkgs-a39694b41fbe25e59c38bfab2b0cb6d29c56cc54.zip |
Merge pull request #168194 from SuperSandro2000/xserver-excludePackages
Xserver exclude packages
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/lib/utils.nix | 16 | ||||
-rw-r--r-- | nixos/modules/services/x11/desktop-managers/cinnamon.nix | 4 | ||||
-rw-r--r-- | nixos/modules/services/x11/desktop-managers/gnome.nix | 10 | ||||
-rw-r--r-- | nixos/modules/services/x11/desktop-managers/lxqt.nix | 2 | ||||
-rw-r--r-- | nixos/modules/services/x11/desktop-managers/mate.nix | 2 | ||||
-rw-r--r-- | nixos/modules/services/x11/desktop-managers/pantheon.nix | 6 | ||||
-rw-r--r-- | nixos/modules/services/x11/xserver.nix | 13 |
7 files changed, 38 insertions, 15 deletions
diff --git a/nixos/lib/utils.nix b/nixos/lib/utils.nix index 80341dd48fc..497d98aa4d1 100644 --- a/nixos/lib/utils.nix +++ b/nixos/lib/utils.nix @@ -194,6 +194,22 @@ rec { (( ! $inherit_errexit_enabled )) && shopt -u inherit_errexit ''; + /* Remove packages of packagesToRemove from packages, based on their names. + Relies on package names and has quadratic complexity so use with caution! + + Type: + removePackagesByName :: [package] -> [package] -> [package] + + Example: + removePackagesByName [ nautilus file-roller ] [ file-roller totem ] + => [ nautilus ] + */ + removePackagesByName = packages: packagesToRemove: + let + namesToRemove = map lib.getName packagesToRemove; + in + lib.filter (x: !(builtins.elem (lib.getName x) namesToRemove)) packages; + systemdUtils = { lib = import ./systemd-lib.nix { inherit lib config pkgs; }; unitOptions = import ./systemd-unit-options.nix { inherit lib systemdUtils; }; diff --git a/nixos/modules/services/x11/desktop-managers/cinnamon.nix b/nixos/modules/services/x11/desktop-managers/cinnamon.nix index 3a78a526460..a8ec5d5e590 100644 --- a/nixos/modules/services/x11/desktop-managers/cinnamon.nix +++ b/nixos/modules/services/x11/desktop-managers/cinnamon.nix @@ -196,7 +196,7 @@ in programs.evince.enable = mkDefault true; programs.file-roller.enable = mkDefault true; - environment.systemPackages = (with pkgs // pkgs.gnome // pkgs.cinnamon; pkgs.gnome.removePackagesByName [ + environment.systemPackages = with pkgs // pkgs.gnome // pkgs.cinnamon; lib.utils.removePackagesByName [ # cinnamon team apps bulky blueberry @@ -212,7 +212,7 @@ in # external apps shipped with linux-mint hexchat gnome-calculator - ] config.environment.cinnamon.excludePackages); + ] config.environment.cinnamon.excludePackages; }) ]; } diff --git a/nixos/modules/services/x11/desktop-managers/gnome.nix b/nixos/modules/services/x11/desktop-managers/gnome.nix index f87258ac8dc..35d80abb05f 100644 --- a/nixos/modules/services/x11/desktop-managers/gnome.nix +++ b/nixos/modules/services/x11/desktop-managers/gnome.nix @@ -455,7 +455,7 @@ in (mkIf serviceCfg.core-utilities.enable { environment.systemPackages = with pkgs.gnome; - removePackagesByName + lib.utils.removePackagesByName ([ baobab cheese @@ -515,7 +515,7 @@ in }) (mkIf serviceCfg.games.enable { - environment.systemPackages = (with pkgs.gnome; removePackagesByName [ + environment.systemPackages = with pkgs.gnome; lib.utils.removePackagesByName [ aisleriot atomix five-or-more @@ -536,12 +536,12 @@ in quadrapassel swell-foop tali - ] config.environment.gnome.excludePackages); + ] config.environment.gnome.excludePackages; }) # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/3.38.0/elements/core/meta-gnome-core-developer-tools.bst (mkIf serviceCfg.core-developer-tools.enable { - environment.systemPackages = (with pkgs.gnome; removePackagesByName [ + environment.systemPackages = with pkgs.gnome; lib.utils.removePackagesByName [ dconf-editor devhelp pkgs.gnome-builder @@ -550,7 +550,7 @@ in # in default configurations. # https://github.com/NixOS/nixpkgs/issues/60908 /* gnome-boxes */ - ] config.environment.gnome.excludePackages); + ] config.environment.gnome.excludePackages; services.sysprof.enable = notExcluded pkgs.sysprof; }) diff --git a/nixos/modules/services/x11/desktop-managers/lxqt.nix b/nixos/modules/services/x11/desktop-managers/lxqt.nix index 720985ba0d9..9c8bfab077a 100644 --- a/nixos/modules/services/x11/desktop-managers/lxqt.nix +++ b/nixos/modules/services/x11/desktop-managers/lxqt.nix @@ -51,7 +51,7 @@ in environment.systemPackages = pkgs.lxqt.preRequisitePackages ++ pkgs.lxqt.corePackages ++ - (pkgs.gnome.removePackagesByName + (lib.utils.removePackagesByName pkgs.lxqt.optionalPackages config.environment.lxqt.excludePackages); diff --git a/nixos/modules/services/x11/desktop-managers/mate.nix b/nixos/modules/services/x11/desktop-managers/mate.nix index 996cfb8502f..dd19d9cdff9 100644 --- a/nixos/modules/services/x11/desktop-managers/mate.nix +++ b/nixos/modules/services/x11/desktop-managers/mate.nix @@ -47,7 +47,7 @@ in # Debugging environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1"; - environment.systemPackages = pkgs.gnome.removePackagesByName + environment.systemPackages = lib.utils.removePackagesByName (pkgs.mate.basePackages ++ pkgs.mate.extraPackages ++ [ diff --git a/nixos/modules/services/x11/desktop-managers/pantheon.nix b/nixos/modules/services/x11/desktop-managers/pantheon.nix index 3528b0f40e7..004d14b634d 100644 --- a/nixos/modules/services/x11/desktop-managers/pantheon.nix +++ b/nixos/modules/services/x11/desktop-managers/pantheon.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, utils, pkgs, ... }: with lib; @@ -214,7 +214,7 @@ in elementary-settings-daemon pantheon-agent-geoclue2 pantheon-agent-polkit - ]) ++ (gnome.removePackagesByName [ + ]) ++ (utils.removePackagesByName [ gnome.gnome-font-viewer gnome.gnome-settings-daemon338 ] config.environment.pantheon.excludePackages); @@ -272,7 +272,7 @@ in }) (mkIf serviceCfg.apps.enable { - environment.systemPackages = with pkgs.pantheon; pkgs.gnome.removePackagesByName ([ + environment.systemPackages = with pkgs.pantheon; utils.removePackagesByName ([ elementary-calculator elementary-calendar elementary-camera diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index 0c50d82b23b..d488e9b55d4 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, utils, pkgs, ... }: with lib; @@ -181,6 +181,13 @@ in ''; }; + excludePackages = mkOption { + default = []; + example = literalExpression "[ pkgs.xterm ]"; + type = types.listOf types.package; + description = "Which X11 packages to exclude from the default environment"; + }; + exportConfiguration = mkOption { type = types.bool; default = false; @@ -655,7 +662,7 @@ in ${cfgPath}.source = xorg.xf86inputevdev.out + "/share" + cfgPath; }); - environment.systemPackages = + environment.systemPackages = utils.removePackagesByName [ xorg.xorgserver.out xorg.xrandr xorg.xrdb @@ -671,7 +678,7 @@ in pkgs.xdg-utils xorg.xf86inputevdev.out # get evdev.4 man page pkgs.nixos-icons # needed for gnome and pantheon about dialog, nixos-manual and maybe more - ] + ] config.services.xserver.excludePackages ++ optional (elem "virtualbox" cfg.videoDrivers) xorg.xrefresh; environment.pathsToLink = [ "/share/X11" ]; |