{"id":15326758,"url":"https://github.com/ecshreve/toolbox","last_synced_at":"2026-04-10T15:50:51.055Z","repository":{"id":231484352,"uuid":"778933399","full_name":"ecshreve/toolbox","owner":"ecshreve","description":"Dotfiles and environment setup","archived":false,"fork":false,"pushed_at":"2024-04-14T05:41:50.000Z","size":1477,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-14T05:46:37.299Z","etag":null,"topics":["ansible","dotfiles","linux","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ecshreve.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-03-28T17:37:38.000Z","updated_at":"2024-04-15T06:15:55.892Z","dependencies_parsed_at":"2024-04-15T06:15:51.060Z","dependency_job_id":"72c159af-9e6b-4310-bb6d-a357c069ef42","html_url":"https://github.com/ecshreve/toolbox","commit_stats":null,"previous_names":["ecshreve/toolbox"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecshreve%2Ftoolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecshreve%2Ftoolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecshreve%2Ftoolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecshreve%2Ftoolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ecshreve","download_url":"https://codeload.github.com/ecshreve/toolbox/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245864451,"owners_count":20685040,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","dotfiles","linux","zsh"],"created_at":"2024-10-01T09:36:51.104Z","updated_at":"2025-12-30T23:22:19.148Z","avatar_url":"https://github.com/ecshreve.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"#  toolbox \n\nA collection of tools, configuration files, notes, and scripts.\n\nUsed to manage development environment(s) and tools across hardware, operating systems, containers, and virtual machines.\n\n## Usage\n\nOn a fresh machine, clone the repo and run the `install.sh` script to configure the local environment. The script is a thin wrapper around an ansible playbook that targets localhost.\n\n\u003e [!NOTE]\n\u003e Probably don't run the install script directly, it does a lot of things.\n\nWhile this was all tested against a macos host, most often I run some set of the ansible roles against a virtual machine or docker container remotely via ssh.\n\n## Devbox - multipass VM\n\nThe `devbox-playbook.yml` file creates or starts a multipass VM and runs the ansible playbook on it. This has only been tested on multipass running on a macos host.\n\n## Configuration\n\n\u003c!-- TODO: source these from the vars file? --\u003e\n### Aliases and Commands to Remember\n\n- `CTRL+ff` - fuzzy search for files\n- `gaa` - add all files to git\n- `ga`  - add files to git interactively with `fzf`\n- `gbb` - interactive branch selection with `fzf`\n- `gcmsg \u003cmessage\u003e` - commit with a message\n- `gcm` - checkout main branch\n- `gcp` - interactive cherry-pick with `fzf`\n- `gd`  - interactive git diff with `fzf`\n- `gdoof` - add all and amend with no message\n- `gll` - count lines in staged git diff\n- `glo` - interactive git log with `fzf`\n- `goops` - reset last commit soft\n- `gss` - interactive stash selection with `fzf`\n- `gup` - pull with rebase\n- `nett` - show open ports\n\n### General CLI Tools\n- `bat` - A modern replacement for `cat`\n- `eza` - A modern replacement for `ls`\n- `fzf` - A fuzzy finder for the command line\n\n## Ansible Roles\n\n**`base`**\n- Determines the operating system and package manager.\n- Install packages (apt-get on debian/ubuntu) (brew on darwin/macos).\n\n**`zsh`**:\n- Install and configure of `zsh` and `oh-my-zsh`, plugins, and utilities.\n- Install and configure `powerlevel10k` for prompt styling.\n\n**`fzf`**:\n- Install `fzf` from git repository.\n\n**`dotfiles`**:\n- Symlink shell configuration files in `config_files/` to `$HOME`.\n\n\u003e [!IMPORTANT]\n\u003e The `.zshrc` configuration defines a keybinding override to use `^ff` instead of `^t` to trigger `fzf` from the command line.\n\n**`multipass`**:\n- Create or start a multipass VM and add it to the inventory.\n\n**`docker`**:\n- Install docker and add the current user to the docker group.\n\n**`asdf`**:\n- Install and configure `asdf` and plugins.\n\n\u003e [!IMPORTANT]\n\u003e This is where installing different versions of languages and tools is managed.\n\u003e For example, `golang`, `python`, `terraform`, etc...\n\n## Links\n\n- [ansible](https://docs.ansible.com/ansible/latest/index.html)\n- [fzf](https://github.com/junegunn/fzf)\n- [zsh](https://www.zsh.org/)\n- [oh-my-zsh](https://ohmyz.sh/)\n- [multipass](https://multipass.run/)\n- [docker](https://docs.docker.com/)\n- [asdf](https://asdf-vm.com/)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fecshreve%2Ftoolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fecshreve%2Ftoolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fecshreve%2Ftoolbox/lists"}