Gruvbox Material-themed development environment for NLP research. Built around Neovim + Tmux + ZSH on Ubuntu and macOS, with first-class support for SSHFS-mounted projects on SLURM compute servers.
Ubuntu:
bash <(curl -fsSL https://raw.githubusercontent.com/Madjakul/dotfiles/main/install.ubuntu.sh)macOS:
bash <(curl -fsSL https://raw.githubusercontent.com/Madjakul/dotfiles/main/install.macos.sh)Clean wipe first (removes all configs and caches):
bash scripts/wipe.shVerify installation:
bash scripts/dry-run.shInstall prerequisites: git, brew, stow, Oh My Zsh.
Remove any existing symlinks, then stow each module:
stow kitty ohmyposh nvim tmux rofi zshGruvbox Material-themed terminal emulator with RobotoMono Nerd Font (including proper italic support for code comments) and a powerline-style tab bar.
Config: .config/kitty/
Gruvbox Material-colored prompt with Git status, Python/Conda environment detection, Rust version, and execution time for long commands.
Config: .config/ohmyposh/
Rofi (Linux only)
Gruvbox-themed application launcher and window switcher. Toggle with Ctrl+Alt+R.
Config: .config/rofi/
True-color Gruvbox-themed tmux with vim-tmux-navigator, session persistence (resurrect + continuum), and tmuxifier layouts for SSHFS project sessions.
Config: .tmux.conf
Full IDE experience optimized for Python/ML research over SSHFS.
Key features:
- Theme: sainnhe/gruvbox-material with "material" (pale) foreground — no manual palette hacks needed
- AI: Claude via Avante for chat/edit (Leaderaa), Copilot for inline completions
- Formatting: Ruff replaces Black + isort + docformatter (10-100x faster, Black-compatible style)
- Linting: Ruff LSP for Python (replaces flake8/pylint)
- SSHFS performance: filesystem watchers disabled, aggressive ignore patterns for
checkpoints/,wandb/,logs/,__pycache__/, model files (.pt,.ckpt,.safetensors), large-file guard on treesitter - LSPs: Pyright (type checking) + Ruff (linting/formatting) + clangd + rust-analyzer + bashls + yamlls + jsonls + lua_ls + dockerls
- Treesitter: trimmed to actually-used languages (Python, Lua, Bash, C/C++, Rust, YAML, Markdown, Docker, Git); others auto-install on demand
Keybindings:
| Key | Action |
|---|---|
| Leaderaa | Toggle Avante AI chat |
| Leaderae | Edit selection with AI |
| Leadermp | Format file/selection |
| Leadercpd / e | Disable/Enable Copilot |
| Leaderbt | Toggle breakpoint |
| Leaderbc | Continue debugging |
| Tab | Accept completion |
Requires: Node.js, Rust, LazyGit, Copilot subscription (optional), ANTHROPIC_API_KEY for Claude
Config: .config/nvim/
Zinit-managed plugins (syntax highlighting, autosuggestions, fzf-tab) with conda-first workflow. Includes helpers for SSHFS mounting, GPU monitoring (gpustat, nvidia-smi), and SLURM job management (sq, sgpu, sacct-me).
Requires: fzf, zoxide, Miniconda
Config: .zshrc
| Script | Description |
|---|---|
scripts/boot-cleanup.sh |
Purge old kernels from /boot (run before apt upgrade when it fills up) |
scripts/setup-slurm.sh |
Bootstrap a SLURM server with Miniconda, cache dirs, and CLI tools |
scripts/wipe.sh |
Clean wipe all configs, caches, and installations |
scripts/dry-run.sh |
Verify everything is installed correctly |
| Source | What | Why |
|---|---|---|
| apt | Build tools, sshfs, rofi, fonts, btop, ripgrep | System-level, stable |
| brew | Neovim, node, fzf, lazygit, tmux, oh-my-posh | Up-to-date versions |
| conda | Python envs, ML packages | Isolated environments |
| curl | Kitty, Rust, Oh My Zsh | Official install methods |
On a new compute server, run:
bash scripts/setup-slurm.shThis installs Miniconda to your work directory, sets up HuggingFace/PyTorch/Ray cache dirs, and creates a cli environment with ipython, gpustat, and huggingface_hub.
Built on top of:
- Josean's dotfiles
- Typecraft's dotfiles
- Dreams of Autonomy — ZSH and Oh My Posh tutorials