Skip to main content

Overview

The dotfiles include comprehensive PATH configurations and installation scripts for multiple programming languages and runtimes. All language tools are properly integrated into the shell environment.

.NET development

Installation

# Arch Linux
yay -S dotnet-runtime dotnet-sdk aspnet-runtime

PATH configuration

.NET tools are added to PATH:
.zshrc
export PATH="~/.dotnet/tools:$PATH"

Usage

dotnet --version
dotnet new console
dotnet build
dotnet run

Custom alias

A special alias for prettier test output:
.zshrc
alias dotnet-test-pretty='dotnet test --no-restore --verbosity=normal | awk '\''...'\'''

Go programming

Installation

# Arch Linux
yay -S go

Environment setup

.zshrc
# Go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

Usage

go version
go mod init myproject
go build
go run main.go
The GOPATH is set to $HOME/go, where all Go packages and binaries will be installed.

Rust development

Installation

Rust is installed via rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Environment setup

Cargo environment is automatically loaded:
.zshrc
# Cargo
[ -s "$HOME/.cargo/env" ] && . "$HOME/.cargo/env"

Usage

rustc --version
cargo --version
cargo new myproject
cargo build
cargo run

Additional tools

Many CLI tools are installed via Cargo:
# Examples from the dotfiles
cargo install eza zoxide

Node.js with NVM

Installation

NVM (Node Version Manager) allows managing multiple Node.js versions:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# Then install LTS version
nvm install --lts

Environment setup

.zshrc
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

Usage

nvm install --lts    # Install latest LTS
nvm install 18       # Install specific version
nvm use 18           # Switch to version 18
nvm list             # List installed versions
node --version
npm --version

Bun JavaScript runtime

Installation

Bun is a fast all-in-one JavaScript runtime:
curl -fsSL https://bun.sh/install | bash

Environment setup

.zshrc
# bun completions
[ -s "/home/jay/.bun/_bun" ] && source "/home/jay/.bun/_bun"

# bun
export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"

Usage

bun --version
bun run index.ts     # Run TypeScript directly
bun install          # Install dependencies
bun test             # Run tests

Fast execution

Bun executes JavaScript/TypeScript much faster than Node.js

Built-in tools

Includes bundler, test runner, and package manager

TypeScript support

Runs TypeScript files without compilation step

NPM compatible

Works with existing NPM packages

Additional package managers

pnpm

.zshrc
export PNPM_HOME="/home/jay/.local/share/pnpm"
case ":$PATH:" in
  *":$PNPM_HOME:"*) ;;
  *) export PATH="$PNPM_HOME:$PATH" ;;
esac

Homebrew

For managing additional development tools:
.zshrc
[ -s "/home/linuxbrew/.linuxbrew/bin/brew" ] && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

Development workflow optimization

1

Install language runtimes

Set up all required languages using the installation commands above
2

Verify PATH configuration

Ensure shell configuration files are properly linked with Stow
3

Restart shell

Source updated configuration: source ~/.zshrc
4

Verify installations

Check versions: dotnet --version, go version, cargo --version, etc.

Tool integration

All language tools integrate with:
  • Neovim/LazyVim: LSP servers auto-configured for each language
  • Tmux: Run development servers in separate panes
  • Lazygit: Manage version control across projects
  • Zsh completions: Tab completion for CLI commands
After installing any new language runtime, restart your shell or run source ~/.zshrc to load the environment changes.
  • Neovim - Editor with LSP support for all languages
  • Lazygit - Git interface for version control

Build docs developers (and LLMs) love