about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2024-05-01 03:36:55 +0300
committerAzat Bahawi <azat@bahawi.net>2024-05-01 03:36:55 +0300
commit9a20404924fda2587ce4f9769f75369799f34643 (patch)
treea953941a22d6c031e67b267e35a11db72bdd25e3
parent2024-04-29 (diff)
2024-05-01
-rw-r--r--checks.nix8
-rw-r--r--configurations/default.nix96
-rw-r--r--configurations/eonwe/default.nix (renamed from nixosConfigurations/eonwe/default.nix)0
-rw-r--r--configurations/iso/default.nix (renamed from nixosConfigurations/iso/default.nix)0
-rw-r--r--configurations/manwe/default.nix (renamed from nixosConfigurations/manwe/default.nix)0
-rw-r--r--configurations/manwe/mailserver/default.nix (renamed from nixosConfigurations/manwe/mailserver/default.nix)0
-rw-r--r--configurations/manwe/webserver.nix (renamed from nixosConfigurations/manwe/webserver.nix)0
-rw-r--r--configurations/melian/default.nix (renamed from nixosConfigurations/melian/default.nix)0
-rw-r--r--configurations/test-headful/default.nix (renamed from nixosConfigurations/test-headful/default.nix)0
-rw-r--r--configurations/test-headless/default.nix (renamed from nixosConfigurations/test-headless/default.nix)0
-rw-r--r--configurations/varda/default.nix (renamed from nixosConfigurations/varda/default.nix)0
-rw-r--r--configurations/yavanna/default.nix (renamed from nixosConfigurations/yavanna/default.nix)0
-rw-r--r--flake.lock473
-rw-r--r--flake.nix92
-rw-r--r--modules/default.nix8
-rw-r--r--modules/profiles/headful.nix3
-rw-r--r--modules/x11.nix2
-rw-r--r--nixosConfigurations/default.nix92
-rw-r--r--overlay.nix102
-rw-r--r--overlays.nix104
-rw-r--r--topology.nix8
21 files changed, 651 insertions, 337 deletions
diff --git a/checks.nix b/checks.nix
index a1915fa..86cb452 100644
--- a/checks.nix
+++ b/checks.nix
@@ -1,9 +1,5 @@
-{ inputs, system }:
-let
-  pkgs = inputs.self.legacyPackages.${system};
-in
-{
-  preCommit = inputs.pre-commit.lib.${system}.run {
+inputs: system: pkgs: {
+  preCommit = inputs.git-hooks.lib.${system}.run {
     src = builtins.path {
       name = "nixfiles";
       path = ./.;
diff --git a/configurations/default.nix b/configurations/default.nix
new file mode 100644
index 0000000..1c1bda0
--- /dev/null
+++ b/configurations/default.nix
@@ -0,0 +1,96 @@
+inputs:
+with inputs.self.lib;
+let
+  mkConfiguration =
+    name:
+    {
+      modules ? [ ],
+      configuration ? ./${name},
+      this ? my.configurations.${name},
+    }:
+    nameValuePair name (nixosSystem {
+      inherit (this) system;
+      modules =
+        modules
+        ++ attrValues inputs.self.nixosModules
+        ++ attrValues inputs.nix-topology.nixosModules
+        ++ optional (configuration != null) (import configuration);
+      specialArgs = {
+        inherit inputs this;
+        inherit (inputs.self) lib;
+      };
+    });
+in
+mapAttrs' mkConfiguration (
+  let
+    mkTest = this: {
+      modules = with inputs; [
+        "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
+        nixpkgs.nixosModules.notDetected
+      ];
+      inherit this;
+    };
+  in
+  {
+    test-headless = mkTest {
+      hostname = "test-headless";
+      system = "x86_64-linux";
+      isHeadless = true;
+      isHeadful = false;
+    };
+
+    test-headful = mkTest {
+      hostname = "test-headful";
+      system = "x86_64-linux";
+      isHeadless = false;
+      isHeadful = true;
+    };
+
+    iso = {
+      this = {
+        hostname = "iso";
+        system = "x86_64-linux";
+        isHeadless = false;
+        isHeadful = false;
+      };
+      modules = [
+        "${inputs.nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel.nix"
+      ];
+    };
+
+    eonwe.modules = with inputs; [
+      nixos-hardware.nixosModules.common-cpu-amd
+      nixos-hardware.nixosModules.common-cpu-amd-pstate
+      nixos-hardware.nixosModules.common-gpu-amd
+      nixos-hardware.nixosModules.common-pc-ssd
+      nixpkgs.nixosModules.notDetected
+    ];
+
+    melian.modules = with inputs; [
+      nixos-hardware.nixosModules.common-pc-laptop-ssd
+      nixos-hardware.nixosModules.lenovo-thinkpad-t480
+      nixpkgs.nixosModules.notDetected
+    ];
+
+    manwe.modules = with inputs; [
+      "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
+      nixos-hardware.nixosModules.common-cpu-amd
+      nixos-hardware.nixosModules.common-pc-ssd
+      nixpkgs.nixosModules.notDetected
+    ];
+
+    varda.modules = with inputs; [
+      "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
+      nixos-hardware.nixosModules.common-cpu-amd
+      nixos-hardware.nixosModules.common-pc-ssd
+      nixpkgs.nixosModules.notDetected
+    ];
+
+    yavanna.modules = with inputs; [
+      "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
+      nixos-hardware.nixosModules.common-cpu-intel
+      nixos-hardware.nixosModules.common-pc-hdd
+      nixpkgs.nixosModules.notDetected
+    ];
+  }
+)
diff --git a/nixosConfigurations/eonwe/default.nix b/configurations/eonwe/default.nix
index 1904cdb..1904cdb 100644
--- a/nixosConfigurations/eonwe/default.nix
+++ b/configurations/eonwe/default.nix
diff --git a/nixosConfigurations/iso/default.nix b/configurations/iso/default.nix
index 7277e88..7277e88 100644
--- a/nixosConfigurations/iso/default.nix
+++ b/configurations/iso/default.nix
diff --git a/nixosConfigurations/manwe/default.nix b/configurations/manwe/default.nix
index 3707440..3707440 100644
--- a/nixosConfigurations/manwe/default.nix
+++ b/configurations/manwe/default.nix
diff --git a/nixosConfigurations/manwe/mailserver/default.nix b/configurations/manwe/mailserver/default.nix
index cc8b41d..cc8b41d 100644
--- a/nixosConfigurations/manwe/mailserver/default.nix
+++ b/configurations/manwe/mailserver/default.nix
diff --git a/nixosConfigurations/manwe/webserver.nix b/configurations/manwe/webserver.nix
index 95a0b0b..95a0b0b 100644
--- a/nixosConfigurations/manwe/webserver.nix
+++ b/configurations/manwe/webserver.nix
diff --git a/nixosConfigurations/melian/default.nix b/configurations/melian/default.nix
index 0805b4a..0805b4a 100644
--- a/nixosConfigurations/melian/default.nix
+++ b/configurations/melian/default.nix
diff --git a/nixosConfigurations/test-headful/default.nix b/configurations/test-headful/default.nix
index f1da389..f1da389 100644
--- a/nixosConfigurations/test-headful/default.nix
+++ b/configurations/test-headful/default.nix
diff --git a/nixosConfigurations/test-headless/default.nix b/configurations/test-headless/default.nix
index ef3d223..ef3d223 100644
--- a/nixosConfigurations/test-headless/default.nix
+++ b/configurations/test-headless/default.nix
diff --git a/nixosConfigurations/varda/default.nix b/configurations/varda/default.nix
index c8ecef2..c8ecef2 100644
--- a/nixosConfigurations/varda/default.nix
+++ b/configurations/varda/default.nix
diff --git a/nixosConfigurations/yavanna/default.nix b/configurations/yavanna/default.nix
index 2d52f53..2d52f53 100644
--- a/nixosConfigurations/yavanna/default.nix
+++ b/configurations/yavanna/default.nix
diff --git a/flake.lock b/flake.lock
index 75e6c07..6b31e0f 100644
--- a/flake.lock
+++ b/flake.lock
@@ -9,9 +9,7 @@
         "nixpkgs": [
           "nixpkgs"
         ],
-        "systems": [
-          "systems"
-        ]
+        "systems": "systems"
       },
       "locked": {
         "lastModified": 1714136352,
@@ -32,9 +30,7 @@
         "flake-compat": [
           "flake-compat"
         ],
-        "flake-utils": [
-          "flake-utils"
-        ],
+        "flake-utils": "flake-utils",
         "nixpkgs": [
           "nixpkgs"
         ]
@@ -58,14 +54,12 @@
         "flake-compat": [
           "flake-compat"
         ],
-        "flake-utils": [
-          "flake-utils"
-        ],
+        "flake-utils": "flake-utils_2",
         "nixpkgs": [
           "nixpkgs"
         ],
         "pre-commit": [
-          "pre-commit"
+          "git-hooks"
         ]
       },
       "locked": {
@@ -251,11 +245,31 @@
         "type": "github"
       }
     },
+    "devshell": {
+      "inputs": {
+        "flake-utils": "flake-utils_6",
+        "nixpkgs": [
+          "nix-topology",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1711099426,
+        "narHash": "sha256-HzpgM/wc3aqpnHJJ2oDqPBkNsqWbW0WfWUO8lKu8nGk=",
+        "owner": "numtide",
+        "repo": "devshell",
+        "rev": "2d45b54ca4a183f2fdcf4b19c895b64fbf620ee8",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "devshell",
+        "type": "github"
+      }
+    },
     "dns": {
       "inputs": {
-        "flake-utils": [
-          "flake-utils"
-        ],
+        "flake-utils": "flake-utils_3",
         "nixpkgs": [
           "nixpkgs"
         ]
@@ -285,7 +299,6 @@
       },
       "original": {
         "owner": "edolstra",
-        "ref": "master",
         "repo": "flake-compat",
         "type": "github"
       }
@@ -308,9 +321,58 @@
     },
     "flake-utils": {
       "inputs": {
-        "systems": [
-          "systems"
-        ]
+        "systems": "systems_2"
+      },
+      "locked": {
+        "lastModified": 1705309234,
+        "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_2": {
+      "inputs": {
+        "systems": "systems_3"
+      },
+      "locked": {
+        "lastModified": 1705309234,
+        "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_3": {
+      "locked": {
+        "lastModified": 1614513358,
+        "narHash": "sha256-LakhOx3S1dRjnh0b5Dg3mbZyH0ToC9I8Y2wKSkBaTzU=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "5466c5bbece17adaab2d82fae80b46e807611bf3",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_4": {
+      "inputs": {
+        "systems": "systems_4"
       },
       "locked": {
         "lastModified": 1710146030,
@@ -326,6 +388,94 @@
         "type": "github"
       }
     },
+    "flake-utils_5": {
+      "inputs": {
+        "systems": "systems_6"
+      },
+      "locked": {
+        "lastModified": 1681202837,
+        "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "cfacdce06f30d2b68473a46042957675eebb3401",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_6": {
+      "inputs": {
+        "systems": "systems_7"
+      },
+      "locked": {
+        "lastModified": 1701680307,
+        "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_7": {
+      "inputs": {
+        "systems": "systems_8"
+      },
+      "locked": {
+        "lastModified": 1710146030,
+        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_8": {
+      "inputs": {
+        "systems": "systems_9"
+      },
+      "locked": {
+        "lastModified": 1710146030,
+        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_9": {
+      "locked": {
+        "lastModified": 1659877975,
+        "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "ref": "master",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
     "fromYaml": {
       "flake": false,
       "locked": {
@@ -342,10 +492,38 @@
         "type": "github"
       }
     },
+    "git-hooks": {
+      "inputs": {
+        "flake-compat": [
+          "flake-compat"
+        ],
+        "flake-utils": "flake-utils_4",
+        "gitignore": "gitignore",
+        "nixpkgs": [
+          "nixpkgs"
+        ],
+        "nixpkgs-stable": [
+          "nixpkgs-stable"
+        ]
+      },
+      "locked": {
+        "lastModified": 1714478972,
+        "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=",
+        "owner": "cachix",
+        "repo": "git-hooks.nix",
+        "rev": "2849da033884f54822af194400f8dff435ada242",
+        "type": "github"
+      },
+      "original": {
+        "owner": "cachix",
+        "repo": "git-hooks.nix",
+        "type": "github"
+      }
+    },
     "gitignore": {
       "inputs": {
         "nixpkgs": [
-          "pre-commit",
+          "git-hooks",
           "nixpkgs"
         ]
       },
@@ -387,11 +565,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1714203603,
-        "narHash": "sha256-eT7DENhYy7EPLOqHI9zkIMD9RvMCXcqh6gGqOK5BWYQ=",
+        "lastModified": 1714515075,
+        "narHash": "sha256-azMK7aWH0eUc3IqU4Fg5rwZdB9WZBvimOGG3piqvtsY=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "c1609d584a6b5e9e6a02010f51bd368cb4782f8e",
+        "rev": "6d3b6dc9222c12b951169becdf4b0592ee9576ef",
         "type": "github"
       },
       "original": {
@@ -424,9 +602,7 @@
         "nixpkgs": [
           "nixpkgs"
         ],
-        "utils": [
-          "flake-utils"
-        ]
+        "utils": "utils"
       },
       "locked": {
         "lastModified": 1714298568,
@@ -447,19 +623,17 @@
         "flake-compat": [
           "flake-compat"
         ],
-        "flake-utils": [
-          "flake-utils"
-        ],
+        "flake-utils": "flake-utils_5",
         "nixpkgs": [
           "nixpkgs"
         ]
       },
       "locked": {
-        "lastModified": 1714180709,
-        "narHash": "sha256-UgvCa4nhcgcbMfqJhziwOjMlHPzxzbNzr9AkQb2nc/U=",
+        "lastModified": 1714439927,
+        "narHash": "sha256-XH0jGADqW5Xxd4mJIOafwfAKstn2i+UBuc8ODt3g50k=",
         "owner": "Infinidoge",
         "repo": "nix-minecraft",
-        "rev": "94da995402d449a9e8a68ca379338e002ed9e3ae",
+        "rev": "f9dbb7fb95f41d234e53ac3d46501a0aa6b1098c",
         "type": "github"
       },
       "original": {
@@ -488,13 +662,38 @@
         "type": "github"
       }
     },
+    "nix-topology": {
+      "inputs": {
+        "devshell": "devshell",
+        "flake-utils": "flake-utils_7",
+        "nixpkgs": [
+          "nixpkgs"
+        ],
+        "pre-commit-hooks": [
+          "git-hooks"
+        ]
+      },
+      "locked": {
+        "lastModified": 1714212743,
+        "narHash": "sha256-+GmuCvecraSTWylPCVSZYwAiz4lKDEpn1TIZlKz7gSw=",
+        "owner": "oddlama",
+        "repo": "nix-topology",
+        "rev": "ac69cc735c58e0028f8ef6a4b5c14efd57f5381b",
+        "type": "github"
+      },
+      "original": {
+        "owner": "oddlama",
+        "repo": "nix-topology",
+        "type": "github"
+      }
+    },
     "nixos-hardware": {
       "locked": {
-        "lastModified": 1714201532,
-        "narHash": "sha256-nk0W4rH7xYdDeS7k1SqqNtBaNrcgIBYNmOVc8P2puEY=",
+        "lastModified": 1714465198,
+        "narHash": "sha256-ySkEJvS0gPz2UhXm0H3P181T8fUxvDVcoUyGn0Kc5AI=",
         "owner": "NixOS",
         "repo": "nixos-hardware",
-        "rev": "53db5e1070d07e750030bf65f1b9963df8f0c678",
+        "rev": "68d680c1b7c0e67a9b2144d6776583ee83664ef4",
         "type": "github"
       },
       "original": {
@@ -505,11 +704,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1714245158,
-        "narHash": "sha256-9P2M0+tf1TE7Z5PwDVwhheuD2mFf6/phPr0Jvl7cxcc=",
+        "lastModified": 1714314149,
+        "narHash": "sha256-yNAevSKF4krRWacmLUsLK7D7PlfuY3zF0lYnGYNi9vQ=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "2b1f64b358f2cab62617f26b3870fd0ee375d848",
+        "rev": "cf8cc1201be8bc71b7cbbbdaf349b22f4f99c7ae",
         "type": "github"
       },
       "original": {
@@ -521,11 +720,11 @@
     },
     "nixpkgs-master": {
       "locked": {
-        "lastModified": 1714334083,
-        "narHash": "sha256-J+8rWV1oLXADlyk7kKPnTkOKal050884rt2g3bZ1KwY=",
+        "lastModified": 1714520284,
+        "narHash": "sha256-zwVUfqiFf+r5hifj7OwcFDGt1eiMaveim2ihE+m6dLA=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "d9fd2b2c31f1f983060af97da8bf56f2abe7c7fc",
+        "rev": "097de5af21721e8e36a2e0d015dc3a5917de3fa0",
         "type": "github"
       },
       "original": {
@@ -537,11 +736,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1714333746,
-        "narHash": "sha256-4PvKjtV5nINMzhe2RKmtTvlE5FGzuLbhjM4UHfMUPYc=",
+        "lastModified": 1714514061,
+        "narHash": "sha256-QgR4JVjLFFqd/khJ5Og55iyBVdqoKcrfC0urkP3ZCJA=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "007064b6be0e8cb970d6e1a8902c30a3e99167e3",
+        "rev": "95d1b593aab60766964d22d8ec0b0847678bdee2",
         "type": "github"
       },
       "original": {
@@ -563,7 +762,6 @@
       },
       "original": {
         "owner": "vulnersCom",
-        "ref": "master",
         "repo": "nmap-vulners",
         "type": "github"
       }
@@ -580,42 +778,10 @@
       },
       "original": {
         "owner": "scipag",
-        "ref": "master",
         "repo": "vulscan",
         "type": "github"
       }
     },
-    "pre-commit": {
-      "inputs": {
-        "flake-compat": [
-          "flake-compat"
-        ],
-        "flake-utils": [
-          "flake-utils"
-        ],
-        "gitignore": "gitignore",
-        "nixpkgs": [
-          "nixpkgs"
-        ],
-        "nixpkgs-stable": [
-          "nixpkgs-stable"
-        ]
-      },
-      "locked": {
-        "lastModified": 1713954846,
-        "narHash": "sha256-RWFafuSb5nkWGu8dDbW7gVb8FOQOPqmX/9MlxUUDguw=",
-        "owner": "cachix",
-        "repo": "pre-commit-hooks.nix",
-        "rev": "6fb82e44254d6a0ece014ec423cb62d92435336f",
-        "type": "github"
-      },
-      "original": {
-        "owner": "cachix",
-        "ref": "master",
-        "repo": "pre-commit-hooks.nix",
-        "type": "github"
-      }
-    },
     "root": {
       "inputs": {
         "agenix": "agenix",
@@ -625,21 +791,20 @@
         "dns": "dns",
         "flake-compat": "flake-compat",
         "flake-registry": "flake-registry",
-        "flake-utils": "flake-utils",
+        "git-hooks": "git-hooks",
         "home-manager": "home-manager",
         "impermanence": "impermanence",
         "mailserver": "mailserver",
         "minecraft": "minecraft",
         "nix-index-database": "nix-index-database",
+        "nix-topology": "nix-topology",
         "nixos-hardware": "nixos-hardware",
         "nixpkgs": "nixpkgs",
         "nixpkgs-master": "nixpkgs-master",
         "nixpkgs-stable": "nixpkgs-stable",
         "nmap-vulners": "nmap-vulners",
         "nmap-vulscan": "nmap-vulscan",
-        "pre-commit": "pre-commit",
         "stylix": "stylix",
-        "systems": "systems",
         "vscode-extensions": "vscode-extensions",
         "xmonad-ng": "xmonad-ng"
       }
@@ -693,24 +858,160 @@
         "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"
+      }
+    },
+    "systems_4": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "systems_5": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "systems_6": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "systems_7": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "systems_8": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "systems_9": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "utils": {
+      "inputs": {
+        "systems": "systems_5"
+      },
+      "locked": {
+        "lastModified": 1709126324,
+        "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "d465f4819400de7c8d874d50b982301f28a84605",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
     "vscode-extensions": {
       "inputs": {
         "flake-compat": [
           "flake-compat"
         ],
-        "flake-utils": [
-          "flake-utils"
-        ],
+        "flake-utils": "flake-utils_8",
         "nixpkgs": [
           "nixpkgs"
         ]
       },
       "locked": {
-        "lastModified": 1714267526,
-        "narHash": "sha256-92vUWmEZgINBgC2uT39Ihpbc/Ok86iOT2DjPrmrnFnA=",
+        "lastModified": 1714440038,
+        "narHash": "sha256-+zO77hQMEX9k87QQhuKgqLWNh1ZQZeF+a6sN/ot8RT4=",
         "owner": "nix-community",
         "repo": "nix-vscode-extensions",
-        "rev": "6be0c88ffc813c82a6d3c99129c5cdaed5499468",
+        "rev": "150f7cf5f7d1c76e36bb5e917c5ac8045d77db45",
         "type": "github"
       },
       "original": {
@@ -721,9 +1022,7 @@
     },
     "xmonad-ng": {
       "inputs": {
-        "flake-utils": [
-          "flake-utils"
-        ],
+        "flake-utils": "flake-utils_9",
         "nixpkgs": [
           "nixpkgs"
         ]
diff --git a/flake.nix b/flake.nix
index adb7416..dc194f5 100644
--- a/flake.nix
+++ b/flake.nix
@@ -33,16 +33,12 @@
       inputs = {
         home-manager.follows = "home-manager";
         nixpkgs.follows = "nixpkgs";
-        systems.follows = "systems";
       };
     };
 
     dns = {
       url = "github:kirelagin/dns.nix";
-      inputs = {
-        flake-utils.follows = "flake-utils";
-        nixpkgs.follows = "nixpkgs";
-      };
+      inputs.nixpkgs.follows = "nixpkgs";
     };
 
     mailserver = {
@@ -50,7 +46,6 @@
       inputs = {
         flake-compat.follows = "flake-compat";
         nixpkgs.follows = "nixpkgs";
-        utils.follows = "flake-utils";
       };
     };
 
@@ -58,7 +53,6 @@
       url = "github:pinpox/alertmanager-ntfy";
       inputs = {
         flake-compat.follows = "flake-compat";
-        flake-utils.follows = "flake-utils";
         nixpkgs.follows = "nixpkgs";
       };
     };
@@ -67,7 +61,6 @@
       url = "github:nix-community/nix-vscode-extensions";
       inputs = {
         flake-compat.follows = "flake-compat";
-        flake-utils.follows = "flake-utils";
         nixpkgs.follows = "nixpkgs";
       };
     };
@@ -76,9 +69,8 @@
       url = "github:dwarfmaster/arkenfox-nixos";
       inputs = {
         flake-compat.follows = "flake-compat";
-        flake-utils.follows = "flake-utils";
         nixpkgs.follows = "nixpkgs";
-        pre-commit.follows = "pre-commit";
+        pre-commit.follows = "git-hooks";
       };
     };
 
@@ -86,7 +78,6 @@
       url = "github:Infinidoge/nix-minecraft";
       inputs = {
         flake-compat.follows = "flake-compat";
-        flake-utils.follows = "flake-utils";
         nixpkgs.follows = "nixpkgs";
       };
     };
@@ -96,87 +87,96 @@
       inputs.nixpkgs.follows = "nixpkgs";
     };
 
-    xmonad-ng = {
-      url = "git+https://git.azahi.cc/xmonad-ng?ref=master";
+    nix-topology = {
+      url = "github:oddlama/nix-topology";
       inputs = {
-        flake-utils.follows = "flake-utils";
         nixpkgs.follows = "nixpkgs";
+        pre-commit-hooks.follows = "git-hooks";
       };
     };
 
+    xmonad-ng = {
+      url = "git+https://git.azahi.cc/xmonad-ng?ref=master";
+      inputs.nixpkgs.follows = "nixpkgs";
+    };
+
     azahi-cc = {
       url = "git+https://git.azahi.cc/azahi-cc?ref=master";
       flake = false;
     };
 
     nmap-vulners = {
-      url = "github:vulnersCom/nmap-vulners/master";
+      url = "github:vulnersCom/nmap-vulners";
       flake = false;
     };
     nmap-vulscan = {
-      url = "github:scipag/vulscan/master";
+      url = "github:scipag/vulscan";
       flake = false;
     };
 
-    pre-commit = {
-      url = "github:cachix/pre-commit-hooks.nix/master";
+    git-hooks = {
+      url = "github:cachix/git-hooks.nix";
       inputs = {
         flake-compat.follows = "flake-compat";
-        flake-utils.follows = "flake-utils";
         nixpkgs.follows = "nixpkgs";
         nixpkgs-stable.follows = "nixpkgs-stable";
       };
     };
 
-    systems.url = "github:nix-systems/default";
-    flake-utils = {
-      url = "github:numtide/flake-utils";
-      inputs.systems.follows = "systems";
-    };
     flake-registry = {
       url = "github:NixOS/flake-registry";
       flake = false;
     };
-    flake-compat.url = "github:edolstra/flake-compat/master";
+    flake-compat.url = "github:edolstra/flake-compat";
   };
 
   outputs =
-    inputs:
-    with inputs;
-    flake-utils.lib.eachDefaultSystem (system: {
-      apps.default = {
-        type = "app";
-        program = "${self.packages.${system}.default}/bin/nixfiles";
+    inputs@{ self, nixpkgs, ... }:
+    let
+      system = "x86_64-linux";
+
+      pkgs = import nixpkgs {
+        inherit system;
+        overlays = [
+          self.overlays.default
+          inputs.nix-topology.overlays.default
+        ];
       };
+    in
+    {
+      lib = nixpkgs.lib.extend (import ./lib);
+
+      legacyPackages.${system} = pkgs;
+
+      packages.${system} = {
+        default = self.packages.${system}.nixfiles;
+        inherit (self.legacyPackages.${system}) nixfiles;
 
-      packages = {
-        default = self.legacyPackages.${system}.nixfiles;
         iso = self.nixosConfigurations.iso.config.system.build.isoImage;
       };
 
-      legacyPackages = import nixpkgs {
-        inherit system;
-        overlays = [ self.overlays.default ];
+      apps.${system}.default = {
+        type = "app";
+        program = self.lib.getExe self.packages.${system}.nixfiles;
       };
 
-      devShells.default =
-        with self.legacyPackages.${system};
+      overlays = import ./overlays.nix;
+
+      devShells.${system}.default =
+        with pkgs;
         mkShell {
           inherit (self.checks.${system}.preCommit) shellHook;
           packages = [ go-task ];
         };
 
-      formatter = self.legacyPackages.${system}.nixfmt;
+      nixosModules = import ./modules self.lib;
 
-      checks = import ./checks.nix { inherit inputs system; };
-    })
-    // {
-      lib = nixpkgs.lib.extend (import ./lib);
+      nixosConfigurations = import ./configurations inputs;
 
-      nixosModules.nixfiles = import ./modules;
+      checks.${system} = import ./checks.nix inputs system pkgs;
 
-      nixosConfigurations = import ./nixosConfigurations inputs;
+      formatter.${system} = pkgs.nixfmt;
 
-      overlays.default = final: prev: import ./overlay.nix final prev;
+      topology = import ./topology.nix inputs self pkgs;
     };
 }
diff --git a/modules/default.nix b/modules/default.nix
index ef9fb18..9ed1029 100644
--- a/modules/default.nix
+++ b/modules/default.nix
@@ -1 +1,7 @@
-{ lib, ... }: with lib; { imports = attrValues (modulesIn ./.); }
+lib: with lib; {
+  nixfiles =
+    { ... }:
+    {
+      imports = attrValues (modulesIn ./.);
+    };
+}
diff --git a/modules/profiles/headful.nix b/modules/profiles/headful.nix
index 20363bc..6e58dae 100644
--- a/modules/profiles/headful.nix
+++ b/modules/profiles/headful.nix
@@ -100,8 +100,9 @@ in
     };
 
     services = {
-      upower.enable = true;
+      libinput.enable = true;
       psd.enable = true;
+      upower.enable = true;
     };
 
     environment.systemPackages = with pkgs; [
diff --git a/modules/x11.nix b/modules/x11.nix
index 55ba0b5..4edab6b 100644
--- a/modules/x11.nix
+++ b/modules/x11.nix
@@ -64,8 +64,6 @@ in
       autoRepeatDelay = 200;
       autoRepeatInterval = 50;
 
-      libinput.enable = true;
-
       monitorSection = ''
         Option "DPMS" "false"
       '';
diff --git a/nixosConfigurations/default.nix b/nixosConfigurations/default.nix
deleted file mode 100644
index b685eb7..0000000
--- a/nixosConfigurations/default.nix
+++ /dev/null
@@ -1,92 +0,0 @@
-inputs:
-with inputs.self.lib;
-let
-  mkConfiguration =
-    name:
-    {
-      modules ? [ ],
-      configuration ? ./${name},
-      this ? my.configurations.${name},
-    }:
-    nameValuePair name (nixosSystem {
-      inherit (this) system;
-      modules =
-        modules
-        ++ attrValues inputs.self.nixosModules
-        ++ optional (configuration != null) (import configuration);
-      specialArgs = {
-        inherit inputs this;
-        inherit (inputs.self) lib;
-      };
-    });
-
-  mkTest = this: {
-    modules = with inputs; [
-      "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
-      nixpkgs.nixosModules.notDetected
-    ];
-    inherit this;
-  };
-in
-mapAttrs' mkConfiguration {
-  test-headless = mkTest {
-    hostname = "test-headless";
-    system = "x86_64-linux";
-    isHeadless = true;
-    isHeadful = false;
-  };
-  test-headful = mkTest {
-    hostname = "test-headful";
-    system = "x86_64-linux";
-    isHeadless = false;
-    isHeadful = true;
-  };
-
-  iso = {
-    this = {
-      hostname = "iso";
-      system = "x86_64-linux";
-      isHeadless = false;
-      isHeadful = false;
-    };
-    configuration = ./iso;
-    modules = [
-      "${inputs.nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel.nix"
-    ];
-  };
-
-  eonwe.modules = with inputs; [
-    nixos-hardware.nixosModules.common-cpu-amd
-    nixos-hardware.nixosModules.common-cpu-amd-pstate
-    nixos-hardware.nixosModules.common-gpu-amd
-    nixos-hardware.nixosModules.common-pc-ssd
-    nixpkgs.nixosModules.notDetected
-  ];
-
-  melian.modules = with inputs; [
-    nixos-hardware.nixosModules.common-pc-laptop-ssd
-    nixos-hardware.nixosModules.lenovo-thinkpad-t480
-    nixpkgs.nixosModules.notDetected
-  ];
-
-  manwe.modules = with inputs; [
-    "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
-    nixos-hardware.nixosModules.common-cpu-amd
-    nixos-hardware.nixosModules.common-pc-ssd
-    nixpkgs.nixosModules.notDetected
-  ];
-
-  varda.modules = with inputs; [
-    "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
-    nixos-hardware.nixosModules.common-cpu-amd
-    nixos-hardware.nixosModules.common-pc-ssd
-    nixpkgs.nixosModules.notDetected
-  ];
-
-  yavanna.modules = with inputs; [
-    "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
-    nixos-hardware.nixosModules.common-cpu-intel
-    nixos-hardware.nixosModules.common-pc-hdd
-    nixpkgs.nixosModules.notDetected
-  ];
-}
diff --git a/overlay.nix b/overlay.nix
deleted file mode 100644
index a37d3e7..0000000
--- a/overlay.nix
+++ /dev/null
@@ -1,102 +0,0 @@
-final: prev: {
-  bruh = prev.callPackage ./packages/bruh.nix { };
-
-  emacsql-sqlite = prev.callPackage ./packages/emacsql-sqlite.nix { };
-
-  git-extras = prev.git-extras.overrideAttrs (
-    _: super: {
-      postPatch =
-        (super.postPatch or "")
-        + ''
-          substituteInPlace bin/git-setup \
-            --replace 'Initial commit' 'chore: init'
-        '';
-    }
-  );
-
-  grc = prev.grc.overrideAttrs (
-    _: super: {
-      version = "unstable-2021-08-12";
-      src = final.fetchFromGitHub {
-        owner = "garabik";
-        repo = "grc";
-        rev = "4d6a51fd78ad7e19af8dd12b2a828d1807267079";
-        hash = "sha256-SmOZrgV0lgLryFoxADU15IKJ7jhxXar0MgbsV/z1GaE=";
-      };
-      patches = (super.patches or [ ]) ++ [
-        (final.fetchpatch {
-          url = "https://patch-diff.githubusercontent.com/raw/garabik/grc/pull/214.patch";
-          hash = "sha256-VNr9jl5oFbFNJbGsjflwFV3oTbCzJ0lBIZA4eyeoXLY=";
-        })
-      ];
-    }
-  );
-
-  hiccup = prev.callPackage ./packages/hiccup.nix { };
-
-  logcli = prev.grafana-loki.overrideAttrs (
-    _: super: {
-      pname = "logcli";
-      subPackages = [ "cmd/logcli" ];
-      nativeBuildInputs = super.nativeBuildInputs ++ [ final.installShellFiles ];
-      postInstall =
-        (super.postInstall or "")
-        + ''
-          installShellCompletion --cmd logcli \
-            --bash <($out/bin/logcli --completion--script-bash) \
-            --zsh <($out/bin/logcli --completion-script-zsh)
-        '';
-      preFixup = null;
-    }
-  );
-
-  myip = prev.callPackage ./packages/myip.nix { };
-
-  nixfiles = prev.callPackage ./packages/nixfiles.nix { };
-
-  nixfmt = prev.nixfmt-rfc-style;
-
-  openssl_1_0_0 = prev.callPackage ./packages/openssl_1_0_0.nix { };
-
-  parinfer-rust = prev.callPackage ./packages/parinfer-rust.nix { };
-
-  # FIXME https://nixpk.gs/pr-tracker.html?pr=307505
-  poetry = prev.poetry.overrideAttrs (finalAttrs: {
-    nativeBuildInputs = (finalAttrs.nativeBuildInputs or [ ]) ++ [
-      prev.python3Packages.pythonRelaxDepsHook
-    ];
-    pythonRelaxDeps = [ "dulwich" ];
-  });
-
-  prismlauncher-unwrapped =
-    (prev.prismlauncher-unwrapped.override (finalAttrs: {
-      stdenv = final.useMoldLinker finalAttrs.stdenv;
-    })).overrideAttrs
-      (
-        _: super: {
-          patches = (super.patches or [ ]) ++ [ ./patches/prismlauncher-allow-offline-accounts.patch ];
-        }
-      );
-
-  telegram-desktop =
-    (prev.telegram-desktop.override (finalAttrs: {
-      stdenv = final.useMoldLinker finalAttrs.stdenv;
-    })).overrideAttrs
-      (_: super: { patches = (super.patches or [ ]) ++ [ ./patches/telegram-desktop-no-ads.patch ]; });
-
-  vesktop = prev.vesktop.overrideAttrs (
-    _: super: {
-      nativeBuildInputs = super.nativeBuildInputs ++ [ final.imagemagick ];
-      patches = (super.patches or [ ]) ++ [ ./patches/vesktop-no-anime.patch ];
-      postInstall =
-        (super.postInstall or "")
-        + ''
-          rm -rf $out/share/icons/hicolor/*
-          for size in 16 24 32 48 64 96; do
-            convert -scale $size icon.png $size.png
-            install -Dm644 $size.png $out/share/icons/hicolor/''${size}x''${size}/apps/vesktop.png
-          done
-        '';
-    }
-  );
-}
diff --git a/overlays.nix b/overlays.nix
new file mode 100644
index 0000000..642c587
--- /dev/null
+++ b/overlays.nix
@@ -0,0 +1,104 @@
+{
+  default = final: prev: {
+    bruh = prev.callPackage ./packages/bruh.nix { };
+
+    emacsql-sqlite = prev.callPackage ./packages/emacsql-sqlite.nix { };
+
+    git-extras = prev.git-extras.overrideAttrs (
+      _: super: {
+        postPatch =
+          (super.postPatch or "")
+          + ''
+            substituteInPlace bin/git-setup \
+              --replace 'Initial commit' 'chore: init'
+          '';
+      }
+    );
+
+    grc = prev.grc.overrideAttrs (
+      _: super: {
+        version = "unstable-2021-08-12";
+        src = final.fetchFromGitHub {
+          owner = "garabik";
+          repo = "grc";
+          rev = "4d6a51fd78ad7e19af8dd12b2a828d1807267079";
+          hash = "sha256-SmOZrgV0lgLryFoxADU15IKJ7jhxXar0MgbsV/z1GaE=";
+        };
+        patches = (super.patches or [ ]) ++ [
+          (final.fetchpatch {
+            url = "https://patch-diff.githubusercontent.com/raw/garabik/grc/pull/214.patch";
+            hash = "sha256-VNr9jl5oFbFNJbGsjflwFV3oTbCzJ0lBIZA4eyeoXLY=";
+          })
+        ];
+      }
+    );
+
+    hiccup = prev.callPackage ./packages/hiccup.nix { };
+
+    logcli = prev.grafana-loki.overrideAttrs (
+      _: super: {
+        pname = "logcli";
+        subPackages = [ "cmd/logcli" ];
+        nativeBuildInputs = super.nativeBuildInputs ++ [ final.installShellFiles ];
+        postInstall =
+          (super.postInstall or "")
+          + ''
+            installShellCompletion --cmd logcli \
+              --bash <($out/bin/logcli --completion--script-bash) \
+              --zsh <($out/bin/logcli --completion-script-zsh)
+          '';
+        preFixup = null;
+      }
+    );
+
+    myip = prev.callPackage ./packages/myip.nix { };
+
+    nixfiles = prev.callPackage ./packages/nixfiles.nix { };
+
+    nixfmt = prev.nixfmt-rfc-style;
+
+    openssl_1_0_0 = prev.callPackage ./packages/openssl_1_0_0.nix { };
+
+    parinfer-rust = prev.callPackage ./packages/parinfer-rust.nix { };
+
+    # FIXME https://nixpk.gs/pr-tracker.html?pr=307505
+    poetry = prev.poetry.overrideAttrs (finalAttrs: {
+      nativeBuildInputs = (finalAttrs.nativeBuildInputs or [ ]) ++ [
+        prev.python3Packages.pythonRelaxDepsHook
+      ];
+      pythonRelaxDeps = [ "dulwich" ];
+    });
+
+    prismlauncher-unwrapped =
+      (prev.prismlauncher-unwrapped.override (finalAttrs: {
+        stdenv = final.useMoldLinker finalAttrs.stdenv;
+      })).overrideAttrs
+        (
+          _: super: {
+            patches = (super.patches or [ ]) ++ [ ./patches/prismlauncher-allow-offline-accounts.patch ];
+          }
+        );
+
+    telegram-desktop =
+      (prev.telegram-desktop.override (finalAttrs: {
+        stdenv = final.useMoldLinker finalAttrs.stdenv;
+      })).overrideAttrs
+        (_: super: { patches = (super.patches or [ ]) ++ [ ./patches/telegram-desktop-no-ads.patch ]; });
+
+    vesktop = prev.vesktop.overrideAttrs (
+      _: super: {
+        nativeBuildInputs = super.nativeBuildInputs ++ [ final.imagemagick ];
+        patches = (super.patches or [ ]) ++ [ ./patches/vesktop-no-anime.patch ];
+        postInstall =
+          (super.postInstall or "")
+          + ''
+            rm -rf $out/share/icons/hicolor/*
+            for size in 16 24 32 48 64 96; do
+              convert -scale $size icon.png $size.png
+              install -Dm644 $size.png $out/share/icons/hicolor/''${size}x''${size}/apps/vesktop.png
+            done
+          '';
+      }
+    );
+  };
+}
diff --git a/topology.nix b/topology.nix
new file mode 100644
index 0000000..8830f12
--- /dev/null
+++ b/topology.nix
@@ -0,0 +1,8 @@
+inputs: self: pkgs:
+import inputs.nix-topology {
+  inherit pkgs;
+  modules = [
+    { inherit (self) nixosConfigurations; }
+    (_: { })
+  ];
+}

Consider giving Nix/NixOS a try! <3