Hi everyone,
I’m running NixOS on a Raspberry Pi and I want to use it to host several small hobby projects (Node.js, Python, etc.). My goal is to achieve a “Heroku-like” workflow: push code to a repository → app automatically redeploys on the Pi.
I have a few preferences that are making this tricky to architect, and I’m looking for community wisdom on how others handle this.
My preferences:
1. No Docker: The Pi is resource-constrained, and running the Docker daemon + containers feels redundant when Nix already provides isolation and reproducibility.
2. Remote Builds: I build everything on my PC. The pi is too slow.
3. Dashboard: I’d like a simple UI to view service status and logs (looking at Cockpit, but open to ideas).
The Problem / My Confusion:
I’ve looked into tools like Coolify (too heavy, relies on Docker) and Piku (great, but no UI).
I came across `deploy-rs`, but I’m struggling to understand the workflow for rapid application iteration.
If I use `deploy-rs` to update my system flake, I have to:
1. Update the project code.
2. Update the `flake.lock` in my system repo to pull the new project commit.
3. Deploy the whole system profile.
This feels heavy for just updating one app. I’m trying to figure out if there is a way to “push” just the new application to the Pi and restart its systemd unit without doing a full OS switch every time, or if I should just accept the full system switch workflow.
I’d love to hear how your thoughts and ideas, as well as your personal experiences with deploying projects!