Files
dot/TODO.md
2026-02-06 20:51:39 +01:00

5.1 KiB

TODO - NixOS Configuration

This file tracks remaining tasks and known issues for the NixOS configuration.

High Priority

Hardware Configuration

  • Replace hardware-configuration.nix with actual generated configuration
    • Run sudo nixos-generate-config --show-hardware-config > hardware-configuration.nix
    • Verify file systems are correctly configured
    • Verify boot partition is correct
    • Adjust CPU microcode (Intel vs AMD)

System Settings

  • Set correct hostname in configuration.nix
  • Verify timezone setting (currently: Europe/Berlin)
  • Verify locale settings (currently: en_US.UTF-8 / de_DE.UTF-8)
  • Choose boot loader (systemd-boot vs GRUB)

Medium Priority

Custom Packages

The following packages need to be integrated or replaced:

  • claude-code

    • Check if available in nixpkgs
    • If custom: create derivation in packages/claude-code.nix
    • Or use alternative package manager (npm, pip, cargo)
  • opencode

    • Check if available in nixpkgs
    • If custom: create derivation in packages/opencode.nix
    • Or use alternative package manager
  • gemini-cli

    • Check if available in nixpkgs
    • If custom: create derivation in packages/gemini-cli.nix
    • Or use alternative package manager

Tmux Configuration

  • Update note popup keybindings (C-n, C-p) with correct NixOS paths

    • Current: Commented out (had WSL hard-coded paths)
    • Action: Decide on note location and update paths
    • Example: ~/Documents/notes/Work/quick_notes.md
  • Verify ~/bin/tmuxp_selector.sh script exists

    • Used by C-s keybinding
    • May need to be created or path adjusted

Low Priority

Shell Configuration

  • Consider adding additional shell aliases
  • Review if any macOS-specific tools need Linux alternatives
  • Consider adding dircolors configuration

Documentation

  • Add screenshots of tmux setup
  • Document custom Neovim configuration (lua files)
  • Create troubleshooting guide for common issues

Optimizations

  • Consider using programs.zsh.shellInit vs initContent
  • Review if nix-ld is actually needed (check use cases)
  • Consider splitting large modules into smaller files

Features Not Yet Ported

These were not in the original Home Manager config but might be useful on NixOS:

  • Desktop environment / Window manager
  • Display manager (GDM, SDDM, LightDM)
  • Sound configuration (PipeWire/PulseAudio)
  • Printing support
  • Bluetooth support
  • Docker / Podman
  • Virtualization (QEMU/KVM)

Known Issues

Nvim Configuration Files

The nvim configuration references lua files from the parent directory:

initLua = builtins.concatStringsSep "\n" [
  (lib.strings.fileContents ../../../nvim/base.lua)
  (lib.strings.fileContents ../../../nvim/keymaps.lua)
  (lib.strings.fileContents ../../../nvim/plugins.lua)
  (lib.strings.fileContents ../../../nvim/filetype.lua)
];

Status: Should work if nvim/ directory exists at /home/pan/dev/config/dot/nvim/

Action: Verify these files exist or adjust paths

Profile Loading

The shell configuration includes:

profileExtra = ''
  source $HOME/.profile
'';

Status: Will fail silently if ~/.profile doesn't exist

Action: Either create ~/.profile or remove this line if not needed

Testing Checklist

Before considering this configuration complete:

  • System boots successfully
  • User can login as pan
  • Zsh loads with Prezto
  • Tmux starts without errors
  • Neovim opens and plugins load
  • LSP servers work in Neovim
  • Git commands work with correct identity
  • Lazygit opens and works
  • Jujutsu commands work
  • Taskwarrior shows tasks
  • Direnv loads .envrc files
  • fzf keybindings work (Ctrl+R)
  • zoxide navigation works
  • All shell aliases work

Future Enhancements

  • Add backup/restore scripts
  • Create CI/CD for testing configuration
  • Add secrets management (agenix or sops-nix)
  • Consider using flake-parts for better organization
  • Add system monitoring tools
  • Configure automatic updates
  • Add custom shell functions
  • Integrate with cloud sync for dotfiles

Notes

Differences from Ubuntu Setup

  1. No macOS support: All Darwin-specific code removed
  2. No WSL support: WSL-specific paths and checks removed
  3. System-level user: User defined in NixOS config, not standalone
  4. Integrated Home Manager: HM runs as NixOS module, not standalone

Migration Path

If migrating from existing Ubuntu setup:

  1. Backup current configuration
  2. Install NixOS (keep Ubuntu if dual-boot)
  3. Apply this configuration
  4. Test all workflows
  5. Import personal data (tasks, notes, etc.)
  6. Verify custom packages availability

Questions to Resolve

  • What are the custom packages used for?
  • Are there any private/work-specific configurations to add?
  • Should we add any of the "Features Not Yet Ported"?
  • Is GPU acceleration needed (NVIDIA, AMD)?
  • Are there any cron jobs or systemd timers to configure?
  • Should we enable fish or keep only zsh?
  • Do we need any container tools (Docker, Podman)?