Skip to content

halkn/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,140 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfile

This is my dotfiles.

Setup

Do the platform-specific prerequisites first, then run the common bootstrap.

Platform prerequisites

WSL Ubuntu

Install the required apt packages. zsh is the login shell, and bubblewrap and socat are sandbox prerequisites for Claude Code.

sudo apt update
sudo apt install -y git curl zsh tmux bubblewrap socat unzip
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
az extension add --name azure-devops

Make zsh the default shell. apt registers it in /etc/shells, so chsh accepts it directly. This only rewrites the login shell entry (it does not read .zshrc), so order relative to the bootstrap does not matter; it takes effect on the next login.

chsh -s "$(command -v zsh)"

macOS

To be documented. macOS already ships zsh as the default shell, so only the apt-specific step above differs.

Bootstrap

Run these on any platform after the prerequisites above.

  1. Clone the dotfiles. The setup tasks and symlinks assume the repository lives at ~/.dotfiles.

    git clone https://github.com/halkn/dotfiles.git "$HOME/.dotfiles"
    cd "$HOME/.dotfiles"
  2. Run the setup task. mise run setup links every dotfile, installs all tools, and clones the zsh plugins.

    curl https://mise.run | sh
    export PATH="$HOME/.local/bin:$HOME/.local/share/mise/shims:$PATH"
    mise run setup

When the bootstrap finishes, reopen the terminal (or start a new login shell) to enter zsh with the linked config.

zsh keeps its config under .config/zsh (XDG); the only file in $HOME is a small .zshenv stub that sets ZDOTDIR and hands off to it. Put machine-local settings in .config/zsh/.zshenv.local (environment) or .config/zsh/.zshrc.local (interactive); both are gitignored.

Git identity

The git config ($XDG_CONFIG_HOME/git/config) includes a relative config.local sibling, which resolves under $XDG_CONFIG_HOME and is not tracked here. Set your name and email there per machine:

git config -f "${XDG_CONFIG_HOME:-$HOME/.config}/git/config.local" user.name "Your Name"
git config -f "${XDG_CONFIG_HOME:-$HOME/.config}/git/config.local" user.email "you@example.com"

Verify the effective identity (this reads the included config.local):

git config user.name && git config user.email

Tool Manager

Most CLI tools are managed by mise via .config/mise/config.toml, and mise run setup / mise run update keep them in sync. zsh plugins (zsh-autosuggestions, fast-syntax-highlighting) are managed as shallow git clones under $XDG_DATA_HOME/zsh/plugins.

Useful tasks:

mise tasks         # List tasks
mise run setup     # Link dotfiles, install mise tools, and clone zsh plugins
mise run update    # Update mise tools and zsh plugins
mise run fmt       # Format Markdown, zsh files, and Neovim Lua files
mise run fmt-check # Check formatting without writing files
mise run lint      # Run repository checks

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors