From 1a5d835d47a9f8885d1be8aabc6426e819e4f835 Mon Sep 17 00:00:00 2001
From: notohh <github@notohh.dev>
Date: Sat, 8 Feb 2025 13:30:25 -0500
Subject: [PATCH] add pre-commit to separate module && init topology

---
 flake.lock             | 191 +++++++++++++++++++++++++++++++++++------
 flake.nix              |  29 ++-----
 modules/pre-commit.nix |  27 ++++++
 modules/topology.nix   |  16 ++++
 4 files changed, 216 insertions(+), 47 deletions(-)
 create mode 100644 modules/pre-commit.nix
 create mode 100644 modules/topology.nix

diff --git a/flake.lock b/flake.lock
index dffbce7..9208c02 100644
--- a/flake.lock
+++ b/flake.lock
@@ -515,6 +515,27 @@
         "type": "github"
       }
     },
+    "devshell": {
+      "inputs": {
+        "nixpkgs": [
+          "nix-topology",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1728330715,
+        "narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=",
+        "owner": "numtide",
+        "repo": "devshell",
+        "rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "devshell",
+        "type": "github"
+      }
+    },
     "eww": {
       "inputs": {
         "flake-compat": "flake-compat_7",
@@ -649,20 +670,6 @@
       }
     },
     "flake-compat_12": {
-      "locked": {
-        "lastModified": 1733328505,
-        "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
-        "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
-        "revCount": 69,
-        "type": "tarball",
-        "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz"
-      },
-      "original": {
-        "type": "tarball",
-        "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
-      }
-    },
-    "flake-compat_13": {
       "flake": false,
       "locked": {
         "lastModified": 1696426674,
@@ -678,7 +685,37 @@
         "type": "github"
       }
     },
+    "flake-compat_13": {
+      "locked": {
+        "lastModified": 1733328505,
+        "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
+        "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
+        "revCount": 69,
+        "type": "tarball",
+        "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz"
+      },
+      "original": {
+        "type": "tarball",
+        "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
+      }
+    },
     "flake-compat_14": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1696426674,
+        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
+    "flake-compat_15": {
       "flake": false,
       "locked": {
         "lastModified": 1733328505,
@@ -1119,11 +1156,11 @@
         "systems": "systems_22"
       },
       "locked": {
-        "lastModified": 1731533236,
-        "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
+        "lastModified": 1726560853,
+        "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
         "owner": "numtide",
         "repo": "flake-utils",
-        "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
+        "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
         "type": "github"
       },
       "original": {
@@ -1168,6 +1205,24 @@
         "type": "github"
       }
     },
+    "flake-utils_9": {
+      "inputs": {
+        "systems": "systems_25"
+      },
+      "locked": {
+        "lastModified": 1731533236,
+        "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
     "flocon": {
       "inputs": {
         "agenix": "agenix",
@@ -1322,6 +1377,28 @@
       }
     },
     "gitignore_5": {
+      "inputs": {
+        "nixpkgs": [
+          "nix-topology",
+          "pre-commit-hooks",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1709087332,
+        "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
+        "owner": "hercules-ci",
+        "repo": "gitignore.nix",
+        "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "gitignore.nix",
+        "type": "github"
+      }
+    },
+    "gitignore_6": {
       "inputs": {
         "nixpkgs": [
           "pre-commit-hooks",
@@ -3119,6 +3196,29 @@
         "type": "github"
       }
     },
+    "nix-topology": {
+      "inputs": {
+        "devshell": "devshell",
+        "flake-utils": "flake-utils_6",
+        "nixpkgs": [
+          "nixpkgs"
+        ],
+        "pre-commit-hooks": "pre-commit-hooks_4"
+      },
+      "locked": {
+        "lastModified": 1738246091,
+        "narHash": "sha256-2+KkZsRO+XlOFbXbRgMZbRtlqn5MBNYj4HNmZ/2Tojg=",
+        "owner": "oddlama",
+        "repo": "nix-topology",
+        "rev": "5526269fa3eedf4f4bc00c0bf7a03db31d24b029",
+        "type": "github"
+      },
+      "original": {
+        "owner": "oddlama",
+        "repo": "nix-topology",
+        "type": "github"
+      }
+    },
     "nixos-hardware": {
       "locked": {
         "lastModified": 1738816619,
@@ -3276,8 +3376,8 @@
     },
     "nixpkgs-xr": {
       "inputs": {
-        "flake-compat": "flake-compat_12",
-        "flake-utils": "flake-utils_6",
+        "flake-compat": "flake-compat_13",
+        "flake-utils": "flake-utils_7",
         "nixpkgs": "nixpkgs_19",
         "treefmt-nix": "treefmt-nix_2"
       },
@@ -6604,8 +6704,35 @@
     },
     "pre-commit-hooks_4": {
       "inputs": {
-        "flake-compat": "flake-compat_13",
+        "flake-compat": "flake-compat_12",
         "gitignore": "gitignore_5",
+        "nixpkgs": [
+          "nix-topology",
+          "nixpkgs"
+        ],
+        "nixpkgs-stable": [
+          "nix-topology",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1730797577,
+        "narHash": "sha256-SrID5yVpyUfknUTGWgYkTyvdr9J1LxUym4om3SVGPkg=",
+        "owner": "cachix",
+        "repo": "pre-commit-hooks.nix",
+        "rev": "1864030ed24a2b8b4e4d386a5eeaf0c5369e50a9",
+        "type": "github"
+      },
+      "original": {
+        "owner": "cachix",
+        "repo": "pre-commit-hooks.nix",
+        "type": "github"
+      }
+    },
+    "pre-commit-hooks_5": {
+      "inputs": {
+        "flake-compat": "flake-compat_14",
+        "gitignore": "gitignore_6",
         "nixpkgs": "nixpkgs_21"
       },
       "locked": {
@@ -6624,7 +6751,7 @@
     },
     "prismlauncher": {
       "inputs": {
-        "flake-compat": "flake-compat_14",
+        "flake-compat": "flake-compat_15",
         "libnbtplusplus": "libnbtplusplus",
         "nix-filter": "nix-filter_2",
         "nixpkgs": "nixpkgs_22"
@@ -6706,11 +6833,12 @@
         "hyprwayland-scanner": "hyprwayland-scanner_11",
         "manga-tui": "manga-tui",
         "nix-gaming": "nix-gaming_2",
+        "nix-topology": "nix-topology",
         "nixos-hardware": "nixos-hardware_2",
         "nixpkgs": "nixpkgs_18",
         "nixpkgs-xr": "nixpkgs-xr",
         "nur": "nur",
-        "pre-commit-hooks": "pre-commit-hooks_4",
+        "pre-commit-hooks": "pre-commit-hooks_5",
         "prismlauncher": "prismlauncher",
         "scls": "scls",
         "sops-nix": "sops-nix",
@@ -6878,7 +7006,7 @@
     },
     "scls": {
       "inputs": {
-        "flake-utils": "flake-utils_7",
+        "flake-utils": "flake-utils_8",
         "naersk": "naersk",
         "nixpkgs": [
           "nixpkgs"
@@ -7173,6 +7301,21 @@
         "type": "github"
       }
     },
+    "systems_25": {
+      "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": 1689347949,
@@ -7483,7 +7626,7 @@
     },
     "yazi": {
       "inputs": {
-        "flake-utils": "flake-utils_8",
+        "flake-utils": "flake-utils_9",
         "nixpkgs": "nixpkgs_23",
         "rust-overlay": "rust-overlay_5"
       },
diff --git a/flake.nix b/flake.nix
index ec22d8f..3acebce 100755
--- a/flake.nix
+++ b/flake.nix
@@ -4,11 +4,12 @@
   outputs = inputs:
     inputs.flake-parts.lib.mkFlake {inherit inputs;} {
       imports = [
-        inputs.pre-commit-hooks.flakeModule
         ./hosts
         ./overlays
         ./hosts/deploy.nix
         ./home/profiles
+        ./modules/pre-commit.nix
+        ./modules/topology.nix
       ];
       systems = ["x86_64-linux"];
       perSystem = {
@@ -16,28 +17,6 @@
         pkgs,
         ...
       }: {
-        pre-commit = {
-          check.enable = true;
-          settings = {
-            excludes = ["flake.lock"];
-            hooks = {
-              stylua.enable = true;
-              statix.enable = true;
-              alejandra.enable = true;
-              deadnix = {
-                enable = true;
-                excludes = ["technorino.nix"];
-              };
-              prettier = {
-                enable = true;
-                files = "\\.(js|ts|md|json)$";
-                settings = {
-                  trailing-comma = "none";
-                };
-              };
-            };
-          };
-        };
         devShells.default = pkgs.mkShell {
           name = "snowflake";
           shellHook = config.pre-commit.installationScript;
@@ -137,5 +116,9 @@
       url = "github:youwen5/zen-browser-flake";
       inputs.nixpkgs.follows = "nixpkgs";
     };
+    nix-topology = {
+      url = "github:oddlama/nix-topology";
+      inputs.nixpkgs.follows = "nixpkgs";
+    };
   };
 }
diff --git a/modules/pre-commit.nix b/modules/pre-commit.nix
new file mode 100644
index 0000000..00f54c8
--- /dev/null
+++ b/modules/pre-commit.nix
@@ -0,0 +1,27 @@
+{inputs, ...}: {
+  imports = [
+    inputs.pre-commit-hooks.flakeModule
+  ];
+  perSystem.pre-commit = {
+    check.enable = true;
+    settings = {
+      excludes = ["flake.lock"];
+      hooks = {
+        stylua.enable = true;
+        statix.enable = true;
+        alejandra.enable = true;
+        deadnix = {
+          enable = true;
+          excludes = ["technorino.nix"];
+        };
+        prettier = {
+          enable = true;
+          files = "\\.(js|ts|md|json)$";
+          settings = {
+            trailing-comma = "none";
+          };
+        };
+      };
+    };
+  };
+}
diff --git a/modules/topology.nix b/modules/topology.nix
new file mode 100644
index 0000000..f19204c
--- /dev/null
+++ b/modules/topology.nix
@@ -0,0 +1,16 @@
+{
+  inputs,
+  self,
+  ...
+}: {
+  imports = [
+    inputs.nix-topology.flakeModule
+  ];
+  perSystem = _: {
+    topology.modules = [
+      {
+        inherit (self) nixosConfigurations;
+      }
+    ];
+  };
+}