I’ve been working on a project I call QixOS and now I’m releasing the alpha for you to look at and give feedback on.
QixOS is an extension of QubesOS that you install on your already existing Qubes system.
Think of it as a set of tools which together make you able to configure your Qubes system using nix.
Why I built QixOS
I’ve been using Qubes for a long time and by now I couldn’t live without it. More recently I discovered NixOS and Nix and fell in love.
I think Nix and Qubes solve essentially orthogonal problems. Qubes gives us really tight security and a great UI for compartmentalization.
Nix gives us configuration-as-code and the benefits it brings and a great package repository.
Project structure
QixOS manages a subset of VMs on your system called nubes (nix qubes). They all run NixOS and are configured through the nix programming language.
The managing VM for the nubes is qixos-admin, a VM that has full control over all the VMs. It creates through the use of a dom0 qrexec policy.
qixos-admin has no access to any other VM except the ability to assign sys-net as a network VM for the nubes.
In QixOS you configure your VMs using .nix files of 2 different types. The ‘outer’ configuration files which declare which VMs should exist on your system, and the ‘inner’ configuration files which declare how the internals of a single VM should look.
The ‘outer’ configs use QixOS specific nix libraries while the ‘inner’ ones look essentially like a regular NixOS configuration and uses regular NixOS modules.
To apply an ‘outer’ to your system you use a tool called qixos-rebuild that is accessible in qixos-admin.
I won’t go too much into the internals of how QixOS makes all of this fit together, but if you’re technically interested in NixOS and QubesOS, I warmly encourage you to go read VISION.md and DESIGN.md.
The architecture and design decisions here is exactly the kind of thing I would love to get feedback on.
There are 2 results I’d like to highlight that comes from how QixOS is designed:
- There is an increase in the security of templates due to a concept I’ve called space-time security
- Each AppVM effortlessly gets to control its own root filesystem without needing to use
/rw/orbind-dirs. Read more
Alpha status
This is the alpha release. Only 2 people in the world have used this project before this point.
If you try to run QixOS expect a lot of bugs and expect things to change.
The code is dirty at the moment and will likely remain dirty for a while until we’ve solidified the architecture.
Also don’t use it for security critical stuff.
However if you’re interested in Nix+Qubes don’t let that stop you! Come join!
Installation
The installation can be done in 2 ways.
Either by running a script in dom0 or following a manual step-by-step guide.
The script and the guide mirror each other.
The installation process does not require that you install any new software inside of dom0.
The things it requires from dom0 is to first create a temporary policy which lets a temporary builder VM install a nixos template that it has built.
Then it requires a permanent policy that allows qixos-admin to create new VMs and gives it admin access to the VMs it creates.
You can go here to get started here: INSTALL.md.
Community
In the longer run as the project matures I’d love to see more community sharing through a community repository.
The vision is that 1 person can write a configuration for a nube (a nix qube) and many people can easily use it.
As the project matures I’m hoping we can build configurations for high value but hard to install qubes such as sys-gui, sys-audio, sys-vpn, etc.
A working split-ssh already exists in the community repo, which I use daily.
What I want from you - feedback
I want feedback on:
- Is this an interesting project to you?
- The architecture - I’ve made plenty of opinionated decisions about the architecture, do you disagree with any of them? Nix people especially welcome.
- Vision for the project - I have tried to lay out what I want this project to grow into, what do you think about this? For example what do you think about a community of people building configurations and sharing them?
- Would you use this? Will you use this now? Is there something that needs to be done before you start using it?
- Misc - I’m interested in basically all types of feedback. If you have a thought then post it.
Get in contact
You can talk to me in this forum thread or on the codeberg issues or on the discord server.
Git repo: GitHub - originalposter/qixos: Qubes with Nix - the security and compartmentalization of QubesOS plus the configurability, shareability and packages of Nix · GitHub
Discord server: Discord
I know there are some people who are already interested in combining Qubes and Nix and I’d love to hear your input @solene, @evq.
I also looked around the forum for people that seem interested in nixos on qubes @eject_cosmos, @nokke, @otter2, @kalbasit, @skyvine, @arkenoi, @DanConwayDev, @Qball . Let me know what you think! ![]()
I built the foundations of QixOS on @evq’s NixOS template for Qubes so huge thanks to them!
Should you experience issues
If you encounter issues in the installation process or in the usage process please do not hesitate to contact me on discord, codeberg or here.
It is really valuable to see what kind of issues people have because it will help me know where to focus my efforts and how to improve documentation.


