blob: f053c8845b66ab1fca75b396690e5547fa3d8260 (
plain) (
tree)
|
|
{
inputs,
self,
withSystem,
...
}:
let
inherit (inputs.nixpkgs.lib // builtins)
filterAttrs
foldl'
makeOverridable
mapAttrs'
mapAttrsToList
mkForce
mkIf
nixosSystem
readDir
substring
;
inherit (inputs.darwin.lib) darwinSystem;
nixSettings = {
nix.registry.nixpkgs = {
flake = inputs.nixpkgs;
};
};
mapSystems =
dir: mapAttrsToList (name: _: name) (filterAttrs (_: type: type == "directory") (readDir dir));
mapHosts = foldl' (
hosts: system:
hosts
// (mapAttrs' (name: _: {
inherit name;
value = {
inherit system;
hostconf = "${self}/machines/nixos/${system}/${name}";
};
}) (builtins.readDir "${self}/machines/nixos/${system}"))
) { };
mapMacs = foldl' (
hosts: system:
hosts
// (mapAttrs' (name: _: {
inherit name;
value = {
inherit system;
hostconf = "${self}/machines/darwin/${system}/${name}";
};
}) (builtins.readDir "${self}/machines/darwin/${system}"))
) { };
defaultModules = [
nixSettings
inputs.agenix.nixosModules.age
inputs.disko.nixosModules.disko
inputs.home-manager.nixosModules.home-manager
"${self}/modules/home.nix"
"${self}/modules/host-config.nix"
"${self}/modules/nas-client.nix"
"${self}/modules/backups.nix"
];
darwinDefaultModules = [
nixSettings
inputs.agenix.darwinModules.age
inputs.home-manager.darwinModules.home-manager
"${self}/modules/home.nix"
"${self}/modules/host-config.nix"
];
darwinConfigurations = mapAttrs' (
name: conf:
let
inherit (conf) system hostconf;
adminUser = {
name = "fcuny";
userinfo = {
email = "franck@fcuny.net";
fullName = "Franck Cuny";
};
};
in
{
inherit name;
value = withSystem system (
{ pkgs, ... }:
makeOverridable darwinSystem {
inherit system;
specialArgs = {
hostName = name;
inherit adminUser;
inherit self;
inherit inputs;
};
modules = [
{ inherit adminUser; }
{
nixpkgs.pkgs = pkgs;
nixpkgs.hostPlatform = system;
system.stateVersion = 5;
environment.systemPackages = [
pkgs.git
];
}
]
++ darwinDefaultModules
++ [
hostconf
];
}
);
}
) (mapMacs (mapSystems "${self}/machines/darwin"));
nixosConfigurations = mapAttrs' (
name: conf:
let
inherit (conf) system hostconf;
adminUser = {
name = "fcuny";
uid = 1000;
userinfo = {
email = "franck@fcuny.net";
fullName = "Franck Cuny";
};
};
in
{
inherit name;
value = withSystem system (
{ pkgs, ... }:
makeOverridable nixosSystem {
inherit system;
specialArgs = {
hostName = name;
inherit adminUser;
inherit self;
hostConfigurations = mapAttrs' (name: conf: {
inherit name;
value = conf.config;
}) nixosConfigurations;
inherit inputs;
};
modules = [
{ inherit adminUser; }
{
system.configurationRevision = mkIf (self ? rev) self.rev;
system.nixos.versionSuffix = mkForce "git.${substring 0 11 inputs.nixpkgs.rev}";
nixpkgs.pkgs = pkgs;
environment.systemPackages = [
pkgs.git
];
}
]
++ defaultModules
++ [
hostconf
];
}
);
}
) (mapHosts (mapSystems "${self}/machines/nixos"));
in
{
flake = {
inherit nixosConfigurations darwinConfigurations;
};
}
|