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

187 lines
5.6 KiB
Markdown

# 🐧 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:**
```bash
git clone https://github.com/yourusername/nixos.git /etc/nixos
```
2. **Generate hardware configuration:**
```bash
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:**
```bash
sudo nixos-rebuild switch --flake .#nixos
```
5. **Set up Flathub** (after first boot):
```bash
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
```
## 🔧 Usage
### Rebuild System
```bash
# 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
```bash
# 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:
```bash
# 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.