···
7
+
# Remove packages of ys from xs, based on their names
8
+
removePackagesByName = xs: ys:
10
+
pkgName = drv: (builtins.parseDrvName drv.name).name;
11
+
ysNames = map pkgName ys;
13
+
filter (x: !(builtins.elem (pkgName x) ysNames)) xs;
xcfg = config.services.xserver;
cfg = xcfg.desktopManager.lxqt;
···
description = "Enable the LXQt desktop manager";
29
+
environment.lxqt.excludePackages = mkOption {
31
+
example = literalExample "[ pkgs.lxqt.qterminal ]";
32
+
type = types.listOf types.package;
33
+
description = "Which LXQt packages to exclude from the default environment";
config = mkIf (xcfg.enable && cfg.enable) {
···
34
-
environment.systemPackages = [
35
-
pkgs.kde5.kwindowsystem # provides some QT5 plugins needed by lxqt-panel
36
-
pkgs.kde5.libkscreen # provides plugins for screen management software
37
-
pkgs.kde5.oxygen-icons5 # default icon theme
41
-
pkgs.lxqt.compton-conf
45
-
pkgs.lxqt.libsysstat
46
-
pkgs.lxqt.lximage-qt
47
-
pkgs.lxqt.lxqt-about
48
-
pkgs.lxqt.lxqt-admin
49
-
pkgs.lxqt.lxqt-common
50
-
pkgs.lxqt.lxqt-config
51
-
pkgs.lxqt.lxqt-globalkeys
53
-
pkgs.lxqt.lxqt-notificationd
54
-
pkgs.lxqt.lxqt-openssh-askpass
55
-
pkgs.lxqt.lxqt-panel
56
-
pkgs.lxqt.lxqt-policykit
57
-
pkgs.lxqt.lxqt-powermanagement
58
-
pkgs.lxqt.lxqt-qtplugin
59
-
pkgs.lxqt.lxqt-runner
60
-
pkgs.lxqt.lxqt-session
63
-
pkgs.lxqt.pavucontrol-qt
64
-
pkgs.lxqt.pcmanfm-qt
68
-
pkgs.lxqt.qtermwidget
69
-
pkgs.lxqt.screengrab
71
-
pkgs.openbox # default window manager
72
-
pkgs.qt5.qtsvg # provides QT5 plugins for svg icons
48
+
environment.systemPackages =
49
+
pkgs.lxqt.preRequisitePackages ++
50
+
pkgs.lxqt.corePackages ++
51
+
(removePackagesByName
52
+
pkgs.lxqt.optionalPackages
53
+
config.environment.lxqt.excludePackages);
# Link some extra directories in /run/current-system/software/share
environment.pathsToLink = [
···
62
+
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.gvfs}/lib/gio/modules" ];