A collection of tools, configuration files, notes, and scripts.
Used to manage development environment(s) and tools across machines, operating systems, containers, and virtual machines.
During active development I run the ansible
playbook either locally or in a container to configure my development environment.
Most often the setup script runs in a Ubuntu docker container on my macbook during the build of a Coder workspace. It is called by the coder agent's startup_script.
resource "coder_agent" "main" {
arch = data.coder_provisioner.me.arch
os = "linux"
startup_script = <<-EOT
set -e
...
echo "Installing toolbox dotfiles..."
coder dotfiles -y https://github.com/ecshreve/toolbox.git
...
echo "Done."
EOT
Note
Probably don't run the install script, it does a lot of things.
- reliable
zsh
configuration, with plugins and utilities covering almost all of whatfish
was doing for me. - chatbot to interact with the repository via OpenAI Embeddings, LangChain, and Pinecone
gencom
to generate commit messages based on currently staged changes (powered bymods
)
CTRL+ff
- fuzzy search for filesgaa
- add all files to gitga
- add files to git interactively withfzf
gbb
- interactive branch selection withfzf
gcmsg <message>
- commit with a messagegcm
- checkout main branchgcp
- interactive cherry-pick withfzf
gd
- interactive git diff withfzf
gdoof
- add all and amend with no messagegll
- count lines in staged git diffglo
- interactive git log withfzf
goops
- reset last commit softgss
- interactive stash selection withfzf
gup
- pull with rebasenett
- show open ports
bat
- A modern replacement forcat
exa
- A modern replacement forls
fd
- A modern replacement forfind
forgit
- Afzf
wrapper forgit
commandsfzf
- A fuzzy finder for the command linetldr
- A streamlinedman
page replacement
charm
- A utility to managecharm
appsfreeze
- A tool to take screenshots of codegum
- A tool for glamorous shell scriptsmods
- An application to interact with the OpenAI APIrun
- A utility to run commands in a new shellskate
- A utility to manage secretsvhs
- A tool to create gifs from the terminalwishlist
- An SSH directory app
The playbook.yml
file is the main entry point for the ansible
configuration. It handles running the roles defined in the ansible/roles
directory with the variables defined in config_vars.yml
.
./ansible/config_vars.yml
- Contains configuration variables defining packages to install, versions, and paths to target, among other things.
base
- Determines the operating system and package manager.
- Install packages (apt-get on debian/ubuntu) (brew on darwin/macos).
zsh
:
- Install and configure of
zsh
andoh-my-zsh
, plugins, and utilities.zsh-autosuggestions
,zsh-completions
,zsh-syntax-highlighting
,forgit
andfzf
plugins for enhanced shell functionality.powerlevel10k
for prompt styling.
fzf
:
- Install
fzf
from git repository.
gitenv
:
- Symlink
git
configuration files inconfig_files/
to$HOME
.
dotfiles
:
- Symlink shell configuration files in
config_files/
to$HOME
.
Important
The .zshrc
configuration defines a keybinding override to use ^ff
instead of ^t
to trigger fzf
from the command line.
These aren't fully integrated or tested yet, some are just for fun.
golang
:
- Handles downloading and installing Golang, along with additional tools and executables.
- Installs
go
under/usr/local/go
- Installs executables under
/home/eric/go/bin
- Install path is defined in
config_vars.yml
ansible-navigator
- A text-based user interface (TUI) for Ansible.
- Installed via
pip
as part of thenavigator
role.
navi
- A command-line cheatsheet tool.
etc...
- cleanup: check ownership of files and directories
- hashi: install terraform and packer
- python: install pyenv and pyenv-virtualenv
The coder/templates/devbox
directory contains a template for setting up a Coder workspace with the toolbox
configuration. I'm currently running workspaces locally and occasionally on a DigitalOcean droplet.
$ ./scripts/secrets.sh
This script is designed to streamline setting up secrets in my development environment for this project, but can be generally used to dump secrets from a skate
database to a local file.
- charmbracelet
- ansible
- ansible-navigator | docs
- golang | go installation
- forgit
- fzf
- zsh
- oh-my-zsh
- terraform
- packer
- [navi](
- [powerlevel10k](
- [pyenv](
- [pyenv-virtualenv](