Introduction
nixi is a monolithic operating system written in rust for the x86_64 architecture. nixi is not intended for professional use, rather it’s meant for hobbyists to experiment and have fun, professional grade operating systems don’t fit well for this.
Moreover, nixi aims to keep its codebase simple and bare bones. A future goal is to remove all dependencies as dependencies are fundamentally against the goal of nixi which is to be built from the ground up and not always using the official way. Notably, the UEFI crate is holding us back here.
Roadmap
Our roadmap is always evolving, currently we are in early development stages so the milestones are not that unique. As time goes on the finished milestones will be removed in favor of new milestones.
- Memory management (PMA and chunk allocator).
- Round-Robin scheduler (in the future: multiple different scheduler algorithms).
- 4-level paging from scratch.
- Fast syscalls with syscall instruction.
- Basic graphics (VGA).
- TTY/PTY system.
- TCP/IP stack.
- Display server.
- Support for mapping shared memory pages between processes.
- Far into the future: SDR for WiFi, Bluetooth and other fun RF stuff
Contribution
All contributions are happily accepted given they follow our terms:
- Code must not be generated by an LLM (Codex, Claude Code, etc. is NOT allowed).
- Code must be compatible with the MIT license.
- Code must be formatted with rustfmt to ensure universal code-formatting across the entire project.
- Large changes must be split up into multiple commits with clear and understandable commit messages.
License
nixi is licensed under the MIT license.
Notable mentions
nixi supports x86_64 not “x64”, “x64” is a made up architecture-name from microslop and doesn’t have any real meaning.
Getting started
In this chapter we will go through the required steps for building nixi, and getting it running in a Virtual Machine. You must install the dependencies used throughout this guide yourself, we are intentionally ambiguous about dependencies, as there is no finite dependency list.
Building nixi
To build nixi from source you will first need to install Rust and Cargo. It’s recommended to install both of these through rustup, read the rustup install guide for more details.
Once Rust and Cargo is installed, you can start by cloning nixi:
git clone https://github.com/proxin187/nixi && cd nixi
You should now be able to run cargo build in the project root. This will place your EFI binary under target/x86_64-unknown-uefi-kernel/debug/nixi.efi.
Running nixi in a Virtual Machine
At the current stage of development nixi only supports UEFI, for this reason the virtual machine setup has a few more hoops then a BIOS setup. Specifically, you will need OVMF in order to run UEFI firmware inside QEMU.