# 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: ```nix 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: ```nix 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)?