infrastructure/outputs.nix
2022-07-10 13:59:54 -07:00

113 lines
2.7 KiB
Nix

{ inputs, system, ... }: let
optionalAttrs = cond: as: if cond then as else { };
pkgs = import ./overlays { inherit inputs system; };
darwin-pkgs = import ./overlays/darwin.nix { inherit inputs system; };
inherit (pkgs) lib;
mkTree = import ./tree.nix { inherit lib; };
localTree = mkTree {
inherit inputs;
folder = ./config;
config = {
"modules/nixos" = {
functor = {
enable = true;
external = [
(inputs.tf-nix + "/modules/nixos/secrets.nix")
(inputs.tf-nix + "/modules/nixos/secrets-users.nix")
] ++ (with (import (inputs.arcexprs + "/modules")).nixos; [
nix
systemd
dht22-exporter
glauth
modprobe
kernel
crypttab
mutable-state
common-root
pulseaudio
wireplumber
alsa
yggdrasil
bindings
matrix-appservices
matrix-synapse-appservices
display
filebin
mosh
base16 base16-shared
doc-warnings
]);
};
};
"modules/home" = {
functor = {
enable = true;
external = [
(import (inputs.arcexprs + "/modules")).home-manager
(inputs.tf-nix + "/modules/home/secrets.nix")
];
};
};
"modules/meta".functor.enable = true;
"profiles/*".functor.enable = true;
"profiles/hardware".evaluateDefault = true;
"profiles/cross".evaluateDefault = true;
"profiles/hardware/*".evaluateDefault = true;
"services/*".aliasDefault = true;
"users/*".evaluateDefault = true;
"users/kat/*".functor.enable = true;
"users/kat/services/mpd".functor.enable = true;
};
};
trustedTree = mkTree {
inherit inputs;
folder = inputs.trusted;
config = {
"secrets".evaluateDefault = true;
};
};
tree = localTree // {
pure = localTree.pure // {
trusted = trustedTree.pure;
};
impure = localTree.impure // {
trusted = trustedTree.impure;
};
};
root = ./.;
metaBase = import ./meta.nix { inherit config lib pkgs root; };
xarg = tree.impure;
eval = lib.evalModules {
modules = lib.singleton metaBase
++ lib.singleton xarg.modules.meta
++ lib.attrValues xarg.targets
++ (map
(host: {
network.nodes.${host} = {
imports = config.lib.kw.nodeImport host;
networking = {
hostName = host;
};
};
})
(lib.remove "sumireko" (lib.attrNames xarg.hosts)));
specialArgs = {
inherit inputs root tree;
meta = self;
} // xarg;
};
inherit (eval) config;
self = config // { inherit pkgs lib inputs tree darwin-pkgs; } // xarg;
in
self