{"id":18176704,"url":"https://github.com/jayllyz/setupwsl","last_synced_at":"2025-07-07T22:07:36.370Z","repository":{"id":133066350,"uuid":"586056108","full_name":"Jayllyz/setupWSL","owner":"Jayllyz","description":"Explained setup and configuration of WSL.","archived":false,"fork":false,"pushed_at":"2024-12-24T12:50:00.000Z","size":74,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-06T04:11:35.419Z","etag":null,"topics":["linux","ubuntu","windows-subsystem-linux","wsl","wsl2","zsh"],"latest_commit_sha":null,"homepage":"https://jayllyz.github.io/setupWSL/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jayllyz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-06T20:27:52.000Z","updated_at":"2024-12-24T22:32:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"872e3970-73c8-40a3-87e7-11dc66b15b3d","html_url":"https://github.com/Jayllyz/setupWSL","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Jayllyz/setupWSL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jayllyz%2FsetupWSL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jayllyz%2FsetupWSL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jayllyz%2FsetupWSL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jayllyz%2FsetupWSL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jayllyz","download_url":"https://codeload.github.com/Jayllyz/setupWSL/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jayllyz%2FsetupWSL/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264152268,"owners_count":23564909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["linux","ubuntu","windows-subsystem-linux","wsl","wsl2","zsh"],"created_at":"2024-11-02T17:11:15.883Z","updated_at":"2025-07-07T22:07:36.339Z","avatar_url":"https://github.com/Jayllyz.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# setupWSL\n\n![GitHub last commit (by committer)](https://img.shields.io/github/last-commit/jayllyz/setupWSL)\n[![Super-Linter](https://github.com/jayllyz/setupWSL/actions/workflows/lint.yml/badge.svg)](https://github.com/marketplace/actions/super-linter)\n\n- [setupWSL](#setupwsl)\n  - [What is WSL? :thinking:](#what-is-wsl-thinking)\n  - [Installation :computer:](#installation-computer)\n  - [Configuration :wrench:](#configuration-wrench)\n    - [Terminal](#terminal)\n    - [Better terminal with Zsh](#better-terminal-with-zsh)\n    - [Configuration](#configuration)\n  - [Useful Tools and Informations](#useful-tools-and-informations)\n  - [Thank you for reading! :sparkles:](#thank-you-for-reading-sparkles)\n\n## What is WSL? :thinking:\n\nThe Windows Subsystem for Linux (WSL) is a feature of Windows that allows you to run native Linux command-line tools directly on Windows. It provides a Linux-compatible kernel interface developed by Microsoft, which allows you to use Linux applications on Windows.\n\nThis means that you can use Linux tools and utilities at the same level of performance as if they were running on a native Linux system, which is way better than using a virtual machine.\n\nlearn more [here](https://learn.microsoft.com/en-us/windows/wsl/about). :book:\n\n## Installation :computer:\n\n1. Open PowerShell as Administrator and run:\n\n   - Default distribution is Ubuntu if you want another one use : `wsl --install -d \u003cDistribution name\u003e`\n   - To see all available distribution use : `wsl --list --online`\n\n   ```powershell\n   wsl --install\n   ```\n\n     \u003e ℹ️ Later you can update wsl in Microsoft store or by using `wsl --update` in powershell/cmd.\n\n2. Restart your computer.\n\n3. Search the distribution you have chosen in the Start menu and run it.\n\n4. When installed, you will be prompted to create a new user account and password. This will be the user account you will use to log in to your Linux distribution.\n\n## Configuration :wrench:\n\n### Terminal\n\n   I recommend using [Windows Terminal](https://aka.ms/terminal) or [WezTerm](https://wezfurlong.org/wezterm/), they are both great and have a lot of features to enhance your development experience.\n\n   Recommend to use a [Nerd Fonts](https://www.nerdfonts.com/font-downloads) for icons support (JetBrains Mono is a good choice).\n\n### Better terminal with Zsh\n\n1. Install [Zsh](https://zsh.sourceforge.io/) \u0026 [cURL](https://curl.se/).\n\n   ```bash\n   # Zsh is a shell designed for interactive use, you can have plugins, themes, etc.\n   sudo apt update \u0026\u0026 sudo apt upgrade -y\n   sudo apt install zsh curl -y\n   ```\n\n2. Install [Oh My Zsh](https://ohmyz.sh/).\n\n   ```bash\n   # Oh My Zsh is an open source, community-driven framework for managing your Zsh configuration.\n   sh -c \"$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\"\n   ```\n\n3. Install Zsh plugins, you can find more plugins [here](https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins).\n\n   ```bash\n   git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions\n   git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting\n   ```\n\n   Then add the following line to your `~/.zshrc file` :\n\n   ```bash\n   plugins=(git zsh-autosuggestions zsh-syntax-highlighting)\n   ```\n\n4. *(optional)* Install [starship](https://starship.rs/).\n\n   ```bash\n   # Starship is a minimal, fast, and customizable prompt\n   curl -fsSL https://starship.rs/install.sh | bash\n   ```\n\n   Then add the following line at the end of your `~/.zshrc` file :\n\n   ```bash\n   eval \"$(starship init zsh)\"\n   ```\n\n   Then you need to set your Zsh theme to an empty string in your `~/.zshrc` file :\n\n   ```bash\n   ZSH_THEME=\"\"\n   ```\n\n   For more information about starship, refer to the [starship documentation](https://starship.rs/).\n\n5. [Nano](https://www.nano-editor.org/) configuration.\n   \u003e Configuring Nano is optional, you can use another editor like Vim, Emacs, if you prefer.\n\n   ```bash\n   nano ~/.nanorc\n\n   # Add this in the file :\n   set atblanks\n   set mouse\n   set cutfromcursor\n   set softwrap\n   set tabsize 4\n   set tabstospaces\n   include \"/usr/share/nano/*.nanorc\"\n   set speller \"aspell -x -c\"\n   set constantshow\n   set linenumbers\n   set casesensitive\n   set historylog\n   set positionlog\n   set smarthome\n   set zap\n   set autoindent\n   bind ^C copy main # CTRC+C - Copy\n   bind ^V paste all # CTRL+V - Past\n   bind ^S savefile main # CTRL+S - Save\n   ```\n\n### Configuration\n\n1. Install build essential. (gcc, g++, make, must have for development)\n\n   ```bash\n   sudo apt install build-essential -y\n   ```\n\n2. Install Git.\n\n   ```bash\n   sudo apt install git -y\n   git config --global user.email 'your email'\n   git config --global user.name 'your name'\n   ```\n\n3. Install [Docker Desktop](https://docs.docker.com/desktop/wsl/)\n\n   \u003e Docker Desktop uses the dynamic memory allocation feature in WSL 2 to optimize resource consumption.\u003cbr\u003e\n   \u003e For more information, refer to the [Working with Docker \u0026 WSL documentation](https://docs.docker.com/desktop/wsl/).\n\n4. Tool versioning.\n\n   \u003e Managing version of tools is usefull for development, my favorite tool for this is [proto](https://moonrepo.dev/proto). \u003cbr\u003e\n   \u003e\n   \u003e If you only need to manage Node.js version, you can use [fnm](https://github.com/Schniz/fnm).\n\n   ```bash\n   # Requirements\n   sudo apt install unzip gzip xz-utils -y\n\n   curl -fsSL https://moonrepo.dev/install/proto.sh | bash\n\n   proto setup\n\n   # Install what you need :\n   proto install node lts\n   proto install python \n   ```\n\n   You can find more information about proto [here](https://moonrepo.dev/proto).\n\n5. Update, upgrade and clean package list.\n\n   ```bash\n   sudo apt update \u0026\u0026 sudo apt upgrade -y \u0026\u0026 sudo apt autoremove\n   ```\n\n## Useful Tools and Informations\n\n\u003e [!NOTE]\n\u003e There are numerous useful tools you can install to enhance your experience on Linux and WSL [link](more.md). \u003cbr\u003e\n\u003e Microsoft has also created a guide to help you maximize the benefits of WSL if you use VS Code [link](https://docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-vscode). \u003cbr\u003e\n\u003e\n\u003e When working with WSL, always clone or create your projects inside the Linux file system, \u003cbr\u003e otherwise performance may significantly decrease, and certain features might not work properly (e.g: hot reloading).\u003cbr\u003e\n\u003e For more information, refer to the [Docker best practices documentation](https://docs.docker.com/desktop/wsl/best-practices/).\n\n## Thank you for reading! :sparkles:\n\n**[`^ back to top ^`](#setupwsl)**\n\nYou are now ready to start developing on WSL! :tada:\n\nMade with :heart: by [@Jayllyz](https://github.com/Jayllyz)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjayllyz%2Fsetupwsl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjayllyz%2Fsetupwsl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjayllyz%2Fsetupwsl/lists"}