ABK tool environment setup for developers
[TOC]
- Quick automated install of required developer tools, apps and fonts
- Easy updates
- Easy user friendly prompt config
- Useful aliases
- using YubiKey for setting up security (SSH/GPG)
- Private/Company wide pass manager
Check, install and uninstall instructions are configured in json files
flowchart LR
%% Define styles
classDef jsonStyle fill:#e3f2fd,stroke:#2196f3,stroke-width:2,color:#0d47a1;
classDef installStyle fill:#e8f5e9,stroke:#4caf50,stroke-width:2,color:#1b5e20;
classDef procStyle fill:#fffde7,stroke:#fbc02d,stroke-width:2,stroke-dasharray: 5, color:#f57f17;
classDef uninstallStyle fill:#fff3e0,stroke:#ff9800,stroke-width:2,color:#e65100;
classDef testStyle fill:#fce4ec,stroke:#e91e63,stroke-width:2,color:#880e4f;
%% Define nodes
json_files("๐ <b>JSON files</b><br/>tools_abk.json<br/>tools_node.json<br/>tools_python.json<br/>tools_work.json")
install("๐ฆ <b>install.sh</b>")
installed("๐๏ธ <b>Uninstall instructions</b><br/>for installed tools<br/>in <b>unixPackages</b> dir")
uninstall("๐งน <b>uninstall.sh</b>")
%% Apply styles
class json_files jsonStyle
class install installStyle
class installed procStyle
class uninstall uninstallStyle
%% Define edges
json_files --> install
install --> installed
installed --> uninstall
- MacOS
- 11 - Big Sur - could work, not tested
- 12 - Monterey - could work, not tested
- 13 - Ventura
- 14 - Sonoma
- 15 - Sequoia
- Linux / Debian distro
- 11 - bullseye
- 12 - bookworm
- Linux / Ubuntu distro
- 20.04 - support removed
- 22.04
- 24.04
- Linux / Raspbian distro
- 11 - bullseye
- 12 - bookworm
- Windows
- /bin/bash
- /bin/csh
- /bin/ksh
- /bin/sh
- /bin/tcsh
- /bin/zsh
To determine what shell is currently used in your environment, run following command in your terminal:
echo $SHELLMacOS users: macOS switched the default shell from bash to zsh with the release of macOS Catalina (version 10.15). If you are still using bash, recommendation is to switch to zsh, since bash is not being updated on MacOS. To change shell:
chsh -s /bin/zshLinux users: zsh or bash ... what ever floats your boat :)
- pre-installed homebrew tool: brew is a command line tool to install apps and tools on MacOS. To install brew, run and follow prompt requests:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"There are no pre-requisites for Linux. We will use apt tool to install packages. There is home brew for Linux, called Linuxbrew, but the installation packages are not widely available yet.
- If you installed my previous version of ABK environment from abkEnv, please de-install it first by executing uninstall script:
./uninstall.sh - For simple minimal installation:
./install.sh - For python tools installation:
./install.sh tools_python.json - For node tools installation:
./install.sh tools_node.json - For my favorite tools installation:
./install.sh tools_abk.json - Note that you can install with several packages. E.g.:
./install.sh tools_node.json tools_python.json. Tools which has been already installed won't be installed again. - See table below for full list of installation sets. You can also create your own set (json files) if like. but be aware that there are 3 sections: check, install and uninstall
- The installation might require your password few times in order to install graphical apps.
- After installation script runs through, it records what tools has been installed for later clean de-installation. See files in the dir:
unixPackages
For you convenience I prepared few installation packages listed below:
| package | description |
|---|---|
| tools_abk.json | my favorite tools collection - mostly for development |
| tools_max.json | maximal installation - all tools, I found useful |
| tools_min.json | minimal installation - but installs brave-browser and flycut on MacOS |
| tools_node.json | node tools installation - for node development |
| tools_python.json | python tools installation - for python development |
| tools_work.json | work specific tools installation |
| test_001.json | test 001 installation - small set of tools for testing purpose |
| test_002.json | test 002 installation - small set of tools for testing purpose |
| test_003.json | test 003 installation - small set of tools for testing purpose |
| test_004.json | test 004 installation - small set of tools for testing purpose |
| tool | description |
|---|---|
| awscli | provides a unified command line interface to Amazon Web Services |
| direnv | can load and unload env variables depending on the current project directory |
| git | Newest version of git |
| gnuPG | Gnu Privacy Guard: tool to create and maintain GPG keys |
| jq | is a lightweight and flexible command-line JSON processor |
| nmap | network scanner to discover hosts and services on a computer network |
| nodenv | lets you easily switch between multiple versions of nodejs |
| oh-my-posh | lets you easiliy configure your terminal prompt |
| parallel | CLI tool to execute shell commands in parallel |
| pass | password manager, which works well with direnv tool |
| ruff | python code linter |
| serverless | lets you deploy serverless infrastructure services to AWS |
| tfenv | lets you easily switch between multiple versions of Terraform |
| tree | lists files in tree from |
| uv | Fast Python package manager. Can replace: pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv |
| wget | utility for downloading files from the web |
| yq | is a lightweight and flexible command-line YAML, JSON and XML processor |
| zsh-autocomplete | Autocomplete for Zsh adds real-time type-ahead autocompletion to Zsh |
| zsh-autosuggestions | Autosuggestions for Zsh adds autosuggestions below prompt, which can be selected |
| zsh-syntax-highlighting | syntax highlighting for the shell zsh Zsh |
| tool | description |
|---|---|
| brave-browser | Secure, fast Web browser based on Chromium just like Chrome |
| docker | Docker helps developers to abstract virtual environments |
| flycut | Flycut is a clean and simple clipboard manager for developers |
| onedrive | Company's online storage. |
| visual-studio-code | The best code editor ever :) |
Those font are useful for coding and for oh-my-posh
- font-agave-nerd-font
- font-comic-shanns-mono-nerd-font
- font-droid-sans-mono-nerd-font"
- font-cascadia-code
- font-cascadia-code-pl
- font-caskaydia-cove-nerd-font
- font-hack-nerd-font
- open terminal app
- click on Terminal / Settings (on MacOS: Press
โ + ,) - click in the bottom left corner on a circle with 3 dots and import
- Navigate to repo directory and then to:
unixBin/env/terminal/profiles - Select
Solarized Dark.terminal - Select the Profile just added and the click on
Defaultin the bottom left corner
There is a pre-configured theme located in folder ./unixBin/env/omp/themes. There are many other predefined themes. You can activate them in the file: ./unixBin/env/XXX_oh-my-posh.env Default is configured for ABK customized prompt: ./unixBin/env/omp/themes/powerlevel10k_abk.omp.json, which looks like this:

If you like to create your own theme please follow: oh-my-posh documentation.
- Note 1: if you don't see correct symbols in the prompt, please use font which is capable to display glyphs (symbols) in your terminal app settings. A good font example: Hack Nerd Font
- Note 2: The default oh-my-posh theme is based on dark background terminal app profile. It might not look great if you use theme with bright background.
Don't forget to check out many aliases configured in ./unixBin/env/002_aliases.env and ./unixBin/env/002_abk_aliases.env. YOu can put your own aliases into ./unixBin/env/aliases_user.env Here are few good examples:
| alias | description |
|---|---|
epoch |
copies current epoch time into clipboard |
getAwsAccount |
copies currently configured AWS account number into clipboard |
glrt |
Git List Remote Tags |
dpps |
Display Python Package Size |
ncpu |
Number of CPUs |
ppp |
Pretty Print PATH |
pppp |
Pretty Print PYTHONPATH |
prg |
git push - Push it Real Good - when deploying new release |
snp |
git push - Salt 'N Pepper version |
brew_update |
MacOS users: updates all tools managed by brew |
brew_update_casks |
MacOS users: updates all graphical apps managed by brew |
brew_update_all |
MacOS users: updates tools and apps managed by brew |
apt_update |
Linux users: updates all tools managed by apt |
To update your tools you could use the alias:
brew_update> - (MacOS) to update all brew installed toolsbrew_update_casks> - (MacOS) to update all brew installed graphical appsbrew_update_all- (MacOS) update both tools and graphical appsapt_update- (Linux) updates all tools managed by apt
If at some point you'd like to uninstall installed packages, you can run ./uninstall.sh. Here few examples:
./uninstall.sh tools_node.json- will uninstall all node packages. Since it was recorded what tools have been installed only the packages which has been previously installed withtools_node.jsonwill be uninstalled../uninstall.sh tools_min.json- uninstalls packages previously has installed withtools_min.json./uninstall.sh tools_min.json tools_node.json- uninstalls packages previously has installed withtools_min.jsonandtools_node.json
git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a