Skip to content

Repository files navigation

dotfiles

License: MIT

My dotfiles for Linux and macOS, managed by mise and compliant with the XDG Base Directory spec. One command takes a fresh machine to a working environment.

An opinionated bootstrap.

Features

Category Source Config
Terminal Alacritty alacritty.toml
Shell Fish config.fish
Plugin Manager Fisher fish_plugins
Prompt Pure fish_plugins
Multiplexer Herdr config.toml
Editor Neovim/LazyVim nvim
Tool Manager mise mise.toml
Version Control Git config
Search ripgrep ripgreprc
Fuzzy Finder Television ---

and some other stuff worth mentioning:

Installation

Prerequisites

git and curl. install.sh acquires mise, and mise installs everything else (even system packages via pacman on Arch and brew on macOS).

Steps

git clone https://github.com/nettlesh/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install.sh

On first run you will be prompted for a git email and name. To skip the prompt, set them beforehand:

GIT_EMAIL=you@example.com GIT_NAME="Your Name" ./install.sh

Either way they are written to mise.local.toml, which is gitignored and never leaves your machine.

Arguments are forwarded to mise bootstrap, so ./install.sh --dry-run previews the run and ./install.sh --only dotfiles restricts it.

mise refuses to replace config files it does not manage, so on a machine that already has an Alacritty or Fish config (like CachyOS) the run stops and names them. Confirm the list is what you expect, then re-run with ./install.sh --force-dotfiles.

What this does

  • Installs mise to ~/.local/bin/mise
  • Marks this repo as trusted, so mise will read its config without prompting
  • Installs system packages, then the tools in mise/config.toml
  • Symlinks configs into ~/.config, replacing existing Alacritty and Fish configs when --force-dotfiles is passed
  • Sets Fish as the login shell

Notes

Changing git config by hand

~/.config/git/config is rendered from a template rather than symlinked, because the git identity is injected from machine-local values. So git config --global ... writes to the rendered file and is overwritten on the next apply. To keep such a change, capture it back into the repo:

mise bootstrap dotfiles add ~/.config/git/config

Every other config in this repo is symlinked and stays live-editable.

About

Alacritty + Fish + Herdr + Neovim

Topics

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages