Skip to content

Scripts that set up my common environments.

License

Notifications You must be signed in to change notification settings

WhatIsHeDoing/Setup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💻 Prep My OS

👋 Introduction

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:

asciicast

🏃‍ Running

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

🔋 Included

As current support for Debian and Fedora is currently limited, all platforms means Ubuntu and Windows.

👟 Runtimes

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

🔨 Tools

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

🦀 Rust Modules

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!

⚙️ Scripts

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

🧪 Testing

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

💡 Inspiration

The initial inspiration came from a post by Scott Hanselman on how to make a pretty prompt in Windows Terminal.