A modular, clean, and elegant personal dotfiles configuration tailored specifically for the Nord Dark color palette (dark polar night background, accented by frost blues and pastel auroras).
Designed for minimal setup time, high performance, and fault tolerance across various personal and professional Linux and macOS environments.
This configuration is optimized for a terminal emulator using a Dark Theme (specifically targeting the Nord Dark background color #2e3440 or standard dark terminal backgrounds).
- Shell Prompt (Starship): Customized with Snow Storm colors (
#d8dee9) and Frost/Aurora accents. - Tmux Status Line: Styled natively with dark gray borders, a clean blue active tab indicator (
#88c0d0), and status widgets. - Neovim: Explicitly configured with
background = "dark"and thenord.nvimcolorscheme, yielding a beautiful, low-strain dark interface. - fzf / bat: Styled using the Nord palette exports for interactive searches.
To render glyphs and icons correctly (such as the branch icon in Starship, status bar symbols in Tmux, and file tree icons in Neovim), you need to have a Nerd Font installed on your local machine (the client running your terminal emulator/SSH client), not on the remote server.
- JetBrainsMono Nerd Font (Clean, highly legible monospace)
- FiraCode Nerd Font (Popular coding ligatures)
brew install --cask font-jetbrains-mono-nerd-font
# OR
brew install --cask font-fira-code-nerd-fontDownload and unpack into your local fonts directory:
mkdir -p ~/.local/share/fonts
curl -fLo "JetBrainsMono.zip" https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip
unzip JetBrainsMono.zip -d ~/.local/share/fonts
fc-cache -fv
rm JetBrainsMono.zipImportant
After installation, open your local terminal settings (e.g. iTerm2, Terminal.app, Alacritty) and set the Font to JetBrainsMono Nerd Font or FiraCode Nerd Font.
The repository comes with a robust, interactive installation script (install.sh) powered by GNU Stow.
Select the installation method that fits your environment's constraints:
For standard environments with public internet access:
git clone https://github.com/rkwrd/dotfiles.git ~/dotfiles && cd ~/dotfiles && ./install.shFor minimal environments where git is missing:
curl -sSL https://github.com/rkwrd/dotfiles/archive/refs/heads/main.tar.gz | tar -xz && mv dotfiles-main ~/dotfiles && cd ~/dotfiles && ./install.shFor environments where the remote machine has restricted access or you want to deploy local changes instantly:
- For GCP Compute Engine VM:
gcloud compute scp --recurse ~/dotfiles dotfiles-test:~/dotfiles --zone=us-central1-a && gcloud compute ssh dotfiles-test --zone=us-central1-a --command="cd ~/dotfiles && ./install.sh"
- For Generic SSH Servers:
scp -r ~/dotfiles user@remote-host:~/dotfiles && ssh user@remote-host "cd ~/dotfiles && ./install.sh"
- System Diagnostics: On launch, the script analyzes and prints your distribution details, CPU cores, system RAM, network IP, and local package manager.
- Whiptail TUI & Fallback: Launches a graphical checklist menu if
whiptailordialogis available. If running in a minimal environment, it falls back to a clean, pure-Bash console selection menu. - Dependency Resolution: Automatically detects the package manager (
apt,pacman,dnf,yum,zypper, orbrew) and installs missing core dependencies (stow,git,curl,tmux, etc.). - Safe Backup: Before generating symlinks, it checks your home directory for conflicting configuration files and backs them up into
~/dotfiles_backup_<timestamp>to prevent data loss.
~/dotfiles/
├── install.sh # Interactive TUI bootstrap script
├── bash/
│ ├── .bashrc # Bash settings & prompt fallbacks
│ └── .bash_profile # Sources .bashrc for login shells
├── zsh/
│ ├── .zshrc # Highly optimized Zsh config with completions
│ └── .zprofile # Zsh login shell configuration
├── shared/
│ ├── .shell_aliases # Common CLI aliases & overrides
│ ├── .fzf_nord # Nord Dark styling palette for fzf
│ └── .ripgreprc # Sane defaults for ripgrep (ignore git, smart-case)
├── tmux/
│ └── .tmux.conf # Tmux configs, navigator splits, and Nord status line
└── config/
└── .config/
├── starship.toml # Starship prompt configuration (Nord Dark)
├── bat/
│ └── config # bat syntax highlighter defaults (Nord theme)
└── nvim/
├── init.lua # Neovim main entry & lazy.nvim setup
└── lua/
└── user/
├── options.lua # Background light & true-color options
├── keymaps.lua # Sane mappings & pane switches
└── plugins.lua # lazy.nvim specifications (LSP, cmp, etc.)
- Shared Aliases: Maps standard utilities to modern Rust/Go-based alternatives (
ls➔eza,cat➔bat,find➔fd,grep➔rg). - Zsh Performance: Stripped of heavy frameworks (like Oh My Zsh) to keep shell load times near-instant, sourcing plugins (
zsh-autosuggestions,zsh-syntax-highlighting) directly from system folders. - Starship Prompt: Shows current directory, Git status, runtime durations, and runtime versions with clean, high-contrast indicators.
- Key Rebindings: Rebinds the prefix key to
Ctrl-aand splits windows horizontally with|and vertically with-(preserving the current directory). - Navigation: Uses
christoomey/vim-tmux-navigatorto enable seamless pane switching between tmux splits and Neovim windows using standardCtrl+h/j/k/lbindings. - Session Management: Auto-saves and restores active tmux sessions using
tmux-resurrectandtmux-continuum.
A lightweight, modern Lua configuration that rivals pre-packaged distributions while remaining easy to inspect and customize.
- Plugin Manager:
lazy.nvimhandles asynchronous lazy-loading. - LSP Config: Leverages
mason.nvimandnvim-lspconfigfor self-updating language servers and direct keymaps. - Completion:
nvim-cmpandLuaSnipprovide quick dropdown popups. - Navigation & Searches:
telescope.nvimacts as the fuzzy finder for files, text grep, and buffers. - Filesystem Management:
oil.nvimenables editing files and folders as text lines directly inside a Vim buffer (rename/delete by modifying text).
bat: Custom syntax-highlighting for code viewing.fzf: Styled to match the dark theme background, with full file preview support powered bybat.ripgrep: Configured to search hidden files by default but ignore version control directories and respect your local.gitignore.