My Dev Environment Setup
I recently installed a new OS on my machine and decided to document my setup process.
OS
NAME="Pop!_OS"
VERSION="22.04 LTS"
ID=pop
ID_LIKE="ubuntu debian"
Terminal Setup: Wezterm
- Download wezterm: Wezterm installation
- Make appimage executable:
chmod +x wezterm.appimage - Move appimage to bin:
sudo mv wezterm.appimage /usr/local/bin/wezterm - Add config file: Wezterm Config
CLI Tools
- NVM (Node manager):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash - LazyGit (Git TUI): Repo
- FZF (Filter program):
sudo apt install fzf - Zoxide (Better cd):
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh - Bpytop (Resource monitoring):
sudo apt install bpytop - OneFetch (Git info): Repo
- RipGrep (Search tool):
sudo apt-get install ripgrep - LazyDocker (Docker TUI): Repo
- DirEnv (Env manager): Repo
Shell Setup: Oh My Zsh
- Download zsh:
sudo apt install zsh - Make it default shell:
chsh -s $(which zsh) - Restart the machine and check:
echo $SHELL - Install oh-my-zsh: Repo
- Add config file (Require CLI tools installation): Zsh Config
Editor Setup: Neovim
- Download neovim: Latest Neovim releases
- Run:
chmod u+x nvim-linux-x86_64.appimage - Move to bin:
sudo mv nvim-linux-x86_64.appimage /usr/local/bin/nvim - Clone config to
~/.config/nvim: IndieCoderMM/nvim-config - Run
nvimto setup and install deps.
# Main plugins
1. Lazy
2. NeoTree
3. Mason
4. Telescope
5. Nvim-Cmp
6. Mini (ai, surround, jump2d)
7. Harpoon
8. Kulala
9. GitSigns
10. NvChad-Ui
11. FriendlySnippets
12. TodoComments
13. Treesitter
15. WhichKey
Key swap: CapsLock to Esc
- Download gnome-tweaks:
sudo apt install gnome-tweaks - Run gnome-tweaks:
gnome-tweaks - Go to Keyboard & Mouse > Additional Layout
- Change Caps Lock Behavior
Nerd Font
- Run nerd font installer: NF Installer
- Choose font: Caskaydia Cove Nerd Font
Android Development Setup
JDK Installation
- Update and search for JDK:
sudo apt-get update && apt search openjdk - Install JDK:
sudo apt-get install openjdk-21-jdk - Check installation:
java -version
Android SDK Setup
- Download the latest version of cmd tools: Android CMD tools
- Make a new Android SDK folder:
mkdir -p ~/Android/Sdk/cmdline-tools - Extract the downloaded file to the new folder.
unzip -d ~/Android/Sdk/cmdline-tools ~/Downloads/android-cmd-tools.zip - Rename the folder:
mv ~/Android/Sdk/cmdline-tools/cmdline-tools/ ~/Android/Sdk/cmdline-tools/latest - Add the following to
.zshrcor.bashrc:
export PATH=~/Android/Sdk/cmdline-tools/latest/bin:~/Android/Sdk/emulator:~/Android/Sdk/platform-tools:$PATH
export ANDROID_HOME=~/Android/Sdk
Emulator Setup
- List available system images:
sdkmanager --list - Install the desired version:
sdkmanager "emulator" "platform-tools" "platforms;android-36" "system-images;android-36;google_apis;x86_64" - List available devices:
avdmanager list device - Setup AVD with a device:
avdmanager -v create avd -n Android_API_36_Google -k "system-images;android-36;google_apis;x86_64" -d pixel_c - Run the emulator:
emulator -avd Android_API_36_Google - Configure the device in
~/.android/avd/Android_API_36_Google.avd/config.ini: - Enable this line to direct key events to emulator:
hw.keyboard = yes
Source: Minimal CLI Android Emulator
Obsidian Setup
- Download obsidian app image: Obsidian
- Make it executable:
chmod +x Obsidian.AppImage - Move to
Appsfolder:mv Obsidian.AppImage ~/Apps/ - Create a desktop entry in
~/.local/share/applications/obsidian.desktop:
[Desktop Entry]
Name=Obsidian
Exec=/home/indie/Apps/Obsidian.AppImage
Icon=/home/indie/Apps/Obsidian.AppImage
Type=Application
Categories=Utility;
- Make it executable:
chmod +x ~/.local/share/applications/obsidian.desktop - Update desktop db:
update-desktop-database ~/.local/share/applications
Docker Setup
- Download and install docker engine: Docker Engine
- Add your user to the docker group:
sudo usermod -aG docker $USER - Apply the change:
newgrp docker - Check docker installation:
docker run hello-world - Log out and log back in to apply the group changes.
That’s all for now. I’ll update this post as I add more tools to my setup.