diff options
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 190 |
1 files changed, 137 insertions, 53 deletions
@@ -44,9 +44,27 @@ ... }@inputs: let - system = "aarch64-darwin"; - pkgs = import nixpkgs { inherit system; }; - pkgsUnstable = import nixpkgsUnstable { inherit system; }; + supportedSystems = [ + "aarch64-darwin" + "x86_64-linux" + ]; + + # Function to generate attributes for each system + forAllSystems = nixpkgs.lib.genAttrs supportedSystems; + + # Function to get pkgs for a specific system + getPkgs = + system: + import nixpkgs { + inherit system; + overlays = overlays; + }; + + getPkgsUnstable = + system: + import nixpkgsUnstable { + inherit system; + }; # Define overlays here overlays = [ @@ -56,7 +74,7 @@ customPackages = builtins.mapAttrs ( name: _: final.callPackage (./pkgs + "/${name}") { - inherit pkgsUnstable; + pkgsUnstable = getPkgsUnstable final.system; } ) (builtins.readDir ./pkgs); }) @@ -65,40 +83,59 @@ mkSystem = import ./nix/lib/mkSystem.nix { inherit nixpkgs inputs overlays; }; - - treefmtEval = treefmt-nix.lib.evalModule pkgs { - projectRootFile = "flake.nix"; - programs = { - nixfmt.enable = true; - actionlint.enable = true; - deadnix.enable = true; - }; - }; in { # nix fmt - formatter.${system} = treefmtEval.config.build.wrapper; - - # nix flake check - checks.${system} = { - pre-commit-check = inputs.pre-commit-hooks.lib.${pkgs.system}.run { - src = ./.; - hooks = { - actionlint.enable = true; - check-merge-conflicts.enable = true; - deadnix.enable = true; - detect-private-keys.enable = true; - end-of-file-fixer.enable = true; - mixed-line-endings.enable = true; - shellcheck.enable = true; - treefmt = { - enable = true; - entry = "${treefmtEval.config.build.wrapper}/bin/treefmt --ci"; + formatter = forAllSystems ( + system: + let + pkgs = getPkgs system; + treefmtEval = treefmt-nix.lib.evalModule pkgs { + projectRootFile = "flake.nix"; + programs = { + nixfmt.enable = true; + actionlint.enable = true; + deadnix.enable = true; }; - trim-trailing-whitespace.enable = true; }; - }; - }; + in + treefmtEval.config.build.wrapper + ); + + # Checks for each system + checks = forAllSystems ( + system: + let + pkgs = getPkgs system; + treefmtEval = treefmt-nix.lib.evalModule pkgs { + projectRootFile = "flake.nix"; + programs = { + nixfmt.enable = true; + actionlint.enable = true; + deadnix.enable = true; + }; + }; + in + { + pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run { + src = ./.; + hooks = { + actionlint.enable = true; + check-merge-conflicts.enable = true; + deadnix.enable = true; + detect-private-keys.enable = true; + end-of-file-fixer.enable = true; + mixed-line-endings.enable = true; + shellcheck.enable = true; + treefmt = { + enable = true; + entry = "${treefmtEval.config.build.wrapper}/bin/treefmt --ci"; + }; + trim-trailing-whitespace.enable = true; + }; + }; + } + ); # my personal MacBook Air darwinConfigurations.mba-m2 = mkSystem "mba-m2" { @@ -114,25 +151,72 @@ darwin = true; }; - devShells.${system}.default = pkgs.mkShellNoCC { - packages = with pkgs; [ - git - (writeScriptBin "nbuild" '' - set -e - echo "> Running darwin-rebuild build..." - ${inputs.darwin.packages.${system}.darwin-rebuild}/bin/darwin-rebuild build --flake . - echo "> darwin-rebuild build was successful ✅" - echo "> macOS config was successfully applied 🚀" - '') - (writeScriptBin "nswitch" '' - set -e - echo "> Running darwin-rebuild switch..." - ${inputs.darwin.packages.${system}.darwin-rebuild}/bin/darwin-rebuild switch --flake . - echo "> darwin-rebuild build was successful ✅" - echo "> macOS config was successfully applied 🚀" - '') - (writeScriptBin "update-deps" "nix flake update --commit-lock-file") - ]; - }; + # Dev shells for each system + devShells = forAllSystems ( + system: + let + pkgs = getPkgs system; + + # Scripts that are specific to darwin + darwinScripts = + if nixpkgs.lib.hasSuffix "darwin" system then + [ + (pkgs.writeScriptBin "nbuild" '' + set -e + echo "> Running darwin-rebuild build..." + ${inputs.darwin.packages.${system}.darwin-rebuild}/bin/darwin-rebuild build --flake . + echo "> darwin-rebuild build was successful ✅" + echo "> macOS config was successfully applied 🚀" + '') + (pkgs.writeScriptBin "nswitch" '' + set -e + echo "> Running darwin-rebuild switch..." + ${inputs.darwin.packages.${system}.darwin-rebuild}/bin/darwin-rebuild switch --flake . + echo "> darwin-rebuild build was successful ✅" + echo "> macOS config was successfully applied 🚀" + '') + ] + else + [ ]; + + # Scripts that are specific to linux + linuxScripts = + if nixpkgs.lib.hasSuffix "linux" system then + [ + (pkgs.writeScriptBin "nbuild" '' + set -e + echo "> Running nixos-rebuild build..." + sudo nixos-rebuild build --flake . + echo "> nixos-rebuild build was successful ✅" + '') + (pkgs.writeScriptBin "nswitch" '' + set -e + echo "> Running nixos-rebuild switch..." + sudo nixos-rebuild switch --flake . + echo "> nixos-rebuild switch was successful ✅" + echo "> NixOS config was successfully applied 🚀" + '') + ] + else + [ ]; + + commonScripts = [ + (pkgs.writeScriptBin "update-deps" "nix flake update --commit-lock-file") + ]; + + systemSpecificScripts = darwinScripts ++ linuxScripts; + in + { + default = pkgs.mkShellNoCC { + packages = + with pkgs; + [ + git + ] + ++ commonScripts + ++ systemSpecificScripts; + }; + } + ); }; } |
