I recently got a new work computer and went through the process of setting it up.
In the likely event that I need to go trough this process again I’ve listed most of the tools and documented the installation process of them.
The list is non-exhaustive as I’m sure I’ve forgotten some kind of obscure linux CLI tool I use once a month.
Whenever I discover something new or swap out a tool I’ll document it here.
My development workflow revolves heavily around WSL so the biggest section is related to getting a nice Linux development environment inside WSL setup.
Hopefully you’ll find something cool in here.
Windows software
- Slack
- Spotify
- Remarkable Companion App
- Brave web browser with extensions:
- Bitwarden as the password manager
- Ublock Origin for blocking ads and trackers
- Dark Reader to make every webpage dark
- Surfingkeys for vim keys
- Obsidian for taking notes
- Syncthing for backing up obsidian and keeping the vault synced between mobile and desktop.
- Motu M Series for my external audiocard
- ShareX for screenshots and screen recording
- PowerShell, newest version
- NerdFonts for beautiful fonts. I prefer JetBrains Mono.
- Alacritty as my WSL terminal emulator
- Visual Studio Code (VSCode)
- 7-Zip instead of winrar
- QGIS for spatial visualization
- WSL2 with the newest available version of Ubuntu
- PowerToys mainly for creating custom window layouts with FancyZones
- win32yank for a functioning clipboard between Windows and WSL terminal
Everything except Syncthing can be installed using winget, copy paste what you want from below:
|
|
Syncthing
the winget installer (v1.27.11) did not work for me, instead use the syncthing windows installer found here:
https://github.com/Bill-Stewart/SyncthingWindowsSetup/
The installer url is from: https://syncthing.net/downloads/
HP machine specific
Powershell script to remove bloatware from hp: https://gist.github.com/mark05e/2db81671f39a041a5992a64a77748dc7
WSL
list available distros:
|
|
Install latest ubuntu version as of september 2024
|
|
The -d
flag lets you specify the distro you want to install instead of installing the default, which might be an outdated ubuntu version.
Programming languages
Python
I use pyenv to manage python versions and poetry to manage dependencies within a project. For pyenv use the automatic installer found here:
|
|
Now install poetry using pipx. If you do not have pipx installed follow the pipx installation instructions. Then install poetry:
|
|
The poetry installation instructions are from here.
Rust
Install rust if you don’t already have it via rustup: https://rustup.rs/ This will also install cargo, the rust package manager which we can use in the next sections.
Go
WSL/Ubuntu guide available here.
Easiest seems to use snap:
|
|
Github CLI
Follow installation notes here: https://github.com/cli/cli#installation see specific instructions for linux here: https://github.com/cli/cli/blob/trunk/docs/install_linux.md
Now you can authenticate with github:
|
|
Dotfiles / Chezmoi
On WSL, seems the easiest is just to use snap
|
|
The --classic
flag makes it behave as a traditionally packaged app which means full access to the system.
Otherwise the snap has read and/or write rights only in its own install space and selected areas.
If you can’t find it after install (chezmoi is unknown command):
The snap binary and desktop directories will not automatically be added to your environment variables.
Adding the snap bin to path resolved it, add this to .zshrc
:
|
|
Now you can clone your dotfiles repo using https (instead of ssh which is the default in chezmoi docs)
|
|
This will place the dotfiles in the chezmoi folder which is ~/.local/share/chezmoi/
You can see changes with:
|
|
And apply them with:
|
|
neovim / Lazyvim
I’m using Neovim with the Lazyvim setup. Lazyvim has two dependencies we need to install first, ripgrep and find files.
ripgrep(rg)
Installation instructions are available here. You can either fetch the latest binary from the release page and replace the url and file in the two lines below
|
|
Or if you have rust installed you can install it with cargo
|
|
find files (fd)
Same general procedure as ripgrep. Installation instructions are available here. find files aka fd installation: Same procedure as ripgrep, find latest release here and replace the url below
|
|
or use cargo (from here):
|
|
Now we have Lazyvim dependencies installed and we can install Neovim. I prefer to build from source in order to get the latest version. First we need to ensure we have build prerequisites installed: https://github.com/neovim/neovim/blob/master/BUILD.md#ubuntu--debian
Now we can follow the quickstart guide here: https://github.com/neovim/neovim/blob/master/BUILD.md
zsh
zsh is one of the few packages where ubuntu has a recent version:
|
|
We can now change the default shell to zsh with:
|
|
Zsh plugins
This section is directly related to my zshell config:
Clone powerlevel10k repo:
|
|
From https://github.com/romkatv/powerlevel10k?tab=readme-ov-file#manual
Install eza which is a modern replacement of ls, follow instructions here: https://github.com/eza-community/eza/blob/main/INSTALL.md#debian-and-ubuntu
The rest of the plugins are installed automatically by zinit.
tmux
Built it from version control, you might need some dependencies listed here: https://github.com/tmux/tmux/wiki/Installing Check the debian section if you’re using ubuntu
|
|
Plugins
tmux plugin manager (tpm) is used to manage plugins (installed separately)
once tmux plugin manager is installed use prefix
+ I
to install the plugins in your tmux.conf
file.
Lazygit
Lazygit is a simple terminal UI for git commands. Build from source is easiest to get the latest version Ensure you have go installed, if not see go section above. Then run:
|
|