Boot & initialization
Multiboot2, x86_64 long mode, GDT/IDT with a full exception set, PIT at 1000 Hz, Local + I/O APIC, and PS/2 keyboard & mouse drivers.
A 64-bit operating system written from scratch in C and x86_64 Assembly — a preemptive kernel, a windowed desktop with the Selene web browser and five games, a real TCP/IP stack, an EXT2 filesystem, and an in-OS C toolchain that self-hosts (a ported TinyCC + the xbm package manager) plus the native N language. No libraries. Just the metal.
NyxOS boots via Multiboot2 (GRUB-compatible), enters long mode with 4-level paging, and provides a clean foundation for kernel development: a preemptive scheduler, ring-3 userspace with ELF64 and syscalls, a windowed GUI, and a from-scratch network stack — all built up one honest, verified increment at a time.
Every subsystem is written from scratch and verified in QEMU.
Multiboot2, x86_64 long mode, GDT/IDT with a full exception set, PIT at 1000 Hz, Local + I/O APIC, and PS/2 keyboard & mouse drivers.
Bitmap physical allocator, a 16 MB kernel heap, 4-level paging with a higher-half mapping, per-process page tables, and NX + SMEP hardening.
Preemptive weighted round-robin over kernel threads and ring-3 processes, with full shell job control — exec, spawn, jobs, wait, kill, nice.
An ELF64 loader, an embedded initramfs, fork() with copy-on-write, 57 syscalls via syscall/sysret, a minimal libc, and isolated per-process file descriptors — a real ring-3 environment.
A ported TinyCC compiles C inside NyxOS and self-hosts — tcc compiles tcc. The cc command builds & runs C by bare name, and xbm — the package manager — compiles a recipe and installs it to /mnt/bin.
NyxOS's own languages: N (.n, built with ncc) and the typed superset N++ — HolyC-style, first-class, compiled in-OS. xbm install ncc builds the N compiler on the machine itself.
40+ built-in commands with Tab completion, environment-variable expansion, command history, I/O redirection, pipelines, job control (exec/spawn/jobs/wait/kill), and nice/renice priority control.
RTL8139 driver, ARP/IPv4/UDP/ICMP/DHCP/DNS, and a full TCP stack: retransmission with RTO, passive open (listen/accept), loopback, an HTTP client & server, nc full-duplex, and poll() I/O multiplexing.
Up to 32 windows with z-ordering, drag & resize, four workspaces, drop shadows, snap-to-edge with a live preview, a taskbar and Start menu — plus a Terminal, File Manager, Text Editor, Image Viewer, Paint, Calculator, Settings and Sound Test, each with its own hand-drawn icon.
A polished 1080p desktop with animated wallpapers (/lava, /matrix, /fire) and real-time render testbeds — Nyx Voxels and Nyx Fractal — with on-screen benchmark HUDs. Fluid, personal, unmistakably Nyx.
NyxOS browses the real internet: Selene resolves DNS, opens a TCP connection and fetches a page over HTTP, then strips the HTML to text and word-wraps it under a URL bar. DHCP, chunked-transfer decoding and scrolling included. Named for the moon goddess.
A desktop Games folder with five: the original 1993 DOOM (running in a window), Minesweeper, Pong, Snake and Tetris — the last three animated in-kernel by a ~30 fps compositor game-tick.
A ramdisk VFS with an EXT2 read/write driver auto-mounted at /mnt, a write-through sector cache, per-fd byte offsets, and persistence across reboots on a disk image.
A Bochs VBE framebuffer (1024×768×32), a Sound Blaster 16 driver (DMA + IRQ + mixer), PC-speaker tones, and the original DOOM engine ported to run on the framebuffer.
NX + SMEP + SMAP and W^X page permissions, per-process address spaces, a hardened syscall boundary (bounded ELF loads, validated user pointers), ring-3 fault isolation — a crash kills the process, not the kernel — and PBKDF2-HMAC-SHA256 login, backed by a from-scratch crypto library verified by 55 known-answer tests in CI.
A higher-half kernel, isolated user address spaces, and an interrupt-driven core.
The PIT (ISA IRQ0) is routed via the I/O APIC on pin 2 → vector 32, driving a 1000 Hz tick. The scheduler preempts on that tick; syscalls and IRQs switch CR3 on entry so each process sees only its own address space.
Build the kernel, boot it in QEMU, and log in.
# cross-compiler (x86_64-elf-gcc) or host gcc -m64
git clone https://github.com/kazah-png/nyx-os.git
cd nyx-os
make -C kernel # → kernel/nyx-kernel.bin
.\build.ps1 # WSL cross-compile → kernel + bootable ISO
# GUI desktop + networking + disk
qemu-system-x86_64 -cdrom NyxOS.iso -m 256M -no-reboot \
-hda ext2-test.img -nic user,model=rtl8139 -display sdl
Serve HTTP from the guest by forwarding a host port: add hostfwd=tcp::8080-:80 to the NIC, run tcpserve 80, then curl localhost:8080.
The boot animation leads to a framebuffer login screen. The default account is nyx / nyx (PBKDF2-HMAC-SHA256). On success, the NyxOS Desktop launches; with no disk, it falls back to a text shell.
The built-in shell — also available in the Terminal window.
| Category | Commands |
|---|---|
| System | help clear nyxfetch uname date version reboot history env export |
| Files | ls cd pwd cat touch mkdir rm cp mv head tail grep sort wc find tree write which diff hexdump |
| Processes | ps mem exec spawn jobs wait kill nice renice usertest pmap free |
| Toolchain | cc xbm ncc tcc · compile & run C in-OS; xbm install <pkg> builds a recipe into /mnt/bin |
| Network | ifconfig dhcp ping setip httpget tcptest tcpdrop tcploop tcpserve nc |
| Apps & games | selene doom pong snake tetris · plus a desktop icon for each & a Games folder |
| Filesystem | mount · EXT2 auto-mounts at /mnt |
| Graphics & sound | gui desktop mode fonttest beep play sb16play |
From the NIC driver up to an HTTP server — every layer written and debugged from the wire.
Every increment from a from-scratch kernel to a networked desktop OS with a web browser and five games.
Base kernel, ramdisk VFS + shell commands, and the first real networking (RTL8139, ARP/IP/UDP/ICMP).
Preemptive multitasking, a full TCP stack, the window compositor, PC-speaker audio, EXT2 read support, and a Sound Blaster 16 driver.
ELF loader, initramfs, per-process paging, ring-3 execution, syscalls, an RTC driver and a minimal libc.
Full x86_64 long mode, a higher-half kernel, user/kernel page-table isolation, and NX + SMEP with APIC init.
A full GUI app suite, a boot animation + login screen, syscall-boundary hardening, ring-3 userspace that actually runs, preemptive scheduling with job control, and a networking sprint — loopback + ICMP, TCP retransmission, passive open, and an HTTP server that answers real clients.
The native language runtime, waitpid(), anonymous pipes & blocking IPC, signals with setjmp/longjmp recovery, poll() I/O multiplexing, nc, persistent EXT2 accounts, and the root-cause fix of the pipeline-corruption Heisenbug (a firmware-hole page-allocator bug).
The one release-blocking bug root-caused and fixed with a single cli, closing the preemptible window between the user-CR3 reload and iretq. Plus a GUI/VFS/ext2 hardening sweep and the first SMP stages (per-CPU TSS, spinlocks, TLB-shootdown IPIs). The long-term-support release.
A central GUI palette in brand purple, modern window chrome (shadows, gradients, rounding), keyboard window management & snapping. The original 1993 DOOM ported and playable in a window, joined by Tetris, Snake, Pong and Minesweeper. And 🌙 Selene — the NyxOS web browser — fetches and renders real pages over DHCP + DNS + TCP + HTTP.
The push toward a fully-functional daedalOS-style desktop OS: a polished 1080p desktop, visual file management, a Windows-like clean menu, and multi-session groundwork — all keeping the Nyx night-goddess identity.
TinyCC 0.9.27 ported to run inside NyxOS — tcc compiles tcc. The cc command and the xbm package manager compile C from a recipe and install it to /mnt/bin, runnable by bare name. The everyday install/remove/update/search/list verb set is complete.
The native N language (.n / ncc) and the typed superset N++ with static checks; RTL8139 moved toward interrupt-driven RX/TX with a real retransmit queue and SMP-safe TCP; the Nyx Voxels and Nyx Fractal render benchmarks and animated wallpapers; AES Key Wrap (RFC 3394) landing a 55-KAT crypto battery in CI; and a steady security issue burn-down — one honest, verified increment at a time.
NyxOS is developed in the open, one verified increment at a time. Join the Discord for kernel-dev chat, or dive into the source and status report on GitHub.