From 4bb55815be4096b1e07fed71cd62636a37a7f07b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6gler?= Date: Sat, 8 Dec 2018 14:35:07 +0100 Subject: [PATCH] nixos lirc: fix owner-ship of runtime directory --- nixos/modules/services/hardware/lirc.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/hardware/lirc.nix b/nixos/modules/services/hardware/lirc.nix index 5635d6f09715..0072406a438c 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} \