{ config, lib, pkgs, ... }: let runnerSecret = key: { sopsFile = ../secrets/forgejo-runner.yaml; inherit key; owner = "root"; group = "root"; }; in { sops.secrets."forgejo-runner/token" = runnerSecret "forgejo-runner/token"; services.gitea-actions-runner = { package = pkgs.forgejo-runner; instances.my-forgejo-instance = { enable = true; name = "natsu-cicd"; tokenFile = config.sops.secrets."forgejo-runner/token".path; url = "https://git.mizuki.guru/"; labels = [ "node-24:docker://node:24-bookworm" "nixos-latest:docker://nixos/nix" "native:host" "AArch64:host" "ubuntu-latest:docker://git.mizuki.guru/packages/act:ubuntu-latest-aarch64" ]; # act 엔진의 컨테이너 보안 가드 및 디렉토리 이탈 방지 설정 주입 settings = { container = { # 호스트 측의 임시 디렉토리 마운트 허용 범위를 명시 valid_volumes = [ "/var/run/docker.sock" "/tmp" "/run/user" ]; # 컨테이너 내 작업 디렉토리를 절대 경로로 고정하여 탈출 방지 workdir = "/workspace"; }; runner = { # act 실행 환경 내부 임시 경로 강제 고정 envs = { ACT_TEMP_DIR = "/tmp/act"; }; }; }; hostPackages = with pkgs; [ bash git python3 docker docker-compose docker-buildx nodejs bun wget curl ]; }; }; }