From 1bf44d86483acf806df1a5fe5b4697be427faa65 Mon Sep 17 00:00:00 2001 From: willemml Date: Fri, 10 Nov 2023 10:33:06 -0800 Subject: [PATCH] Adds new github actions workflow with cachix --- .github/workflows/nix-github-actions.yml | 36 ++++++++++++++++++++++++ flake.lock | 21 ++++++++++++++ flake.nix | 23 +++++++++++---- 3 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/nix-github-actions.yml diff --git a/.github/workflows/nix-github-actions.yml b/.github/workflows/nix-github-actions.yml new file mode 100644 index 0000000..b519381 --- /dev/null +++ b/.github/workflows/nix-github-actions.yml @@ -0,0 +1,36 @@ +name: Nix Flake actions + +on: + pull_request: + push: + branches: + - master + - main + +jobs: + nix-matrix: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - uses: actions/checkout@v4 + - uses: cachix/install-nix-action@v23 + - id: set-matrix + name: Generate Nix Matrix + run: | + set -Eeu + echo "matrix=$(nix eval --json '.#githubActions.matrix')" >> "$GITHUB_OUTPUT" + + nix-build: + needs: nix-matrix + runs-on: ${{ matrix.os }} + strategy: + matrix: ${{fromJSON(needs.nix-matrix.outputs.matrix)}} + steps: + - uses: actions/checkout@v4 + - uses: cachix/install-nix-action@v23 + - uses: cachix/cachix-action@v12 + with: + name: willemml + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' + - run: nix build -L ".#${{ matrix.attr }}" diff --git a/flake.lock b/flake.lock index cc16027..e5cf619 100644 --- a/flake.lock +++ b/flake.lock @@ -234,6 +234,26 @@ "type": "github" } }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1698974481, + "narHash": "sha256-yPncV9Ohdz1zPZxYHQf47S8S0VrnhV7nNhCawY46hDA=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "4bb5e752616262457bc7ca5882192a564c0472d2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, "nix-index-database": { "inputs": { "nixpkgs": [ @@ -406,6 +426,7 @@ "flake-parts": "flake-parts", "home-manager": "home-manager", "hyprland": "hyprland", + "nix-github-actions": "nix-github-actions", "nix-index-database": "nix-index-database", "nixos-apple-silicon": "nixos-apple-silicon", "nixpkgs": "nixpkgs_3", diff --git a/flake.nix b/flake.nix index 60599c2..10b44d7 100644 --- a/flake.nix +++ b/flake.nix @@ -27,20 +27,24 @@ nix-index-database.url = "github:Mic92/nix-index-database"; nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; + + nix-github-actions.url = "github:nix-community/nix-github-actions"; + nix-github-actions.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { + darwin, flake-parts, home-manager, + nix-github-actions, nixpkgs, pre-commit-hooks, - darwin, self, ... } @ inputs: let globals = import ./common/globals.nix; in - inputs.flake-parts.lib.mkFlake {inherit inputs;} { + inputs.flake-parts.lib.mkFlake {inherit inputs;} rec { imports = [ ./flake/home-manager.nix ./flake/overlays.nix @@ -77,6 +81,7 @@ config ]; }); + forAllSystems = nixpkgs.lib.genAttrs systems; in { nixosConfigurations.x86_64-live = mkNixos "x86_64" ./nixos/hosts/x86_64-live.nix; nixosConfigurations.aarch64-live = mkNixos "aarch64" ./nixos/hosts/aarch64-live.nix; @@ -88,15 +93,19 @@ darwinConfigurations.zeus = mkDarwin "aarch64" ./nixos/hosts/zeus.nix; - homeConfigurations.willem-aarch64-darwin = mkHome "aarch64-darwin" ./home/darwin/default.nix; - - packages.aarch64-darwin.home = self.homeConfigurations.willem-aarch64-darwin.activationPackage; + homeConfigurations = forAllSystems (system: {willem = mkHome system ./home/${builtins.replaceStrings ["aarch64-" "x86_64-"] ["" ""] system}/default.nix;}); packages.aarch64-darwin.minimal-vm = self.nixosConfigurations.darwin-arm-minimal-vm.config.system.build.vm; packages.aarch64-darwin.homeconsole-vm = self.nixosConfigurations.darwin-arm-homeconsole-vm.config.system.build.vm; packages.x86_64-linux.live-image = self.nixosConfigurations.x86_64-live.config.system.build.isoImage; packages.aarch64-linux.live-image = self.nixosConfigurations.x86_64-live.config.system.build.isoImage; + + checks.x86_64-linux.nixbox = self.nixosConfigurations.nixbox.config.system.build.topLevel; + + githubActions = nix-github-actions.lib.mkGithubMatrix { + checks = nixpkgs.lib.getAttrs ["x86_64-linux" "x86_64-darwin"] self.checks; + }; }; perSystem = { @@ -113,6 +122,10 @@ }; }; + checks.home = self'.packages.home; + + packages.home = self.homeConfigurations.${system}.willem.activationPackage; + devShells.default = pkgs.mkShell { inherit (self'.checks.pre-commit-check) shellHook; };