vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / x11 / desktop-managers / lxqt.nix
blobac86c385bcc8de6280f38b38722f04a890145a7e
1 { config, lib, pkgs, utils, ... }:
3 with lib;
5 let
6   xcfg = config.services.xserver;
7   cfg = xcfg.desktopManager.lxqt;
9 in
12   meta = {
13     maintainers = teams.lxqt.members;
14   };
16   options = {
18     services.xserver.desktopManager.lxqt.enable = mkOption {
19       type = types.bool;
20       default = false;
21       description = "Enable the LXQt desktop manager";
22     };
24     environment.lxqt.excludePackages = mkOption {
25       default = [];
26       example = literalExpression "[ pkgs.lxqt.qterminal ]";
27       type = types.listOf types.package;
28       description = "Which LXQt packages to exclude from the default environment";
29     };
31   };
33   config = mkIf cfg.enable {
35     services.xserver.desktopManager.session = singleton {
36       name = "lxqt";
37       bgSupport = true;
38       start = ''
39         # Upstream installs default configuration files in
40         # $prefix/share/lxqt instead of $prefix/etc/xdg, (arguably)
41         # giving distributors freedom to ship custom default
42         # configuration files more easily. In order to let the session
43         # manager find them the share subdirectory is added to the
44         # XDG_CONFIG_DIRS environment variable.
45         #
46         # For an explanation see
47         # https://github.com/lxqt/lxqt/issues/1521#issuecomment-405097453
48         #
49         export XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS''${XDG_CONFIG_DIRS:+:}${config.system.path}/share
51         exec ${pkgs.lxqt.lxqt-session}/bin/startlxqt
52       '';
53     };
55     environment.systemPackages =
56       pkgs.lxqt.preRequisitePackages ++
57       pkgs.lxqt.corePackages ++
58       (utils.removePackagesByName
59         pkgs.lxqt.optionalPackages
60         config.environment.lxqt.excludePackages);
62     # Link some extra directories in /run/current-system/software/share
63     environment.pathsToLink = [ "/share" ];
65     programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-qt;
67     # virtual file systems support for PCManFM-QT
68     services.gvfs.enable = true;
70     services.upower.enable = config.powerManagement.enable;
72     services.libinput.enable = mkDefault true;
74     xdg.portal.lxqt.enable = mkDefault true;
76     # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050804
77     xdg.portal.config.lxqt.default = mkDefault [ "lxqt" "gtk" ];
78   };