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 port = 0; 30 }; 31 container = { 32 # Automatically create a network for containers 33 network = ""; 34 enable_ipv6 = false; 35 }; 36 }; 37 }; 38 cfg = config.py.services.forgejo-runner; 39in 40{ 41 options.py.services.forgejo-runner = { 42 enable = lib.mkEnableOption "Forgejo Actions Runner configuration"; 43 tokenFile = lib.mkOption { 44 type = lib.types.path; 45 description = "Token for default runner"; 46 example = /path/to/token/file; 47 }; 48 }; 49 50 config.services.gitea-actions-runner = lib.mkIf cfg.enable { 51 package = pkgs.forgejo-runner; 52 instances = { 53 "${config.networking.hostName}-default" = runnerBase // { 54 inherit (cfg) tokenFile; 55 name = "${config.networking.hostName}"; 56 }; 57 }; 58 }; 59}