diff options
| author | Franck <franck@fcuny.net> | 2022-11-07 08:09:25 -0800 |
|---|---|---|
| committer | Franck <franck@fcuny.net> | 2022-11-07 08:09:25 -0800 |
| commit | bb7025da134fef21f4ccafee74a75428b56a27de (patch) | |
| tree | 6e0ff5e7b3ee7367d1fedbf57a407040b8b8ec49 /modules/services/drone/runner-docker/default.nix | |
| parent | ref(home/git): update mapping for the git-helper (diff) | |
| parent | fix(services/drone): enable drone (diff) | |
| download | infra-bb7025da134fef21f4ccafee74a75428b56a27de.tar.gz | |
Merge pull request 'fcuny/ci-drone' (#1) from fcuny/test-woodpecker into main
Reviewed-on: https://git.fcuny.net/fcuny/world/pulls/1
Diffstat (limited to 'modules/services/drone/runner-docker/default.nix')
| -rw-r--r-- | modules/services/drone/runner-docker/default.nix | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/modules/services/drone/runner-docker/default.nix b/modules/services/drone/runner-docker/default.nix new file mode 100644 index 0000000..428a8d6 --- /dev/null +++ b/modules/services/drone/runner-docker/default.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.drone; + hasRunner = (name: builtins.elem name cfg.runners); + dockerPkg = pkgs.drone-runner-docker; +in +{ + config = lib.mkIf (cfg.enable && hasRunner "docker") { + systemd.services.drone-runner-docker = { + wantedBy = [ "multi-user.target" ]; + after = [ "docker.socket" ]; # Needs the socket to be available + # might break deployment + restartIfChanged = false; + confinement.enable = true; + serviceConfig = { + Environment = [ + "DRONE_SERVER_HOST=${cfg.vhostName}" + "DRONE_SERVER_PROTO=https" + "DRONE_RUNNER_CAPACITY=10" + "CLIENT_DRONE_RPC_HOST=127.0.0.1:${toString cfg.port}" + ]; + BindPaths = [ "/var/run/docker.sock" ]; + EnvironmentFile = [ cfg.sharedSecretFile ]; + ExecStart = "${dockerPkg}/bin/drone-runner-docker"; + User = "drone-runner-docker"; + Group = "drone-runner-docker"; + }; + }; + + # Make sure it is activated in that case + virtualisation.docker.enable = true; + + users.users.drone-runner-docker = { + isSystemUser = true; + group = "drone-runner-docker"; + extraGroups = [ "docker" ]; # Give access to the daemon + }; + users.groups.drone-runner-docker = { }; + }; +} |
