Skip to content

Madjakul/dotfiles

Repository files navigation

Dotfiles

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.

Quick Install

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.sh

Verify installation:

bash scripts/dry-run.sh

Manual Installation

Install prerequisites: git, brew, stow, Oh My Zsh.

Remove any existing symlinks, then stow each module:

stow kitty ohmyposh nvim tmux rofi zsh

What's Included

Gruvbox 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.

Requires: TPM, Tmuxifier

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

Scripts

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

Package Source Strategy

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

SLURM Server Setup

On a new compute server, run:

bash scripts/setup-slurm.sh

This installs Miniconda to your work directory, sets up HuggingFace/PyTorch/Ray cache dirs, and creates a cli environment with ipython, gpustat, and huggingface_hub.

Acknowledgements

Built on top of:

About

Dev environment files.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors