Skip to content

Latest commit

 

History

History
169 lines (141 loc) · 6.19 KB

File metadata and controls

169 lines (141 loc) · 6.19 KB

NixOS Configuration TODO

Core Setup

  • Create flake.nix with pinned nixpkgs, Home Manager input, and system/home configuration outputs
  • Create flake.lock (will be generated on first build)
  • Create hosts/default.nix with base system configuration importing modules
  • Create hosts/test-vm.nix for VM testing configuration
  • Create README.md with usage instructions, testing workflow, and architecture overview

System Modules

  • Create modules/sway.nix with Sway window manager configuration

  • Create modules/programs.nix for common system programs

  • Create modules/services.nix for system services

  • Create modules/system-tuning.nix with:

    • Kernel parameters (AMD Ryzen 7 5800X, RX 6700 XT, threaded IRQ)
    • Sysctl configuration (VM, network, filesystem, memory)
    • I/O scheduler configuration (NVMe, SATA SSD, HDD)
    • Module blacklisting
    • Journald configuration
    • Mount options (noatime, discard for SSDs)
    • Boot configuration (Limine integration)
    • CPU governor settings
    • Hardware-specific tuning (AMD GPU, USB power management)
  • Create modules/development.nix with:

    • Python tooling (uv, poetry, ruff, mypy, pytest)
    • Node.js/TypeScript (nodejs, npm, pnpm, yarn, TypeScript)
    • Version managers (mise)
    • Development utilities (git, gh, direnv, just)
    • LSP servers (Python, TypeScript, JavaScript)
    • Build tools (make, cmake, gcc, clang)
    • Database clients (PostgreSQL, MySQL, SQLite)
  • Create modules/docker.nix with:

    • Docker daemon service configuration
    • Docker Compose support
    • User group configuration for Docker access
  • Create modules/git.nix with:

    • System-wide git settings
    • SSH configuration
    • SSH agent integration
  • Create modules/1password.nix with:

    • 1Password CLI installation
    • 1Password SSH agent setup
    • SSH_AUTH_SOCK environment variable configuration
    • Systemd user service for 1Password agent
  • Create modules/pam.nix with:

    • PAM modules for system authentication
    • SSH PAM integration
    • 1Password PAM module (if applicable)
  • Create modules/theming.nix with:

    • Tokyo Night color palette definitions
    • GTK theming (GTK3/GTK4, icons, cursor)
    • QT theming (qt5ct/qt6ct configuration)
    • Application theming (VS Code, terminals, Fuzzel)
    • LS_COLORS configuration (vivid tokyonight-night)
    • Console colors (Tokyo Night)

Home Manager Configuration

  • Create home-manager/default.nix with:

    • Base shell configuration (zsh with antidote)
    • Ghostty terminal configuration
    • Editor configuration (VSCode/Cursor)
    • Font configuration (Inter Nerd Font, JetBrains Mono Nerd Font)
  • Create home-manager/sway.nix with:

    • Full Sway configuration file (from dotfiles)
    • Keybindings (Mod1/Alt key, workspaces, layouts)
    • Waybar integration
    • Screenshot tools configuration
    • Clipboard management
    • Autotiling-rs setup
    • Swayidle/swaylock configuration
    • Display configuration (DP-3, 4K@144Hz, scaling)
  • Create home-manager/waybar.nix with:

    • Waybar configuration (topbar/bottombar)
    • Custom scripts (weather, mail, poweroff, etc.)
    • Tokyo Night styling
  • Create home-manager/programs.nix with:

    • Fuzzel launcher configuration
    • SwayNC notification center
    • Thunar file manager
    • ReGreet greeter
    • Additional tools (playerctl, wl-color-picker, emote, nm-applet)
  • Create home-manager/shell.nix with:

    • Enhanced zsh configuration
    • Custom functions directory setup
    • Keybindings (Ctrl+arrows, Ctrl+UP/DOWN, Ctrl+R for hstr)
    • Shell aliases (git, docker, development utilities)
    • Shell functions (project finders, environment helpers)
    • hstr integration for history search
    • History configuration (large size, XDG-aware location)
    • XDG compliance for shell configs
  • Create home-manager/git.nix with:

    • Git user configuration (name, email)
    • Git aliases
    • GPG signing configuration (if used)
    • SSH signing keys
    • XDG-aware git config location
  • Create home-manager/xdg.nix with:

    • XDG Base Directory environment variables
    • Application-specific XDG paths:
      • Rust (CARGO_HOME, RUSTUP_HOME)
      • Go (GOMODCACHE)
      • Python (PYTHON_EGG_CACHE, WORKON_HOME, MYPY_CACHE_DIR)
      • Node.js (PNPM_HOME)
      • Java (_JAVA_OPTIONS, ANDROID_SDK_HOME)
      • Docker (DOCKER_CONFIG)
      • Wine (WINEPREFIX)
      • Other tools

User Configuration

  • Create users/kaizen.nix with:
    • User settings and home directory setup
    • SSH agent configuration (1Password integration)
    • Environment variables
    • Groups (docker, audio, etc.)

Testing Infrastructure

  • Create scripts/test-container.sh for:

    • NixOS container creation
    • Configuration mounting
    • Network isolation
    • Optional Wayland forwarding
  • Create scripts/test-vm.sh for:

    • QEMU VM creation using flake
    • Configurable resources (CPU, memory)
    • Graphical display forwarding
    • Optional USB passthrough
  • Create scripts/build.sh for:

    • Flake syntax validation
    • Configuration building
    • Optional test running
    • Error checking

Additional Tasks

  • Set up development shell (devShell in flake)
  • Configure audio module (PipeWire, low-latency settings)
  • Set up fonts module (Nerd Fonts installation)
  • Create hardware-specific modules if needed
  • Test all configurations in VM/container
  • Document any NixOS-specific adaptations from Arch setup
  • Create helper scripts for common operations
  • Set up XDG compliance checker script

Notes

  • All configurations should follow XDG Base Directory specification
  • Tokyo Night theme should be applied consistently across all applications
  • Shell configuration should emulate current zsh setup in Nix-style
  • Development tools should use Nix-native solutions where possible (mise may work, but consider devShells)
  • Testing should be done in containers/VMs before full migration