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}