{ description = "My Homelab setup for NixOS"; inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; inputs.thelenlucas = { url = "github:thelenlucas/thelenlucas.github.io/main"; inputs.nixpkgs.follows = "nixpkgs"; }; inputs.agenix = { url = "github:ryantm/agenix"; inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { self, nixpkgs, thelenlucas, agenix }@inputs: { nixosConfigurations.homelab = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ # Common configuration options ./config/common.nix # External modules agenix.nixosModules.default # Core system modules ./modules/core/boot.nix ./modules/core/server-power.nix ./modules/core/packages.nix # Hardware ./modules/hardware/hardware-configuration.nix # Users ./modules/users/lucas.nix # Networking ./modules/networking/host.nix ./modules/networking/ssh.nix ./modules/networking/adblock.nix ./modules/networking/vpn-host.nix # Services ./modules/services/jellyfin.nix ./modules/services/site.nix ./modules/services/forgejo.nix ./modules/services/calibre-web.nix # Legacy configuration and secrets ./configuration.nix { environment.systemPackages = [ agenix.packages.x86_64-linux.default ]; age.secrets.tailscale.file = ./secrets/tailscale.age; age.secrets.aws.file = ./secrets/aws.age; nixpkgs.config.allowUnfree = true; } ]; }; }; }