nixos-conf/flake.nix

77 lines
2 KiB
Nix
Raw Normal View History

2025-05-31 21:27:53 +03:00
{
description = "All system configurations for Vili Sinervä";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
2025-06-01 16:57:37 +03:00
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
2025-06-09 00:16:35 +03:00
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
2025-06-29 15:25:07 +03:00
impermanence.url = "github:nix-community/impermanence";
2025-06-21 12:29:48 +03:00
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
2025-05-31 21:27:53 +03:00
};
outputs =
2025-06-09 00:16:35 +03:00
{
2025-06-11 22:16:27 +03:00
self,
2025-06-09 00:16:35 +03:00
nixpkgs,
nixvim,
disko,
2025-06-29 15:25:07 +03:00
impermanence,
2025-06-21 12:29:48 +03:00
sops-nix,
2025-06-09 00:16:35 +03:00
...
}:
2025-05-31 21:27:53 +03:00
{
2025-06-05 01:12:48 +03:00
nixosConfigurations =
2025-07-12 03:52:35 +03:00
let
hosts =
with builtins;
nixpkgs.lib.lists.flatten (
map (
system:
map (host: {
system = system;
name = nixpkgs.lib.strings.removeSuffix ".nix" host;
}) (attrNames (readDir ./hosts/${system}))
) (attrNames (readDir ./hosts))
);
in
builtins.listToAttrs (
map (
host:
nixpkgs.lib.nameValuePair host.name (
nixpkgs.lib.nixosSystem {
specialArgs = {
nixpkgs-flake = nixpkgs;
inherit nixvim;
inherit disko;
};
system = host.system;
modules = [
{ networking.hostName = host.name; }
./default.nix
./hosts/${host.system}/${host.name}.nix
2025-06-29 14:50:11 +03:00
2025-07-12 03:52:35 +03:00
disko.nixosModules.disko
impermanence.nixosModules.impermanence
sops-nix.nixosModules.sops
];
}
)
) hosts
2025-06-05 01:12:48 +03:00
);
2025-06-12 00:22:47 +03:00
hydraJobs.hosts = builtins.mapAttrs (
_: host: host.config.system.build.toplevel
) self.nixosConfigurations;
2025-06-14 14:03:58 +03:00
hydraJobs.isos.installer = self.nixosConfigurations.installer.config.system.build.isoImage;
2025-05-31 21:27:53 +03:00
};
}