/abk_env

ABK MacOS, Linux, Windows environment setup

Primary LanguageShellApache License 2.0Apache-2.0

README: tool-env repo

ABK tool environment setup for developers

[TOC]

What is this repository for?

  • Quick automated install of required developer tools
  • Quick automated install of required developer apps
  • Quick automated install of developer fonts
  • Easy updates
  • Easy user friendly prompt config
  • Useful aliases
  • Company wide password manager (WIP)

Support for

OS supported

  • MacOS
  • Linux / Debian distro
  • Linux / Ubuntu distro
  • Linux / Raspbian distro
  • Windows

Shells supported

  • /bin/bash
  • /bin/csh
  • /bin/ksh453945
  • /bin/sh
  • /bin/tcsh
  • /bin/zsh

What shell are you currently using?

To determine what shell is currently used in your environment, run following command in your terminal:

echo $SHELL

MacOS 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/zsh

Linux users: zsh or bash ... what ever floats your boat :)


Pre-requisites

MacOS

  • 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)"

Linux

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.

Tools installed

If you want to specify which tools are installed, please take a look at the file tools.json

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
pyenv lets you easily switch between multiple versions of Python
pyenv-virtualenv is a pyenv plugin, which manages virtualenvs for Python
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
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-syntax-highlighting syntax highlighting for the shell zsh Zsh

Additional MacOS apps installed

tool description
balenaetcher Etcher is a powerful OS image flasher built with web technologies
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
iterm2 MacOS terminal app
microsoft-teams Company's online meeting app
mqttx MQTTX makes developing and testing MQTT applications faster and easier.
onedrive Company's online storage.
raspberry-pi-imager Raspberry Pi Imaging Utility
slack Company's quick message communication app
visual-studio-code The best code editor ever :)
vlc VLC is a libre and open source media player and multimedia engine

Fonts installed

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

oh-my-posh configuration

There is a pre-configured theme located in folder ./unixBin/env/omp/themes. If you like to configure your own theme follow: oh-my-posh documentation. There are also many other predefined themes. You can activate them in the file: ./unixBin/env/XXX_oh-my-posh.env Default is configured fro ABK customized prompt: code>./unixBin/env/omp/themes/powerlevel10k_abk.omp.json, which looks like this: powerlevel10k_abk

  • 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. If you like to use my profile please import it from ./unixBin/env/terminal/profiles/Solarized Dark.terminal

Aliases

Don't forget to check out many aliases configured in ./unixBin/env/002_aliases.env and ./unixBin/env/002_abk_aliases.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

What to do?

Install

This script will install tools and apps described in the tools.json. If you already installed a tool previously, the installation will skip that tool installation and configuration. All installed tools are recorded in ./unixPackages/installed.json

./install.sh

Update

This script will update tools and apps described in the tools.json.

./update.sh

Uninstall

If at some point you'd like to uninstall everything installed (the installed tools are recorded in ./unixPackages/installed.json), simply run:

./uninstall.sh