migrate system scanning logic to lib/

Signed-off-by: ahuston-0 <aliceghuston@gmail.com>
This commit is contained in:
ahuston-0 2024-05-19 10:26:46 -04:00 committed by Alice Huston
parent 6b5dda1f39
commit 46aee20d9e
3 changed files with 49 additions and 49 deletions

View File

@ -166,32 +166,17 @@
); );
in in
{ {
inherit (self) outputs; inherit (self) outputs; # for hydra
inherit lib; # for allowing use of custom functions in nix repl
hydraJobs = import ./hydra/jobs.nix { inherit inputs outputs; }; hydraJobs = import ./hydra/jobs.nix { inherit inputs outputs; };
formatter = forEachSystem (system: nixpkgs.legacyPackages.${system}.nixfmt-rfc-style); formatter = forEachSystem (system: nixpkgs.legacyPackages.${system}.nixfmt-rfc-style);
nixosConfigurations = nixosConfigurations =
let let
constructSystem = lib.rad-dev.systems.constructSystem; genSystems = lib.rad-dev.systems.genSystems;
in in
(builtins.listToAttrs ( genSystems inputs src (src + "/systems");
map (system: {
name = system;
value = constructSystem (
{
inherit inputs src;
hostname = system;
}
// builtins.removeAttrs (import ./systems/${system} { inherit inputs; }) [
"hostname"
"server"
"home"
]
);
}) (lib.rad-dev.lsdir src "systems")
));
devShell = lib.mapAttrs ( devShell = lib.mapAttrs (
system: sopsPkgs: system: sopsPkgs:

View File

@ -31,7 +31,7 @@
# #
# type: # type:
# ls :: Path -> String -> [String] # ls :: Path -> String -> [String]
ls = base: dir: lib.attrNames (builtins.readDir (base + "/${dir}")); ls = dir: lib.attrNames (builtins.readDir dir);
# gets list of directories inside of a given directory # gets list of directories inside of a given directory
# #
@ -42,11 +42,9 @@
# type: # type:
# lsdir :: Path -> String -> [String] # lsdir :: Path -> String -> [String]
lsdir = lsdir =
base: dir: dir:
if (builtins.pathExists (base + "/${dir}")) then if (builtins.pathExists (dir)) then
(lib.attrNames ( (lib.attrNames (lib.filterAttrs (path: type: type == "directory") (builtins.readDir (dir))))
lib.filterAttrs (path: type: type == "directory") (builtins.readDir (base + "/${dir}"))
))
else else
[ ]; [ ];
@ -58,6 +56,6 @@
# #
# type: # type:
# fileList :: Path -> String -> [Path] # fileList :: Path -> String -> [Path]
fileList = base: dir: map (file: base + "/${dir}/${file}") (ls base dir); fileList = dir: map (file: dir + "/${file}") (ls dir);
}; };
} }

View File

@ -28,32 +28,33 @@ rec {
}; };
}) users); }) users);
genUsers = importUser =
{ users, src, ... }: user: src:
(map ( {
user: config,
{ lib,
config, pkgs,
lib, ...
pkgs, }@args:
... {
}@args: users.users.${user} = import (src + "/users/${user}") (args // { name = user; });
{ };
users.users.${user} = import (src + "/users/${user}") (args // { name = user; });
} genUsers = { users, src, ... }: (map (user: importUser user src) users);
) users);
genNonX86 =
{ ... }:
{
config.nixpkgs = {
config.allowUnsupportedSystem = true;
buildPlatform = "x86_64-linux";
};
};
genWrapper = genWrapper =
var: func: args: var: func: args:
lib.optionals var (func args); lib.optionals var (func args);
nonX86 = {
config.nixpkgs = {
config.allowUnsupportedSystem = true;
buildPlatform = "x86_64-linux";
};
};
constructSystem = constructSystem =
{ {
hostname, hostname,
@ -80,9 +81,25 @@ rec {
(src + "/systems/${hostname}/configuration.nix") (src + "/systems/${hostname}/configuration.nix")
] ]
++ modules ++ modules
++ (lib.rad-dev.fileList src "modules") ++ (lib.rad-dev.fileList (src + "/modules"))
++ genWrapper sops genSops args ++ genWrapper sops genSops args
++ genWrapper home genHome args ++ genWrapper home genHome args
++ genWrapper true genUsers args; ++ genWrapper true genUsers args
++ genWrapper (system != "x86_64-linux") genNonX86 args;
}; };
genSystems =
inputs: src: path:
builtins.listToAttrs (
map (name: {
inherit name;
value = constructSystem (
{
inherit inputs src;
hostname = name;
}
// import (path + "/${name}") { inherit inputs; }
);
}) (lib.rad-dev.lsdir path)
);
} }