Skip to content

andrewthauer/dotfiles

Repository files navigation

Dotfiles

These are my dotfiles 🎉 ...

     _       _    __ _ _
  __| | ___ | |_ / _(_) | ___  ___
 / _` |/ _ \| __| |_| | |/ _ \/ __|
| (_| | (_) | |_|  _| | |  __/\__ \
 \__,_|\___/ \__|_| |_|_|\___||___/

license for hackers awesome

Features

  • extremely fast startup! with lazy loading for expensive operations.
  • limited dependencies make it very portable.
  • stow powered: symlink dotfiles and thus keep them always up-to-date.
  • topical organized packages by topic for easy reuse across different machines.
  • xdg compliance when possible to keep $HOME clean 1.
  • install scripts for brand new systems and specific topic areas.
  • posix compliant so it works with most shells (bash, zsh).
  • optimized for zsh with auto-completion & syntax highlighting.
  • useful aliases & utilities for maximum productivity.
  • vim & nvim work interchangeably.
  • homebrew compatible packages with smart fallbacks.

Pre-requisites

Installation

sh -c "$(curl -fsSL https://raw.githubusercontent.com/andrewthauer/dotfiles/main/install.sh)"

Or ...

  1. Clone the repo git clone git@github.com:andrewthauer/dotfiles.git ~/.dotfiles
  2. Change directories ~/.dotfiles
  3. Run make to run core setup
  4. Install desired package via stow <directory>
  5. Restart your shell ...

Documentation

Each directory contains a README.md file that describes it's purpose. Most directories are topic packages that can be installed by running stow <directory>. This will create symlinks to the appropriate locations within the $HOME directory.

Directories

  • bin - General purpose scripts which are added to the path.
  • lib - Core utilities used throughout. Must be sourced up front.
  • modules - Various package modules.
  • scripts - Scripts used for setup and maintenance.

NOTE: Directories starting with an __double-underscore will be ignored by stow.

Local Customization

The local directory (git ignored) can be used to customize the dotfiles for a particular environment. It is also a good place to store an secret information you don't want to commit to source control.

Commands

  • make lint - runs shellcheck & shfmt on all shell scripts.
  • make chklink - reports links that are not installed or potentially broken.

Profiling

It is very important to make sure the shell startup is fast. To help ensure this there is built-in support for profiling the startup time.

  • The time-zsh command can be used to profile zsh startup time.
  • The time-bash command will display the execution time for loading a bash shell

Inspiration

License

MIT © Andrew Thauer


1 Arch Linux wiki for XDG Base Directory Support