Top
Best
New

Posted by wasting_time 1 day ago

Migrating from Proxmox to NixOS and Incus(www.nijho.lt)
86 points | 69 comments
evanjrowley 1 day ago|
I've recently migrated to Incus and am enjoying it so far. Hopefully the good feelings last.

Roughly ten years ago, my homelab consisted of a dozen virtual machines running on SmartOS. I was not familiar with Illumos, and this was before it had a widely available web UI, but it was simple enough to use that these challenges didn't matter much. SmartOS was designed to boot reliably from USB flash storage, allowed me to use all my SATA ports for VM storage, and was my first "immutable" operating system. The primary focus on ZFS storage was another great quality of SmartOS.

Two moves and several years later, it was time to rebuild the lab, and I decided to go with Proxmox because it had decent ZFS support. Experience with Proxmox has been very good too. The GUI, many more virtualization features (in addition to the key ones I care about), and better hardware support through the Linux kernel have kept me on Proxmox for a long time.

Customizing my Proxmox installation always gave me anxiety. How could I defend my hypervisor from configuration drift? I wished there could be an immutable version of Proxmox.

Later on, I learned about govulcheck, which offers a novel dynamic/static analysis hybrid approach to vulnerability management. Nothing else out there does this (without teaming up with some huge company). I began to think that I should favor software solutions based on golang.

Ultimately, Incus (and IncusOS) fit this need very well. My IncusOS hosts excellent and I'm glad I can run Incus itself on most Linux distros - including NixOS!

I'll keep a small Proxmox host around for experimenting with new kernel features (Intel GVT-g / SR-IOV graphics) and old operating systems like Windows XP or anything else that needs special QEMU options.

mindcrash 23 hours ago|
> I'll keep a small Proxmox host around for experimenting with new kernel features (Intel GVT-g / SR-IOV graphics) and old operating systems like Windows XP or anything else that needs special QEMU options.

The VM feature of Incus is based on QEMU/KVM so actually there's no need to keep Proxmox around, unless you really want to keep a host or cluster for experimentation with the Proxmox environment. With some configuration you can get SR-IOV and older operating systems working aswell.

evanjrowley 23 hours ago||
I would like to see the configuration for SR-IOV. So far my experience has been that IncusOS is very rigid in it's configuration (in a good way!). I expect it's feasible to do with just Incus running on a general purpose Linux distribution like Debian with a recent kernel.
mindcrash 22 hours ago||
incus config is your friend

There's a entire section about allocating GPUs to containers or VMs here: https://linuxcontainers.org/incus/docs/main/reference/device...

You can do the same with USB devices, NICs, infiniband adapters and whatever (as can be seen below and above the gpu part in the documentation)

For SR-IOV with VFs on a virtual machine the CLI command should look something like:

incus config device add <instance name> <device name> gpu gputype=sriov pci=<pci address>

https://linuxcontainers.org/incus/docs/main/reference/device...

But the possibility to just reroute a entire GPU to a virtual machine or container might be even more interesting:

incus config device add <instance name> <device name> gpu gputype=physical pci=<pci address>

https://linuxcontainers.org/incus/docs/main/reference/device...

Note that there's a possibility you'll need to play with the parameters a bit. All are mentioned in the docs.

redlewel 1 day ago||
I get the advantage of fully declarative systems such as Nix, but everything you do in proxmox via GUI can be done via CLI: https://pve.proxmox.com/pve-docs/#_command_line_interface

CLI is first class in proxmox, I use the qm command for managing vms all the time. The networking is also just a file in `/etc/network/interfaces` that I modify with vim as needed.

mikestorrent 1 day ago||
CLI is dandy but Terraform is even nicer. I run something like ten Proxmox clusters now around the world, and an AI agent can deploy a fully terraformed VM for me, tied into monitoring, asset mgmt, EDR, etc in a few minutes...
kube-system 1 day ago|||
I run 20+… and it sure would be nice if Proxmox had a first party terraform provider. I have a lot of stuff I have to do via REST.
mikestorrent 1 day ago||
I concur highly. Well, make sure you buy your cheap support contract, help beta-test Proxmox Datacentre Manager, and push for it. They could probably just onboard one of the open source authors as a contractor or something if enough companies actually pony up the couple of grand per year per box. At 50K a server, paying like 2k for a proxmox license is a joke
sieabahlpark 1 day ago|||
[dead]
RossBencina 1 day ago||
Doing things via the CLI and editing config files doesn't automatically give you reproducability or audit trail. Last time I check etckeeper doesn't work with proxmox either (due to the proxmox FUSE mount in /etc).
Helmut10001 1 day ago|||
I get your point and this is likely also not what you mean, but I am very happy with a simple git tracking approach that I use across Proxmoxes and VMs [1].

[1]: https://du.nkel.dev/blog/2026-05-16_rootless_docker_virtiofs...

redlewel 22 hours ago|||
I agree and might eventually move on from prox(focusing on higher layers in infra atm) but the author claimed its GUI-only which is not true.
dizhn 1 day ago||
As people have said proxmox supports cli and api usage as well but a huge part of learning it is just poking the various settings and fiddling with the different options. I never felt the need to go beyond that to automate settings. I don't even cluster distinct proxmox hosts.

Also the mentions and requirements relating AI in the article sound like they are from another world. Did things really come to this? Even if they had, you one can still snapshot proxmox vms as well as host (zfs).

cassianoleal 1 day ago||
I'm also considering migrating from Proxmox to Incus, but I'd look into IncusOS rather than having to manage the host OS myself.
agartner 1 day ago|
I'm a big LXD and now Incus fan. But I went with NixOS rather than IncusOS for my latest build because I prefer the LTS linux kernel over the mainline kernel.
ikidd 22 hours ago||
Good lord, if how they were managing Proxmox with an agent was essentially using Playwright, no wonder they thought there was a problem.

I don't even do that, I go into a shell and run qm commands for more complicated things. And for anything I ask an agent to do, it goes straight to qm and other CLI tools as well.

Weird.

basnijholt 20 hours ago||
Author here!

All valid comments about the fact that Proxmox is not limited to clicking around in the web UI.

It has qm, pct, config files, a REST API, Terraform providers, and Ansible workflows. My point is not that Proxmox cannot be automated.

Even with that automation, state drift can still creep in when debugging means running one quick command, especially if an agent is allowed to execute imperative fixes that never make it back into the automation framework. It is that, for my setup, I wanted the reproducible configuration itself to be the source of truth.

The thing I care about is not buttons versus commands, but whether I can rebuild the host from version-controlled text files and know that every important change is captured there.

cromka 1 day ago||
I don't get their argument, I run GeForceNow on one of my Proxmox nodes in metal and there's no problem with it. It's a Debian underneath, after all. They didn't need to switch to NixOS to run Kodi.

Also, do they get PBS using ZFS snapshots? Do they get HA, live migration, shared storage, easy CephOS, easy snapshots, quick cloning? Do you really want to migrate a VM from one node to another using the command line when you're in some serious situation?

Sure, for a homelab this might be OK, but the UI does make things easy for a reason.and it's not a gimmick.

I agree on a lot of the points, though, I just set up a second cluster and it took over 3 work days because of how much repetitive work is needed to do so. To be able to just take a file with instructions, adjust it a bit and deploy would be so much easier.

linsomniac 1 day ago||
It's really hard to tell what the benefits of Incus over Ganeti are. The Incus site doesn't really lead with features or benefits that I can see. About the only things I could figure out are that Incus can manage containers and can manage instance creation through cloning a base volume, where ganeti (afaik) always creates volume and populates it. Well, and Incus seems to be MUCH more popular than Ganeti.

I searched the documentation but it wasn't really clear what its live migration and ZFS migration story is, but when I asked Claude to research it, it tells me that it supports live migration via ZFS snapshot replication, which is exactly what I'm looking for. I implemented a ganeti storage driver that does the same thing and am just getting ready to start testing it, but if Incus supports it I might look at moving that direction.

Anyone use Incus live migration with ZFS?

FireBeyond 1 day ago|
Yeah, one thing I've found with Nix is that documentation is generally very terse and assumes you're capable of filling the blanks yourself, even though you might not know they exist.

Like... this... this is not great documentation (I know I know, contribute myself): https://wiki.nixos.org/wiki/Incus

Within a few lines:

> To provide non-root access to the Incus server, you will want to add your user to the incus-admin group. Don't forget to reboot.

I mean I get that they probably mean /etc/group, but going on from there plenty of examples of "just change the config to use x" or similar.

kennywinker 1 day ago||
> But fundamentally, Proxmox is built around clicking buttons. It is a GUI-first paradigm.

Uhh, whut? It provides a button-y interface, but you can do everything via config files and `pct` on the command line if you prefer. I know that’s not full nix-style declarative, but you don’t have to mislead to sell me on the advantages of declarative infra.

cassianoleal 1 day ago||
Whilst you may be right, it doesn't shift too much. It's still an imperative system, and even though it has an API, it's badly documented, lacking in features and very inconsistent.

Look for Terraform providers and you'll pretty much only find things to declare VMs and a few other resources around running them, but not a lot to define infrastructure, networking, firewalls, etc.

EnigmaCurry 1 day ago|
NixOS has transformed my use of Proxmox. I configure, build, and deploy everything from my nix workstation. I don't need to use the PVE gui at all. Proxmox is just a target, and I've abstracted things enough to where I can deploy the same machines to libvirt on a local machine too. Why would I need to let my agent into my PVE box? I haven't looked at incus, but if I wanted to run the full stack declaratively, nixos and LLMs are so powerful now that I would probably just say to run libvirt and ZFS on nixos natively.
dereknance 1 day ago||
> I configure, build, and deploy everything from my nix workstation. I don't need to use the PVE gui at all.

I would love to know more about how you do this, particularly the deploy part. I'm considering moving away from Ansible, but haven't had the time to dedicate to exploring a similar Nix experience.

EnigmaCurry 1 day ago|||
This is what I've built [1], and I'm using it daily for things like agent sandboxing when I deploy it builds a new image completely replaces the OS disk - on upgrade it only keeps its data drive mounted to /var.

[1] https://github.com/EnigmaCurry/nixos-vm-template

mikestorrent 1 day ago|||
Just use Terraform against Proxmox and don't leave mysterious things nobody else knows how to work with.
daishi55 1 day ago||
What do you mean exactly? You have a nix workstation and a physically separate PVE server, and configure the second from the first?
EnigmaCurry 1 day ago||
Yes, I don't really touch the PVE server at all after the initial install. I just build and deploy from my Fedora workstation running nix.

[1] https://github.com/EnigmaCurry/nixos-vm-template

More comments...