/ 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  }