Skip to content

BorjaIP/dotfiles

Repository files navigation

☄️ Dotfiles 🖥

Every line of config is simple—just what’s needed, nothing more. These dotfiles are minimal and essential, avoiding heavy plugins or bloated frameworks across all tools. It’s not about adding more, it’s about needing less.

terminal

vscode

base16-ocean

Features

Zsh Neovim Vim tmux Visual Studio Code

This config repo is designed for Arch Linux, macOS and Windows.

My Developer Environment

🧠 Toolset 🔧 Config / Plugins / Tools
📝 Neovim - Plugin Manager: Lazy.nvim
- Colorscheme: Base16
- LSP: Built-in LSP
- LSP Manager: Mason
- Formatter: conform.nvim
- Statusline: Lualine
- Fuzzy Finder: Telescope
- Syntax Highlighting: Treesitter
🐚 ZSH - Prompt: Pure
- fzf
🖥 Terminal - bat – better cat
- eza – better ls
- tldr – simplified man pages
- zoxide – smarter cd

Example command:

fzf --preview 'bat --style=numbers --color=always {}'

Installation

Important

Compatible with Arch Linux, macOS and Windows

This command will install software and apply all the configurations in ~/.local/share/chezmoi.

Linux / macOS

sh -c "$(curl -fsLS get.chezmoi.io)" -- -b "$HOME/.local/bin" init --apply BorjaIP

Windows (PowerShell)

iex "&{$(irm get.chezmoi.io/ps1)} init --apply BorjaIP"

XDG Base Directory

All configuration follows the XDG Base Directory Specification, keeping $HOME clean.

Directory Path Purpose
XDG_CONFIG_HOME ~/.config Configuration files
XDG_DATA_HOME ~/.local/share Persistent data
XDG_STATE_HOME ~/.local/state Shell history, logs
XDG_CACHE_HOME ~/.cache Non-essential cached data

~/.local/bin is in PATH and is the standard location for user-installed binaries.

Environment variables are declared in .zshenv and organised by purpose:

Zsh file When it runs What goes here
.zshenv Always (every shell) XDG vars, tool env vars (KUBECONFIG, GOPATH…)
.zprofile Login shells only PATH, Homebrew setup
.zshrc Interactive shells Aliases, plugins, prompt, HISTFILE

macOS — Homebrew paths

On Apple Silicon, Homebrew installs everything under /opt/homebrew. Key paths:

Path Content
/opt/homebrew/bin CLI binaries (git, nvim, fzf…)
/opt/homebrew/lib Libraries
/opt/homebrew/Cellar Versioned formula installations
/opt/homebrew/Caskroom GUI apps installed via brew install --cask
/opt/homebrew/share Shared data (zsh plugins, man pages…)
~/.local/bin User binaries — custom scripts and non-Homebrew tools

On Intel Macs, the prefix is /usr/local instead of /opt/homebrew.

Packages are managed via a Brewfile at ~/.config/brew/Brewfile. To update it after installing something new:

bupdate   # alias for: brew bundle dump --no-vscode -f

Manage

I use chezmoi for managing my dotfiles. Follow these instructions for add or changing any configuration.

I followed the instructions from XDG_Base_Directory for clean my dotfiles and manage config directories.

Basic usage

# edit source file
chezmoi edit .config/zsh/.zshrc

# apply changes to your original file
chezmoi -v apply

# see diferences between tracker and local
chezmoi diff

# update new files
chezmoi git -- add .
chezmoi git -- commit -m "Update zsh config"
chezmoi git -- push

Credits