name: CI on: pull_request: push: branches: [main] workflow_dispatch: jobs: tests: runs-on: ubuntu-22.04 needs: - check-dist-up-to-date - install-nix-linux - install-nix-macos steps: - run: true check-dist-up-to-date: name: Check the dist/ folder is up to date runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - uses: DeterminateSystems/nix-installer-action@main - uses: DeterminateSystems/magic-nix-cache-action@main - name: pnpm install run: nix develop --command pnpm install - name: prettier format run: nix develop --command pnpm run check-fmt - name: ESLint run: nix develop --command pnpm run lint - name: tsup build run: nix develop --command pnpm run build - name: ncc package run: nix develop --command pnpm run package - name: Git status run: git status --porcelain=v1 - name: Ensure no staged changes run: git diff --exit-code install-nix-linux: name: Run test suite for Linux systems strategy: matrix: runner: - ubuntu-latest - nscloud-ubuntu-22.04-amd64-4x16 - namespace-profile-default-arm64 runs-on: ${{ matrix.runner }} permissions: contents: read id-token: write steps: - uses: actions/checkout@v4 - name: Install Nix uses: ./ with: logger: pretty log-directives: nix_installer=trace backtrace: full - name: echo $PATH run: echo $PATH - name: Render the devshell if: success() || failure() run: | nix develop --command date - name: Test `nix` with `$GITHUB_PATH` if: success() || failure() run: | nix run nixpkgs#hello nix profile install nixpkgs#hello hello nix store gc nix run nixpkgs#hello - name: Test bash run: nix-instantiate -E 'builtins.currentTime' --eval if: success() || failure() shell: bash --login {0} - name: Test sh run: nix-instantiate -E 'builtins.currentTime' --eval if: success() || failure() shell: sh -l {0} - name: Install Nix again (noop) uses: ./ with: logger: pretty log-directives: nix_installer=trace backtrace: full - name: Test `nix` with `$GITHUB_PATH` if: success() || failure() run: | nix run nixpkgs#hello nix profile install nixpkgs#hello hello nix store gc nix run nixpkgs#hello - name: Reinstall Nix uses: ./ with: logger: pretty log-directives: nix_installer=trace backtrace: full reinstall: true extra-conf: | use-sqlite-wal = true - name: Test `nix` with `$GITHUB_PATH` if: success() || failure() run: | nix run nixpkgs#hello nix profile install nixpkgs#hello hello nix store gc nix run nixpkgs#hello - name: Verify the generated nix.conf run: | cat -n /etc/nix/nix.conf grep -E "^trusted-users = .*$USER" /etc/nix/nix.conf grep -E "^use-sqlite-wal = true" /etc/nix/nix.conf - name: Breakpoint if tests failed if: failure() uses: namespacelabs/breakpoint-action@v0 with: duration: 5m authorized-users: grahamc install-nix-macos: name: Run test suite for macOS systems strategy: matrix: runner: # x86_64-darwin - macos-12 # aarch64-darwin - macos-latest-xlarge runs-on: ${{ matrix.runner }} permissions: contents: read id-token: write steps: - uses: actions/checkout@v4 - name: Install Nix uses: ./ with: logger: pretty log-directives: nix_installer=trace backtrace: full - name: echo $PATH run: echo $PATH - name: Test `nix` with `$GITHUB_PATH` if: success() || failure() run: | nix run nixpkgs#hello nix profile install nixpkgs#hello hello nix store gc nix run nixpkgs#hello - name: Test bash run: nix-instantiate -E 'builtins.currentTime' --eval if: success() || failure() shell: bash --login {0} - name: Test sh run: nix-instantiate -E 'builtins.currentTime' --eval if: success() || failure() shell: sh -l {0} - name: Test zsh run: nix-instantiate -E 'builtins.currentTime' --eval if: success() || failure() shell: zsh --login --interactive {0} - name: Install Nix again (noop) uses: ./ with: logger: pretty log-directives: nix_installer=trace backtrace: full - name: Test `nix` with `$GITHUB_PATH` if: success() || failure() run: | nix run nixpkgs#hello nix profile install nixpkgs#hello hello nix store gc nix run nixpkgs#hello - name: Reinstall Nix uses: ./ with: logger: pretty log-directives: nix_installer=trace backtrace: full reinstall: true extra-conf: | use-sqlite-wal = true - name: Test `nix` with `$GITHUB_PATH` if: success() || failure() run: | nix run nixpkgs#hello nix profile install nixpkgs#hello hello nix store gc nix run nixpkgs#hello - name: Verify the generated nix.conf run: | cat /etc/nix/nix.conf grep -E "^trusted-users = .*$USER" /etc/nix/nix.conf grep -E "^use-sqlite-wal = true" /etc/nix/nix.conf - name: Breakpoint if tests failed if: failure() uses: namespacelabs/breakpoint-action@v0 with: duration: 5m authorized-users: grahamc install-with-non-default-source-url: name: Install Nix using non-default source-url inputs runs-on: ubuntu-22.04 steps: - name: Install with alternative source-url uses: ./. with: source-url: https://github.com/DeterminateSystems/nix-installer/releases/download/v0.18.0/nix-installer-x86_64-linux - name: Ensure that Nix is installed via alternative source-url run: nix --version - name: Install with alternative source-pr uses: ./. with: # https://github.com/DeterminateSystems/nix-installer/pull/938 source-pr: "938" - name: Ensure that Nix is installed via alternative source-pr run: nix --version - name: Install with alternative source-revision uses: ./. with: # https://github.com/DeterminateSystems/nix-installer/tree/ccf1d39a83099657ad324e7927676432435431e1 source-revision: "ccf1d39a83099657ad324e7927676432435431e1" - name: Ensure that Nix is installed via alternative source-revision run: nix --version - name: Install with alternative source-branch uses: ./. with: # https://github.com/DeterminateSystems/nix-installer/tree/lazy-trees source-revision: "lazy-trees" - name: Ensure that Nix is installed via alternative source-branch run: nix --version - name: Install with alternative source-tag uses: ./. with: # https://github.com/DeterminateSystems/nix-installer/tree/v0.14.0 source-tag: "v0.14.0" - name: Ensure that Nix is installed via alternative source-tag run: nix --version