33 lines
1.6 KiB
Nix
33 lines
1.6 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
|
|
nixbsd.url = "github:nixos-bsd/nixbsd/main";
|
|
};
|
|
outputs = { self, nixpkgs, nixbsd, ... }: {
|
|
nixosConfigurations = 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);
|
|
configurations = builtins.listToAttrs (builtins.map (name: {inherit name; value = systemTypes.${systemName name} { modules = [ ./configuration.nix ./configuration-${systemName name}.nix ./sites/${name}/configuration.nix ]; }; }) sitesNames);
|
|
in configurations;
|
|
|
|
packages = let
|
|
forBuildSystem = platform: let
|
|
toBuildSystem = config: config.extendModules { modules = [ { nixpkgs.buildPlatform = platform; } ]; };
|
|
toToplevel = extended: {
|
|
system = extended.config.system.build.toplevel;
|
|
};
|
|
toSystem = name: config: toToplevel (toBuildSystem config);
|
|
configurations = builtins.mapAttrs toSystem self.nixosConfigurations;
|
|
in configurations;
|
|
buildPlatforms = [ "x86_64-linux" "aarch64-linux" "x86_64-freebsd" "aarch64-freebsd" ];
|
|
toPackagesList = platform: { name = platform; value = forBuildSystem platform; };
|
|
packagesList = builtins.map toPackagesList buildPlatforms;
|
|
in builtins.listToAttrs packagesList;
|
|
};
|
|
}
|