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.
Runtime | Platforms | Description |
---|---|---|
.NET | all | Free, open-source, cross-platform framework |
Docker | all | Containerize applications |
gcc | all | GNU Compiler Collection |
kubectl | all | kubectl controls the Kubernetes cluster manager |
minikube | all | Fast Kubernetes cluster set up |
Node.js | all | Free, open-source, cross-platform JavaScript runtime environment |
Powershell | all | Automation and configuration tool/framework |
Python | all | Programming language |
Rust | all | Language empowering everyone to build reliable and efficient software |
Tool | Platforms | Description |
---|---|---|
7zip | all | File archiver with a high compression ratio |
Amberol | Ubuntu | A small and simple sound and music player |
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 |
Checkov | all | Policy-as-code for everyone |
DBeaver | all | Universal database tool |
diskonaut | all | Terminal disk space navigator |
draw.io | all | Technology stack for building diagramming applications |
eza | all | Modern, maintained replacement for ls |
Flatpak | all | The future of apps on Linux |
fzf | all | Command-line fuzzy finder |
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! |
lens | all | The Way The World Runs Kubernetes |
less | all | Terminal pager |
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 |
pre-commit | all | A framework for managing and maintaining multi-language pre-commit hooks |
Pulumi | all | Create, deploy, and manage infrastructure on any cloud using any language |
PuTTY | Windows | SSH and telnet client |
RapidEE | Windows | Rapid Environment Editor |
rga | all | Regex-based search tool for a multitude of file types |
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 |
Zed | Ubuntu | Zed is a high-performance, multiplayer code editor |
Runtime | Description |
---|---|
cargo-outdated | A cargo subcommand for checking and applying updates to installed executables |
cargo-modules | A cargo plugin for showing a tree-like overview of a crate's modules |
cargo-update | A cargo subcommand for checking and applying updates to installed executables |
wasm-pack | 📦✨ your favourite rust -> wasm workflow tool! |
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, set up pre-commit and run an initial test:
pre-commit install
pre-commit run --all-files
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.