30 lines
810 B
Nix
30 lines
810 B
Nix
{ inputs, lib, pkgs, self, ... }:
|
|
let
|
|
inherit (inputs.nixpkgs.lib) nixosSystem;
|
|
inherit (builtins) baseNameOf elem;
|
|
inherit (lib.attrsets) filterAttrs;
|
|
inherit (lib.modules) mkDefault;
|
|
inherit (lib.strings) removeSuffix;
|
|
inherit (self.modules) mapModules;
|
|
in rec
|
|
{
|
|
mkHost = path: attrs @ {sytem ? "x86_64-linux", ...}:
|
|
nixosSystem {
|
|
inherit system;
|
|
|
|
specialArgs = { inherit lib input system; };
|
|
|
|
modules = [
|
|
{
|
|
nixpkgs.pkgs = pkgs;
|
|
networking.hostName = mkDefault (removeSuffix ".nix" (baseNameOf path));
|
|
}
|
|
(filterAttrs (n: v: !elem n ["system"]) attrs)
|
|
../. # ../default.nix
|
|
(import path)
|
|
];
|
|
};
|
|
|
|
mapHosts = dir: attrs @ { system ? system, ... }:
|
|
mapModules dir (hostPath: mkHost hostPath attrs);
|
|
}
|