All checks were successful
CI / Format Check (push) Successful in 2s
CI / Flake Check (push) Successful in 1m39s
CI / Evaluate Key Configurations (nix-builder) (push) Successful in 8s
CI / Evaluate Key Configurations (nix-desktop1) (push) Successful in 7s
CI / Evaluate Key Configurations (nix-laptop1) (push) Successful in 7s
CI / Evaluate Artifacts (installer-iso-nix-laptop1) (push) Successful in 14s
CI / Evaluate Artifacts (lxc-nix-builder) (push) Successful in 8s
CI / Build and Publish Documentation (push) Successful in 5s
134 lines
3.8 KiB
Nix
134 lines
3.8 KiB
Nix
# ============================================================================
|
|
# Builders Software Configuration
|
|
# ============================================================================
|
|
# Imports builder-specific programs and services (Gitea Actions runners, etc.)
|
|
|
|
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
inputs,
|
|
...
|
|
}:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.athenix.sw.builders;
|
|
in
|
|
{
|
|
options.athenix.sw.builders = mkOption {
|
|
type = lib.types.submodule {
|
|
options = {
|
|
enable = mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
description = ''
|
|
Enable build server configuration.
|
|
|
|
Includes:
|
|
- SSH host keys for common Git servers (factory.uga.edu, github.com)
|
|
- Gitea Actions runner support (optional)
|
|
- Build tools and dependencies
|
|
|
|
Recommended for: CI/CD servers, build containers, development infrastructure
|
|
'';
|
|
example = true;
|
|
};
|
|
|
|
giteaRunner = mkOption {
|
|
type = lib.types.submodule {
|
|
options = {
|
|
enable = mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
description = ''
|
|
Enable Gitea Actions self-hosted runner.
|
|
|
|
This runner will connect to a Gitea instance and execute CI/CD workflows.
|
|
Requires manual setup of the token file before the service will start.
|
|
'';
|
|
example = true;
|
|
};
|
|
|
|
url = mkOption {
|
|
type = lib.types.str;
|
|
description = ''
|
|
URL of the Gitea instance to connect to.
|
|
This should be the base URL without any path components.
|
|
'';
|
|
example = "https://git.factory.uga.edu";
|
|
};
|
|
|
|
tokenFile = mkOption {
|
|
type = lib.types.path;
|
|
default = "/var/lib/gitea-runner-token";
|
|
description = ''
|
|
Path to file containing Gitea runner registration token.
|
|
|
|
To generate:
|
|
1. Go to your Gitea repository settings
|
|
2. Navigate to Actions > Runners
|
|
3. Click "Create new Runner"
|
|
4. Save the token to this file:
|
|
echo "TOKEN=your-token-here" | sudo tee /var/lib/gitea-runner-token > /dev/null
|
|
|
|
The service will not start until this file exists.
|
|
'';
|
|
example = "/var/secrets/gitea-runner-token";
|
|
};
|
|
|
|
extraLabels = mkOption {
|
|
type = lib.types.listOf lib.types.str;
|
|
default = [ ];
|
|
description = ''
|
|
Additional labels to identify this runner in workflow files.
|
|
Use labels to target specific runners for different job types.
|
|
'';
|
|
example = [
|
|
"self-hosted"
|
|
"nix"
|
|
"x86_64-linux"
|
|
];
|
|
};
|
|
|
|
name = mkOption {
|
|
type = lib.types.str;
|
|
default = "athenix";
|
|
description = ''
|
|
Unique name for this runner instance.
|
|
Shown in Gitea's runner list and logs.
|
|
'';
|
|
example = "nix-builder-1";
|
|
};
|
|
};
|
|
};
|
|
default = { };
|
|
description = "Gitea Actions runner configuration.";
|
|
};
|
|
};
|
|
};
|
|
default = { };
|
|
description = "Build server configuration (CI/CD, Gitea Actions).";
|
|
};
|
|
|
|
config = mkIf cfg.enable (mkMerge [
|
|
(import ./programs.nix {
|
|
inherit
|
|
config
|
|
lib
|
|
pkgs
|
|
inputs
|
|
;
|
|
})
|
|
(import ./services.nix {
|
|
inherit
|
|
config
|
|
lib
|
|
pkgs
|
|
inputs
|
|
;
|
|
})
|
|
]);
|
|
}
|