Separated PipeWire audio configuration from bluetooth hardware settings for
better logical organization. Moved bluetooth config to hardware-configuration.nix
alongside kernel module workarounds (disable_ertm, iwlwifi power_save).
Also added documentation for permittedInsecurePackages in global config and
updated flake dependencies.
- Add direnv module with nix-direnv integration, replacing manual hook
- Disable starship's add_newline for more compact prompt
- Clean up comments across CLI features for better readability
Replace repository-level CLAUDE.md with personal global memory file that
establishes coding standards and working relationship preferences:
- Functional programming principles over OOP
- 100 character line width
- Explicit, simple, logical code with no assumptions or hacks
- FOSS principles and aesthetic appeal
- Industry standards (MISRA-C) and idiomatic code
- Senior/junior working relationship with confirmation before suggestions
- Visual clarity through whitespace and comments
The configuration is now properly integrated into home-manager to be
symlinked to ~/.claude/CLAUDE.md for persistent context across sessions.
Add comprehensive inline documentation to both NixOS and Home Manager
global configuration files, explaining the purpose of each section,
overlay usage, unfree package policy, and configuration settings.
Remove PageUp/PageDown pane rotation keybinds that don't align with wezterm workflow. The static pane layout approach (fixed splits + zoom toggle) doesn't benefit from rotation like dynamic window managers do.
Also update CLAUDE.md to clarify that Home Manager is a NixOS module, so just build/switch commands handle both system and user configurations together.
Replace manual GitHub fetchFromGitHub with packaged versions of zsh plugins and consolidate plugin loading through the plugins list instead of manual sourcing.
Implements spatial "master pane" focusing that mirrors XMonad's master
window concept. Alt+Delete now focuses the largest pane in the current
tab, completing the unified Delete key semantic across all tools:
- Gui+Delete (XMonad): Focus master window (largest in layout)
- Alt+Delete (WezTerm): Focus master pane (largest, ties to lowest index)
- Delete (Neovim): Center cursor view
The implementation is spatially-aware rather than content-aware,
maintaining the navigation layer's positional abstraction. When panes
are equal-sized, the lowest-indexed pane is chosen for predictability.
Implemented key tables to create clean, organized namespaces for tab and
pane management. This refactoring improves keybinding discoverability and
reduces cognitive load by grouping related operations.
Key changes:
- LEADER + t enters tab mode (n/q/r for new/quit/rename)
- LEADER + p enters pane mode (s/v/q/m for split/vsplit/quit/maximize)
- LEADER + Escape enters copy mode (vim-like pseudo-normal mode)
- CTRL + SHIFT + v for paste (standard terminal convention)
- Removed smart-splits plugin in favor of simpler native navigation
- Navigation keys remain at top level for quick access
Add sequential pane navigation and rotation to match XMonad's window
management pattern. This creates consistent muscle memory across both
the window manager and terminal multiplexer.
Changes:
- Add Alt+PageUp/PageDown for sequential pane focus (mirrors XMonad's window cycling)
- Add Alt+Ctrl+PageUp/PageDown for pane rotation (mirrors XMonad's rotAll)
- Change Leader+Tab to Leader+t for new tab (free up 't' was for zoom, now 'm')
- Change zoom from Leader+t to Leader+m (matches XMonad's maximize mnemonic)
Keybinding philosophy:
- Base keys (Alt+PageUp/Down) = navigation/viewing
- Ctrl modifier = structural control (resize/rotate)
- Consistent with XMonad: Mod+PageUp/Down (focus), Mod+Ctrl+PageUp/Down (rotate)
Replace dynamic pane management with explicit keybindings for better
discoverability. Add dmenu-based tab renaming and direct tab navigation
by index for improved workflow efficiency.
Move all allowUnfreePredicate declarations to global configs to prevent
the "last definition wins" merging issue. Unfree packages are now managed
in two central locations:
- NixOS system packages: nixos/common/global/default.nix
- Home Manager packages: home-manager/sajenim/global/default.nix
- Add CLAUDE.md with comprehensive repository documentation
- Configure claude-code package in editors feature
- Add MCP nixos integration for better Nix ecosystem support
- Include Claude settings with co-authored-by disabled
- Update unfree predicate for proprietary AI tools