diff options
| author | Michael Hoang <enzime@users.noreply.github.com> | 2024-07-23 10:48:48 +1000 |
|---|---|---|
| committer | Michael Hoang <enzime@users.noreply.github.com> | 2024-07-23 11:06:40 +1000 |
| commit | fe99aa9699e7dd4ce6a81a8a623d010cedbe7eef (patch) | |
| tree | a5ee5406d5ed54603eb207d24cf79b9595d4e673 /modules/services | |
| parent | 2ae24bcafdb88fdf70b061cc8b18d070dbd9013a (diff) | |
github-runnners: fix workDir missing on reboot
Diffstat (limited to 'modules/services')
| -rw-r--r-- | modules/services/github-runner/service.nix | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/modules/services/github-runner/service.nix b/modules/services/github-runner/service.nix index 53f2cdd..2fc133f 100644 --- a/modules/services/github-runner/service.nix +++ b/modules/services/github-runner/service.nix @@ -41,7 +41,7 @@ in in { launchd = mkIf cfg.enable { - text = mkBefore ('' + text = mkBefore '' echo >&2 "setting up GitHub Runner '${cfg.name}'..." ${pkgs.coreutils}/bin/mkdir -p -m 0750 ${escapeShellArg (mkStateDir cfg)} @@ -49,10 +49,7 @@ in ${pkgs.coreutils}/bin/mkdir -p -m 0750 ${escapeShellArg (mkLogDir cfg)} ${pkgs.coreutils}/bin/chown ${user}:${group} ${escapeShellArg (mkLogDir cfg)} - '' + optionalString (cfg.workDir == null) '' - ${pkgs.coreutils}/bin/mkdir -p -m 0750 ${escapeShellArg (mkWorkDir cfg)} - ${pkgs.coreutils}/bin/chown ${user}:${group} ${escapeShellArg (mkWorkDir cfg)} - ''); + ''; }; })); @@ -62,6 +59,9 @@ in stateDir = mkStateDir cfg; logDir = mkLogDir cfg; workDir = mkWorkDir cfg; + user = if (cfg.user != null) then cfg.user else "_github-runner"; + # If both user and group are null then we manage the group, otherwise if only group is null then there's no group + group = if (cfg.group != null) then group else if (cfg.user == null) then "_github-runner" else ""; in nameValuePair (mkSvcName name) @@ -116,6 +116,12 @@ in '' echo "Configuring GitHub Actions Runner" + ${optionalString (cfg.workDir == null) '' + # /var/run gets cleared every reboot so we need to create it before starting the service + ${pkgs.coreutils}/bin/mkdir -p -m 0750 ${escapeShellArg workDir} + ${pkgs.coreutils}/bin/chown ${user}:${group} ${escapeShellArg workDir} + ''} + # Always clean the working directory ${pkgs.findutils}/bin/find ${escapeShellArg workDir} -mindepth 1 -delete @@ -147,7 +153,7 @@ in StandardErrorPath = "${logDir}/launchd-stderr.log"; StandardOutPath = "${logDir}/launchd-stdout.log"; ThrottleInterval = 30; - UserName = if (cfg.user != null) then cfg.user else "_github-runner"; + UserName = user; WatchPaths = [ "/etc/resolv.conf" "/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist" |
