This repository contains my personal dotfiles managed using GNU Stow. The repository's structure mirrors that of my $HOME
(~
) directory; configuration files are organized to be symlinked into their proper locations.
This repository contains configuration for, or relies on the system having, the packages outlined in this section.
Configuration for the Azure CLI: .azure/config
Azure is my cloud provider of choice for client projects. I don't use the Azure CLI to deploy (where possible, I define infrastructure as code using OpenTofu), but I will use az
for local development and testing. I typically use az
when I want to interact with my local storage emulator (Azurite).
Here's output from history | rg "az "
showing some recent commands I've run:
1139 az storage queue create -n stq-example-free
1140 az storage message put -q stq-example-free --content "$(base64 <<< '{"foo":"bar"}')"
.azure/config
contains basic configuration for az
; project-specific configuration and secrets are set with environment variables. I will always navigate to the relevant project directory before running az
commands and use direnv
to load project-specific environment variables. Here's an example of some of the environment variables I use for local development when working with Azurite:
export AZURITE_ACCOUNTS="stexampledev:1a2b3c4d5e:6f7g8h9i0j"
export AZURE_STORAGE_CONNECTION_STRING="AccountName=stexampledev;AccountKey=1a2b3c4d5e;DefaultEndpointsProtocol=http;BlobEndpoint=http://127.0.0.1:10000/stexampledev;QueueEndpoint=http://127.0.0.1:10001/stexampledev;TableEndpoint=http://127.0.0.1:10002/stexampledev;"
export AZURE_STORAGE_ACCOUNT="stexampledev"
export AZURE_STORAGE_KEY="1a2b3c4d5e"
export AZURE_CONFIG_DIR="/home/user/orgs/orgname/projectname/apps/example/.azure"
I do not have any extensions installed for az
.
Download GNU Stow using a package manager:
sudo apt install stow
Create symbolic links for the contents of dotfiles
:
stow .
This command will place symbolic links from dotfiles/*
in ~/*
. If a file exists at the path where GNU Stow should put a symbolic link, this command will fail.
To ensure stow
creates symbolic links in place of existing files, use the --adopt
flag:
stow --adopt .
Warning
This command will replace the file in this directory (dotfiles/*
) with the file in the target directory (~/*
). Ensure changes are committed to git before running this command.
Bash completions for tmux
are configured by a script I pulled from here and wrote to ~/.local/share/bash-completion/completions/tmux
. Note that up-to-date versions of bash-completion
will include completions for tmux
by default.
My tmux
configuration uses Tmux Plugin Manager to install and load tmux
plugins.
I use tmux-resurrect
to persist and restore tmux sessions across restarts:
set -g @plugin 'tmux-plugins/tmux-resurrect'
Bash completion for pnpm
is included in ~/.local/share/bash-completion/completions/pnpm
, which was generated by the following command:
pnpm completion bash > ~/.local/share/bash-completion/completions/pnpm
I use the ~/.local/share/bash-completion/completions/
directory to store my custom completions, which are automatically loaded by the bash-completion
module.