Personal config files for a cross-platform (macOS/Linux) dev environment.
Clone to any path, then run the installer from the repo root:
git clone https://github.com/cameronbarker/dotfiles.git ~/Dotfiles
cd ~/Dotfiles && ./install.shOn Linux, ./install.sh installs Neovim from the official AppImage by default: it extracts to /opt/nvim (binaries under /opt/nvim/usr/bin/nvim) and prepends /opt/nvim/usr/bin to your PATH in ~/.bashrc. Extraction avoids FUSE, which many LXC / Proxmox / Jellyfin hosts lack. The apt neovim package is not installed unless you pass --no-nvim-appimage. On macOS, the AppImage step is skipped (install Neovim with Homebrew, etc.).
This symlinks starship.toml and .vimrc (as Neovim init.vim) into ~/.config, and appends a guarded source line to ~/.bashrc. Re-running is safe (skips duplicate shell hooks).
On Debian/Ubuntu, the script runs apt-get update and installs: bat, fzf, ripgrep, xclip, wl-clipboard, git, curl, and neovim only if --no-nvim-appimage. With --git it also installs libsecret-tools and libsecret-1-dev for the Git credential helper in .gitconfig. If you are root (e.g. Proxmox host, minimal server), it uses apt-get directly; otherwise it uses sudo. The apt fzf package is often too old for fzf --bash; .terminal skips that safely. For fuzzy history and Ctrl-T file search, install fzf from git (below) so ~/.fzf.bash exists.
The script also downloads vim-plug into ~/.local/share/nvim/site/autoload/plug.vim if missing. Run nvim +PlugInstall +qall once to fetch plugins.
./install.sh --zsh— append the hook to~/.zshrcinstead of~/.bashrc../install.sh --git— also symlink.gitconfiginto~(off by default so an existing config is not overwritten)../install.sh --no-apt— skip apt (macOS, containers without sudo, or you manage packages yourself)../install.sh --no-nvim-appimage— on Debian/Ubuntu, installneovimfrom apt instead of the extracted AppImage under/opt/nvim(ignored on non-Linux)../install.sh --nvim-appimage— no-op (AppImage is already the default); kept for compatibility.
Install Starship with its install script — not from apt (see below).
From the repo root, uninstall.sh removes what install.sh added (only symlinks that still point at this clone):
cd ~/Dotfiles && ./uninstall.sh --git --nvim-appimage --vim-plug --plugged--git— also remove~/.gitconfigif it symlinks this repo’s.gitconfig.--nvim-appimage— remove/opt/nvim(extracted tree or old single-file install; needs root orsudo).--vim-plug— remove~/.local/share/nvim/site/autoload/plug.vim.--plugged— delete~/.vim/plugged(all vim-plug clones).
Shell blocks are removed from both ~/.bashrc and ~/.zshrc when present. Apt packages are not removed.
| File | Description |
|---|---|
.gitconfig |
Git config — aliases, delta pager, credential helper |
.vimrc |
Neovim config with vim-plug |
.terminal |
Bash/Zsh aliases and shell functions (sourced from ~/.bashrc or ~/.zshrc) |
starship.toml |
Starship prompt config |
vscode.jsonc |
VSCode settings.json |
install.sh |
Symlinks, shell hook, apt on Debian; Neovim via extracted AppImage on Linux by default |
uninstall.sh |
Reverse symlinks + rc markers; optional AppImage / vim-plug / plugged |
-
Install dependencies:
# Starship prompt curl -sS https://starship.rs/install.sh | sh # fzf (fuzzy finder) git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf && ~/.fzf/install # z (directory jumping) git clone https://github.com/rupa/z.git ~/.z-plugin # bat (cat with syntax highlighting) — Debian/Ubuntu sudo apt install bat
-
Prefer
./install.sh(or./install.sh --zsh) for sourcing and symlinks; or add by hand:echo 'source /path/to/repo/.terminal' >> ~/.bashrc mkdir -p ~/.config && ln -s /path/to/repo/starship.toml ~/.config/starship.toml
-
Use
./install.sh --gitafter clone, or copy:cp .gitconfig ~/.gitconfig -
Install credential helper (Linux):
sudo apt install libsecret-tools libsecret-1-dev
-
Update
[user]name and email in the file.
-
Install Neovim:
# macOS brew install neovim # Linux — latest AppImage without FUSE (LXC-friendly): extract, then PATH to usr/bin curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage chmod u+x nvim-linux-x86_64.appimage ./nvim-linux-x86_64.appimage --appimage-extract sudo rm -rf /opt/nvim && sudo mv squashfs-root /opt/nvim echo 'export PATH="/opt/nvim/usr/bin:$PATH"' >> ~/.bashrc # On arm64: use nvim-linux-arm64.appimage instead. # Default ./install.sh on Linux does this AppImage extract for you. # Ubuntu / Debian — older build from apt (fine for the bundled plugin set) sudo apt install neovim
-
vim-plug:
./install.shdownloadsplug.vimif it is missing. By hand:sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
-
./install.shsymlinks~/.config/nvim/init.vim; or:mkdir -p ~/.config/nvim ln -s /path/to/repo/.vimrc ~/.config/nvim/init.vim
-
Run
nvim +PlugInstall +qallonce (needsgitand network). Telescope, nvim-treesitter, LSP, gitsigns, and lualine expect Neovim 0.10+ — the default Linux install uses the AppImage; use--no-nvim-appimageonly if you accept the older distroneovim. Install language parsers with:TSInstall <lang>(or:TSInstall all) inside Neovim.
Paths differ by install (e.g. ~/.config/Code/User/settings.json on Linux). Copy or merge vscode.jsonc into your editor’s settings.json.
Required extensions: One Dark Pro, Prettier, Ruby LSP, Rails.