From 2e7105467b22292eca1fc37c2c8019e6aacc7051 Mon Sep 17 00:00:00 2001 From: romildo Date: Thu, 17 Nov 2016 09:52:12 -0200 Subject: lxqt: better organize system packages Split packages in three categories, all of them going into the system package list: - pre-requisite packages - core packages - optional packages Add a new configuration option 'environment.lxqt.excludePackages' to specify optional LXQt packages that should be excluded from system packages. Add 'gvfs' as a pre-requisite package, needed by 'pcmanfm-qt' to handle virtual places, like "Computer" and "Network". --- .../modules/services/x11/desktop-managers/lxqt.nix | 66 ++++++++-------------- 1 file changed, 24 insertions(+), 42 deletions(-) (limited to 'nixos/modules/services/x11/desktop-managers/lxqt.nix') diff --git a/nixos/modules/services/x11/desktop-managers/lxqt.nix b/nixos/modules/services/x11/desktop-managers/lxqt.nix index c385e74dbb2..89ad2882363 100644 --- a/nixos/modules/services/x11/desktop-managers/lxqt.nix +++ b/nixos/modules/services/x11/desktop-managers/lxqt.nix @@ -4,6 +4,14 @@ with lib; let + # Remove packages of ys from xs, based on their names + removePackagesByName = xs: ys: + let + pkgName = drv: (builtins.parseDrvName drv.name).name; + ysNames = map pkgName ys; + in + filter (x: !(builtins.elem (pkgName x) ysNames)) xs; + xcfg = config.services.xserver; cfg = xcfg.desktopManager.lxqt; @@ -18,8 +26,14 @@ in description = "Enable the LXQt desktop manager"; }; - }; + environment.lxqt.excludePackages = mkOption { + default = []; + example = literalExample "[ pkgs.lxqt.qterminal ]"; + type = types.listOf types.package; + description = "Which LXQt packages to exclude from the default environment"; + }; + }; config = mkIf (xcfg.enable && cfg.enable) { @@ -31,47 +45,12 @@ in ''; }; - environment.systemPackages = [ - pkgs.kde5.kwindowsystem # provides some QT5 plugins needed by lxqt-panel - pkgs.kde5.libkscreen # provides plugins for screen management software - pkgs.kde5.oxygen-icons5 # default icon theme - pkgs.libfm - pkgs.libfm-extra - pkgs.lxmenu-data - pkgs.lxqt.compton-conf - pkgs.lxqt.libfm-qt - pkgs.lxqt.liblxqt - pkgs.lxqt.libqtxdg - pkgs.lxqt.libsysstat - pkgs.lxqt.lximage-qt - pkgs.lxqt.lxqt-about - pkgs.lxqt.lxqt-admin - pkgs.lxqt.lxqt-common - pkgs.lxqt.lxqt-config - pkgs.lxqt.lxqt-globalkeys - pkgs.lxqt.lxqt-l10n - pkgs.lxqt.lxqt-notificationd - pkgs.lxqt.lxqt-openssh-askpass - pkgs.lxqt.lxqt-panel - pkgs.lxqt.lxqt-policykit - pkgs.lxqt.lxqt-powermanagement - pkgs.lxqt.lxqt-qtplugin - pkgs.lxqt.lxqt-runner - pkgs.lxqt.lxqt-session - pkgs.lxqt.lxqt-sudo - pkgs.lxqt.obconf-qt - pkgs.lxqt.pavucontrol-qt - pkgs.lxqt.pcmanfm-qt - pkgs.lxqt.qlipper - pkgs.lxqt.qps - pkgs.lxqt.qterminal - pkgs.lxqt.qtermwidget - pkgs.lxqt.screengrab - pkgs.menu-cache - pkgs.openbox # default window manager - pkgs.qt5.qtsvg # provides QT5 plugins for svg icons - pkgs.xscreensaver - ]; + environment.systemPackages = + pkgs.lxqt.preRequisitePackages ++ + pkgs.lxqt.corePackages ++ + (removePackagesByName + pkgs.lxqt.optionalPackages + config.environment.lxqt.excludePackages); # Link some extra directories in /run/current-system/software/share environment.pathsToLink = [ @@ -80,5 +59,8 @@ in "/share/lxqt" ]; + environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.gvfs}/lib/gio/modules" ]; + }; + } -- cgit 1.4.1