Files
nixos/README.md
Melvin Ragusa 6db15e372f Revamp README layout and content
Replace README with a reorganized, flake-focused document that adds a
features overview, repository tree, flake inputs, step-by-step
installation/rebuild/update instructions, and dedicated sections for
desktop, gaming, development, services, and maintenance tips.
2026-02-02 18:14:59 +01:00

5.6 KiB

🐧 Atlas - NixOS Configuration

A modular, flake-based NixOS configuration for a desktop workstation optimized for gaming, development, and daily use.

Features

  • 🎮 Gaming-Ready: Steam, Proton-GE, Lutris, Heroic, Gamemode with AMD GPU optimizations
  • 🖥️ Wayland-Native: Niri compositor with modern Wayland tooling
  • Performance: CachyOS kernel with scx_lavd scheduler for low-latency
  • 🛠️ Development: Docker, Node.js, Rust, Python, and modern CLI tools
  • 🎨 Theming: Adwaita dark theme, Papirus icons, JetBrains Mono fonts
  • 🎵 Media: Navidrome music server, PipeWire audio stack

📁 Structure

nixos/
├── flake.nix                 # Flake definition with inputs
├── flake.lock                # Locked dependencies
├── configuration.nix         # Main config (imports modules)
├── hardware-configuration.nix # Hardware-specific config
├── modules/
│   ├── apps.nix              # User applications (media, productivity, communication)
│   ├── audio.nix             # Bluetooth and audio controls
│   ├── desktop.nix           # Wayland, portals, polkit, desktop utilities
│   ├── dev.nix               # Docker, languages, build tools, CLI utilities
│   ├── gaming.nix            # Steam, Gamemode, Lutris, Wine/Proton
│   ├── gpu-amd.nix           # AMD drivers, Vulkan, VA-API, CoreCtrl
│   ├── navidrome.nix         # Music streaming server
│   ├── power.nix             # Power management, CPU governors
│   ├── services.nix          # System services (fstrim, zram, avahi)
│   ├── shell.nix             # Fish shell configuration
│   ├── theming.nix           # Fonts, GTK/Qt themes, cursors
│   └── virtualization.nix    # QEMU, KVM, virt-manager
└── .config/                  # Dotfiles for user applications

🚀 Flake Inputs

Input Description
nixpkgs NixOS unstable channel
nix-cachyos-kernel CachyOS optimized kernel
noctalia Noctalia shell
zen-browser Zen Browser
ghostty Ghostty terminal emulator
opencode OpenCode
vicinae Vicinae launcher

📦 Installation

Prerequisites

  • NixOS installed with flakes enabled
  • AMD GPU (configuration is AMD-specific)

Steps

  1. Clone this repository:

    git clone https://github.com/yourusername/nixos.git /etc/nixos
    
  2. Generate hardware configuration:

    sudo nixos-generate-config --show-hardware-config > /etc/nixos/hardware-configuration.nix
    
  3. Update the user configuration in configuration.nix:

    • Change users.users.pinj to your username
    • Update networking.hostName if desired
    • Adjust timezone in time.timeZone
  4. Rebuild the system:

    sudo nixos-rebuild switch --flake .#nixos
    
  5. Set up Flathub (after first boot):

    flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
    

🔧 Usage

Rebuild System

# Test configuration without switching
sudo nixos-rebuild test --flake .#nixos

# Switch to new configuration
sudo nixos-rebuild switch --flake .#nixos

# Build and set as boot default (without switching)
sudo nixos-rebuild boot --flake .#nixos

Update Flake Inputs

# Update all inputs
nix flake update

# Update specific input
nix flake lock --update-input nixpkgs

Garbage Collection

Automatic garbage collection is configured weekly, but you can run it manually:

# Collect garbage older than 14 days
sudo nix-collect-garbage --delete-older-than 14d

# Optimize store
nix-store --optimise

🖥️ Desktop Environment

  • Compositor: Niri (scrollable tiling Wayland compositor)
  • Display Manager: Ly
  • Launcher: Vicinae
  • Terminal: Ghostty
  • Browser: Zen Browser, Firefox
  • File Manager: Nautilus

🎮 Gaming

The gaming module provides:

  • Steam with Proton-GE for enhanced Windows game compatibility
  • Gamemode for automatic performance optimizations
  • Lutris for non-Steam games
  • Heroic for Epic Games and GOG
  • Gamescope micro-compositor for problematic games
  • MangoHud (via dotfiles) for in-game overlays

AMD GPU Optimizations

  • CoreCtrl for fan curves and overclocking
  • Full power management features enabled
  • RADV (Mesa Vulkan) driver
  • VA-API hardware video acceleration

🛠️ Development

Included tools:

  • Languages: Node.js 22, Python 3, Rust (via rustup), Bun
  • Containers: Docker with auto-prune, docker-compose, lazydocker
  • Git: lazygit, gh (GitHub CLI), delta (better diffs)
  • CLI: ripgrep, fd, fzf, eza, bat, jq, yq, and more
  • Editors: Zed, VS Code (config), micro

🎵 Audio & Media

  • Audio Stack: PipeWire with JACK support
  • Bluetooth: Enabled with experimental features
  • Music Server: Navidrome for self-hosted streaming
  • Music Client: Feishin
  • Video: MPV, Celluloid, OBS Studio

⚙️ Key Services

Service Description
Tailscale Mesh VPN
OpenSSH Remote access
Navidrome Music streaming server
Avahi Local network discovery
Profile-sync-daemon Browser profile in tmpfs
ZRAM Compressed swap in RAM

📝 Notes

  • Kernel: Uses CachyOS kernel with x86_64-v3 optimizations
  • Scheduler: scx_lavd for low-latency gaming performance
  • Shell: Fish is the default shell (Zsh available as fallback)
  • Unfree packages: Enabled (Steam, Discord, etc.)
  • State Version: 26.05

📄 License

This configuration is provided as-is for personal use and reference.