Skip to content
/ my-env Public

This repo contains opinionated and work-in-progress settings for my environment. You will find the tools, extensions, and configurations I use. The right tools configured the right way can increase our productivity, and that is what I am looking for here.

License

Notifications You must be signed in to change notification settings

glzbcrt/my-env

Repository files navigation

My Environment

tools

Hello!

This repo contains opinionated and work-in-progress settings for my environment. You will find the tools, extensions, and configurations I use. The right tools configured the right way can increase our productivity, and that is what I am looking for here. I am not saying my environment is perfect.

The image below shows what my terminal looks like.

terminal

And this is what my Visual Studio Code looks like. For the ones who love dark themes, I had my time using dark themes, and now I am back to light themes! Do not judge me!

vscode

Take a look, and if you like what you see, please give me a star! :)

Install

To install, follow these steps:

  1. Install a font from Nerd Fonts. I use CaskaydiaCove Nerd Font on Windows Terminal and Visual Studio Code.
  2. Clone the repo wherever you want.
  3. Open an elevated Command Prompt and go to the directory where you cloned.
  4. Execute setup.cmd. It will create some symlinks to point the tools to this repo.
  5. Follow the remaining sections here to install and configure the tools.

Windows Features

The Windows features below are the only ones I have enabled.

  • Containers
  • Hyper-V
  • Microsoft Print to PDF
  • Print and Document Services
  • Remote Differential Compression API Support
  • SMB Direct
  • Telnet Client
  • Virtual Machine Platform
  • Windows Hypervisor Platform
  • Windows Sandbox (take a look at the downloads.wsb file for a sample sandbox)
  • Windows Subsystem for Linux

Winget

I use winget to install most of my applications. Below, you can find the ones I use formatted as command line ready for use. They are grouped by subject.

# Kubernetes
winget install Helm.Helm
winget install Kubernetes.kubectl

# Git & GitHub
winget install Git.Git
winget install GitHub.GitLFS
winget install GitHub.cli

# Machine Learning
winget install LutzRoeder.Netron

# Gaming
winget install Valve.Steam
winget install EpicGames.EpicGamesLauncher

# Shell
winget install Microsoft.PowerShell
winget install JanDeDobbeleer.OhMyPosh
winget install Neovim.Neovim

# General
winget install RARLab.WinRAR
winget install Microsoft.VisualStudioCode
winget install AgileBits.1Password
winget install WhatsApp.WhatsApp
winget install HHDSoftware.FreeHexEditorNeo
winget install Adobe.Acrobat.Reader.64-bit
winget install OBSProject.OBSStudio
winget install Google.GoogleDrive
winget install Microsoft.PowerToys
winget install Audacity.Audacity
winget install SweetScape.010Editor
winget install GIMP.GIMP
winget install JGraph.Draw

# Best video player PERIOD
winget install VideoLAN.VLC

# Best bookmark manager ever!
winget install RustemMussabekov.Raindrop

# Windows Subsystem for Linux. 9PKR34TNCV07 is Kali Linux from Microsoft Store.
winget install Canonical.Ubuntu.2204
winget install 9PKR34TNCV07

# CLI to manage the best cloud! :)
winget install Microsoft.AzureCLI

# Who doesn't love low level stuff?
winget install Microsoft.WinDbg
winget install Hex-Rays.IDA.Free

# General Developer Tools
winget install DBBrowserForSQLite.DBBrowserForSQLite
winget install BurntSushi.ripgrep.MSVC
winget install Docker.DockerDesktop
winget install Microsoft.VisualStudio.2022.Community --override "--quiet --add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Workload.NativeCrossPlat"
winget install Kitware.CMake

# .NET development.
winget install Microsoft.DotNet.SDK.7
winget install icsharpcode.ILSpy

# Rust
winget install Rustlang.Rustup

# Go
winget install GoLang.Go

# Node.js
winget install OpenJS.NodeJS.LTS

# I love games, so I have a gamer PC and need to install these ones.
# 9NFKC78BRS8W  is Kingston FURY CTRL from Microsof Store.
winget install 9NFKC78BRS8W 
winget install Corsair.iCUE.4
winget install Elgato.StreamDeck

Python

I am studying artificial intelligence, so I must master Python. I also use winget to install Python, and I keep the last three versions installed.

winget install Python.Python.3.10
winget install Python.Python.3.11
winget install Python.Python.3.12

To manage the many versions installed, I use Python Launcher. At the command line, I use the following to specify which Python to use.

py -3.11 -m pip list

For my projects, I am using pipenv to manage dependencies and environments. I also use the excellent Visual Studio Code extension Python Environment Manager.

Git Configuration

Below is my Git configuration. I configure my name and email, turn off any line-breaking handling, and consider all directories safe.

git config --global user.name "George Luiz Bittencourt"
git config --global user.email "george@georgeluiz.com"
git config --global core.autocrlf false
git config --global --add safe.directory *

1Password and Git SSH Integration

I use 1Password to manage my passwords and I ๐Ÿ˜ this tool! I have been using it for the last four years, and it is worth every penny. One feature I like is the SSH agent it has so that I can store my key pairs inside it, and SSH can use it transparently.

However, Git for Windows has its own SSH installed, and this version does not use the SSH agent from 1Password. To fix that, I had to specify globally what SSH to use using the command line below.

git config --global core.sshCommand C:/Windows/System32/OpenSSH/ssh.exe

Windows Terminal

Microsoft invested a lot in Windows Terminal, and today, there is no better terminal! It is an open-source project, has many features, and is fully customizable.

My configuration file is here. My customizations are:

  • The number of columns (220) and rows (60) are customized for my screen resolution. I use a QHD resolution, so I have much more space.
  • Add an entry in the command palette for each profile with the _ prefix to find them easily.
  • F1 will open the command palette. I use the same shortcut for Visual Studio Code and Windows Terminal.
  • F2 will duplicate my terminal.
  • F3 will open the search box.
  • F4 will close the current terminal.
  • F9 will open a new PowerShell tab.
  • F10 will open a new Ubuntu tab.
  • F11 will open a new Kali Linux tab.

Oh My Posh

Oh My Posh is the best companion for Windows Terminal and PowerShell. You can download it from here, and my configuration file is here.

I customized it based on a template I liked and added several segments to provide context for my tools. The customizations are:

  1. It will show my current Azure subscription.
  2. My current Kubernetes context is shown.
  3. Python version and environment will be shown as well.
  4. The Git integration is fantastic. It will show my current branch, the difference between local and remote clones, etc.

Environment Variables

These are the environment variables I have defined to customize my environment.

Env Var Content Description
HF_DATASETS_CACHE datasets dir path Directory where the Hugging Face datasets lib will save the downloaded datasets.
_NT_SYMBOL_PATH check the section Debugging Symbols Path where tools like WinDbg, and NVIDIA Nsight can find debugging symbols on Windows.

Debugging Symbols

I love debugging, and all the low level stuff we need to know to do that. For a successfully debugging session we need the debugging symbols (PDB files on Windows) generated during the build process. Microsoft publishes symbols for their software, and other companies are also doing that.

To use these symbols we must define the symbol path. This path is like a PATH on Windows or Linux, which is a list of paths where the symbols can be found. Below I am documenting the ones I am using.

  1. Microsoft
  2. NVIDIA
  3. Python

From all these symbols stores, my final symbol path is:

C:\dev\python\311\DLLs;C:\dev\python\311;srv*D:\symbols*https://msdl.microsoft.com/download/symbols*https://driver-symbols.nvidia.com

Bash functions

I have developed the functions below to facilitate my work. I will add more functions as needed. You can find their source code here. Simply load this file from your .bashrc file.

  1. pinfo
  2. cinfo

PowerShell

PowerShell is my official shell (I am still thinking if I will adopt it in Linux instead of bash/zsh), and it is amazing to see how it evolved. With PowerShell Core it is possible to use it in Linux, too! :)

You can find my customized profile here. The customizations I created are:

  • I use the famous Terminal-Icons module to include icons in my directory listing.
  • The module PSReadLine is configured to show in listview format my history as soon as I start typing a command from my history.
  • CTRL+B will open the current directory in File Explorer.
  • CTRL+G will jump to my projects directory.
  • It will load Oh My Posh.
  • I have the following aliases for common commands/actions:
Alias Command
k kubectl
d docker
he helm
g git
t terraform
vi vim
l Get-ChildItem
ll Get-ChildItem
kctx kubectx
kns kubens
gcl git clone
gs git status
kaf k apply -f
kgp k get pods
kgd k get deployment -n
gcoph git add -A; git commit -m ; git push
kcreds az aks get-credentials
vs add Visual Studio tools to the path

Before I can use my customized PowerShell, I must install the following modules:

Install-Module -Name Terminal-Icons -Repository PSGallery
Install-Module -Name Az -Repository PSGallery -Force

Visual Studio Code

Here, you will find the Visual Studio Code extensions I use and recommend. I have split them between profiles to lower the number of extensions loaded. You can download my profiles here and load them into your Visual Studio Code.

I use Settings Sync to keep my settings synchronized between the computers I use and GitHub Codespaces. You can find my settings here.

The table below shows all my extensions I use organized by type and profile.

Id Name Type Profile
42crunch.vscode-openapi OpenAPI (Swagger) Editor API Default
adamhartford.vscode-base64 vscode-base64 Productivity Default
azapi-vscode.azapi Terraform AzApi Provider IaC Default
bierner.github-markdown-preview GitHub Markdown Preview Markdown Default
charliermarsh.ruff Ruff Python Default
codezombiech.gitignore gitignore Git Default
DavidAnson.vscode-markdownlint markdownlint Markdown Default
donjayamanne.githistory Git History Git Default
donjayamanne.python-extension-pack Python Extension Pack Python Default
eamodio.gitlens GitLens โ€” Git supercharged Git Default
editorconfig.editorconfig EditorConfig for VS Code Productivity Default
esbenp.prettier-vscode Prettier - Code formatter Productivity Default
GitHub.codespaces GitHub Codespaces GitHub Default
GitHub.copilot GitHub Copilot GitHub Default
github.github-vscode-theme GitHub Theme Themes Default
github.remotehub GitHub Repositories GitHub Default
github.vscode-github-actions GitHub Actions GitHub Default
github.vscode-pull-request-github GitHub Pull Requests and Issues GitHub Default
GrapeCity.gc-excelviewer Excel Viewer Productivity Default
Gruntfuggly.todo-tree Todo Tree Productivity Default
hashicorp.terraform HashiCorp Terraform IaC Default
heaths.vscode-guid Insert GUID Productivity Default
humao.rest-client REST Client Productivity Default
ipedrazas.kubernetes-snippets Kubernetes Support Kubernetes Default
lunuan.kubernetes-templates Kubernetes Templates Kubernetes Default
mads-hartmann.bash-ide-vscode Bash IDE Shell Default
mhutchie.git-graph Git Graph Git Default
ms-azure-devops.azure-pipelines Azure Pipelines Azure DevOps Default
ms-azuretools.vscode-apimanagement Azure API Management Azure Default
ms-azuretools.vscode-azurefunctions Azure Functions Azure Default
ms-azuretools.vscode-azureterraform Azure Terraform IaC Default
ms-azuretools.vscode-bicep Bicep IaC Default
ms-azuretools.vscode-docker Docker Container Default
ms-dotnettools.dotnet-interactive-vscode Polyglot Notebooks Notebook Default
ms-kubernetes-tools.vscode-aks-tools Azure Kubernetes Service Azure Default
ms-kubernetes-tools.vscode-kubernetes-tools Kubernetes Kubernetes Default
mikestead.dotenv DotENV Productivity Default
tamasfe.even-better-toml Even Better TOML Productivity Default
ms-python.autopep8 autopep8 Python Default
ms-python.isort isort Python Default
ms-python.mypy-type-checker Mypy Type Checker Python Default
ms-toolsai.jupyter Jupyter Notebook Default
ms-toolsai.vscode-ai Azure Machine Learning Azure Default
ms-toolsai.vscode-ai-remote Azure Machine Learning - Remote Azure Default
ms-vscode-remote.vscode-remote-extensionpack Remote Development Productivity Default
ms-vscode.hexeditor Hex Editor Productivity Default
ms-vscode.powershell PowerShell Shell Default
ms-vsliveshare.vsliveshare Live Share Productivity Default
msazurermtools.azurerm-vscode-tools Azure Resource Manager (ARM) Tools IaC Default
okteto.kubernetes-context Kubernetes Context Kubernetes Default
quicktype.quicktype Paste JSON as Code Development Default
redhat.ansible Ansible IaC Default
redhat.vscode-xml XML Productivity Default
redhat.vscode-yaml YAML Productivity Default
rosshamish.kuskus-kusto-syntax-highlighting [Kuskus] Kusto Syntax Highlighting Azure Default
streetsidesoftware.code-spell-checker Code Spell Checker Productivity Default
shakram02.bash-beautify Bash Beautify Shell Default
tyriar.sort-lines Sort lines Productivity Default
visualstudioexptteam.vscodeintellicode IntelliCode Productivity Default
vscode-icons-team.vscode-icons vscode-icons Theme Default
william-voyek.vscode-nginx NGINX Configuration NGINX Default
dbaeumer.vscode-eslint ESLint Linter Javascript
xabikos.JavaScriptSnippets JavaScript (ES6) code snippets Snippers Javascript
golang.go Go Go Go
rust-lang.rust-analyzer rust-analyzer Rust Rust
ms-vscode.cpptools-extension-pack C/C++ Extension Pack C++ & CUDA C++ & CUDA
nvidia.nsight-vscode-edition Nsight Visual Studio Code Edition C++ & CUDA C++ & CUDA
ms-vscode.makefile-tools Makefile Tools C++ & CUDA C++ & CUDA
ms-dotnettools.csharp C# C# C#
ms-dotnettools.csdevkit C# Dev Kit C# C#

Thanks

I hope you got here and enjoyed it! As I told you in the beginning, this is a work in progress, so I will be updating it from time to time to reflect the changes I applied.

Thanks!

About

This repo contains opinionated and work-in-progress settings for my environment. You will find the tools, extensions, and configurations I use. The right tools configured the right way can increase our productivity, and that is what I am looking for here.

Topics

Resources

License

Stars

Watchers

Forks