2021-04-24 04:13:03 +03:00
|
|
|
{ lib }:
|
2019-12-05 08:36:36 +03:00
|
|
|
|
2021-04-24 04:13:03 +03:00
|
|
|
{ self, nixos, inputs, dir, extern, suites, overrides, multiPkgs }:
|
2021-03-20 19:37:03 +03:00
|
|
|
let
|
|
|
|
defaultSystem = "x86_64-linux";
|
2021-02-02 06:26:47 +03:00
|
|
|
|
2021-04-24 18:56:51 +03:00
|
|
|
modules = with lib.modules; {
|
|
|
|
modOverrides = modOverrides { inherit overrides; };
|
|
|
|
hmDefaults = hmDefaults {
|
|
|
|
inherit extern;
|
|
|
|
inherit (self) homeModules;
|
|
|
|
userSuites = suites.user;
|
2021-03-18 01:41:54 +03:00
|
|
|
};
|
2021-04-24 18:56:51 +03:00
|
|
|
globalDefaults = globalDefaults {
|
|
|
|
inherit self nixos inputs multiPkgs;
|
|
|
|
};
|
|
|
|
cachix = cachix { inherit self; };
|
|
|
|
flakeModules = flakeModules { inherit self extern; };
|
2021-03-18 01:41:54 +03:00
|
|
|
};
|
2021-03-14 10:10:51 +03:00
|
|
|
|
2021-03-23 17:36:23 +03:00
|
|
|
specialArgs = extern.specialArgs // { suites = suites.system; };
|
2021-03-14 10:10:51 +03:00
|
|
|
|
|
|
|
mkHostConfig = hostName:
|
|
|
|
let
|
|
|
|
local = {
|
|
|
|
require = [
|
2021-03-20 19:37:03 +03:00
|
|
|
"${dir}/${hostName}.nix"
|
2021-03-14 10:10:51 +03:00
|
|
|
];
|
|
|
|
|
|
|
|
networking = { inherit hostName; };
|
2021-03-16 22:50:38 +03:00
|
|
|
|
|
|
|
_module.args = {
|
2021-04-24 04:13:03 +03:00
|
|
|
self = self;
|
2021-03-17 00:22:38 +03:00
|
|
|
hosts = builtins.mapAttrs (_: host: host.config)
|
|
|
|
(removeAttrs hosts [ hostName ]);
|
2021-03-16 22:50:38 +03:00
|
|
|
};
|
2021-04-19 07:48:19 +03:00
|
|
|
|
2021-03-18 01:41:54 +03:00
|
|
|
lib = { inherit specialArgs; };
|
|
|
|
lib.testModule = {
|
|
|
|
imports = builtins.attrValues modules;
|
|
|
|
};
|
2021-04-19 07:48:19 +03:00
|
|
|
|
2021-03-18 01:41:54 +03:00
|
|
|
};
|
2021-03-14 10:10:51 +03:00
|
|
|
in
|
2021-04-18 04:35:05 +03:00
|
|
|
lib.os.devosSystem {
|
2021-04-24 04:13:03 +03:00
|
|
|
inherit self nixos inputs specialArgs;
|
2021-03-16 05:04:28 +03:00
|
|
|
system = defaultSystem;
|
2021-04-19 07:48:19 +03:00
|
|
|
modules = modules // { inherit local; };
|
2019-12-14 07:30:43 +03:00
|
|
|
};
|
2019-12-18 02:03:44 +03:00
|
|
|
|
2021-04-18 04:35:05 +03:00
|
|
|
hosts = lib.os.recImport
|
2021-03-14 10:10:51 +03:00
|
|
|
{
|
2021-03-20 19:37:03 +03:00
|
|
|
inherit dir;
|
2021-03-14 10:10:51 +03:00
|
|
|
_import = mkHostConfig;
|
|
|
|
};
|
2020-07-31 07:17:28 +03:00
|
|
|
in
|
|
|
|
hosts
|