name: nix on: pull_request: branches: [main] push: schedule: - cron: 0 0 * * 1 env: REGISTRY: git.nexveridian.com IMAGE_NAME: ${{ github.repository }} NIX_CONFIG: "experimental-features = nix-command flakes" NIX_PATH: "nixpkgs=channel:nixos-unstable" CONTAINER_TOKEN: ${{ secrets.CONTAINER_REGISTRY_TOKEN }} jobs: build: runs-on: nix-base permissions: contents: read packages: write id-token: write steps: - run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client login nex https://nix.nexveridian.com ${{ secrets.ATTIC_TOKEN }} || true - run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client cache create docker-nixpkgs || true - run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client cache configure docker-nixpkgs -- --priority 30 || true - run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client use docker-nixpkgs || true - name: Install Node.js run: | mkdir -p ~/.local/bin nix build -I nixpkgs=channel:nixos-unstable nixpkgs#nodejs_24 -o ~/.local/nodejs ln -sf ~/.local/nodejs/bin/node ~/.local/bin/node ln -sf ~/.local/nodejs/bin/npm ~/.local/bin/npm echo "$HOME/.local/bin" >> $GITHUB_PATH - uses: actions/checkout@v4 - name: Install skopeo run: | mkdir -p ~/.local/bin nix build -I nixpkgs=channel:nixos-unstable nixpkgs#skopeo -o ~/.local/skopeo ln -sf ~/.local/skopeo/bin/skopeo ~/.local/bin/skopeo echo "$HOME/.local/bin" >> $GITHUB_PATH - name: Build Nix package run: nix-build -A action-attic - name: Prepare repository variables run: | echo "REPO=${GITHUB_REPOSITORY,,}" >> ${GITHUB_ENV} echo "OWNER=${GITHUB_REPOSITORY_OWNER,,}" >> ${GITHUB_ENV} # Extract just the repository name (everything after the last slash) REPO_NAME=${GITHUB_REPOSITORY##*/} echo "IMAGE_NAME=action-attic" >> ${GITHUB_ENV} - name: Setup skopeo policy and push image run: | # configure container policy to accept insecure registry mkdir -p ~/.config/containers cat > ~/.config/containers/policy.json < ~/.docker/config.json </dev/null 2>&1; then valid_paths="$valid_paths $path" fi done if [ -n "$valid_paths" ]; then for i in {1..10}; do nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client push docker-nixpkgs $valid_paths && break || [ $i -eq 5 ] || sleep 5 done fi