System Setup With My Favourite Tools & Technologies

A guide to setup your machine to be similar to mine

Back

My Development Setup

This post details my current development environment, tools, and software that I use daily. ๐Ÿ› ๏ธ I hope this might be useful for others setting up their development machines. โœจ Best part, I'm also going to add installation scripts & commands for Windows ๐ŸชŸ, Linux ๐Ÿง & Mac ๐ŸŽ. I'm on Linux though, so I have 100% confidence in the Linux commands. ๐Ÿ’ฏ

Hardware

  • ๐Ÿ’ป Laptop:
    • ๐Ÿญ Manufacturer: Micro-Star International (MSI)
    • ๐Ÿ“ฑ Model: Modern 14 C12MO
    • ๐Ÿง  Processor: 12 ร— 12th Gen Intelยฎ Coreโ„ข i5-1235U
    • ๐Ÿงฎ RAM: 8GB DDR4
    • ๐Ÿ’พ Disk: 1TB SSD
  • ๐Ÿ–ฑ๏ธ Mouse: IRIScan Scanner mouse
  • ๐ŸŽง Other peripherals:
    • ๐ŸŽต Volkano LEO 2.0 vk-1130 True Wireless Earphones.

These computer specs have been perfect for both my development work and school projects. โšก I really can't complain about the performance, I got the recommendation from some blog post I saw on dev.to. I just lost reference to the exact post though. Sorry. ๐Ÿคทโ€โ™‚๏ธ

I prefer using the trackpad because it feels faster โšก, but bought this mouse mainly because it doubles as a scanner. ๐Ÿ” That's how I scan all my handwritten assignments and exams - pretty cool feature. I can't live without my earphones since I'm on Spotify constantly. ๐ŸŽต Yes, I'm a Spotify user through and through! ๐ŸŽง


Operating System (OS)

I used Windows for a while, which makes sense since it's usually the first operating system we encounter when we start using computers seriously. Now I use it as a backup option by running it in a virtual machine, along with macOS Sonoma. ๐ŸŽ I mainly use both systems to try out different things, and I specifically use Windows to test my C++ assignments before submitting them to make sure they work properly. โœ…

Installation (Primary OS)

I won't get into detail with this because it's out the scope of this post. Have a look at VirtualBox ๐Ÿ“ฆ or VMWare ๐Ÿ–ฅ๏ธ and how to get setup with Fedora on either. To be generous, I've linked to a YouTube video here for virtual machines (recommended) ๐Ÿ’ปโœจ and here for bare metal ๐Ÿ’ฝ๐Ÿ”ง.

Good Luck! โœ…


Windows & Mac Setups For Package Management

To help everyone install software easily, no matter what operating system you're using, I'll show you how to set up both Windows and macOS with package managers like we have on Linux. This makes everything much simpler, you won't have to keep opening your browser and going to different download pages every time you need new software. ๐Ÿš€

โš ๏ธ Not all the software will be available through these package managers though.

Installation

๐Ÿ’ก On Linux your don't need to install any package manager. We're using Fedora here so we have DNF5 setup and ready to use! ๐Ÿง

Windows

๐Ÿ’ก There are other package managers you can use on windows, but I will be using Chocolatey ๐Ÿซ because that is what I have the most experience with. WinGet is also a good one.

โ€ผ๏ธ For chocolatey to work as expected, you need to run these commands & every other installation command in PowerShell with admin privilages. ๐Ÿ‘จโ€๐Ÿ’ป

Disable PowerShell's restricted execution policy

Set-ExecutionPolicy AllSigned

Install Chocolatey

  1. Temporarily bypass the execution policy for this process only
Set-ExecutionPolicy Bypass -Scope Process -Force
  1. Update the security protocol to use TLS 1.2 or greater
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
  1. Download and run the Chocolatey installation script from the official source
$installScript = (New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')
  1. Execute the downloaded installation script
Invoke-Expression $installScript

Confirm installation

choco --version

Chocolatey should respond with version information after you've run this command.

You're ready to install software using the Chocolatey package manager! ๐Ÿš€๐ŸŽ‰

MacOS

๐Ÿ’ก We will use Homebrew ๐Ÿบ as the package manager on Mac. I honestly don't know of any other one that works with this system. Something for me to look out for. ๐Ÿ”

โ€ผ๏ธ Make sure your machine fits these requirements โœ…

Install Homebrew ๐Ÿบ

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Confirm installation โœ…

brew --version

Homebrew should respond with version information after you've run this command. โœ…

You're ready to install software using Homebrew! ๐Ÿš€๐ŸŽ‰


From this point, I assume you've installed Fedora or either of the package managers. ๐Ÿ“ฆ ๐Ÿ’ป

๐Ÿ’ก Before installing anything on Linux, it's always good practice to update your system first.

sudo dnf check-update && sudo dnf upgrade -y

Terminal Setup ๐Ÿ–ฅ๏ธ

ZSH is only available on Mac and Linux. Sorry to the Windows folks - PowerShell it is for you! ๐Ÿ˜… I use Tabby because it looks good and it's lightweight. โœจ It comes with a number of features that make my daily workflows easier (SSH client ๐Ÿ”‘, Docker container connection ๐Ÿณ).

Install ZSH (Mac & Linux only)

  1. Install zsh

On Linux:

sudo dnf install zsh -y

On Mac:

brew install zsh
  1. Set zsh as the default shell
chsh -s $(which zsh)
  1. Restart your termial and follow the prompt to set up your zsh. We'll make it look good in just a few.

Install Tabby

Linux & Mac

You can view the script before running it here

curl -s https://packagecloud.io/install/repositories/eugeny/tabby/script.rpm.sh | sudo bash

Windows

choco install tabby -y

Great, now we can start using Tabby as the terminal going forward! ๐Ÿš€โœจ

Install Starship

๐Ÿ’ก At this point I assume you are using ZSH as the default shell.

Linux

  1. Enable the starship repo
sudo dnf copr enable atim/starship
  1. Update the package cache
sudo dnf check-update
  1. Install starship
sudo dnf install starship
  1. Setup your shell to use Starship
echo 'eval "$(starship init zsh)"' >> ~/.zshrc
  1. Read zsh config to refresh prompt
source ~/.zshrc

Code Editor / IDE ๐Ÿงฐ

VS Code is my main editor for everything because it's lightweight and easily supports all the different programming languages I use regularly. ๐Ÿ’ป I switch to JetBrains IDEs when I'm working with languages that need heavy configuration, like C++. CLion is my most-used JetBrains IDE for that. ๐Ÿ”ง I also like changing things up sometimes, so I'll use WebStorm or PyCharm when I want a different coding environment. ๐Ÿ”„

VS Code

Linux

  1. Import Microsoft's GPG key to verify package signatures
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
  1. Create the VS Code repository configuration file
sudo tee /etc/yum.repos.d/vscode.repo > /dev/null << EOF
[code]
name=Visual Studio Code
baseurl=https://packages.microsoft.com/yumrepos/vscode
enabled=1
autorefresh=1
type=rpm-md
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
EOF
  1. Update the package cache
sudo dnf check-update
  1. Install VS Code
sudo dnf install code # or code-insiders
  1. Confirm installation
code --version

Mac

brew install --cask visual-studio-code

Confirm installation

code --version

Windows

choco install vscode -y

Confirm installation

code --version

JetBrains

To have an easy way to manage all the different IDEs from JetBrains, I use JetBrains Toolbox ๐Ÿงฐ. On Fedora, we don't have an rpm for it so we need to download and run it manually. ๐Ÿ› ๏ธ

Linux

Follow along with these instructions to get the toolbox installed.

Mac

brew install --cask jetbrains-toolbox

Windows

choco install jetbrainstoolbox -y

You can now install which ever JetBrains IDE, you want to work with. In my case, CLion ๐Ÿ”ง, WebStorm ๐ŸŒ, & PyCharm ๐Ÿ.


Programming Languages & Tools ๐Ÿงฐ

  • Languages I work with regularly: ๐Ÿ’ป
  • Version managers: Node Version Manager ๐Ÿ”„
  • Package managers: pnpm ๐Ÿ“ฆ, pip ๐Ÿ, & CMake ๐Ÿ—๏ธ

Install Node.js

Linux & Mac

  1. Install Node Version Manager

You can view the install script here

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
  1. Install latest LTS version of Node
nvm install --lts
  1. Confirm installation
node --version

&

npm --version

Windows

  1. Install NVM
choco install nvm -y
  1. Install latest LTS version of Node
nvm install --lts
  1. Confirm installation
node --version

&

npm --version

[OPTIONAL] ๐Ÿ“ฆ

I usually use PNPM as my package manager in most projects. ๐Ÿš€ I like how it approaches monorepo architectures and how it manages their dependencies. ๐Ÿงฉ โšก

Windows, Mac & Linux

  1. Prepare PNPM
corepack prepare pnpm
  1. Install latest PNPM
corepack enable pnpm@latest

If this doesn't work, do this:

npm install --global pnpm@latest
  1. Confirm installation
pnpm --version

Node.js is ready for use!

Install Python

I'm still working on adopting the use of a version manager for python like I am with Node.js. Currently, I install the versions manually

Linux

Python is one of the tools installed by default on Fedora. Not much needs to be done here. What you can do, is install which ever version you are looking to use specifically.

Mac

  1. Install Python 3.13
brew install python@3.13
  1. Confirm installation
python3 --version

Windows

  1. Install Python
choco install python313 -y
  1. Confirm installation
python --version

Python is now installed!

Install compilers for C/C++

Linux

sudo dnf install gcc gcc-c++ clang clang++ cmake

Mac

  1. This provides clang and clang++.
xcode-select --install
  1. Install gcc & CMake
brew install gcc cmake

Windows

Option 1: Visual Studio (Recommended)

  • Download Visual Studio Community (free) from Microsoft
  • During installation, select "Desktop development with C++" workload

Option 2: MinGW-w64

  • Install via MSYS2: Download from msys2.org
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-clang mingw-w64-x86_64-cmake
  • Add MinGW bin directory to PATH

Option 3: Clang via LLVM

  • Download pre-built binaries from llvm.org
  • Add to PATH after installation

Development Tools ๐Ÿ› ๏ธ

  • Version Control: Git ๐Ÿ“š
  • API testing: Postman ๐Ÿš€
  • Database tools: DBeaver ๐Ÿ—ƒ๏ธ
  • Containerization Tools: ๐Ÿ“ฆ

Install Git

Linux

On linux, git is usually preinstalled.

  1. Install Git
sudo dnf install git
  1. Confirm installation
git --version

Mac

  1. Install Git
brew install git
  1. Confirm installation
git --version

Windows

  1. Install git
choco install git -y
  1. Confirm installation
git --version

Install Postman

Linux

  1. Download this script to your downloads folder.

  2. Make the script executable.

cd ~/Downloads
chmod +x install_postman.sh
  1. Run the install script
./install_postman.sh
cd ~

Mac

brew install --cask postman

Windows

choco install postman -y

Install DBeaver

Linux

  1. Download the Linux RPM Package

  2. Run the installer

    Replace VERSION with the actual version number of the downloaded file.

sudo dnf ~/Downloads/dbeaver-ce-VERSION.rpm

Mac

brew install --cask dbeaver-community

Windows

choco install dbeaver -y

Install Podman

Linux

  1. Install Podman
sudo dnf install podman -y
  1. Confirm installation
podman --version

Mac

  1. Install Podman
brew install podman
  1. Confirm installation
podman --version

Windows

  1. Install podman
choco install podman-cli
  1. Confirm installation
podman --version

Browser Setup

Linux

Firefox is preinstalled on Fedora

Mac

brew install --cask firefox

Windows

choco install firefox -y

There you have it! ๐ŸŽ‰ We have successfully setup our system. ๐Ÿš€โœจ

Written by

Lebogang Phoshoko

On

Fri May 30 2025