{ inputs, config, lib, pkgs, ... }: let cfg = config.services.forgejo-runner; in { options.services.forgejo-runner = { enable = lib.mkOption { type = with lib.types; uniq bool; default = false; description = "Enable Forgejo Runners"; }; }; config = lib.mkIf (cfg.enable) { # services.gitea-actions-runner.package = pkgs.forgejo-runner; # services.gitea-actions-runner.instances."kb-one-runner@games-01" = { # enable = true; # name = "kb-one-runner@games-01"; # url = "https://git.kb-one.de/"; # tokenFile = "/opt/secrets/kb-one-runner@games-01_token"; # labels = [ # # provide a debian base with nodejs for actions # "debian-latest:docker://node:18-bullseye" # # fake the ubuntu name, because node provides no ubuntu builds # "ubuntu-latest:docker://node:18-bullseye" # # provide native execution on the host # "native:host" # ]; # hostPackages = with pkgs; [ # bash # coreutils # curl # gawk # gitMinimal # gnused # nodejs # wget # nix # ]; # }; # systemd.services.forgejo-runner = { # wantedBy = [ "multi-user.target" ]; # after = [ "docker.service" ]; # description = ""; # serviceConfig = { # Type = "notify"; # User = "runner"; # WorkingDirectory = "/home/runner"; # ExecStart = ''${pkgs.forgejo-runner}/bin/forgejo-runner deamon''; # ExecStop = ''/bin/kill -s HUP $MAINPID''; # Restart = "on-failure"; # TimeoutSec = 0; # RestartSec = 10; # }; # }; # users.users.runner = { # isNormalUser = true; # }; # environment.systemPackages = [ pkgs.forgejo-runner ]; # virtualisation.podman.enable = true; # virtualisation.podman.defaultNetwork.settings.dns_enabled = true; # virtualisation.podman.dockerCompat = true; virtualisation.docker.enable = true; virtualisation.oci-containers.backend = "docker"; virtualisation.oci-containers.containers."docker-in-docker" = { image = "docker:dind"; hostname = "docker"; extraOptions = [ "--privileged" "--network=kb-forgejo-runner" ]; cmd = [ "dockerd" "-H" "tcp://docker:42349" "--tls=false" ]; }; virtualisation.oci-containers.containers."forgejo-runner" = { image = "code.forgejo.org/forgejo/runner:4.0.0"; hostname = "forgejo-runner"; extraOptions = [ "--network=kb-forgejo-runner" ]; environment.DOCKER_HOST = "tcp://docker:42349"; user = "1001:1001"; volumes = [ "forgejo-runner-data:/data" ]; cmd = [ "/bin/sh" "-c" "sleep 5; forgejo-runner daemon" ]; }; }; }