dotfiles
My PC Dotfiles & Websitegit clone https://github.com/maydayv7/dotfiles
modules/apps/git/git-runner.nix (1678B)
1## GitHub/GitLab CI Runner Configuration ##
2{config, ...}: let
3 inherit (config.flake) files;
4in {
5 flake.modules.nixos.git-runner = {
6 config,
7 lib,
8 pkgs,
9 ...
10 }: let
11 inherit
12 (lib)
13 mkIf
14 mkMerge
15 mkOption
16 types
17 ;
18 inherit (config.apps.git) runner;
19 in {
20 options.apps.git.runner = {
21 support = mkOption {
22 description = "Support for 'git' Runners";
23 type = types.nullOr (
24 types.enum [
25 "github"
26 "gitlab"
27 ]
28 );
29 default = null;
30 };
31 secret = mkOption {
32 description = "Path to Secret for 'git' Runner";
33 type = types.str;
34 default = "";
35 };
36 };
37
38 config = mkIf (runner.support != null) (mkMerge [
39 {
40 assertions = [
41 {
42 assertion = runner.secret != "";
43 message = "Path to Secret for 'git' Runner must be set";
44 }
45 ];
46 }
47 (mkIf (runner.support == "github") {
48 # GitHub Runner
49 environment.systemPackages = [pkgs.act];
50 services.github-runners.runner = {
51 enable = true;
52 url = files.path.repo;
53 extraLabels = ["self"];
54 tokenFile = runner.secret;
55 };
56 })
57
58 (mkIf (runner.support == "gitlab") {
59 # Docker Support
60 virtualisation.docker.enable = true;
61
62 # GitLab Runner
63 services.gitlab-runner = {
64 enable = true;
65 services.default = {
66 dockerImage = "alpine";
67 tagList = ["self"];
68 authenticationTokenConfigFile = runner.secret;
69 };
70 };
71 })
72 ]);
73 };
74}