These dotfiles were originally based on Armin Ronacher's dotfiles where the many ideas were copied shamelessly. Files are symbolically linked from the git checkout into the home directory which makes it easy to test out configuration.
|
|
- Tokyo Night color scheme for Neovim, Tmux, and Bash prompt.
- Bash prompt with git, Python virtualenv, and Nix shell integration.
- Bash completion with custom completions for various tools.
- Neovim configuration with LSP support, Treesitter, and many useful plugins.
- Linux
amd64/x86_64arm64/aarch64
- macOS (Darwin)
arm64/aarch64(Apple silicon)
Some packages and tools need to be installed for these dotfiles to work.
- Basic command-line tools are required:
make,grep, anawkimplementation,getopt, andmktemp. On many Linux distributions these are provided by packages such asmake,grep,gawk/mawk,util-linux, andcoreutils, respectively. zlib1g-dev,libssl-dev,libsqlite3-dev, andlibzma-devare needed for installing Python.libffi-devandlibyaml-devare needed for installing Ruby.
- GNU tools: versions of
make,grep,awk,getopt, andmktempare required. libyaml: An installation oflibyamlis also required to install Ruby.xz:libzmashould be installed for Python.
On macOS you can install the required packages with Homebrew.
brew install \
make \
gawk \
gnu-getopt \
grep \
coreutils \
bash-completion@2 \
libyaml \
xzDotfiles are installed using a simple Makefile in the root directory.
$ make
dotfiles Makefile
Usage: make [COMMAND]
help Print all Makefile targets (this message).
Installation
all Run all tests, install and configure everything.
install Install and configure everything.
Testing
test Run all tests.
unit-test Run unit tests.
e2e-test Run end-to-end tests.
bats-unit Run Bats unit tests.
Formatting
format Format all files
json-format Format JSON files.
license-headers Update license headers.
lua-format Format Lua files.
md-format Format Markdown files.
shfmt Format bash files.
yaml-format Format YAML files.
Linting
lint Run all linters.
actionlint Runs the actionlint linter.
checkmake Runs the checkmake linter.
commitlint Run commitlint linter.
fixme Check for outstanding FIXMEs.
format-check Check that files are properly formatted.
markdownlint Runs the markdownlint linter.
renovate-config-validator Validate Renovate configuration.
selene Runs the selene (Lua) linter.
shellcheck Runs the shellcheck linter.
textlint Runs the textlint linter.
yamllint Runs the yamllint linter.
zizmor Runs the zizmor linter.
Base Tools
install-bin Install binary scripts.
configure-aqua Configure aqua.
configure-bash Configure bash.
configure-bat Configure bat.
configure-crontab Configure crontab.
configure-efm-langserver Configure efm-langserver.
configure-git Configure git.
configure-ghostty Configure Ghostty.
configure-nix Configure nix.
configure-node Configure Node.js and npm.
configure-nvim Configure neovim.
configure-tmux Configure tmux.
Install Tools
install-slsa-verifier Install slsa-verifier
install-aqua Install aqua and aqua-managed CLI tools
Language Runtimes
install-go Install the Go runtime.
install-node Install the Node.js environment.
install-python Install the Python environment.
install-ruby Install the Ruby environment.
Maintenance
todos Print outstanding TODOs.
clean Delete temporary files.Run make all to install tools and configuration files.
It is necessary to distinguish between tools like linters and formatters used
for linting and formatting files in the dotfiles project directory, and those
installed globally for general use.
Project-local tools are used to maintain the files in this repository. They are
installed and run in the project directory via the make lint, make format,
and make license-header commands.
Tools like language runtimes, linters, and formatters installed for global use
are installed by make install-all. They can also be individually installed by
their appropriate install-<tool> command, such as make install-go or
make install-aqua.
Tools are installed using several methods and are installed in several locations.
- Tools installed via Python are installed in a Python virtual environment
managed by
pyenv. This virtual environment is activated automatically bybashrc. - Tools written in JavaScript/TypeScript are installed globally by
npminto the globalnode_modules. - Pre-compiled binary tools are installed via
Aquato the~/.local/share/aquaproj-aquadirectory. The~/.local/share/aquaproj-aqua/bindirectory is added to the$PATH.
Language runtimes are installed using different methods. Their binaries are
added to the $PATH.
The Go runtime is installed in the ~/opt/go directory. This is a symbolic link
to the installed Go runtime version. The ~/opt/go/bin directory is added to
the $PATH.
The default GOBIN directory of ~/opt/go/bin is used for installing Go
packages. This directory is added to the $PATH.
The Node.js runtime versions are installed and managed by
nodenv in the ~/.local/share/nodenv
directory.
The Python runtime is installed and managed by
pyenv in the ~/.local/share/pyenv
directory.
The Ruby runtime is installed and managed by
rbenv in the ~/.local/share/rbenv
directory.
.bashrc and .bash_profile scripts are included in the bash
directory. Various scripts for different purposes are broken into separate
files, such as .bash_aliases and .bash_completion.
Neovim configuration is contained in the nvim directory.
Tmux configuration is contained in the tmux directory.
The scripts here should work on most Linux systems. I have tested them mostly on Debian-based systems. However, only partial support is provided for NixOS.
These dotfiles have support for macOS (Darwin) on Apple silicon (ARM64). However, it still has not been tested so some features may still not work.

