This repository contains a group of scripts that set up my common environments.
These can be re-run at any time, and will update pre-installed packages, runtimes and their associated packages, plus global configuration. Each script is designed to set up each Operating System (OS) using similar tools where possible, such as Starship as the shell prompt and VS Code as the code editor, to simplify moving between them.
Click on the Ubuntu version below to see it in action:
Run one of the following for your OS in your terminal of choice:
sh setup_debian.sh
sh setup_fedora.sh
sh setup_ubuntu.sh
.\setup_windows.ps1
As current support for Debian and Fedora is currently limited, all
platforms means Ubuntu and Windows.
Tool | Platforms | Description |
---|---|---|
7zip | all | File archiver with a high compression ratio |
asciinema | Ubuntu | Record and share terminal sessions |
bat | all | A cat(1) clone with wings. |
bottom | all | Terminal graphical process/system monitor |
Caesium | Windows | Image compressor |
cargo-outdated | all | cargo subcommand to show outdated Rust dependencies |
DBeaver | all | Universal database tool |
diskonaut | all | Terminal disk space navigator |
Docker | all | Containerize applications |
eza | all | Modern, maintained replacement for ls |
fzf | all | Command-line fuzzy finder |
gcc | all | GNU Compiler Collection |
Git | all | Distributed version control system |
Helm | all | Package manager for Kubernetes |
innounp | Windows | Inno Setup unpacker |
IPython | all | Toolkit to run Python interactively, including Jupyter |
jid | all | JSON incremental digger |
jq | all | sed for JSON data |
just | all | Just a command runner |
k9s | Windows | Kubernetes CLI to manage your clusters in style! |
kubectl | all | kubectl controls the Kubernetes cluster manager. |
less | all | Terminal pager |
minikube | all | Fast Kubernetes cluster set up |
Node.js | all | JavaScript runtime environment |
nuget | Windows | Package manager for .NET |
pandoc | all | Universal markup converter |
pnpm | all | Fast, disk space efficient JavaScript package manager |
Portmaster | Windows | App firewall and monitor |
powersession-rs | Windows | A Rust port of asciinema for Windows |
Powershell | all | Automation and configuration tool/framework |
PuTTY | Windows | SSH and telnet client |
Python | all | Programming language |
RapidEE | Windows | Rapid Environment Editor |
rga | all | Regex-based search tool for a multitude of file types |
Rust | all | Programming language |
Scoop | Windows | Command-line installer for Windows |
SpaceSniffer | Windows | Visualise folder and file structures on disk |
Spotify | all | Digital music service |
Starship | all | Cross-shell prompt |
Telegram | all | Messaging |
UPX | all | Executable packer |
VS Code | all | Code editor |
Warp | Ubuntu | The terminal reimagined |
WSL | Windows | Run a GNU/Linux environment directly on Windows |
Some tools require extra configuration or combinations to get the best from them. The scripts below are available as aliases on Ubuntu and Windows:
Global Alias | Meaning | Description |
---|---|---|
ll |
long listing | Comprehensive listing of files in the current directory |
ff <term> |
fuzzy find | Fuzzy find of a search term for all files within the current directory |
First, check the shell for problems using ShellCheck:
shellcheck *.sh
The majority of the Ubuntu setup script can be tested on any platform using a Docker container. Build and run it with:
docker build --progress=plain -f Dockerfile.ubuntu -t setup_ubuntu .
docker run -it setup_ubuntu
Similarly, the entire Fedora script can be tested in Docker with:
docker build --progress=plain -f Dockerfile.fedora -t setup_fedora .
docker run -it setup_fedora
Containers should be verified with Container Structure Tests, vulnerabilities with Grype and best practices with Kics:
grype setup_ubuntu
docker run -t -v /home/user/Setup:/Dockerfile checkmarx/kics:latest scan -p .
container-structure-test test --image setup_ubuntu --config container-structure-test.yml
The initial inspiration came from a post by Scott Hanselman on how to make a pretty prompt in Windows Terminal.