{ description = "Homelab configuration using flakes"; inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; utils = { url = "github:gytis-ivaskevicius/flake-utils-plus"; inputs.flake-utils.follows = "flake-utils"; }; }; outputs = inputs@{ self, nixpkgs, flake-utils, sops-nix, utils, ... }: let system = utils.lib.system.x86_64-linux; in utils.lib.mkFlake { inherit self inputs; hostDefaults = { inherit system; modules = [ ./modules ./users sops-nix.nixosModules.sops ]; }; hosts = { # Physical hosts Niko.modules = [ ./hosts/Niko ]; # Virtual machines # Single-service Ingress.modules = [ ./hosts/Ingress ]; Gitea.modules = [ ./hosts/Gitea ]; Vaultwarden.modules = [ ./hosts/Vaultwarden ]; # Production multi-service Binnenpost.modules = [ ./hosts/Binnenpost ]; Production.modules = [ ./hosts/Production ]; ProductionGPU.modules = [ ./hosts/ProductionGPU ]; ProductionArr.modules = [ ./hosts/ProductionArr ]; ACE.modules = [ ./hosts/ACE ]; # Others Template.modules = [ ./hosts/Template ]; Development.modules = [ ./hosts/Development ]; Testing.modules = [ ./hosts/Testing ]; }; }; }