Homelab/flake.nix
2025-10-04 00:49:49 +00:00

61 lines
1.6 KiB
Nix

{
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;
}
];
};
};
}