diff options
| author | Daiderd Jordan <daiderd@gmail.com> | 2017-05-20 13:13:21 +0200 |
|---|---|---|
| committer | Daiderd Jordan <daiderd@gmail.com> | 2017-05-20 13:14:17 +0200 |
| commit | 2fda5848bb5d3aac3b89fffa1523536839acd785 (patch) | |
| tree | c2d1f39d7049397ec9618d32158766348d5505e2 /modules/services/kwm | |
| parent | 9f0b3c22c3c354219a209decaf84e38d8ce1b885 (diff) | |
kwm: add option to manage config in /etc/kwmrc
Fixes #24
Diffstat (limited to 'modules/services/kwm')
| -rw-r--r-- | modules/services/kwm/default.nix | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/modules/services/kwm/default.nix b/modules/services/kwm/default.nix new file mode 100644 index 0000000..0dfa741 --- /dev/null +++ b/modules/services/kwm/default.nix @@ -0,0 +1,58 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.services.kwm; + +in + +{ + options = { + services.kwm.enable = mkOption { + type = types.bool; + default = false; + description = "Whether to enable the khd window manager."; + }; + + services.kwm.package = mkOption { + type = types.path; + default = pkgs.kwm; + defaultText = "pkgs.kwm"; + description = "This option specifies the kwm package to use"; + }; + + services.kwm.enableAccessibilityAccess = mkOption { + type = types.bool; + default = false; + description = "Whether to enable accessibility permissions for the kwm daemon."; + }; + + services.kwm.kwmConfig = mkOption { + type = types.lines; + default = ""; + example = ''kwmc rule owner="iTerm2" properties={role="AXDialog"}''; + }; + }; + + config = mkIf cfg.enable { + + security.accessibilityPrograms = mkIf cfg.enableAccessibilityAccess [ "${cfg.package}/kwm" ]; + + environment.etc."kwmrc".text = cfg.kwmConfig; + + launchd.user.agents.kwm = { + serviceConfig.ProgramArguments = [ "${cfg.package}/kwm" ] + ++ optionals (cfg.kwmConfig != "") [ "-c" "/etc/kwmrc" ]; + serviceConfig.KeepAlive = true; + serviceConfig.ProcessType = "Interactive"; + serviceConfig.Sockets.Listeners = + { SockServiceName = "3020"; + SockType = "dgram"; + SockFamily = "IPv4"; + }; + }; + + }; +} |
