Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

github-runners: adapt to NixOS module #893

Merged
merged 1 commit into from
Feb 28, 2024

Conversation

veehaitch
Copy link
Contributor

While #859 added basic support for configuring GitHub runners through nix-darwin, it did not yet support all of the options the NixOS module offers.

I am aware that this is a rather big overhaul. I think, however, that it's worth it:

  • Copies the options.nix from the NixOS module with only minor adaptations. This should help to keep track of any changes to it.
  • Respect the workDir config option. So far, the implementation didn't even read the value of the option.
  • Allow configuring a custom user and group. If both are null, nix-darwin manages the _github-runner user shared among all instances. Take care of creating your own users if that's not what you want.
  • Also creates the necessary directories for state, logs and the working directory (unless workDir != null). It uses the following locations: * state: /var/lib/github-runners/${name} * logs: /var/log/github-runners/${name} * work: The value of workDir or /var/run/github-runners/${name} if (workDir == null). We have to create the logs directory before starting the service since launchd expects that the Standard{Error,Out}Path exist. We do this by prepending to system.activationScripts.launchd.text. All directories belong to the configured user and group.
  • Warn if a tokenFile points to the Nix store.

While LnL7#859 added basic support for configuring GitHub runners through
nix-darwin, it did not yet support all of the options the NixOS module
offers.

I am aware that this is a rather big overhaul. I think, however, that
it's worth it:

- Copies the `options.nix` from the [NixOS module] with only minor
  adaptations. This should help to keep track of any changes to it.
- Respect the `workDir` config option. So far, the implementation didn't
  even read the value of the option.
- Allow configuring a custom user and group.
  If both are `null`, nix-darwin manages the `_github-runner` user
  shared among all instances. Take care of creating your own users if
  that's not what you want.
- Also creates the necessary directories for state, logs and the working
  directory (unless `workDir != null`). It uses the following locations:
    * state: `/var/lib/github-runners/${name}`
    * logs: `/var/log/github-runners/${name}`
    * work: The value of `workDir` or `/var/run/github-runners/${name}`
            if (`workDir == null`).
  We have to create the logs directory before starting the service since
  launchd expects that the `Standard{Error,Out}Path` exist. We do this
  by prepending to [`system.activationScripts.launchd.text`].
  All directories belong to the configured `user` and `group`.
- Warn if a `tokenFile` points to the Nix store.

[NixOS module]: https://github.com/NixOS/nixpkgs/blob/3c30c56/nixos/modules/services/continuous-integration/github-runner/options.nix
[`system.activationScripts.launchd.text`]: https://github.com/LnL7/nix-darwin/blob/bbde06b/modules/system/launchd.nix#L99-L123
@veehaitch
Copy link
Contributor Author

Cc @domenkozar

@domenkozar domenkozar merged commit 283d597 into LnL7:master Feb 28, 2024
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants