/dotfiles

Vim, Bash, Git and other configurations!

Primary LanguageShellGNU General Public License v3.0GPL-3.0

dotfiles

On Linux I mostly use GNU Bash and edit in neovim. I prefer GNOME or Pop!_OS for a graphical environment because those are the only two I've used that I know how to configure basic keybinds for.

I either use the gnome-terminal default or alacritty for a terminal emulator. wezterm is another good option that I haven't tried yet.

Recently I've been trying to stand up a usable Windows environment. On Windows I use Windows Terminal for an emulator and default it to PowerShell.

Below are some notes on setup scripts and configuration files contained in the repository.

Usage

Bash scripts can be found in the bash directory and PowerShell scripts can be found in the ps1 directory.

Sripts generally have the form *_(setup|install).(sh|ps1) and the script contents leverage some common shell functions in most cases so they're easier to read and understand.

Below are some older notes that I'm keeping in for now.

Ubuntu (or Windows Subsystem for Linux)

  1. ./link_files.sh symbolically links these files to your $HOME directory
  2. ./setup_apt_packages.sh installs useful apt packages
  3. ./setup_grip.sh adds the md alias to locally host rendered GitHub markdown
  4. ./setup_nvim.sh installs Neovim and makes it a default terminal editor
  5. ./setup_rust.sh installs and sets up environment variables for Rust
  6. ./setup_vscode.sh installs and sets up VSCodium

Windows 10

It may be necessary to execute Set-ExecutionPolicy Bypass to execute PowerShell scripts, as well as running PowerShell as an administrator.

  1. .\setup.ps1 may need to run multiple times does a few things:
    1. Tries to install PowerShell 7 via .\install_ps7.ps1
    2. Tries to install Chocolatey (choco)
    3. Runs .\choco_installs.ps1 to install useful system dependencies (e.g. text editors)
    4. Runs .\link_files.ps1 to link our PowerShell Profile (profile.ps1) to the correct location, plus other configurations

Design Intent

The goal is to prefer symbolic links to the actual source files in this repository rather than relying on copies or appends to files.

In .gitignore we exclude .bash_includes/*.sh so that members of bash_deps can be "loaded" in via symbolic links when the relevant setup script is executed and the setup scripts opts to link a file.

Overall, this makes it easier to manage the N+1 case of further automating something like an initial workstation setup.

Other Documentation