Why I replaced my clickable hypervisor with declarative text files
I have officially decommissioned my Proxmox cluster. After years of running my homelab on Proxmox, starting with a single NUC and expanding to a multi-node cluster, I have migrated everything to NixOS running Incus.
I’ve been using NixOS for a while now, primarily to provision my personal and work Mac systems. While Nix can be complex and sometimes challenging to debug, I’ve enjoyed its unique approach to system configuration. However, I haven’t explored much beyond that scope. For some time, I’ve become particularly interested in using it for containers, as NixOS offers compelling features—reproducibility, declarative configuration, and reliable upgrades—which, in theory, make it an excellent choice. How well this theory holds up is something I’m eager to explore further. In this post, I’m documenting my steps for installing NixOS on Proxmox, my chosen virtual environment solution for my home server, as deploying NixOS onto my home server should help me further explore using it for configuring my containers
This repository hosts the IaC (Infrastructure as Code) configuration for my homelab.
The Homelab is backed by Proxmox VE hypervisor nodes with VMs bootstrapped using OpenTofu/Terraform.
Most of the services run on Talos flavoured Kubernetes, though I'm also running a TrueNAS VM for storage and Home Assistant VM for home automation.
To organise all the configuration, I've opted for an approach using Kustomized Helm with Argo CD which I've explained in more detail in this article.
I journal my homelab journey over at my self-hosted blog.
Talos is an immutable operating system designed to only run Kubernetes. The advantage of Talos is an out-of-the-box Kubernetes install, as well as a smaller attack surface, and easier maintenance.
In this article we’ll take a look at how to bootstrap and upgrade a multi-node Talos cluster running in VMs on a Proxmox Virtual Environment 8.2 cluster. We’ll be using OpenTofu/Terraform to do this in a declaratively following IaC principles.
This article can be treated as a continuation of my previous scribbles on Bootstrapping k3s with Cilium and running Kubernetes on Proxmox using Debian 12. The previous articles will hopefully form a basis with more nerdy details if my explanations fall short here.
The initial idea was inspired by this post written by Olav which is more straight to the point. I’ve added my own twists, tweaks and thoughts on his initial configuration which I hope warrants this article.
Note: Read-only source code mirror of most Proxmox Open Source projects. Check https://git.proxmox.com/ for the full list of official repositories.
- Proxmox VE: https://pve.proxmox.com/pve-docs/
- Proxmox Backup Server: https://pbs.proxmox.com/docs/
- Proxmox Mail Gateway: https://pmg.proxmox.com/pmg-docs/
A Terraform / OpenTofu Provider that adds support for Proxmox Virtual Environment.

Proxmox wird standardmäßig als Enterprise Edition installiert, da wir keine Enterprise Subscription haben bekommen wir beim Login eine Warnung angezeigt. Wenn wir Proxmox ohne Subscription updaten wollen, müssen wir das Enterprise Repository entfernen, und das Community Repository hinzufügen. Zum Schluss werden wir noch die Subscription Meldung deaktivieren.

Proxmox VE Documentation Index
Proxmox Server Solutions GmbH
support@proxmox.com
version 8.0.5, Wed Aug 16 10:03:55 UTC 2023
