/ flake.nix
flake.nix
1 { 2 description = "cowboy's dynamic host inventory"; 3 4 inputs = { 5 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 terranix.url = "github:terranix/terranix"; 7 flake-parts.url = "github:hercules-ci/flake-parts"; 8 }; 9 10 outputs = inputs: 11 inputs.flake-parts.lib.mkFlake { inherit inputs; } { 12 imports = [ 13 ]; 14 flake = let 15 system = "x86_64-linux"; 16 in rec { 17 18 inventory = ./inventory; 19 certs = ./certs; 20 list = inputs.nixpkgs.lib.lists.forEach (inputs.nixpkgs.lib.filesystem.listFilesRecursive inventory) (x: builtins.fromJSON ( builtins.readFile x)); 21 hosts = builtins.listToAttrs (inputs.nixpkgs.lib.lists.forEach (inputs.nixpkgs.lib.filesystem.listFilesRecursive inventory) (x: rec { 22 value = (builtins.fromJSON ( builtins.readFile x)); 23 name = value.hostname; 24 })); 25 26 defaultPackage.${system} = inputs.terranix.lib.terranixConfiguration { 27 inherit system; 28 29 modules = [ 30 ./config.nix 31 {_module.args = {inherit inputs; inherit list; inherit hosts;};} 32 ]; 33 }; 34 }; 35 systems = [ "x86_64-linux" ]; 36 perSystem = { config, pkgs, system, ... }: { 37 devShells = { 38 default = pkgs.mkShell { 39 nativeBuildInputs = [ pkgs.opentofu pkgs.just ]; 40 }; 41 }; 42 }; 43 }; 44 }