Rename xmonad/ to jade/ and restructure as a complete desktop environment with hybrid NixOS and home-manager modules. This establishes jade as a self-contained, gruvbox-themed DE that can eventually be extracted as a flake. Changes: - Create jade/ with NixOS module (WM, system packages, GTK theme) - Create jade/home.nix for home-manager services (wezterm, picom, dunst) - Move dmenu with gruvbox patches into jade/dmenu/ - Convert wezterm to pure Lua config with gruvbox-material colors - Move xinitrc into jade/ directory - Remove feh/scrot from global env (now in jade) - Remove dmenu overlay from global overlays - Simplify home-manager desktop features to just user apps This follows the pattern of real DEs (GNOME, KDE) where system and user configs are split across NixOS and home-manager modules.
75 lines
1.6 KiB
Nix
75 lines
1.6 KiB
Nix
{
|
|
pkgs,
|
|
config,
|
|
...
|
|
}: {
|
|
imports = [
|
|
./direnv.nix
|
|
./starship.nix
|
|
];
|
|
|
|
home.packages = with pkgs; [
|
|
fzf # command-line fuzzy finder
|
|
];
|
|
|
|
programs.zsh = {
|
|
enable = true;
|
|
|
|
# Enable extra features
|
|
autosuggestion = {
|
|
enable = true;
|
|
};
|
|
syntaxHighlighting = {
|
|
enable = true;
|
|
};
|
|
enableCompletion = true;
|
|
|
|
# Configuration directory
|
|
dotDir = "${config.xdg.configHome}/zsh";
|
|
|
|
shellAliases = {
|
|
# Single letter aliases
|
|
c = "clear";
|
|
v = "nvim";
|
|
|
|
# Double letter aliases
|
|
la = "ls -a";
|
|
ll = "ls -l";
|
|
};
|
|
|
|
# Install plugins
|
|
plugins = [
|
|
{ # vi(vim) mode for ZSH
|
|
name = "zsh-vi-mode";
|
|
src = "${pkgs.zsh-vi-mode}/share/zsh-vi-mode";
|
|
}
|
|
|
|
{ # replace zsh's completion with fzf
|
|
name = "fzf-tab";
|
|
src = "${pkgs.zsh-fzf-tab}/share/fzf-tab";
|
|
}
|
|
];
|
|
|
|
# Extra commands that should be added to '.zshrc'
|
|
initContent = /* sh */ ''
|
|
bindkey "^[[1;5C" forward-word
|
|
bindkey "^[[1;5D" backward-word
|
|
export PATH
|
|
|
|
# Auto-set wezterm tab title based on directory
|
|
chpwd() {
|
|
if [[ -d .git ]]; then
|
|
# Use git repo name
|
|
local repo=$(basename $(git rev-parse --show-toplevel 2>/dev/null))
|
|
wezterm cli set-tab-title "$repo" 2>/dev/null
|
|
elif [[ $(pwd) =~ "/home/sajenim/.repositories/personal/([^/]+)" ]]; then
|
|
# Use directory name for project dirs
|
|
wezterm cli set-tab-title "''${match[1]}" 2>/dev/null
|
|
fi
|
|
}
|
|
|
|
# Run once on shell startup
|
|
chpwd
|
|
'';
|
|
};
|
|
}
|