NixOS x Proxmox infra configuration with Terranix

This repository allows to manage LXC containers on Proxmox.

It's supposed to be used from an host where nixos-rebuild is available.

=> Uses nix-community/generators to build a LXC template with a base NixOS container => Uses terranix to build the infra definition and opentofu to deploy it on Proxmox => Uses nixos-rebuild to deploy the configuration on the container

My main objective was to have a "light" definition for the containers and to be able to use Nix to factorize configuration.

Usage

Prepare the infra constants

-> cp infra/constants.nix.template infra/constants.nix -> adapt infra/constants.nix to match your needs -> touch infra/ips.nix -> remove both these files from .gitignore and git add them.

Build NixOS template

-> modify infra/lxc-template.nix as needed -> run build-template -> template available in nixos-template/tarball/ (.tar.xz to be uploaded to Proxmox) TODO Script the Proxmox Template upload if possible.

Prepare Terraform

-> create a user/role etc on Proxmox (see the provider documentation) -> cp terraform.tfvars.example terraform.tfvars -> edit terraform.tfvars to fill in values -> adapt the terraform base config as needed in infra/main.nix -> run tofu init

Adapt NixOS / Terraform modules building

-> edit lib/containers.nix to change how a container definition is translated to TF / NixOS config (in particular check the template name)

Create containers definitions

-> cp containers/lxc-cont.nix.template containers/lxc-#NAME#.nix -> edit containers/lxc-#NAME#.nix as needed -> run build-terraform-json -> run tofu plan and review the plan -> run tofu apply, hopefully without errors -> run deploy #NAME#

Update container

-> edit containers/lxc-#NAME#.nix as needed -> if the container specs have changed, do all as above -> otherwise you can just run deploy #NAME#

Description
No description provided
Readme 222 KiB
Languages
Nix 100%