61 lines
1.3 KiB
Nix
61 lines
1.3 KiB
Nix
{ lib, ... }:
|
|
let
|
|
inherit (lib.mjallen.file)
|
|
readFile
|
|
pathExists
|
|
safeImport
|
|
scanDir
|
|
getFile
|
|
importModulesRecursive
|
|
scanSystems
|
|
filterNixOSSystems
|
|
filterDarwinSystems
|
|
scanHomes
|
|
;
|
|
in
|
|
{
|
|
# Example of reading a file
|
|
myFileContent = readFile ./example.txt;
|
|
|
|
# Example of checking if a file exists
|
|
fileExists = pathExists ./example.txt;
|
|
|
|
# Example of safely importing a file
|
|
myConfig = safeImport ./my-config.nix { };
|
|
|
|
# Example of scanning a directory
|
|
directoryContents = scanDir ./modules;
|
|
|
|
# Example of getting a file path relative to the flake root
|
|
flakeFile = getFile "flake.nix";
|
|
|
|
# Example of importing modules recursively
|
|
modules = importModulesRecursive ./modules;
|
|
|
|
# Example of scanning systems
|
|
allSystems = scanSystems ./systems;
|
|
|
|
# Example of filtering systems
|
|
nixosSystems = filterNixOSSystems allSystems;
|
|
darwinSystems = filterDarwinSystems allSystems;
|
|
|
|
# Example of scanning homes
|
|
allHomes = scanHomes ./homes;
|
|
|
|
# Example of using these functions together
|
|
nixosConfigurations = lib.mapAttrs' (
|
|
name:
|
|
{ system, hostname, ... }:
|
|
{
|
|
name = hostname;
|
|
value = lib.nixosSystem {
|
|
inherit system;
|
|
modules = [
|
|
{ networking.hostName = hostname; }
|
|
]
|
|
++ importModulesRecursive ./modules/nixos;
|
|
};
|
|
}
|
|
) nixosSystems;
|
|
}
|