Rendered at 20:25:26 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
yapancha 52 seconds ago [-]
So happy to see this, finally.
EnigmaCurry 3 hours ago [-]
I'm happy to see this, and I have lots of thoughts about this. Building declarative services on Nix is a far superior way of distributing Linux to VMs than most any other way I've tried. I am working [1] on very similar things, but I've been leaning more on the self-hosted path, my VM template targets libvirt and Proxmox VE with a single CLI api. I even have an experimental branch that targets DigitalOcean. For VMs especially, I want my OS to be immutable. My VMs should contain no state other than my application state. Upgrades should be a full image replacement and reboot.
So in my template, I have created the VMs with two disks: first one is for NixOS and is built from an image, and it is read-only. The second is mounted to /var and is used for all system configuration as well as application state. If I have multiple VMs, they can all share the same base image (thin provisioned). That's the mode that I want for my deployments of services, immutable and as stateless as possible. For agent use, its different, you actually want a mutable NixOS root so that the agent can do what it wants.
I built three modes: immutable, semi-mutable, and mutable. mutable removes the read-only lock on the root, and just lets you manage the VM as a pet. semi-mutable adds an ephemeral overlayfs that gets wiped the next time you upgrade the base image. So that gives you kind of the best of both worlds: an immutable read-only base image and the ability to "nix profile add" whatever you (or your agent) wants, but with the contract that these imperatively installed things will disappear the next time you upgrade. Are you planning on adding a LICENSE to your machine0-nixos repo?
Always happy to meet others that are working with NixOS :) I've just added the License - it's MIT.
Bnjoroge 27 minutes ago [-]
Very cool. I have something similar set up for my homelab where I launch nixos incus containers. Been great for offloading stuff from the my agents
setheron 3 hours ago [-]
Big fan of exe.dev so the added Nix seems like a solid value add.
exe.dev is great but lurking in my mind is: "how will I replicate this if I ever need to move to AWS etc.." for all the service composition.
Site looks great too
bwm 3 hours ago [-]
Thanks! Yup, one of the benefits of defining your VMs as code using Nix, is that you can take that code to any supplier, and you're guaranteed exactly the same build.
I’ve been using machine0 for hosting openclaw and a couple of web apps i’ve been working on. Great product super easy to use with claude code.
bwm 3 hours ago [-]
Been great having you :)
dmmalam 34 minutes ago [-]
Looks cool. Can I run on other clouds.
JeanEdern 3 hours ago [-]
How does machine0 handle NixOS state drift and recovery in practice—for example, if a VM is manually modified outside the flake, can I detect or reset that drift, and how do snapshots interact with flake-based provisioning?
bwm 2 hours ago [-]
It's not possible to modify the VM outside of the flake :)
JeanEdern 2 hours ago [-]
[dead]
Pet_Ant 1 hours ago [-]
I wonder how easy this would be to port to Guix?
bwm 1 hours ago [-]
You could point your agent at the machine0 CLI and ask it to :)
cdevr 1 hours ago [-]
I made this (minus NixOS support, I should add that) for proxmox VE using their API a few weeks ago. I mean it's not this extensive, but it works:
I mean, I'm not going to claim it's remotely near the same quality. And proxmox has some holes in their support for cloud init. And of course you need a mini pc on a good internet connection or the like.
But extremely fast provisioning of a any of VMs ... very handy.
Proxmox has too many compromises though. Maybe I should do the reverse, and extend this until it can fully replace proxmox entirely.
bwm 1 hours ago [-]
I'm also a big fan of proxmox! Would be happy to help you extend machine0 though :) Happy to chat about your requirements over email: barnaby@machine0.io
So in my template, I have created the VMs with two disks: first one is for NixOS and is built from an image, and it is read-only. The second is mounted to /var and is used for all system configuration as well as application state. If I have multiple VMs, they can all share the same base image (thin provisioned). That's the mode that I want for my deployments of services, immutable and as stateless as possible. For agent use, its different, you actually want a mutable NixOS root so that the agent can do what it wants.
I built three modes: immutable, semi-mutable, and mutable. mutable removes the read-only lock on the root, and just lets you manage the VM as a pet. semi-mutable adds an ephemeral overlayfs that gets wiped the next time you upgrade the base image. So that gives you kind of the best of both worlds: an immutable read-only base image and the ability to "nix profile add" whatever you (or your agent) wants, but with the contract that these imperatively installed things will disappear the next time you upgrade. Are you planning on adding a LICENSE to your machine0-nixos repo?
[1] https://github.com/EnigmaCurry/nixos-vm-template
exe.dev is great but lurking in my mind is: "how will I replicate this if I ever need to move to AWS etc.." for all the service composition.
Site looks great too
https://github.com/cdevr/dtt
I mean, I'm not going to claim it's remotely near the same quality. And proxmox has some holes in their support for cloud init. And of course you need a mini pc on a good internet connection or the like.
But extremely fast provisioning of a any of VMs ... very handy.
Proxmox has too many compromises though. Maybe I should do the reverse, and extend this until it can fully replace proxmox entirely.