nixos-config/flake.nix

36 lines
1.4 KiB
Nix

{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
nixbsd.url = "github:nixos-bsd/nixbsd/main";
};
outputs = { self, nixpkgs, nixbsd, ... }: let
sitesFiles = builtins.readDir ./sites;
sitesNames = builtins.filter (name: builtins.pathExists ./sites/${name}/configuration.nix) (builtins.attrNames sitesFiles);
systemTypes = {
nixos = nixpkgs.lib.nixosSystem;
nixbsd = nixbsd.lib.nixbsdSystem;
};
systemName = name: builtins.replaceStrings ["\n"] [""] (builtins.readFile ./sites/${name}/system);
nixosConfigurations = platform: builtins.listToAttrs (builtins.map (name: {
inherit name;
value = let evaluated = systemTypes.${systemName name} {
modules = [
./configuration.nix
./configuration-${systemName name}.nix
./sites/${name}/configuration.nix
{ nixpkgs.buildPlatform = platform; }
];
}; in {
inherit (evaluated) config;
system = evaluated.config.system.build.toplevel;
};
}) sitesNames);
in {
packages = let
buildPlatforms = [ "x86_64-linux" "aarch64-linux" "x86_64-freebsd" "aarch64-freebsd" ];
toPackagesList = platform: { name = platform; value = let base = nixosConfigurations platform; in base // { nixosConfigurations = base; }; };
packagesList = builtins.map toPackagesList buildPlatforms;
in builtins.listToAttrs packagesList;
};
}