summary refs log tree commit diff
diff options
context:
space:
mode:
authorBernardo Meurer <bernardo@meurer.org>2021-08-03 23:29:31 -0700
committerBernardo Meurer <bernardo@meurer.org>2021-08-03 23:29:31 -0700
commitf949ce7449cfa2bd42992e7791a94a7249ec4976 (patch)
tree6ef5e32e96bb1318cd61932b7b8bcee88f4deff8
parent5e1e2914eb8d6548ff5bd710afb89a6043bba620 (diff)
downloadnixpkgs-f949ce7449cfa2bd42992e7791a94a7249ec4976.tar
nixpkgs-f949ce7449cfa2bd42992e7791a94a7249ec4976.tar.gz
nixpkgs-f949ce7449cfa2bd42992e7791a94a7249ec4976.tar.bz2
nixpkgs-f949ce7449cfa2bd42992e7791a94a7249ec4976.tar.lz
nixpkgs-f949ce7449cfa2bd42992e7791a94a7249ec4976.tar.xz
nixpkgs-f949ce7449cfa2bd42992e7791a94a7249ec4976.tar.zst
nixpkgs-f949ce7449cfa2bd42992e7791a94a7249ec4976.zip
nixos/hqplayerd: set HOME to path in state directory
The service likes to write files uploaded by the user to the service
user's $HOME. In our case the hqplayerd user has no home directory,
since it's a system user, and regardless we'd like to keep the service's
state contained.

With this change the unit forces HOME to point to
/var/lib/hqplayer/home, which works around the issue.
-rw-r--r--nixos/modules/services/audio/hqplayerd.nix7
1 files changed, 5 insertions, 2 deletions
diff --git a/nixos/modules/services/audio/hqplayerd.nix b/nixos/modules/services/audio/hqplayerd.nix
index 3a703c97c0f..b4d8468a237 100644
--- a/nixos/modules/services/audio/hqplayerd.nix
+++ b/nixos/modules/services/audio/hqplayerd.nix
@@ -100,8 +100,9 @@ in
 
     systemd = {
       tmpfiles.rules = [
-        "d ${configDir} 0755 ${cfg.user} ${cfg.group} - -"
-        "d ${stateDir}  0755 ${cfg.user} ${cfg.group} - -"
+        "d ${configDir}      0755 ${cfg.user} ${cfg.group} - -"
+        "d ${stateDir}       0755 ${cfg.user} ${cfg.group} - -"
+        "d ${stateDir}/home  0755 ${cfg.user} ${cfg.group} - -"
       ];
 
       services.hqplayerd = {
@@ -110,6 +111,8 @@ in
         requires = [ "network-online.target" "sound.target" "systemd-udev-settle.service" ];
         after = [ "network-online.target" "sound.target" "systemd-udev-settle.service" "local-fs.target" "remote-fs.target" "systemd-tmpfiles-setup.service" ];
 
+        environment.HOME = "${stateDir}/home";
+
         unitConfig.ConditionPathExists = [ configDir stateDir ];
 
         preStart =