about summary refs log tree commit diff
path: root/nixos/modules/services/hardware/lirc.nix
diff options
context:
space:
mode:
authorChristian Kögler <ck3d@gmx.de>2018-12-08 14:35:07 +0100
committerChristian Kögler <ck3d@gmx.de>2018-12-08 14:37:02 +0100
commit4bb55815be4096b1e07fed71cd62636a37a7f07b (patch)
tree5ed3c99a1ef6ea25afaa906182c73bf959dcf89c /nixos/modules/services/hardware/lirc.nix
parentca3f089a836ce970f8037485c2b65034de14269f (diff)
nixos lirc: fix owner-ship of runtime directory
Diffstat (limited to 'nixos/modules/services/hardware/lirc.nix')
-rw-r--r--nixos/modules/services/hardware/lirc.nix13
1 files changed, 12 insertions, 1 deletions
diff --git a/nixos/modules/services/hardware/lirc.nix b/nixos/modules/services/hardware/lirc.nix
index 5635d6f09715b..0072406a438cb 100644
--- a/nixos/modules/services/hardware/lirc.nix
+++ b/nixos/modules/services/hardware/lirc.nix
@@ -49,6 +49,7 @@ in {
       description = "LIRC daemon socket";
       wantedBy = [ "sockets.target" ];
       socketConfig = {
+        # default search path
         ListenStream = "/run/lirc/lircd";
         SocketUser = "lirc";
         SocketMode = "0660";
@@ -66,9 +67,19 @@ in {
       serviceConfig = {
         RuntimeDirectory = "lirc";
 
-        # socket lives in runtime directory; we have to keep is available
+        # Service runtime directory and socket share same folder.
+        # Following hacks are necessary to get everything right:
+
+        # 1. prevent socket deletion during stop and restart
         RuntimeDirectoryPreserve = true;
 
+        # 2. fix runtime folder owner-ship, happens when socket activation
+        #    creates the folder
+        PermissionsStartOnly = true;
+        ExecStartPre = [
+          "${pkgs.coreutils}/bin/chown lirc /run/lirc/"
+        ];
+
         ExecStart = ''
           ${pkgs.lirc}/bin/lircd --nodaemon \
             ${escapeShellArgs cfg.extraArguments} \