nixos-conf/flake.nix

84 lines
2.3 KiB
Nix

{
description = "All system configurations for Vili Sinervä";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
self,
nixpkgs,
nixvim,
disko,
...
}:
{
nixosConfigurations =
(
let
x86_64-hosts = builtins.filter (file: file != "aarch64-linux") (
builtins.attrNames (builtins.readDir ./hosts)
);
in
builtins.listToAttrs (
map (
host:
nixpkgs.lib.nameValuePair host (
nixpkgs.lib.nixosSystem {
specialArgs = {
nixpkgs-flake = nixpkgs;
inherit nixvim;
inherit disko;
};
system = "x86_64-linux";
modules = [
{ networking.hostName = host; }
disko.nixosModules.disko
./hosts/${host}/configuration.nix
./hosts/${host}/state.nix
];
}
)
) x86_64-hosts
)
)
// (
let
aarch64-linux-hosts = (builtins.attrNames (builtins.readDir ./hosts/aarch64-linux));
in
builtins.listToAttrs (
map (
host:
nixpkgs.lib.nameValuePair host (
nixpkgs.lib.nixosSystem {
specialArgs = {
nixpkgs-flake = nixpkgs;
inherit nixvim;
inherit disko;
};
system = "aarch64-linux";
modules = [
{ networking.hostName = host; }
./hosts/aarch64-linux/${host}/configuration.nix
];
}
)
) aarch64-linux-hosts
)
);
hydraJobs.hosts = builtins.mapAttrs (
_: host: host.config.system.build.toplevel
) self.nixosConfigurations;
hydraJobs.isos.installer = self.nixosConfigurations.installer.config.system.build.isoImage;
};
}