aboutsummaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix190
1 files changed, 137 insertions, 53 deletions
diff --git a/flake.nix b/flake.nix
index a317e03..8e55e18 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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;
+ };
+ }
+ );
};
}