Skip to content

alexbigkid/abk_env

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

422 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

README: abk_env repo Tests

ABK tool environment setup for developers

[TOC]

What is this repository for?

  • 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

Design

Check, install and uninstall instructions are configured in json files

life cycle of installed tools

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
Loading

Support for

OS supported

  • 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

Shells supported

  • /bin/bash
  • /bin/csh
  • /bin/ksh
  • /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.

Install

  • 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

Available installation packages

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

Example of tools installed

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

Example of MacOS apps installed

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 :)

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

  • 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 Default in 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: powerlevel10k_abk

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.

Aliases

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

Update

To update your tools you could use the alias:

  • brew_update> - (MacOS) to update all brew installed tools
  • brew_update_casks> - (MacOS) to update all brew installed graphical apps
  • brew_update_all - (MacOS) update both tools and graphical apps
  • apt_update - (Linux) updates all tools managed by apt

Uninstall

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 with tools_node.json will be uninstalled.
  • ./uninstall.sh tools_min.json - uninstalls packages previously has installed with tools_min.json
  • ./uninstall.sh tools_min.json tools_node.json - uninstalls packages previously has installed with tools_min.json and tools_node.json

Git branch rename from master to main

git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a

About

Configures dev tools environment on MacOS and Linux

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages