summaryrefslogtreecommitdiff
path: root/modules/services/kwm
diff options
context:
space:
mode:
authorDaiderd Jordan <daiderd@gmail.com>2017-05-20 13:13:21 +0200
committerDaiderd Jordan <daiderd@gmail.com>2017-05-20 13:14:17 +0200
commit2fda5848bb5d3aac3b89fffa1523536839acd785 (patch)
treec2d1f39d7049397ec9618d32158766348d5505e2 /modules/services/kwm
parent9f0b3c22c3c354219a209decaf84e38d8ce1b885 (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.nix58
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";
+ };
+ };
+
+ };
+}