nixos-config/nixos/lib/clanlib.nix

34 lines
816 B
Nix
Raw Normal View History

{lib, machineDir, ... }:
let
allMachineNames =
let
#machineDir = "${config.clanCore.clanDir}/machines/";
#machineDir = ../../machines;
machines = lib.mapAttrsToList (name: _: name) (builtins.readDir machineDir);
in
machines;
getFactPath = fact: machine:
"${machineDir}/${machine}/facts/${fact}";
readFact = fact: machine:
let
path = getFactPath fact machine;
in
if builtins.pathExists path then
builtins.readFile path
else
null;
readFactFromAllMachines = fact:
let
machines = allMachineNames;
facts = lib.genAttrs machines (readFact fact);
filteredFacts = lib.filterAttrs (_machine: fact: fact != null) facts;
in
filteredFacts;
in
{ inherit allMachineNames getFactPath readFact readFactFromAllMachines; }