Files
dot/nix/TODO.md
2026-02-07 13:54:58 +01:00

5.2 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

Unified Structure Benefits

  1. Multi-platform support: Added support for Darwin (macOS) and NixOS (WSL and native).
  2. Modular Home Manager: Reusable modules shared across all platforms.
  3. Machine-specific configurations: Separated into hosts/ for better organization.
  4. Flexible deployment: Support for both NixOS modules and standalone Home Manager.

Migration Path

This configuration is designed to be the central point for all machines:

  1. Clone to ~/dev/dot/newnix (or preferred path).
  2. Identify your host type (NixOS WSL, Darwin, etc.).
  3. Apply the corresponding flake output as described in README.md.
  4. Test and verify workflows.

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)?