Skip to content

paxswill/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

These are my dotfiles, almost exclusively for my work on the command line. Most of the configuration is for bash, with some other extensive changes made for Vim (and associated GUIs such as MacVim and GVim. There's also basic support for NeoVim) and Git.

Requirements

I use bash almost exclusively, and ideally the latest version. There is some feature gating for backwards incompatible changes, but they're not extensively tested (ex: PS0 was added in bash 4.2, so it's not set up for earlier versions).

There is also a hard "build" time requirement on m4, which is not normally included on basic Linux distros. At some point in the future I hope to refactor the templating into somethign that just depends on bash, but for now the m4 macros work.

Installation

Check out this repo into ~/.dotfiles and then check out the submodules (at the moment there's just one, for Vundle). Then source common.sh and run process_source_files, followed by link_dotfiles. The same process is used when updating, if anything that's processed by m4 is changed (which isn't all that often).

There's the beginnings of support for checking out this repo somewhere other than ~/.dotfiles, but I haven't really invested much time into it and it's incomplete.

Design Goals/Features

Differences in the environment are detected at runtime as much as possible. While there can be a bit of a delay when opening a new shell, it's manageable (and not that bad on an SSD or other fast disk). There are a few areas where run-time detection isn't really feasible:

  • Email/Identity. The email is added to Git and Mercurial config files for committing. It can be set by adding a file to ~/.dotfiles/email with just the email address.

  • The operating system running the setup function is used to see if there's a GUI merge tool (opendiff on macOS, which opens up FileMerge.app, and meld on Linux systems). If there is, the default git merge tool is set to that command.

  • If a PKCS11 provider is found, the SSH config has it added as a default. A PKCS11 provider is also searched for and made available in the shell in the PKSC11_PROVIDER environment variable (ex: ssh-keygen -D $PKCS11_PROVIDER to extract public keys from an attached smart card).

Supported (heh) Platforms

I use these dotfiles day to day on the following platforms (not that I'm really supporting them in a real sense, I just use them).

  • macOS (x86_64)

  • Linux (arm, aarch64, x86_64)

  • FreeBSD (x86_64)

  • Linux on Windows (x86_64)

In the past I used these files on these platforms, and they should still work on them without much (if any) modification:

  • macOS (ppc, ppc64, x86)

  • Solaris (sparc)

  • Linux (x86, ppc)

  • FreeBSD (x86, arm)