1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8with lib;
9
10let
11 cfg = config.services.xserver.windowManager.herbstluftwm;
12in
13
14{
15 options = {
16 services.xserver.windowManager.herbstluftwm = {
17 enable = mkEnableOption "herbstluftwm";
18
19 package = mkPackageOption pkgs "herbstluftwm" { };
20
21 configFile = mkOption {
22 default = null;
23 type = with types; nullOr path;
24 description = ''
25 Path to the herbstluftwm configuration file. If left at the
26 default value, $XDG_CONFIG_HOME/herbstluftwm/autostart will
27 be used.
28 '';
29 };
30 };
31 };
32
33 config = mkIf cfg.enable {
34 services.xserver.windowManager.session = singleton {
35 name = "herbstluftwm";
36 start =
37 let
38 configFileClause = optionalString (cfg.configFile != null) ''-c "${cfg.configFile}"'';
39 in
40 ''
41 ${cfg.package}/bin/herbstluftwm ${configFileClause} &
42 waitPID=$!
43 '';
44 };
45 environment.systemPackages = [ cfg.package ];
46 };
47}