Skip to content

Latest commit

 

History

1,247 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

Site

Configuration for the machines of @ShortArrow, applied the same way on Windows, Linux and macOS. dotfm.toml declares every tool: where its files sit in this repository and where each operating system expects them.

Setting up a machine

dotfm reads dotfm.toml and links the tools enabled on this machine. The selection is per machine, kept in ~/.config/dotfm/config.toml, so a work laptop and a home desktop share one registry and enable different rows of it.

ghq get ShortArrow/dotfiles     # or git clone, anywhere
cd <checkout>
dotfm init                      # records this checkout as the root
dotfm add git pwsh starship     # enable what this machine needs
dotfm apply                     # links, then each tool's post-apply steps
dotfm status                    # every link, and whether it is in place

dotfm list prints every tool with its purpose; dotfm doctor runs the health checks tools declare.

Where dotfm is not installed yet, each tool carries setup.ps1 / setup.sh. They read the same dotfm.toml through lib/_lib.{ps1,sh} and link only their own tool, so a fresh machine can bootstrap git and pwsh before it has Rust:

./git/setup.sh
./pwsh/setup.ps1

A launcher run after dotfm apply, or the other way round, changes nothing: both recognise a link that is already correct.

How a tool is declared, the rules its scripts follow and how to add one are in docs/STRUCTURE.md. Each tool's readme is also a page on dotfiles.shortarrow.jp, mounted from where it sits; docs/SITE.md describes the build.

Docker quick test

git clone https://github.com/ShortArrow/dotfiles.git
cd dotfiles
docker compose up -d --build
docker compose exec nvim /bin/bash -c nvim

What's inside

Area Tools
Shells / prompt bash, pwsh, clink, starship
Terminals wezterm, alacritty, windows-terminal
Editors neovim (nvim/src/), vim, vscode, zed
Multiplexers / WM tmux, zellij, glazewm, hyprland
Git stack git, lazygit, neogit, delta
Tool manager mise (mise/src/config.toml) — node, python, go, java, rust-cli, aqua
File / nav yazi, fzf, zoxide, lsd, fd, ripgrep
Misc claude (CLAUDE.md + statusline), runex, ssh, keyd

Each top-level directory contains the actual config files plus optional setup.{ps1,sh} and doctor.ps1. The full mapping (which file goes where on which OS) lives in dotfm.toml.

Installing the tools

dotfm links configuration; it does not install anything. Installation is split in two, and the halves are not symmetric. mise (mise/src/config.toml) is authoritative: the machine matches the file. winget (winget/*.txt) is a list to reinstall from on a fresh Windows box, and describes nothing about this one — winget import adds and never removes. See Package installation layers.

On Windows the PATH itself is declared, in windows/PATH.txt and windows/SYSTEM_PATH.txt, and applied with windows/ApplyPath.ps1. It has a budget — see The PATH budget before adding tools. windows/doctor.ps1 reports the current state.

Branch strategy

main only. Topic branches are optional; merge back to main.

License

See LICENSE.

About

dotfiles of shortarrow

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages