With inspiration from my friend, Chewrocca, and his dotfiles; and after reading an excellent article that he linked to, A simpler way to manage your dotfiles, I’ve cleaned up and released my dot files that serve as my Z shell configuration running on top of:
- zplug — a next-generation plugin manager for zsh (that I use for loading Oh My Zsh plug-ins).
- Powerlevel10k — a theme for Zsh that emphasizes speed, flexibility and out-of-the-box experience.
- Byobu — an enhancement for the GNU Screen terminal multiplexer or tmux.
Prerequisites
With Homebrew:
brew install git rsync curl zsh jq
OR
With APT:
sudo apt-get install --yes git rsync curl zsh jq
Installation
Log on to your machine and run the following:
{
git clone \
--separate-git-dir=$HOME/.dotfiles \
https://gitlab.com/ltgiv/dotfiles.git \
tmpdotfiles \
;
rsync \
--recursive \
--verbose \
--exclude '.git' \
tmpdotfiles/ \
$HOME/ \
;
rm -r tmpdotfiles
zsh ~/.zshrc
}
Upgrading
Occasionally, I push updates. To ensure that you have the latest version, you can simply run the following command:
dotfiles pull
Optional
Software
Additional software to consider loading, which may or may not be available in package managers for your operating system:
- exa — A modern replacement for ‘ls’.
- FASD — Command-line productivity booster, offers quick access to files and directories, inspired by autojump, z and v.
- FZF — A command-line fuzzy finder.
- LSB — Linux Standard Base and Distribution Information.
Environment
I have an environment file located at ~/.env which is parsed by the dotenv plug-in. Mine looks like this:
# User identity
NAME_LONG="Louis T. Getterman IV"
NAME_SHORT="ltgiv"
# 1Password settings
OP_SERVER="my.1password.com"
OP_USERNAME="E-MAIL ADDRESS GOES HERE"
OP_SECRET="SECRET KEY GOES HERE"
# SSH keys to load from 1Password
OP_SSHKEYS="id_ed25519 id_ecdsa id_rsa"
# SSH Keys' lifetime in seconds
OP_SSHKEYLENGTH=14400
Usage
The following options then become available to you:
- Environment variables
TERMIPLEXER— Preferred terminal multiplexer. Current options are:- tmux
- screen
- byobu
- none
TMPDIR— Temporary directory.ORIGSSHPATH— SSH binary path.KERNEL— Operating System kernel (e.g. Linux or Darwin).DISTROID— Distribution identification (e.g. Ubuntu or macOS).DISTROVER— Distribution version.IAMREMOTE— Boolean that indicates if working remotely (e.g. Mosh/SSH).PATH— greatly expanded path to programs.GOPATH— Path to Go language related.SHELLSESSDIR— Path to temporary directory that lasts as long as the shell.OPSESSPATH— Path to flat file that stores the current (if active) 1Password Session ID.- If you have installed Kelsey Hightower’s setup-network-environment installed, network interface addresses (e.g.
EN0_IPV4)- You can view what’s available for your system with:
cat "${TMPDIR}/network-environment"
- You can view what’s available for your system with:
- Aliases
..— go up 1 directory....— go up 2 directories.....— go up 3 directories.ll— modern listing with exa.ytdl—ugliersimplified filenames (useful for saving videos from Twitter when tweets are too long).dotfiles— simplifies the use of Git for managing dotfiles.tree— hierarchical listing that excludes Git.top— uses htop instead.ssh— uses Mosh instead.sshCopyKey— Copy key to host.sshRemoveHost— Remove known host.secureshell— forces use of SSH when Mosh isn’t available at a remote endpoint.seedboxes-quota— checks disk usage for open source software seeded across BitTorrent.b64e— Base64 encoding.b64d— Base64 decoding.
- Functions
ex— compressed file expander that takes the name of the file to extract.
str_repeat— repeat characters. Positional arguments are:- Character to repeat.
- Number of repetitions.
pdftitle— Change PDF title.- SSH
newKeyPair— Creates a new private and public SSH key echoes to STDOUT. Positional arguments are:- Key type (e.g. dsa, ecdsa, ed25519, or rsa), default is ed25519.
- Key encoding (e.g. b64e), default is cat.
loadsshkeys— Load SSH keys (in my case, from 1Password).loadedsshkeys— List loaded keys from SSH agent.unloadsshkeys— Unload keys from SSH agent.connectShell— Used as a wrapper for Mosh and SSH, and to load SSH keys when needed.
- 1Password
opon— Enable 1Password.opoff— Disable 1Password.oppass— Get Password from 1Password for item’s Name or UUID.opnote— Load a note from 1Password.opsshkey— Retrieve Base64 encoded SSH key from 1Password where argument is name of item (e.g. id_ed25519)oploadsshkey— Specific SSH key to load.oploadsshkeys— Load (and decode) a Base64-encoded value from 1Password.
bcrypt— Create bcrypt-based hash of a string.sshServerFingerPrints— List available hashes of a host’s keys.
Did this article save you time or money? I'd love a coffee!
Did you find this useful?
Please share with those who you believe would find this useful too!