112 lines
2.6 KiB
Nix
112 lines
2.6 KiB
Nix
{
|
|
nixpkgs,
|
|
nixpkgs-unstable,
|
|
nixos-hardware,
|
|
agenix,
|
|
home-manager,
|
|
lix-module,
|
|
authentik-nix,
|
|
self,
|
|
...
|
|
}:
|
|
let
|
|
agenixOverlay = final: prev: { agenix = agenix.packages.${prev.system}.default; };
|
|
|
|
customOverlays = (
|
|
final: prev: {
|
|
}
|
|
);
|
|
|
|
mkPkgs =
|
|
nixpkgsSrc: system:
|
|
import nixpkgsSrc {
|
|
inherit system;
|
|
overlays = [
|
|
agenixOverlay
|
|
customOverlays
|
|
];
|
|
config.allowUnfree = true;
|
|
};
|
|
|
|
# Helper function to create a Proxmox LXC host
|
|
mkLXC =
|
|
{
|
|
hostModule,
|
|
unstable ? false,
|
|
system ? "x86_64-linux",
|
|
extraModules ? [ ],
|
|
specialArgs ? { },
|
|
}:
|
|
let
|
|
nixpkgsSrc = if unstable then nixpkgs-unstable else nixpkgs;
|
|
in
|
|
nixpkgsSrc.lib.nixosSystem {
|
|
pkgs = mkPkgs nixpkgsSrc system;
|
|
modules = [
|
|
# Base modules for all hosts
|
|
authentik-nix.nixosModules.default
|
|
../modules
|
|
|
|
# Proxmox LXC support
|
|
"${nixpkgs}/nixos/modules/virtualisation/proxmox-lxc.nix"
|
|
../modules/virtualisation/proxmox.nix
|
|
|
|
# Agenix for secrets
|
|
agenix.nixosModules.default
|
|
|
|
# Host-specific module
|
|
hostModule
|
|
]
|
|
++ extraModules;
|
|
inherit specialArgs;
|
|
};
|
|
|
|
in
|
|
{
|
|
# deadbeef = nixpkgs.lib.nixosSystem {
|
|
# pkgs = mkPkgs nixpkgs "x86_64-linux";
|
|
# modules = [
|
|
# ./deadbeef
|
|
# nixos-hardware.nixosModules.dell-xps-15-9560
|
|
# home-manager.nixosModules.home-manager
|
|
# agenix.nixosModules.default
|
|
# ];
|
|
# };
|
|
|
|
baseLXC = mkLXC {
|
|
hostModule = ./base-lxc.nix;
|
|
specialArgs = { inherit self; };
|
|
};
|
|
|
|
arr = mkLXC { hostModule = ./arr; };
|
|
caddy = mkLXC { hostModule = ./caddy; };
|
|
colmena = mkLXC { hostModule = ./colmena; };
|
|
dns01 = mkLXC { hostModule = ./dns/dns-01.nix; };
|
|
dns02 = mkLXC { hostModule = ./dns/dns-02.nix; };
|
|
firefly-iii = mkLXC { hostModule = ./firefly-iii; };
|
|
forgejo = mkLXC { hostModule = ./forgejo; };
|
|
immich = mkLXC { hostModule = ./immich; };
|
|
metrics = mkLXC { hostModule = ./metrics; };
|
|
n8n = mkLXC { hostModule = ./n8n; };
|
|
nextcloud = mkLXC { hostModule = ./nextcloud; };
|
|
plex = mkLXC { hostModule = ./plex; };
|
|
portainer = mkLXC { hostModule = ./portainer; };
|
|
shadowsocks = mkLXC { hostModule = ./shadowsocks; };
|
|
vaultwarden = mkLXC { hostModule = ./vaultwarden; };
|
|
|
|
# Hosts requiring nixpkgs-unstable
|
|
authentik = mkLXC {
|
|
hostModule = ./authentik;
|
|
unstable = true;
|
|
};
|
|
|
|
paperless = mkLXC {
|
|
hostModule = ./paperless;
|
|
unstable = true;
|
|
};
|
|
|
|
zigbee2mqtt = mkLXC {
|
|
hostModule = ./zigbee2mqtt;
|
|
unstable = true;
|
|
};
|
|
}
|