name: "Build NixOS Image" on: workflow_dispatch: jobs: build: runs-on: nixos-latest steps: - name: Install nodejs run: nix-env -iA nixpkgs.nodejs - name: Checkout repo uses: actions/checkout@v4 # - name: Install Nix # uses: cachix/install-nix-action@v31 # with: # nix_path: nixpkgs=channel:nixos-unstable # extra_nix_config: | # experimental-features = nix-command flakes - name: Build NixOS image working-directory: nixos run: nix --extra-experimental-features nix-command --extra-experimental-features flakes build .#nixosImage - name: Upload & Restore to Proxmox working-directory: nixos env: PROXMOX_SSH_KEY: ${{ secrets.PROXMOX_SSH_KEY }} PROXMOX_HOST: 192.168.1.205 PROXMOX_USER: root run: | set -e IMAGE_NAME="vm-image.vma.zst" REMOTE_PATH="/var/lib/vz/template/$IMAGE_NAME" VM_ID="9000" echo "Starting ssh-agent and uploading..." eval "$(ssh-agent -s)" ssh-add <(echo "$PROXMOX_SSH_KEY") echo "Uploading image..." scp -o StrictHostKeyChecking=no ./result/$IMAGE_NAME $PROXMOX_USER@$PROXMOX_HOST:$REMOTE_PATH echo "Restoring VM $VM_ID..." ssh -o StrictHostKeyChecking=no $PROXMOX_USER@$PROXMOX_HOST " qm stop $VM_ID || true qm destroy $VM_ID || true qmrestore --unique $REMOTE_PATH $VM_ID qm template $VM_ID "