# 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 ### 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 is now configurable via `dot.sh.sourceProfile`: ```nix profileExtra = lib.mkIf cfg.sourceProfile '' source $HOME/.profile ''; ``` **Status**: Disabled by default. Only enabled for work host. **Action**: Verify `~/.profile` exists on hosts where `dot.sh.sourceProfile = true` is set. ## 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)?