about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--flake.lock187
-rw-r--r--flake.nix156
-rw-r--r--flake/devshell.nix41
-rw-r--r--flake/mba.nix20
4 files changed, 264 insertions, 140 deletions
diff --git a/flake.lock b/flake.lock
index 517b65f..a7a92f3 100644
--- a/flake.lock
+++ b/flake.lock
@@ -20,6 +20,25 @@
         "type": "github"
       }
     },
+    "devshell": {
+      "inputs": {
+        "nixpkgs": "nixpkgs",
+        "systems": "systems"
+      },
+      "locked": {
+        "lastModified": 1701697687,
+        "narHash": "sha256-dLLE5wQBVv+pIb4bWmKFSw2DvLVyuEk0F7ng6hpZPSU=",
+        "owner": "numtide",
+        "repo": "devshell",
+        "rev": "c3bd77911391eb1638af6ce773de86da57ee6df5",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "devshell",
+        "type": "github"
+      }
+    },
     "flake-compat": {
       "flake": false,
       "locked": {
@@ -36,9 +55,45 @@
         "type": "github"
       }
     },
+    "flake-parts": {
+      "inputs": {
+        "nixpkgs-lib": "nixpkgs-lib"
+      },
+      "locked": {
+        "lastModified": 1701473968,
+        "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=",
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "type": "github"
+      }
+    },
+    "flake-utils": {
+      "inputs": {
+        "systems": "systems_3"
+      },
+      "locked": {
+        "lastModified": 1701680307,
+        "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
     "futils": {
       "inputs": {
-        "systems": "systems"
+        "systems": "systems_2"
       },
       "locked": {
         "lastModified": 1694529238,
@@ -82,31 +137,81 @@
         ]
       },
       "locked": {
-        "lastModified": 1700392168,
-        "narHash": "sha256-v5LprEFx3u4+1vmds9K0/i7sHjT0IYGs7u9v54iz/OA=",
+        "lastModified": 1700814205,
+        "narHash": "sha256-lWqDPKHRbQfi+zNIivf031BUeyciVOtwCwTjyrhDB5g=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "28535c3a34d79071f2ccb68671971ce0c0984d7e",
+        "rev": "aeb2232d7a32530d3448318790534d196bf9427a",
         "type": "github"
       },
       "original": {
         "owner": "nix-community",
-        "ref": "release-23.05",
+        "ref": "release-23.11",
         "repo": "home-manager",
         "type": "github"
       }
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1701389149,
-        "narHash": "sha256-rU1suTIEd5DGCaAXKW6yHoCfR1mnYjOXQFOaH7M23js=",
+        "lastModified": 1677383253,
+        "narHash": "sha256-UfpzWfSxkfXHnb4boXZNaKsAcUrZT9Hw+tao1oZxd08=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "5de0b32be6e85dc1a9404c75131316e4ffbc634c",
+        "rev": "9952d6bc395f5841262b006fbace8dd7e143b634",
         "type": "github"
       },
       "original": {
         "owner": "NixOS",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs-lib": {
+      "locked": {
+        "dir": "lib",
+        "lastModified": 1701253981,
+        "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58",
+        "type": "github"
+      },
+      "original": {
+        "dir": "lib",
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs-stable": {
+      "locked": {
+        "lastModified": 1701540982,
+        "narHash": "sha256-5ajSy6ODgGmAbmymRdHnjfVnuVrACjI8wXoGVvrtvww=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "6386d8aafc28b3a7ed03880a57bdc6eb4465491d",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixos-23.05",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_2": {
+      "locked": {
+        "lastModified": 1701539137,
+        "narHash": "sha256-nVO/5QYpf1GwjvtpXhyxx5M3U/WN0MwBro4Lsk+9mL0=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "933d7dc155096e7575d207be6fb7792bc9f34f6d",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
         "ref": "nixos-23.11",
         "repo": "nixpkgs",
         "type": "github"
@@ -115,16 +220,12 @@
     "pre-commit-hooks": {
       "inputs": {
         "flake-compat": "flake-compat",
-        "flake-utils": [
-          "futils"
-        ],
+        "flake-utils": "flake-utils",
         "gitignore": "gitignore",
         "nixpkgs": [
           "nixpkgs"
         ],
-        "nixpkgs-stable": [
-          "nixpkgs"
-        ]
+        "nixpkgs-stable": "nixpkgs-stable"
       },
       "locked": {
         "lastModified": 1700922917,
@@ -136,7 +237,6 @@
       },
       "original": {
         "owner": "cachix",
-        "ref": "master",
         "repo": "pre-commit-hooks.nix",
         "type": "github"
       }
@@ -144,10 +244,13 @@
     "root": {
       "inputs": {
         "darwin": "darwin",
+        "devshell": "devshell",
+        "flake-parts": "flake-parts",
         "futils": "futils",
         "home-manager": "home-manager",
-        "nixpkgs": "nixpkgs",
-        "pre-commit-hooks": "pre-commit-hooks"
+        "nixpkgs": "nixpkgs_2",
+        "pre-commit-hooks": "pre-commit-hooks",
+        "treefmt-nix": "treefmt-nix"
       }
     },
     "systems": {
@@ -164,6 +267,56 @@
         "repo": "default",
         "type": "github"
       }
+    },
+    "systems_2": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "systems_3": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "treefmt-nix": {
+      "inputs": {
+        "nixpkgs": [
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1699786194,
+        "narHash": "sha256-3h3EH1FXQkIeAuzaWB+nK0XK54uSD46pp+dMD3gAcB4=",
+        "owner": "numtide",
+        "repo": "treefmt-nix",
+        "rev": "e82f32aa7f06bbbd56d7b12186d555223dc399d1",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "treefmt-nix",
+        "type": "github"
+      }
     }
   },
   "root": "root",
diff --git a/flake.nix b/flake.nix
index 072ad80..8994fc9 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,23 +2,11 @@
   description = "personal NixOS configurations";
 
   inputs = {
-    nixpkgs = {
-      type = "github";
-      owner = "NixOS";
-      repo = "nixpkgs";
-      ref = "nixos-23.05";
-    };
-
-    futils.url = "github:numtide/flake-utils";
+    nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
 
     home-manager = {
-      type = "github";
-      owner = "nix-community";
-      repo = "home-manager";
-      ref = "release-23.05";
-      inputs = {
-        nixpkgs.follows = "nixpkgs";
-      };
+      url = "github:nix-community/home-manager/release-23.11";
+      inputs.nixpkgs.follows = "nixpkgs";
     };
 
     darwin = {
@@ -26,124 +14,46 @@
       inputs.nixpkgs.follows = "nixpkgs";
     };
 
+    treefmt-nix = {
+      url = "github:numtide/treefmt-nix";
+      inputs.nixpkgs.follows = "nixpkgs";
+    };
+
     pre-commit-hooks = {
-      type = "github";
-      owner = "cachix";
-      repo = "pre-commit-hooks.nix";
-      ref = "master";
-      inputs = {
-        flake-utils.follows = "futils";
-        nixpkgs.follows = "nixpkgs";
-        nixpkgs-stable.follows = "nixpkgs";
-      };
+      url = "github:cachix/pre-commit-hooks.nix";
+      inputs.nixpkgs.follows = "nixpkgs";
     };
-  };
 
-  # Output config, or config for NixOS system
-  outputs = inputs@{ self, darwin, home-manager, ... }:
-    let
-      myLib = import ./nix inputs;
-      lib = inputs.nixpkgs.lib // builtins;
-      supportedSystems = [ "aarch64-darwin" ];
-      forAllSystems = lib.genAttrs supportedSystems;
+    devshell.url = "github:numtide/devshell";
 
-      # Nixpkgs instantiated for supported system types.
-      nixpkgsFor = forAllSystems (system:
-        import inputs.nixpkgs {
-          inherit system;
-          config = { allowUnfree = true; };
-        });
-    in
-    {
-      templates = import ./templates;
+    # utils
+    futils.url = "github:numtide/flake-utils";
+    flake-parts.url = "github:hercules-ci/flake-parts";
+  };
 
-      checks = forAllSystems (system:
-        let pkgs = nixpkgsFor.${system};
+  # Output config, or config for NixOS system
+  outputs = inputs@{ self, flake-parts, ... }:
+    flake-parts.lib.mkFlake { inherit inputs; } {
+      flake =
+        let
+          mba = import ./flake/mba.nix {
+            inherit (inputs) nixpkgs home-manager darwin;
+            inherit inputs;
+          };
         in
         {
-          pre-commit-check = inputs.pre-commit-hooks.lib."${system}".run {
-            src = ./.;
-            hooks = {
-              nixpkgs-fmt.enable = true;
-              trailing-whitespace = {
-                enable = true;
-                entry =
-                  "${pkgs.python3Packages.pre-commit-hooks}/bin/trailing-whitespace-fixer";
-                types = [ "text" ];
-              };
-
-              end-of-file-fixer = {
-                enable = true;
-                entry =
-                  "${pkgs.python3Packages.pre-commit-hooks}/bin/end-of-file-fixer";
-                types = [ "text" ];
-              };
-
-              check-executables-have-shebangs = {
-                entry =
-                  "${pkgs.python3Packages.pre-commit-hooks}/bin/check-executables-have-shebangs";
-                types = [ "text" "executable" ];
-              };
-
-              check-json = {
-                enable = true;
-                entry = "${pkgs.python3Packages.pre-commit-hooks}/bin/check-json";
-                types = [ "json" ];
-              };
-
-              check-toml = {
-                enable = true;
-                entry = "${pkgs.python3Packages.pre-commit-hooks}/bin/check-toml";
-                types = [ "toml" ];
-              };
-
-              check-yaml = {
-                enable = true;
-                entry = "${pkgs.python3Packages.pre-commit-hooks}/bin/check-yaml --allow-multiple-documents";
-                types = [ "yaml" ];
-              };
-
-              shellcheck = {
-                enable = true;
-                files = "\\.sh$";
-                types_or = [ "file" ];
-              };
-            };
+          darwinConfigurations = {
+            mba-fcuny = mba.system;
           };
-        });
-
-      devShells = forAllSystems (system: {
-        default = inputs.nixpkgs.legacyPackages.${system}.mkShell {
-          name = "fcuny-configuration-on-${system}-system";
-          buildInputs = with inputs.nixpkgs.legacyPackages.${system}.pkgs; [
-            gitAndTools.pre-commit
-            nixfmt
-            nixpkgs-fmt
-            rnix-lsp
-            home-manager
-            git
-            nixos-rebuild
-          ];
-          inherit (self.checks.${system}.pre-commit-check) shellHook;
         };
-      });
 
-      packages = forAllSystems (system:
-        let pkgs = nixpkgsFor.${system};
-        in
-        {
-          inherit (inputs.futils.lib) filterPackages flattenTree;
-          tools = import ./tools { inherit pkgs; };
-        });
+      systems = [
+        "aarch64-darwin"
+        "x86_64-linux"
+      ];
 
-      darwinConfigurations = {
-        "mba-fcuny" = darwin.lib.darwinSystem {
-          system = "aarch64-darwin";
-          modules = [
-            home-manager.darwinModules.home-manager
-            ./hosts/mba
-          ];
-        };
-      };
+      imports = [
+        ./flake/devshell.nix
+      ];
     };
 }
diff --git a/flake/devshell.nix b/flake/devshell.nix
new file mode 100644
index 0000000..f096bfe
--- /dev/null
+++ b/flake/devshell.nix
@@ -0,0 +1,41 @@
+{ inputs, ... }: {
+  imports = [
+    inputs.devshell.flakeModule
+    inputs.treefmt-nix.flakeModule
+    inputs.pre-commit-hooks.flakeModule
+  ];
+
+  perSystem = { config, pkgs, inputs', ... }: {
+    devShells.default = pkgs.mkShell {
+      name = "dotfiles";
+
+      packages = [
+      ];
+
+      TREEFMT_CONFIG_FILE = config.treefmt.build.configFile;
+    };
+
+    treefmt = {
+      projectRootFile = ".git/config";
+
+      # list of supported programs
+      # https://github.com/numtide/treefmt-nix
+      programs = {
+        nixpkgs-fmt.enable = true;
+        shfmt.enable = true;
+        yamlfmt.enable = true;
+        taplo.enable = true;
+      };
+    };
+
+    pre-commit = {
+      settings = {
+        hooks = {
+          # deadnix.enable = true;
+          shellcheck.enable = true;
+          treefmt.enable = true;
+        };
+      };
+    };
+  };
+}
diff --git a/flake/mba.nix b/flake/mba.nix
new file mode 100644
index 0000000..60ac876
--- /dev/null
+++ b/flake/mba.nix
@@ -0,0 +1,20 @@
+{ nixpkgs, home-manager, darwin, inputs, ... }:
+
+let
+  default-system = "aarch64-darwin";
+
+  nixpkgsConfig = {
+    config = {
+      allowUnfree = true;
+    };
+  };
+in
+{
+  system = darwin.lib.darwinSystem {
+    system = default-system;
+    modules = [
+      ../hosts/mba
+      home-manager.darwinModules.home-manager
+    ];
+  };
+}