nix-github-actions icon indicating copy to clipboard operation
nix-github-actions copied to clipboard

Add evaluation for nixosConfigurations

Open selfuryon opened this issue 2 years ago • 0 comments

Hello! I added to my repo the same check for nixosConfigurations like that:

{inputs, self, lib, ...}: let
  mkGithubMatrix = nixConf: {
    matrix = {
      include = builtins.map (x: {
        attr = "nixosConfigurations.${x}.config.system.build.toplevel";
        os = ["ubuntu-22.04"];
      }) (builtins.attrNames nixConf);
    };
  };
in {
  ...
  githubActions = inputs.nix-github-actions.lib.mkGithubMatrix {
    checks = lib.getAttrs ["x86_64-linux"] self.checks;
  };
  githubActionsNixosConf = mkGithubMatrix self.nixosConfigurations;
}

And workflow:

  ...
  nixos-conf-matrix:
    runs-on: ubuntu-latest
    outputs:
      matrix: ${{ steps.set-matrix.outputs.matrix }}
    steps:
      - uses: actions/checkout@v3
      - uses: cachix/install-nix-action@v22
      - id: set-matrix
        name: Generate Nix Matrix
        run: |
          set -Eeu
          echo "matrix=$(nix eval --json '.#githubActionsNixosConf.matrix')" >> "$GITHUB_OUTPUT"

  nixos-conf:
    needs: nixos-conf-matrix
    runs-on: ${{ matrix.os }}
    strategy:
      matrix: ${{fromJSON(needs.nixos-conf-matrix.outputs.matrix)}}
    steps:
      - uses: actions/checkout@v3
      - uses: cachix/install-nix-action@v22
      - run: nix path-info --derivation ".#${{ matrix.attr }}"

I only need an evaluation, so getting derivation works fine. I think I can make a PR (but need to figure out how to add that not so ugly like I did) if you think it fits good here

selfuryon avatar Sep 24 '23 12:09 selfuryon