at master 2.9 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 utils, 6 ... 7}: 8 9with lib; 10 11let 12 cfg = config.services.xserver.desktopManager.lxqt; 13 14in 15 16{ 17 meta = { 18 maintainers = teams.lxqt.members; 19 }; 20 21 options = { 22 23 services.xserver.desktopManager.lxqt.enable = mkEnableOption "the LXQt desktop manager"; 24 25 services.xserver.desktopManager.lxqt.iconThemePackage = 26 lib.mkPackageOption pkgs [ "kdePackages" "breeze-icons" ] { } 27 // { 28 description = "The package that provides a default icon theme."; 29 }; 30 31 services.xserver.desktopManager.lxqt.extraPackages = lib.mkOption { 32 type = with lib.types; listOf package; 33 default = [ ]; 34 defaultText = lib.literalExpression "[ ]"; 35 example = lib.literalExpression "with pkgs; [ xscreensaver ]"; 36 description = "Extra packages to be installed system wide."; 37 }; 38 39 environment.lxqt.excludePackages = mkOption { 40 type = with lib.types; listOf package; 41 default = [ ]; 42 defaultText = lib.literalExpression "[ ]"; 43 example = lib.literalExpression "with pkgs; [ lxqt.qterminal ]"; 44 description = "Which LXQt packages to exclude from the default environment"; 45 }; 46 47 }; 48 49 config = mkIf cfg.enable { 50 51 services.xserver.desktopManager.session = singleton { 52 name = "lxqt"; 53 bgSupport = true; 54 start = '' 55 # Upstream installs default configuration files in 56 # $prefix/share/lxqt instead of $prefix/etc/xdg, (arguably) 57 # giving distributors freedom to ship custom default 58 # configuration files more easily. In order to let the session 59 # manager find them the share subdirectory is added to the 60 # XDG_CONFIG_DIRS environment variable. 61 # 62 # For an explanation see 63 # https://github.com/lxqt/lxqt/issues/1521#issuecomment-405097453 64 # 65 export XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS''${XDG_CONFIG_DIRS:+:}${config.system.path}/share 66 67 exec ${pkgs.lxqt.lxqt-session}/bin/startlxqt 68 ''; 69 }; 70 71 environment.systemPackages = 72 pkgs.lxqt.preRequisitePackages 73 ++ pkgs.lxqt.corePackages 74 ++ [ cfg.iconThemePackage ] 75 ++ (utils.removePackagesByName pkgs.lxqt.optionalPackages config.environment.lxqt.excludePackages) 76 ++ cfg.extraPackages; 77 78 # Link some extra directories in /run/current-system/software/share 79 environment.pathsToLink = [ "/share" ]; 80 81 programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-qt; 82 83 # virtual file systems support for PCManFM-QT 84 services.gvfs.enable = mkDefault true; 85 86 services.upower.enable = config.powerManagement.enable; 87 88 services.libinput.enable = mkDefault true; 89 90 xdg.portal.lxqt.enable = mkDefault true; 91 92 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050804 93 xdg.portal.config.lxqt.default = mkDefault [ 94 "lxqt" 95 "gtk" 96 ]; 97 }; 98 99}