nix-github-actions
nix-github-actions copied to clipboard
Add evaluation for nixosConfigurations
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