{ pkgs, ... }: let entrypoint = pkgs.writeTextFile { name = "entrypoint"; executable = true; destination = "/bin/entrypoint"; text = builtins.readFile ./entrypoint.sh; }; runnerConfig = pkgs.writeTextDir "/etc/gitea-act-runner/config.yaml" ( builtins.readFile ( (pkgs.formats.yaml { }).generate "config.yaml" { runner = { file = "/var/lib/gitea-act-runner/registration"; capacity = 4; labels = [ "ubuntu-latest:docker://catthehacker/ubuntu:act-latest" "ubuntu-22.04:docker://catthehacker/ubuntu:act-22.04" "ubuntu-20.04:docker://catthehacker/ubuntu:act-20.04" "ubuntu-18.04:docker://catthehacker/ubuntu:act-18.04" ]; }; cache.dir = "/tmp/gitea-act-runner/"; # https://gitea.com/gitea/act_runner/issues/223#issuecomment-743748 container.docker_host = "-"; } ) ); in pkgs.dockerTools.buildImage { name = "gitea-act-runner"; fromImage = pkgs.docker-image-base; copyToRoot = pkgs.buildEnv { name = "root"; paths = with pkgs; [ entrypoint gitea-actions-runner runnerConfig curl jq ]; pathsToLink = [ "/bin" "/etc" ]; }; config = { Entrypoint = [ "entrypoint" ]; WorkDir = "/var/lib/gitea-act-runner"; Volumes = { "/var/lib/gitea-act-runner" = { }; "/tmp/gitea-act-runner" = { }; }; }; }