Skip to content

Repository files navigation

Setup

Ubuntu 24.04

  • Install WSL

    Open PowerShell in Administrator mode. (Win+X)

    wsl --install

    Will need a reboot.

  • Customise

    My personal bootstrap for a vanilla WSL2 installation of the Ubuntu 24.04 distro from the Microsoft Store.

    bash <(curl -sSL https://raw.githubusercontent.com/richeney/setup/master/bootstrap.sh)
  • WSL Comfort Shell (optional, alongside bootstrap)

    This repo now selectively adopts WindowsDeveloperConfig:

    • ✅ Use wsl-comfort and language workloads
    • ❌ Skip the full upstream windows-dev-config/dev-config.winget baseline (too opinionated for this setup)

    Overlap with this repo:

    • playbook.yml + bashrc_user_customisations already set up many CLI tools and shell tweaks
    • this repo currently uses Oh My Posh; WSL Comfort uses Starship

    Decision: keep this bootstrap as the default and use WSL Comfort as an optional profile when you want Starship + comfort-shell defaults.

    # clone and run from a local checkout of WindowsDeveloperConfig
    git clone https://github.com/microsoft/WindowsDeveloperConfig.git
    cd .\WindowsDeveloperConfig
    .\wsl-comfort\install.ps1 -NonInteractive
  • Oh My Posh

    Not working?

    sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -O /usr/local/bin/oh-my-posh
    sudo chmod +x /usr/local/bin/oh-my-posh
    mkdir ~/.poshthemes
    wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip -O ~/.poshthemes/themes.zip
    unzip ~/.poshthemes/themes.zip -d ~/.poshthemes
    chmod u+rw ~/.poshthemes/*.omp.*
    rm ~/.poshthemes/themes.zip
    wget https://raw.githubusercontent.com/richeney/setup/master/azurecitadel.omp.json -O ~/.poshthemes/azurecitadel.omp.json

Windows

  • ⚠️ Login to the Windows Store using your Microsoft ID

  • Install App Installer

    This includes the production version of winget. (Alternative installs.)

  • Update winget settings

    PowerShell in Administrator mode.

    winget settings

    And choose Notepad, just this once.

  • Paste custom settings

    {
        "$schema": "https://aka.ms/winget-settings.schema.json",
        "source": {
           "autoUpdateIntervalInMinutes": 5
        },
        "visual": {
            "progressBar": "rainbow"
        },
        "installBehavior": {
            "preferences": {
                "scope": "user",
                "locale": [ "en-GB", "en-US" ]
            }
        }
    }
  • Update source

    winget source update
  • Preferred install path: winget configure

    Enable once, then apply the repo config:

    winget configure --enable
    winget configure -f .\windows\setup.winget --accept-configuration-agreements --disable-interactivity

    .\windows\setup.winget includes:

    • existing Windows package baseline from this README
    • Microsoft.Coreutils
    • language workloads aligned to WindowsDeveloperConfig:
      • Node.js LTS + global TypeScript
      • Python 3.13 + uv
      • .NET SDK 10
      • Rust (rustup stable)
      • Go
  • List installed apps

    winget list
  • Uninstall apps

    ## winget uninstall "Cortana"
    winget uninstall "MSN Weather"
    winget uninstall "Solitaire & Casual Games"
    ## winget uninstall "Mixed Reality Portal"
    ## winget uninstall "Skype"
    ## winget uninstall "Windows Maps"
    ## winget uninstall "Xbox Game Bar Plugin" ## the overlay conflicts with the mic
    ## winget uninstall "Xbox Game Bar"
    ## winget uninstall "OneNote for Windows 10"
    ## winget uninstall "Microsoft OneNote - en-gb" # removing all of office?
    ## winget uninstall MicrosoftTeams_8wekyb3d8bbwe
    ## winget uninstall Microsoft.Teams
    ## winget uninstall "Mail and Calendar"
    ## winget uninstall "Teams Machine-Wide Installer"
  • Install software (fallback/manual reference)

    ⚠️ Check the desktop - Reset my PC now adds a list of the software that was lost. Update the winget list below.

    # Dev tools
    winget install --exact --id "Git.Git" --accept-source-agreements --accept-package-agreements --silent
    winget install --exact --id "GitHub.cli" --silent
    winget install --exact --id "GitHub.Copilot" --silent
    winget install --exact --id "Microsoft.AzureCLI" --silent
    winget install --exact --id "Microsoft.Azure.StorageExplorer" --silent
    winget install --exact --id "Microsoft.Azure.FunctionsCoreTools" --silent
    winget install --exact --id "Microsoft.devtunnel" --silent
    winget install --exact --id "Microsoft.AzureVPNClient" --silent
    winget install --exact --id "CoreyButler.NVMforWindows" --silent
    winget install --exact --id "Python.Python.3.12" --silent
    winget install --id Microsoft.Powershell --source winget --silent
    
    # Editors & productivity
    winget install --exact --id XP9KHM4BK9FZ7Q --source msstore --accept-package-agreements # Visual Studio Code
    winget install --exact --id XP89DCGQ3K6VLD --source msstore --accept-package-agreements # PowerToys
    winget install --exact --id "Notion.Notion" --silent
    winget install --exact --id "Espanso.Espanso" --silent
    winget install --exact --id "FilesCommunity.FilesPreview" --silent
    winget install --exact --id "Google.Chrome.EXE" --silent
    
    # Hardware / peripherals
    winget install --exact --id "Logitech.LogiTune" --silent
    winget install --exact --id "Logitech.OptionsPlus" --silent
    winget install --exact --id "Dell.DisplayAndPeripheralManager" --silent
    winget install --exact --id "RODE.RODECentral" --silent
    winget install "HP Smart" --source msstore --accept-package-agreements
    
    # Media & entertainment
    winget install "Netflix" --accept-package-agreements
    winget install "Amazon Prime" --accept-package-agreements
    winget install "Disney+" --accept-package-agreements
    ## winget install "Tidal" --source msstore --accept-package-agreements
    winget install --exact --id 9NKSQGP7F2NH --source msstore --accept-package-agreements # WhatsApp

    Most of these will require authentication credentials and/or further configuration.

  • Update all packages

    winget upgrade --silent --all
  • Modify Startup apps in settings

  • Update Zorloo driver

Add the Az module

  • Reopen Windows Terminal

  • Open PowerShell 7

    pwsh
  • Trust the PSGallery

    Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted
  • Install the module

    Install-Module Az -Force

    There is usually an older version (e.g. 4.6.1) of the module installed.

  • Import the module

    Import-Module Az

Customisation

  • Settings in Windows 11
    • Systems > Multi-Tasking
      • Desktops - Show all open windows --> On all desktops
      • Alt-Tab - Open Windows and 3 most recent tabs
      • Title bar shake: toggle on
    • Bluetooth & Devices > Touchpad - set three finger gestures to switch desktops

Settings in Windows Terminal

In lieu of roaming settings.json.

  • actions array

    [{"command":{"action":"copy","singleLine":false},"id":"User.copy.644BA8F2"},{"command":"paste","id":"User.paste"},{"command":"toggleFocusMode","id":"User.toggleFocusMode"},{"command":"find","id":"User.find"},{"command":{"action":"splitPane","split":"auto","splitMode":"duplicate"},"id":"User.splitPane.A6751878"},{"command":{"action":"globalSummon","toggleVisibility":true,"desktop":"toCurrent","monitor":"toMouse","dropdownDuration":0},"id":"User.globalSummon.51A3D78C"}]
  • keybindings

    [{"id":"User.toggleFocusMode","keys":"ctrl+alt+f"},{"id":"User.copy.644BA8F2","keys":"ctrl+c"},{"id":"User.globalSummon.51A3D78C","keys":"win+sc(41)"},{"id":"User.find","keys":"ctrl+shift+f"},{"id":"User.paste","keys":"ctrl+v"},{"id":"User.splitPane.A6751878","keys":"alt+shift+d"}]
  • profiles.defaults object

    {"antialiasingMode":"cleartype","closeOnExit":"graceful","colorScheme":"Relaxed","cursorShape":"bar","font":{"face":"Ubuntu Mono","size":14,"weight":"normal"},"padding":"12","scrollbarState":"hidden","useAcrylic":true}
    
    
  • Add the Relaxed color scheme into the JSON (within Schemes)

            {
                "background": "#282828",
                "black": "#282828",
                "blue": "#6A8799",
                "brightBlack": "#616161",
                "brightBlue": "#7EAAC7",
                "brightCyan": "#ACBBD0",
                "brightGreen": "#A0AC77",
                "brightPurple": "#B06698",
                "brightRed": "#BC5653",
                "brightWhite": "#F7F7F7",
                "brightYellow": "#EBC17A",
                "cursorColor": "#FFFFFF",
                "cyan": "#C9DFE1",
                "foreground": "#D9D9D9",
                "green": "#909D63",
                "name": "Relaxed",
                "purple": "#B06598",
                "red": "#BC5653",
                "selectionBackground": "#FFFFFF",
                "white": "#D9D9D9",
                "yellow": "#EBC17A"
            }
  • Re-prettify with CTRL+ALT+M if you have JSON Tools in vscode.

PowerShell in WSL2 with ARM64

This is for the Snapdragon Surface Laptop 7

Based on and

# Download the powershell '.tar.gz' archive from https://github.com/PowerShell/PowerShell/releases
curl -L -o /tmp/powershell.tar.gz https://github.com/PowerShell/PowerShell/releases/download/v7.5.0/powershell-7.5.0-linux-arm64.tar.gz
sudo mkdir -p /opt/microsoft/powershell/7
sudo tar zxf /tmp/powershell.tar.gz -C /opt/microsoft/powershell/7
sudo chmod +x /opt/microsoft/powershell/7/pwsh
sudo ln -s /opt/microsoft/powershell/7/pwsh /usr/bin/pwsh

Bicep in WSL2 on ARM64

mkdir ~/.azure/bin && cd ~/.azure/bin
wget https://github.com/Azure/bicep/releases/latest/download/bicep-linux-arm64 -O bicep && chmod +x bicep

Then add the directory to your path.

Finishing up

OK, should be done. Perhaps some authentication to do within the winget installed apps, but nothing major.

Check out the recover if you need to get back some files from the pre-refresh WSL environment.

About

My personal setup for Windows 11 including Ubuntu in WSL2

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages