My Nix Configuration
1{ 2 pkgs, 3 config, 4 lib, 5 ... 6}: 7let 8 runnerBase = { 9 enable = true; 10 url = "https://git.pyrox.dev"; 11 labels = [ 12 "default:docker://git.pyrox.dev/pyrox/flake-base:latest" 13 "nodejs:docker://node:20" 14 "nodejs-alpine:docker://node:20-alpine" 15 "nodejs-lts:docker://node:20" 16 "nodejs-lts:docker://node:20-alpine" 17 "nodejs-latest:docker://node:21" 18 "nodejs-latest-alpine:docker://node:21-alpine" 19 "alpine:docker://alpine:3.19" 20 ]; 21 settings = { 22 log.level = "info"; 23 runner = { 24 insecure = false; 25 capacity = 4; 26 }; 27 cache = { 28 enabled = true; 29 dir = "/var/lib/forgejo/runners/cache/"; 30 host = ""; 31 port = 0; 32 }; 33 container = { 34 # Automatically create a network for containers 35 network = ""; 36 enable_ipv6 = false; 37 }; 38 }; 39 }; 40 cfg = config.py.services.forgejo-runner; 41in 42{ 43 options.py.services.forgejo-runner = { 44 enable = lib.mkEnableOption "Forgejo Actions Runner configuration"; 45 tokenFile = lib.mkOption { 46 type = lib.types.path; 47 description = "Token for default runner"; 48 example = /path/to/token/file; 49 }; 50 }; 51 52 config.services.gitea-actions-runner = lib.mkIf cfg.enable { 53 package = pkgs.forgejo-actions-runner; 54 instances = { 55 "${config.networking.hostName}-default" = runnerBase // { 56 inherit (cfg) tokenFile; 57 name = "${config.networking.hostName}"; 58 }; 59 }; 60 }; 61}