Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.