nixos-configuration/outputs.nix

62 lines
2.1 KiB
Nix
Raw Normal View History

2024-07-07 08:34:47 +02:00
{
inputs ? import ./inputs.nix {},
selfPath ? ./.
}:
2024-06-17 07:54:59 +02:00
let
lib = (import "${inputs.nixpkgs}/lib").extend (import ./lib/overlays/version-info-fixup.nix { inherit inputs; });
self = {
2024-07-07 08:16:17 +02:00
inherit inputs lib self;
2024-07-07 08:34:47 +02:00
__toString = _: selfPath;
2024-06-17 07:54:59 +02:00
modifiedNixpkgs = import ./pkgs/top-level/impure.nix;
modifiedNixpkgsPure = import ./pkgs/top-level/default.nix;
overlays = {
selfExpr = import ./pkgs/overlays/selfExpr.nix { nixpkgsPath = inputs.nixpkgs; };
unstable = import ./pkgs/overlays/unstable.nix;
versionInfoFixup = import ./pkgs/overlays/version-info-fixup.nix { inherit inputs; };
};
nixosConfigurations = let
# list nix file paths in ./hosts to attributes in nixosConfigurations
filePaths = lib.pipe ./hosts [
builtins.readDir
( lib.filterAttrs (name: type:
( # regular .nix files
(type == "regular" && lib.hasSuffix ".nix" name)
|| # directories that contain a default.nix file
(type == "directory" && builtins.pathExists "${./hosts}/${name}/default.nix")
)
2024-06-17 07:54:59 +02:00
# filter out files that start with .
&& !lib.hasPrefix "." name
))
];
2024-06-17 07:54:59 +02:00
nixosSystem = import "${inputs.nixpkgs}/nixos/lib/eval-config.nix";
in
# mapped list of nix file paths to attrSet with initialized NixOS configurations,
# whose names are derived from file names
lib.pipe filePaths [
(builtins.mapAttrs (name: type: {
name = if type == "directory" then name else builtins.substring 0 (builtins.stringLength name - 4) name;
value = nixosSystem {
inherit lib;
modules = [
./hosts/${name}
{
config.nixpkgs.overlays = [
2024-07-07 08:34:47 +02:00
( import ./pkgs/overlays/selfExpr.nix { nixpkgsPath = "${self}/pkgs/top-level/impure.nix"; } )
( import ./pkgs/top-level/by-name-overlay.nix "${self}/pkgs/by-name" )
self.overlays.versionInfoFixup
];
}
];
specialArgs = { inherit self inputs; };
};
}))
builtins.attrValues
builtins.listToAttrs
];
2024-06-17 07:54:59 +02:00
};
in self