who let him cook

This commit is contained in:
Gerg-L 2024-05-12 13:02:34 -04:00
parent 07b33bd9c8
commit afe576fe00
Signed by: gerg-l
SSH key fingerprint: SHA256:FPYDHIkvMocr4wdmZXpgpJjsb2Tw6rASs2ISPbOb0KI
2 changed files with 56 additions and 56 deletions

View file

@ -10,71 +10,73 @@ in
# Only good use case for rec # Only good use case for rec
rec { rec {
needsSystem = wrench = lib.flip lib.pipe;
output:
builtins.elem output [ needsSystem = lib.flip builtins.elem [
"defaultPackage" "defaultPackage"
"devShell" "devShell"
"devShells" "devShells"
"formatter" "formatter"
"legacyPackages" "legacyPackages"
"packages" "packages"
]; ];
constructInputs' = constructInputs' =
system: inputs: system:
lib.pipe inputs [ wrench [
(lib.filterAttrs (_: lib.isType "flake")) (lib.filterAttrs (_: lib.isType "flake"))
(lib.mapAttrs (_: lib.mapAttrs (name: value: if needsSystem name then value.${system} else value))) (lib.mapAttrs (_: lib.mapAttrs (name: value: if needsSystem name then value.${system} else value)))
]; ];
listNixFilesRecursive = listNixFilesRecursive = wrench [
path: builtins.unsafeDiscardStringContext
builtins.filter (lib.hasSuffix ".nix") (map toString (lib.filesystem.listFilesRecursive path)); lib.filesystem.listFilesRecursive
(builtins.filter (lib.hasSuffix ".nix"))
listNixFilesRecursiveDiscardStringContext = ];
x: listNixFilesRecursive (builtins.unsafeDiscardStringContext x);
fixModuleSystem = fixModuleSystem =
file: file:
lib.pipe file [ lib.pipe file [
builtins.readFile builtins.readFile
(builtins.replaceStrings (lib.singleton "#_file") (lib.singleton ''_file = "${file}";'')) (builtins.replaceStrings [ "#_file" ] [ "_file = \"${file}\";" ])
(builtins.toFile (builtins.baseNameOf file)) (builtins.toFile (builtins.baseNameOf file))
]; ];
mkModules = mkModules =
path: path:
lib.listToAttrs ( lib.pipe path [
map (name: { listNixFilesRecursive
(map (name: {
name = lib.pipe name [ name = lib.pipe name [
(lib.removeSuffix ".nix") (lib.removeSuffix ".nix")
(lib.removePrefix "${path}/") (lib.removePrefix "${path}/")
]; ];
value = fixModuleSystem name; value = fixModuleSystem name;
}) (listNixFilesRecursiveDiscardStringContext path) }))
); builtins.listToAttrs
];
gerg-utils = gerg-utils =
config: outputs: pkgsf: outputs:
lib.foldAttrs lib.mergeAttrs { } ( lib.pipe
map ( [
system: "x86_64-linux"
let "aarch64-linux"
pkgs = ]
if config == { } then [
unstable.legacyPackages.${system} (map (
else system:
import unstable { inherit system config; }; builtins.mapAttrs (
in name: value: if needsSystem name then { ${system} = value (pkgsf system); } else value
lib.mapAttrs (name: value: if needsSystem name then { ${system} = value pkgs; } else value) outputs ) outputs
) [ "x86_64-linux" ] ))
); (lib.foldAttrs lib.mergeAttrs { })
];
mkHosts = mkHosts =
system: names: system:
lib.genAttrs names ( lib.flip lib.genAttrs (
name: hostName:
# Whats lib.nixosSystem? never heard of her # Whats lib.nixosSystem? never heard of her
lib.evalModules { lib.evalModules {
specialArgs.modulesPath = "${unstable}/nixos/modules"; specialArgs.modulesPath = "${unstable}/nixos/modules";
@ -85,29 +87,27 @@ rec {
in in
builtins.concatLists [ builtins.concatLists [
(importWithInputs' (builtins.attrValues self.nixosModules)) (importWithInputs' (builtins.attrValues self.nixosModules))
(importWithInputs' ( (importWithInputs' (map fixModuleSystem (listNixFilesRecursive "${self}/hosts/${hostName}")))
map fixModuleSystem (listNixFilesRecursiveDiscardStringContext "${self}/hosts/${name}")
))
(import "${unstable}/nixos/modules/module-list.nix") (import "${unstable}/nixos/modules/module-list.nix")
(lib.singleton { (lib.singleton {
networking.hostName = name; networking = {
inherit hostName;
};
nixpkgs.hostPlatform = system; nixpkgs.hostPlatform = system;
}) })
(lib.optionals (self.diskoConfigurations ? "disko-${name}") [ (lib.optionals (self.diskoConfigurations ? "disko-${hostName}") [
self.diskoConfigurations."disko-${name}" self.diskoConfigurations."disko-${hostName}"
disko.nixosModules.default disko.nixosModules.default
]) ])
]; ];
} }
); );
mkDisko = mkDisko = lib.listToAttrs (
names: map (name: {
lib.listToAttrs ( name = "disko-${name}";
map (name: { value.disko.devices = import "${self}/disko/${name}.nix" lib;
name = "disko-${name}"; })
value.disko.devices = import "${self}/disko/${name}.nix" lib; );
}) names
);
/* /*
/<name> -> packages named by directory /<name> -> packages named by directory

View file

@ -1,8 +1,8 @@
inputs@{ self, ... }: inputs@{ self, unstable, ... }:
let let
lib = import ./lib inputs; lib = import ./lib inputs;
in in
lib.gerg-utils { } { lib.gerg-utils (s: unstable.legacyPackages.${s}) {
inherit lib; inherit lib;
nixosConfigurations = lib.mkHosts "x86_64-linux" [ nixosConfigurations = lib.mkHosts "x86_64-linux" [
"gerg-desktop" "gerg-desktop"