From 28e936ba64c015caa1ce1be21ea7c790898ce336 Mon Sep 17 00:00:00 2001 From: Sandro Jäckel Date: Mon, 11 Apr 2022 01:09:36 +0200 Subject: nixos/xserver: add excludePackages option to remove packages environment.systemPackages --- nixos/modules/services/x11/xserver.nix | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'nixos') diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index 0c50d82b23b..2e760e2773d 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -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 = pkgs.gnome.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" ]; -- cgit 1.4.1 From 28539842d8c2b4a41c7ab4b31da5eeae828dbe2f Mon Sep 17 00:00:00 2001 From: Sandro Jäckel Date: Mon, 11 Apr 2022 10:51:54 +0200 Subject: nixos/utils: move removePackagesByName to here from gnome --- nixos/lib/utils.nix | 16 ++++++++++++++++ nixos/modules/services/x11/desktop-managers/cinnamon.nix | 4 ++-- nixos/modules/services/x11/desktop-managers/gnome.nix | 10 +++++----- nixos/modules/services/x11/desktop-managers/lxqt.nix | 2 +- nixos/modules/services/x11/desktop-managers/mate.nix | 2 +- nixos/modules/services/x11/desktop-managers/pantheon.nix | 6 +++--- nixos/modules/services/x11/xserver.nix | 4 ++-- pkgs/desktops/gnome/default.nix | 15 --------------- 8 files changed, 30 insertions(+), 29 deletions(-) (limited to 'nixos') 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 a7fda4be979..d09c3cf8820 100644 --- a/nixos/modules/services/x11/desktop-managers/mate.nix +++ b/nixos/modules/services/x11/desktop-managers/mate.nix @@ -74,7 +74,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 2e760e2773d..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; @@ -662,7 +662,7 @@ in ${cfgPath}.source = xorg.xf86inputevdev.out + "/share" + cfgPath; }); - environment.systemPackages = pkgs.gnome.removePackagesByName + environment.systemPackages = utils.removePackagesByName [ xorg.xorgserver.out xorg.xrandr xorg.xrdb diff --git a/pkgs/desktops/gnome/default.nix b/pkgs/desktops/gnome/default.nix index 1809604bec5..a0561ca0030 100644 --- a/pkgs/desktops/gnome/default.nix +++ b/pkgs/desktops/gnome/default.nix @@ -3,21 +3,6 @@ lib.makeScope pkgs.newScope (self: with self; { updateScript = callPackage ./update.nix { }; - /* Remove packages of packagesToRemove from packages, based on their names - - 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; - libsoup = pkgs.libsoup.override { gnomeSupport = true; }; libchamplain = pkgs.libchamplain.override { libsoup = libsoup; }; -- cgit 1.4.1