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