about summary refs log tree commit diff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix54
1 files changed, 50 insertions, 4 deletions
diff --git a/flake.nix b/flake.nix
index e82e17f..e69d64c 100644
--- a/flake.nix
+++ b/flake.nix
@@ -18,32 +18,78 @@
       url = "github:numtide/treefmt-nix";
       inputs.nixpkgs.follows = "nixpkgs";
     };
+
+    flake-utils.url = "github:numtide/flake-utils";
+    pre-commit-hooks = {
+      url = "github:cachix/pre-commit-hooks.nix";
+      inputs.nixpkgs.follows = "nixpkgs";
+    };
+    devshell.url = "github:numtide/devshell";
+    devshell.inputs.nixpkgs.follows = "nixpkgs";
   };
 
   # Output config, or config for NixOS system
-  outputs = { nixpkgs, darwin, ... }@inputs:
-    let mkSystem = import ./nix/lib/mkSystem.nix { inherit nixpkgs inputs; };
-    in {
+  outputs =
+    { self
+    , nixpkgs
+    , darwin
+    , flake-utils
+    , pre-commit-hooks
+    , devshell
+    , ...
+    }@inputs:
+    flake-utils.lib.eachDefaultSystem (system:
+    let
+      pkgs = import nixpkgs {
+        inherit system;
+        overlays = [ devshell.overlays.default ];
+      };
+      mkSystem = import ./nix/lib/mkSystem.nix { inherit nixpkgs inputs; };
+    in
+    {
+      checks = {
+        pre-commit-check = pre-commit-hooks.lib.${system}.run {
+          src = ./.;
+          hooks = {
+            nixpkgs-fmt.enable = true;
+            check-merge-conflicts.enable = true;
+            end-of-file-fixer.enable = true;
+          };
+        };
+      };
+
+      devShells.default = pkgs.devshell.mkShell {
+        packages = with pkgs; [ just ];
+        env = [{
+          name = "DEVSHELL_NO_MOTD";
+          value = "1";
+        }];
+      };
+
+      # a VM running on the MacBook Air
       nixosConfigurations.vm-aarch64 = mkSystem "vm-aarch64" {
         system = "aarch64-linux";
         user = "fcuny";
       };
 
+      # a VM running on the synology DS923+
       nixosConfigurations.vm-synology = mkSystem "vm-synology" {
         system = "x86_64-linux";
         user = "fcuny";
       };
 
+      # my personal MacBook Air
       darwinConfigurations.macbook-air-m2 = mkSystem "macbook-air-m2" {
         system = "aarch64-darwin";
         user = "fcuny";
         darwin = true;
       };
 
+      # my work MacBook Pro
       darwinConfigurations.macbook-pro-intel = mkSystem "macbook-pro-intel" {
         system = "x86_64-darwin";
         user = "fcuny";
         darwin = true;
       };
-    };
+    });
 }