From f7ac29e2fa2d36e83a7ad55110e4acd9d51acc1b Mon Sep 17 00:00:00 2001 From: Ingolf Wagner Date: Fri, 30 Aug 2024 08:49:18 +0700 Subject: [PATCH] :heavy_plus_sign: add nix-topology --- flake.lock | 248 ++++++++++++++++++++++++++++++++++++++++------- flake.nix | 5 + nix/topology.nix | 25 +++++ 3 files changed, 244 insertions(+), 34 deletions(-) create mode 100644 nix/topology.nix diff --git a/flake.lock b/flake.lock index 96b4b2a..bb43419 100644 --- a/flake.lock +++ b/flake.lock @@ -164,6 +164,28 @@ "type": "github" } }, + "devshell": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nix-topology", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1713532798, + "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", + "owner": "numtide", + "repo": "devshell", + "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, "disko": { "inputs": { "nixpkgs": [ @@ -208,6 +230,22 @@ } }, "flake-compat": { + "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_2": { "flake": false, "locked": { "lastModified": 1673956053, @@ -316,6 +354,42 @@ } }, "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "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_3": { + "inputs": { + "systems": "systems_3" + }, + "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_4": { "locked": { "lastModified": 1631561581, "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=", @@ -330,7 +404,7 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_5": { "inputs": { "systems": [ "stylix", @@ -351,9 +425,9 @@ "type": "github" } }, - "flake-utils_4": { + "flake-utils_6": { "inputs": { - "systems": "systems_3" + "systems": "systems_5" }, "locked": { "lastModified": 1694529238, @@ -385,6 +459,28 @@ "type": "github" } }, + "gitignore": { + "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" + } + }, "gnome-shell": { "flake": false, "locked": { @@ -404,7 +500,9 @@ }, "home-manager": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1724435763, @@ -465,7 +563,7 @@ "landingpage": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1709213960, @@ -481,13 +579,36 @@ "type": "github" } }, + "nix-topology": { + "inputs": { + "devshell": "devshell", + "flake-utils": "flake-utils_3", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1724368485, + "narHash": "sha256-/MzkcvJN8zN+y5vevpT6OQJXTb+sSpxQA0iywn9CD+A=", + "owner": "oddlama", + "repo": "nix-topology", + "rev": "1826fe50f19dd076f13ede0254e170247e0afb06", + "type": "github" + }, + "original": { + "owner": "oddlama", + "repo": "nix-topology", + "type": "github" + } + }, "nixos-anywhere": { "inputs": { "disko": "disko_2", "flake-parts": "flake-parts_3", "nixos-images": "nixos-images_2", "nixos-stable": "nixos-stable", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_3", "treefmt-nix": "treefmt-nix_2" }, "locked": { @@ -672,6 +793,22 @@ "url": "https://github.com/NixOS/nixpkgs/archive/a5d394176e64ab29c852d03346c1fc9b0b7d33eb.tar.gz" } }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-unstable-small": { "locked": { "lastModified": 1724938759, @@ -689,22 +826,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1723175592, - "narHash": "sha256-M0xJ3FbDUc4fRZ84dPGx5VvgFsOzds77KiBMW/mMTnI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5e0ca22929f3342b19569b21b2f3462f053e497b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1645527175, "narHash": "sha256-WeewqaO48sCctiN+iwgZZEJRU29Si7vHHoLCINAvuk8=", @@ -719,7 +840,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { "lastModified": 1717926692, "narHash": "sha256-THcv8qDqobZefHHluPjx/8n+MtVVb8ag/oJbKMqKNRo=", @@ -735,7 +856,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { "lastModified": 1724819573, "narHash": "sha256-GnR7/ibgIH1vhoy8cYdmXE6iyZqKqFxQSVkFgosBh6w=", @@ -751,7 +872,7 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_5": { "locked": { "lastModified": 1632855891, "narHash": "sha256-crW76mt9/kbUBiKy/KiSnsQ9JEYgD3StDuYAMVkTbM0=", @@ -765,7 +886,7 @@ "type": "indirect" } }, - "nixpkgs_7": { + "nixpkgs_6": { "locked": { "lastModified": 1724870369, "narHash": "sha256-dGHUOi1tBiVOsVdT9QNEuk+FuSMtQxkyx+9CN/34kkk=", @@ -803,8 +924,8 @@ }, "polygon-art": { "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_6" + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1688766095, @@ -820,6 +941,34 @@ "url": "https://git.ingolf-wagner.de/palo/polygon-art.git" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": [ + "nix-topology", + "flake-utils" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "nix-topology", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1714478972, + "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2849da033884f54822af194400f8dff435ada242", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "private-parts": { "inputs": { "flake-parts": "flake-parts_4", @@ -867,9 +1016,10 @@ "home-manager-utils": "home-manager-utils", "kmonad": "kmonad", "landingpage": "landingpage", + "nix-topology": "nix-topology", "nixos-anywhere": "nixos-anywhere", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_4", "nixpkgs-legacy_2211": "nixpkgs-legacy_2211", "nixpkgs-legacy_2311": "nixpkgs-legacy_2311", "nixpkgs-legacy_2405": "nixpkgs-legacy_2405", @@ -910,7 +1060,7 @@ }, "srvos": { "inputs": { - "nixpkgs": "nixpkgs_7" + "nixpkgs": "nixpkgs_6" }, "locked": { "lastModified": 1724920817, @@ -935,8 +1085,8 @@ "base16-kitty": "base16-kitty", "base16-tmux": "base16-tmux", "base16-vim": "base16-vim", - "flake-compat": "flake-compat", - "flake-utils": "flake-utils_3", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_5", "gnome-shell": "gnome-shell", "home-manager": [ "home-manager" @@ -944,7 +1094,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_2" + "systems": "systems_4" }, "locked": { "lastModified": 1724702977, @@ -1005,9 +1155,39 @@ "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" + } + }, "taskshell": { "inputs": { - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_6", "nixpkgs": [ "nixpkgs" ] diff --git a/flake.nix b/flake.nix index 31729c0..634be48 100644 --- a/flake.nix +++ b/flake.nix @@ -18,6 +18,8 @@ kmonad.url = "github:kmonad/kmonad?dir=nix"; # todo: mabye use https://github.com/jtroo/kanata instead landingpage.url = "github:mrVanDalo/landingpage"; nixos-anywhere.url = "github:nix-community/nixos-anywhere"; + nix-topology.inputs.nixpkgs.follows = "nixpkgs"; + nix-topology.url = "github:oddlama/nix-topology"; nixos-hardware.url = "github:nixos/nixos-hardware"; nixpkgs-legacy_2211.url = "github:nixos/nixpkgs/nixos-22.11"; nixpkgs-legacy_2311.url = "github:nixos/nixpkgs/nixos-23.11"; @@ -72,6 +74,7 @@ stylix, taskshell, treefmt-nix, + nix-topology, }: let @@ -148,6 +151,7 @@ ++ defaultModules ++ [ ./machines/${name}/configuration.nix + nix-topology.nixosModules.default ]; }; @@ -338,6 +342,7 @@ clan-core.flakeModules.default ./nix/formatter.nix ./nix/packages + ./nix/topology.nix ]; # Define your clan diff --git a/nix/topology.nix b/nix/topology.nix new file mode 100644 index 0000000..c0d5be7 --- /dev/null +++ b/nix/topology.nix @@ -0,0 +1,25 @@ +{ inputs, self, ... }: +{ + imports = [ + #inputs.flake-parts.flakeModules.easyOverlay + inputs.nix-topology.flakeModule + ]; + + # todo : create apps to make live easier + # nix build .#topology.x86_64-linux.config.output + + perSystem = + { system, ... }: + { + #overlayAttrs = inputs.nix-topology.overlays.default; + topology.pkgs = import inputs.nixpkgs { + inherit system; + overlays = [ inputs.nix-topology.overlays.default ]; + }; + topology.modules = [ + { + # Inline module to inform topology of your existing NixOS hosts. + } + ]; + }; +}