Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/paxswill/dotfiles

My configuration/dot files
https://github.com/paxswill/dotfiles

bash dotfiles shell

Last synced: about 2 months ago
JSON representation

My configuration/dot files

Awesome Lists containing this project

README

        

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

[bash]: https://www.gnu.org/software/bash/
[macvim]: https://macvim-dev.github.io/macvim/
[neovim]: https://neovim.io/

# 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][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.

[m4]: https://en.wikipedia.org/wiki/M4_(computer_language)

# 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)