diff --git a/flake.lock b/flake.lock index 01eedc2..24244d3 100644 --- a/flake.lock +++ b/flake.lock @@ -90,6 +90,28 @@ "type": "github" } }, + "colmena": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils_4", + "nix-github-actions": "nix-github-actions_2", + "nixpkgs": "nixpkgs_3", + "stable": "stable" + }, + "locked": { + "lastModified": 1762034856, + "narHash": "sha256-QVey3iP3UEoiFVXgypyjTvCrsIlA4ecx6Acaz5C8/PQ=", + "owner": "zhaofengli", + "repo": "colmena", + "rev": "349b035a5027f23d88eeb3bc41085d7ee29f18ed", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "repo": "colmena", + "type": "github" + } + }, "darwin": { "inputs": { "nixpkgs": [ @@ -160,6 +182,22 @@ } }, "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { "locked": { "lastModified": 1747046372, "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", @@ -174,7 +212,7 @@ "type": "github" } }, - "flake-compat_2": { + "flake-compat_3": { "flake": false, "locked": { "lastModified": 1765121682, @@ -324,6 +362,21 @@ "type": "github" } }, + "flake-utils_4": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "haumea": { "inputs": { "nixpkgs": [ @@ -435,6 +488,27 @@ "type": "github" } }, + "nix-github-actions_2": { + "inputs": { + "nixpkgs": [ + "colmena", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729742964, + "narHash": "sha256-B4mzTcQ0FZHdpeWcpDYPERtyjJd/NIuaQ9+BV1h+MpA=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "e04df33f62cdcf93d73e9a04142464753a16db67", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, "nix-hardware": { "locked": { "lastModified": 1764440730, @@ -610,6 +684,22 @@ } }, "nixpkgs_3": { + "locked": { + "lastModified": 1750134718, + "narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1765186076, "narHash": "sha256-hM20uyap1a0M9d344I692r+ik4gTMyj60cQWO+hAYP8=", @@ -625,7 +715,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1759770925, "narHash": "sha256-CZwkCtzTNclqlhuwDsVtGoRumTpqCUK0xSnFIMgd8ls=", @@ -643,11 +733,11 @@ }, "nixunstable": { "locked": { - "lastModified": 1765186076, - "narHash": "sha256-hM20uyap1a0M9d344I692r+ik4gTMyj60cQWO+hAYP8=", + "lastModified": 1765779637, + "narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "addf7cf5f383a3101ecfba091b98d0a1263dc9b8", + "rev": "1306659b587dc277866c7b69eb97e5f07864d8c4", "type": "github" }, "original": { @@ -683,7 +773,7 @@ "nurpkgs": { "inputs": { "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1765376811, @@ -726,7 +816,7 @@ }, "proxmox": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "nixpkgs-libvncserver": "nixpkgs-libvncserver", "nixpkgs-stable": "nixpkgs-stable", "nixpkgs-unstable": "nixpkgs-unstable_2", @@ -752,6 +842,7 @@ "btc": "btc", "buildbot": "buildbot", "charts": "charts", + "colmena": "colmena", "darwin": "darwin_2", "flake-parts": "flake-parts_2", "hmunstable": "hmunstable", @@ -765,6 +856,22 @@ "wsl": "wsl" } }, + "stable": { + "locked": { + "lastModified": 1750133334, + "narHash": "sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "36ab78dab7da2e4e27911007033713bab534187b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -933,7 +1040,7 @@ }, "vsext": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1765332180, @@ -951,7 +1058,7 @@ }, "wsl": { "inputs": { - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "nixpkgs": [ "nixunstable" ] diff --git a/flake.nix b/flake.nix index 9924383..eb410c3 100644 --- a/flake.nix +++ b/flake.nix @@ -19,6 +19,7 @@ charts = { url = "github:nix-community/nixhelm"; }; + colmena.url = "github:zhaofengli/colmena"; darwin = { url = "github:lnl7/nix-darwin/master"; inputs.nixpkgs.follows = "nixunstable"; @@ -66,6 +67,7 @@ packages_overlay top.nixvimunstable.overlays.default ]; + metadata = builtins.fromJSON (builtins.readFile ./network.json); in top.flake-parts.lib.mkFlake { inputs = top; } { @@ -76,18 +78,34 @@ ]; flake = { - nixosConfigurations = (import ./hosts { inherit top overlays; }); + colmenaHive = top.colmena.lib.makeHive ( + { + meta = { + nixpkgs = import top.nixunstable { + system = "x86_64-linux"; + overlays = overlays ++ [ top.proxmox.overlays.x86_64-linux ]; + }; + specialArgs = { + inherit metadata self top; + overlays = overlays ++ [ top.proxmox.overlays.x86_64-linux ]; + }; + }; + } + // (builtins.mapAttrs (_k: v: { imports = v._module.args.modules; }) self.nixosConfigurations) + ); darwinConfigurations = (import ./darwin { inherit top overlays; }); + nixosConfigurations = (import ./hosts { inherit top overlays; }); + homeConfigurations = (import ./home { inherit top overlays; }); + modules = import ./modules; + overlays = { default = packages_overlay; local = local_overlay; }; - - modules = import ./modules; }; perSystem = @@ -111,7 +129,7 @@ devShells = import ./shells.nix { inherit self' pkgs; - inherit (top) nixvimunstable; + inherit (top) nixvimunstable colmena; }; }; }; diff --git a/hosts/default.nix b/hosts/default.nix index e45a88a..139a996 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -21,7 +21,7 @@ let }: let nixpkgs = import channel { inherit system; }; - overlays = all.overlays ++ [ top.proxmox.overlays.${system} ]; + overlays = all.overlays; in channel.lib.nixosSystem { inherit system; diff --git a/hosts/zeke/boot.nix b/hosts/zeke/boot.nix index 67e0017..d104367 100644 --- a/hosts/zeke/boot.nix +++ b/hosts/zeke/boot.nix @@ -5,7 +5,10 @@ boot = { binfmt.emulatedSystems = [ "aarch64-linux" ]; kernelPackages = pkgs.linuxPackages_latest; - supportedFilesystems = [ "ntfs" ]; + supportedFilesystems = [ + "ntfs" + "btrfs" + ]; loader = { timeout = 15; systemd-boot = { diff --git a/hosts/zeke/hardware-configuration.nix b/hosts/zeke/hardware-configuration.nix index 40ce1a5..0147984 100644 --- a/hosts/zeke/hardware-configuration.nix +++ b/hosts/zeke/hardware-configuration.nix @@ -35,6 +35,10 @@ device = "/dev/nvme0n1p1"; fsType = "auto"; }; + "/mnt/tmp" = { + device = "/dev/disk/by-uuid/f456aeb0-a11a-4b84-86ae-402eff6d98bb"; + fsType = "btrfs"; + }; }; swapDevices = [ ]; diff --git a/modules/nixos/kubernetes.nix b/modules/nixos/kubernetes.nix index d0c0055..babf965 100644 --- a/modules/nixos/kubernetes.nix +++ b/modules/nixos/kubernetes.nix @@ -88,7 +88,7 @@ in inherit (top.charts.chartsMetadata.external-secrets.external-secrets) repo version; enable = true; name = top.charts.chartsMetadata.external-secrets.external-secrets.chart; - hash = "sha256-w0wlFtECXg4/F8Ke26wQexGcbDIfjqvsZwZYeJyVmLU="; + hash = "sha256-aRlMiaKAOWlectqM0czjaVAaUWceGHm5t3Q2J1pXl28="; createNamespace = true; targetNamespace = "external-secrets"; values = { @@ -100,7 +100,7 @@ in inherit (top.charts.chartsMetadata.kyverno.kyverno) repo version; enable = true; name = top.charts.chartsMetadata.kyverno.kyverno.chart; - hash = "sha256-QFdrhgziOIe194ltl00JkH3BAQHHury9qSgAX/YZzOg="; + hash = "sha256-acETukO1PUR+bAjXR+jBUjymBaB4uSPzDA1uvPqdY3U="; createNamespace = true; targetNamespace = "kyverno-system"; values = { diff --git a/network.json b/network.json new file mode 100644 index 0000000..597d7b1 --- /dev/null +++ b/network.json @@ -0,0 +1,50 @@ +{ + "infra": { + "dns": "10.42.1.5", + "gw": "10.42.1.1", + "netmask": "255.255.0.0", + "prefix": "16" + }, + "hosts": { + "chronicles": { + "ip": "10.42.1.4", + "ts": "100.119.228.115" + }, + "exodus": { + "ip": null, + "ts": "100.80.99.48" + }, + "genesis": { + "ip": "10.42.1.5", + "ts": "100.88.91.27" + }, + "hosea": { + "ip": "10.42.1.7", + "ts": "100.68.203.1" + }, + "isaiah": { + "ip": "10.42.1.6", + "ts": "100.84.183.79" + }, + "jeremiah": { + "ip": "10.42.1.8", + "ts": "100.102.186.39" + }, + "joel": { + "ip": "10.42.0.4", + "ts": null + }, + "linode": { + "ip": null, + "ts": "100.109.86.8" + }, + "nas1": { + "ip": "10.42.1.14", + "ts": "100.114.187.61" + }, + "zeke": { + "ip": "10.42.1.13", + "ts": "100.90.74.19" + } + } +} diff --git a/shells.nix b/shells.nix index 8169776..08a4487 100644 --- a/shells.nix +++ b/shells.nix @@ -1,10 +1,11 @@ { pkgs, nixvimunstable, + colmena, ... }: let - system = pkgs.system; + inherit (pkgs.stdenv.hostPlatform) system; vim = ( nixvimunstable.legacyPackages.${system}.makeNixvim ( import ./home/baseline/vim/config.nix { @@ -19,6 +20,7 @@ in default = pkgs.mkShell { buildInputs = with pkgs; [ bashInteractive + colmena.defaultPackage.${system} stdenv.cc curl git