diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..cc779226 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,65 @@ +name: CI + +on: + pull_request: + push: + branches: + - main + +env: + # Required to make some things output color + TERM: ansi + +jobs: + ci: + name: CI + + runs-on: ubuntu-latest + + steps: + - name: Sync repository + uses: actions/checkout@v3 + + - name: Uninstall obstructive tools + run: rm -rf "$HOME/.rustup" "$HOME/.cargo" + + - name: Install Nix (with flakes and nix-command enabled) + uses: cachix/install-nix-action@v24 + with: + nix_path: nixpkgs=channel:nixos-unstable + + # Add the `nix-community` cachix to speed up things that leverage it + extra_nix_config: | + extra-substituters = https://nix-community.cachix.org + extra-trusted-public-keys = nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= + + - name: Pop/push Magic Nix Cache + uses: DeterminateSystems/magic-nix-cache-action@v2 + + - name: Configure `nix-direnv` + run: | + echo 'source $HOME/.nix-profile/share/nix-direnv/direnvrc' > "$HOME/.direnvrc" + + - name: Install `direnv` and `nix-direnv` + run: nix-env -f "" -i direnv -i nix-direnv + + - name: Pop/push downloaded crate cache + uses: actions/cache@v3 + with: + key: downloaded-crates + path: ~/.cargo + + - name: Pop/push compiled crate cache + uses: actions/cache@v3 + with: + key: compiled-crates-${{runner.os}} + path: target + + # Do this to shorten the logs for the real CI step + - name: Populate `/nix/store` + run: nix develop --command true + + - name: Perform continuous integration + run: | + direnv allow + direnv exec . engage