├── .chezmoi.yaml.tmpl ├── Documents └── WindowsPowerShell │ └── Microsoft.PowerShell_profile.ps1 ├── README.md ├── dot_aliases.tmpl ├── dot_antigenrc ├── dot_dateifier.yaml.tmpl ├── dot_gitconfig.tmpl ├── dot_gitignore_global ├── dot_local └── bin │ └── executable_code ├── dot_zshrc.tmpl ├── run_once_before_install-packages-darwin.sh.tmpl └── run_once_before_install-packages-windows.bat.tmpl /.chezmoi.yaml.tmpl: -------------------------------------------------------------------------------- 1 | diff: 2 | exclude: 3 | - scripts 4 | 5 | data: 6 | name: "Steve Francia" 7 | email: "steve.francia@gmail.com" 8 | editor: "code --wait" 9 | -------------------------------------------------------------------------------- /Documents/WindowsPowerShell/Microsoft.PowerShell_profile.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # This file is managed by chezmoi. Always edit it with the command 3 | # chezmoi edit $profile 4 | # chezmoi diff 5 | # chezmoi -v apply 6 | 7 | $ENV:STARSHIP_CONFIG = "$HOME\config\starship\config.toml" 8 | 9 | if (Get-Command starship -errorAction SilentlyContinue) { 10 | Invoke-Expression (&starship init powershell) 11 | } 12 | 13 | Invoke-Expression (& { 14 | $hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' } 15 | (zoxide init --hook $hook powershell) -join "`n" 16 | }) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | ~/. 📂
Cross-platform, cross-shell dotfiles
powered by chezmoi 🏠 3 |

4 | 5 | ## Installation 6 | 7 | `sh -c "$(curl -fsLS git.io/chezmoi)" -- init --apply spf13` 8 | 9 | ## Update any machine 10 | 11 | `chezmoi update` 12 | 13 | ## Status 14 | 15 | I am using [chezmoi](https://www.chezmoi.io/) to manage my dotfiles. 16 | 17 | This is still very much a work in progress. 18 | 19 | It is intended to provide me a nice way to manage my dotfiles and have 20 | a consistent experience across my Windows & Mac machines. 21 | 22 | I'll add Linux support later, I don't really develop on Linux much and the defaults are pretty good for me for adminsitration tasks. 23 | 24 | 25 | My primary shell environment on Windows is git-bash with zsh installed. 26 | 27 | I also used [zsh](https://www.zsh.org/) on my Mac (but that's the default). 28 | 29 | There are two initialization scripts that install a bunch of software I use on both platforms. They are intended to run on new machines, but there shouldn't be any harm in running them on existing machines. 30 | -------------------------------------------------------------------------------- /dot_aliases.tmpl: -------------------------------------------------------------------------------- 1 | # 2 | # This file is managed by chezmoi. Always edit it with the command 3 | # chezmoi edit ~/.zshrc 4 | # chezmoi diff 5 | # chezmoi -v apply 6 | # 7 | 8 | # MODERN APPLICATIONS 9 | eza_params=('--git' '--icons' '--classify' '--group-directories-first' '--time-style=long-iso' '--group' '--color-scale') 10 | 11 | {{- if ne .chezmoi.os "windows" }} 12 | alias ls='eza ${eza_params}' 13 | alias l='eza --git-ignore ${eza_params}' 14 | alias ll='eza --all --header --long ${eza_params}' 15 | alias llm='eza --all --header --long --sort=modified ${eza_params}' 16 | alias la='eza -lbhHigUmuSa' 17 | alias lx='eza -lbhHigUmuSa@' 18 | alias lt='eza --tree' 19 | alias tree='eza --tree' 20 | {{- end }} 21 | 22 | {{- if eq .chezmoi.os "windows" }} 23 | alias ls='ls -h --color=auto' 24 | alias l='ls -l' 25 | alias la='ls -a' 26 | alias ll='ls -la' 27 | {{- end }} 28 | 29 | alias cat='bat --paging=never' 30 | alias less='bat' 31 | alias more='bat' 32 | 33 | # CONVENIENCE 34 | 35 | # show path broken into lines 36 | alias path='echo -e ${PATH//:/\\n}' # nice path printing 37 | alias cz='chezmoi' 38 | alias cze='chezmoi edit' 39 | alias cza='chezmoi apply' 40 | -------------------------------------------------------------------------------- /dot_antigenrc: -------------------------------------------------------------------------------- 1 | # 2 | # This file is managed by chezmoi. Always edit it with the command 3 | # chezmoi edit ~/.zshrc 4 | # chezmoi diff 5 | # chezmoi -v apply 6 | # 7 | 8 | # Awesome Zsh Plugins: https://github.com/unixorn/awesome-zsh-plugins 9 | # Antigen: https://github.com/zsh-users/antigen 10 | # Oh My Zsh: https://github.com/ohmyzsh/ohmyzsh 11 | 12 | MAGIC_ENTER_GIT_COMMAND='git status -u .' 13 | MAGIC_ENTER_OTHER_COMMAND='k -ah' 14 | 15 | # Load the oh-my-zsh's library. 16 | antigen use oh-my-zsh 17 | 18 | # Bundles from the default repo (robbyrussell's oh-my-zsh). 19 | antigen bundle colorize 20 | antigen bundle command-not-found 21 | antigen bundle docker 22 | antigen bundle git 23 | antigen bundle golang 24 | antigen bundle magic-enter 25 | antigen bundle safe-paste 26 | 27 | # Additional bundles 28 | antigen bundle zsh-users/zsh-syntax-highlighting 29 | antigen bundle zsh-users/zsh-autosuggestions 30 | antigen bundle zsh-users/zsh-completions 31 | antigen bundle zsh-users/zsh-history-substring-search 32 | 33 | antigen bundle jeffreytse/zsh-vi-mode 34 | antigen bundle ael-code/zsh-colored-man-pages 35 | antigen bundle kennethreitz/autoenv 36 | antigen bundle b4b4r07/enhancd 37 | # antigen bundle supercrabtree/k 38 | 39 | # Load the theme. 40 | # antigen theme romkatv/powerlevel10k 41 | 42 | # Tell Antigen that you're done. 43 | antigen apply -------------------------------------------------------------------------------- /dot_dateifier.yaml.tmpl: -------------------------------------------------------------------------------- 1 | # 2 | # This file is managed by chezmoi. Always edit it with the command 3 | # chezmoi edit ~/.dateifier.yaml 4 | # chezmoi diff 5 | # chezmoi -v apply 6 | # 7 | 8 | {{- if eq .chezmoi.os "windows" }} 9 | media_repo: P:\ 10 | {{- end }} 11 | 12 | {{ if eq .chezmoi.os "darwin" -}} 13 | media_repo: /Volumes/Photo/ 14 | {{- end }} 15 | -------------------------------------------------------------------------------- /dot_gitconfig.tmpl: -------------------------------------------------------------------------------- 1 | ; 2 | ; This file is managed by chezmoi. Always edit it with the command 3 | ; chezmoi edit ~/.zshrc 4 | ; chezmoi diff 5 | ; chezmoi -v apply 6 | ; 7 | 8 | [user] 9 | name = {{ .name }} 10 | email = {{ .email }} 11 | 12 | [pull] 13 | rebase = true 14 | 15 | [color] 16 | ui = true 17 | 18 | [core] 19 | pager = delta 20 | excludesfile = {{ joinPath .chezmoi.homeDir ".gitignore_global" }} 21 | 22 | [interactive] 23 | diffFilter = delta --color-only --features=interactive 24 | 25 | [delta] 26 | features = decorations 27 | 28 | [delta "interactive"] 29 | keep-plus-minus-markers = false 30 | 31 | [delta "decorations"] 32 | commit-decoration-style = blue ol 33 | commit-style = raw 34 | file-style = omit 35 | hunk-header-decoration-style = blue box 36 | hunk-header-file-style = red 37 | hunk-header-line-number-style = "#067a00" 38 | hunk-header-style = file line-number syntax 39 | -------------------------------------------------------------------------------- /dot_gitignore_global: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /dot_local/bin/executable_code: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -eu 4 | 5 | get_in_path_except_current() { 6 | entries=$(which -a "$1") && 7 | echo "${entries}" | grep -A1 "$0" | grep -v "$0" | head -1 | grep . 8 | } 9 | 10 | is_path_from_windows() { 11 | echo "${1}" | grep -q '^/mnt/.*$' 12 | } 13 | 14 | get_in_path_from_windows() { 15 | entries=$(which -a "$1") && 16 | echo "${entries}" | grep -v -A99 "$0" | grep -v "$0" | grep -m1 '^/mnt/.*$' | grep . 17 | } 18 | 19 | is_first_arg_a_folder() { 20 | for arg; do 21 | shift 22 | # Skip options like --wait 23 | if [ "${arg#-}" = "${arg}" ]; then 24 | if [ -d "${arg}" ]; then 25 | return 0 26 | else 27 | return 1 28 | fi 29 | fi 30 | done 31 | return 1 32 | } 33 | 34 | if [ -n "${DEBUG:-}" ]; then 35 | set -x 36 | fi 37 | 38 | # shellcheck disable=SC2310 39 | if code="$(get_in_path_except_current code)"; then 40 | # shellcheck disable=SC2310 41 | if { [ -n "${WSL_DISTRO_NAME:-}" ] || [ -n "${IS_WSL:-}" ]; } && 42 | ! is_path_from_windows "${code}"; then 43 | echo >&2 44 | if get_in_path_from_windows code >/dev/null && [ -z "${USE_CODE_FROM_LINUX:-}" ]; then 45 | echo "using code from Windows (set USE_CODE_FROM_LINUX=1 to use code from Linux)" >&2 46 | code="$(get_in_path_from_windows code)" 47 | else 48 | echo "using code from Linux (unset USE_CODE_FROM_LINUX to use code from Windows)" >&2 49 | export DONT_PROMPT_WSL_INSTALL=1 50 | fi 51 | fi 52 | 53 | # Used to work around https://github.com/twpayne/chezmoi/issues/1068 54 | # code duplication here is required because there is no way to set 55 | # script level args inside of functions in POSIX (on Bash we can use arrays) 56 | if is_first_arg_a_folder "$@"; then 57 | # Removes -w and --wait flags 58 | for arg; do 59 | shift 60 | if [ "${arg}" = "--wait" ] || [ "${arg}" = "-w" ]; then 61 | echo "removing --wait or -w flag" >&2 62 | continue 63 | fi 64 | set -- "$@" "${arg}" 65 | done 66 | fi 67 | 68 | exec "${code}" "$@" 69 | fi 70 | 71 | # Check if we are running in SSH 72 | if who | grep -q .; then 73 | # We will try to find an existing connection and reuse it. 74 | # This allows opening VS Code windows from a SSH remote 75 | # session even out of the VS Code integrated terminal. 76 | echo >&2 77 | printf "searching for remote ssh session..." >&2 78 | if [ -d "${HOME}/.vscode-server/bin" ]; then 79 | 80 | # Find most recent folder inside of ~/.vscode-server/bin 81 | if bin_folder=$(find "${HOME}/.vscode-server/bin" \ 82 | -mindepth 1 -maxdepth 1 -type d -printf "%T@ %p\n" | 83 | sort -n | cut -d' ' -f 2- | tail -n 1 | grep .); then 84 | 85 | # Ensure code binary is executable 86 | if [ -x "${bin_folder}/bin/code" ]; then 87 | 88 | # Find most recent sock 89 | uid=$(id -u) 90 | if sock_paths=$(find "/run/user/${uid}/" \ 91 | -mindepth 1 -maxdepth 1 -type s -name "vscode-ipc-*.sock" -printf "%T@ %p\n" | 92 | sort -n | cut -d' ' -f 2- | grep .); then 93 | 94 | sockets_count=$(echo "${sock_paths}" | wc -l) 95 | echo " ${sockets_count} sockets found." >&2 96 | echo "trying to connect..." >&2 97 | for sock_path in ${sock_paths}; do 98 | export VSCODE_IPC_HOOK_CLI="${sock_path}" 99 | if "${bin_folder}/bin/code" "$@"; then 100 | exit 0 101 | else 102 | echo "trying next socket..." >&2 103 | fi 104 | done 105 | fi 106 | fi 107 | fi 108 | fi 109 | echo " not found." >&2 110 | fi 111 | 112 | echo >&2 113 | printf "code is not available, " >&2 114 | if command -v code-insiders >/dev/null 2>&1; then 115 | echo "using code-insiders instead" >&2 116 | 117 | # Used to work around https://github.com/twpayne/chezmoi/issues/1068 118 | # code duplication here is required because there is no way to set 119 | # script level args inside of functions in POSIX (on Bash we can use arrays) 120 | # shellcheck disable=SC2310 121 | if is_first_arg_a_folder "$@"; then 122 | # Removes -w and --wait flags 123 | for arg; do 124 | shift 125 | if [ "${arg}" = "--wait" ] || [ "${arg}" = "-w" ]; then 126 | echo "removing --wait or -w flag" >&2 127 | continue 128 | fi 129 | set -- "$@" "${arg}" 130 | done 131 | fi 132 | 133 | exec code-insiders "$@" 134 | fi 135 | 136 | if command -v nano >/dev/null 2>&1; then 137 | editor="nano" 138 | elif command -v vim >/dev/null 2>&1; then 139 | editor="vim" 140 | elif command -v vi >/dev/null 2>&1; then 141 | editor="vi" 142 | else 143 | echo "and neither code-insiders, nano, vim or vi." >&2 144 | exit 127 145 | fi 146 | 147 | echo "using ${editor} instead" >&2 148 | 149 | # Removes -w and --wait flags 150 | # code duplication here is required because there is no way to set 151 | # script level args inside of functions in POSIX (on Bash we can use arrays) 152 | for arg; do 153 | shift 154 | if [ "${arg}" = "--wait" ] || [ "${arg}" = "-w" ]; then 155 | echo "removing --wait or -w flag" >&2 156 | continue 157 | fi 158 | set -- "$@" "${arg}" 159 | done 160 | 161 | exec "${editor}" "$@" 162 | -------------------------------------------------------------------------------- /dot_zshrc.tmpl: -------------------------------------------------------------------------------- 1 | # 2 | # This file is managed by chezmoi. Always edit it with the command 3 | # chezmoi edit ~/.zshrc 4 | # chezmoi diff 5 | # chezmoi -v apply 6 | # 7 | 8 | # 9 | # Executes commands at the start of an interactive session. 10 | # 11 | # Authors: 12 | # Steve Francia 13 | 14 | ## PATHS 15 | path+=($HOME/go/bin) 16 | path+=($HOME/bin) 17 | 18 | ## CONFIGURATIONS 19 | 20 | # Uncomment the following line to use hyphen-insensitive completion. Case 21 | # sensitive completion must be off. _ and - will be interchangeable. 22 | HYPHEN_INSENSITIVE="true" 23 | 24 | # Uncomment the following line to enable command auto-correction. 25 | ENABLE_CORRECTION="true" 26 | 27 | HISTFILE=${ZDOTDIR:-$HOME}/.zsh_history 28 | SAVEHIST=5000 29 | HISTSIZE=2000 30 | 31 | ## OPTIONS 32 | setopt NO_CASE_GLOB # Globbing and tab-completion to be case-insensitive. 33 | setopt GLOB_COMPLETE 34 | setopt AUTO_CD # Enable changing to directories without typing cd first. 35 | 36 | setopt CORRECT # enable command auto-correction 37 | setopt CORRECT_ALL 38 | 39 | # HISTORY 40 | setopt EXTENDED_HISTORY # enable more detailed history (time, command, etc.) 41 | setopt SHARE_HISTORY # share history across multiple zsh sessions 42 | setopt APPEND_HISTORY # append to history 43 | setopt INC_APPEND_HISTORY # adds commands as they are typed, not at shell exit 44 | setopt HIST_VERIFY # let you edit !$, !! and !* before executing the command 45 | setopt HIST_IGNORE_DUPS # do not store duplications 46 | setopt HIST_REDUCE_BLANKS # removes blank lines from history 47 | 48 | eval "$(starship init zsh)" 49 | 50 | if [ -f ${HOME}/.aliases ]; then 51 | . ${HOME}/.aliases 52 | fi 53 | 54 | zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' 55 | 56 | # pasting with tabs doesn't perform completion 57 | zstyle ':completion:*' insert-tab pending 58 | 59 | # default to file completion 60 | zstyle ':completion:*' completer _expand _complete _files _correct _approximate 61 | 62 | source ~/.antigen.zsh 63 | antigen init ~/.antigenrc 64 | 65 | {{ if eq .chezmoi.os "darwin" -}} 66 | # macOS .zshrc contents 67 | if type brew &>/dev/null; then 68 | FPATH=$(brew --prefix)/share/zsh-completions:$FPATH 69 | 70 | autoload -Uz compinit 71 | compinit 72 | fi 73 | 74 | eval "$(zoxide init zsh)" 75 | 76 | {{ else if eq .chezmoi.os "linux" -}} 77 | # Linux .zshrc contents 78 | 79 | {{ else if eq .chezmoi.os "windows" -}} 80 | # Windows .zshrc contents 81 | 82 | eval "$(zoxide init zsh | dos2unix)" 83 | 84 | {{ end -}} 85 | -------------------------------------------------------------------------------- /run_once_before_install-packages-darwin.sh.tmpl: -------------------------------------------------------------------------------- 1 | {{- if (eq .chezmoi.os "darwin") -}} 2 | #!/bin/bash -x 3 | 4 | PACKAGES=( 5 | node 6 | gh 7 | go 8 | hugo 9 | mas 10 | shellcheck 11 | the_silver_searcher 12 | starship 13 | neovim 14 | exa 15 | tre-command 16 | bat 17 | git-delta 18 | fzf 19 | zoxide 20 | ) 21 | 22 | CASKS=( 23 | 1password 24 | 1password-cli 25 | font-fira-code 26 | font-hack-nerd-font 27 | google-drive 28 | steam 29 | syncthing 30 | visual-studio-code 31 | symboliclinker 32 | epic-games 33 | xnviewmp 34 | ) 35 | 36 | MASPACKAGES=( 37 | # 824171161 # "Affinity Designer" 38 | # 824183456 # "Affinity Photo" 39 | 411643860 # "DaisyDisk" 40 | # 486626129 # "Folder Tidy" 41 | 682658836 # "GarageBand" 42 | 1099568401 # "Home Assistant" 43 | 408981434 # "iMovie" 44 | # 498944723 # "JPEGmini" 45 | # 409183694 # "Keynote" 46 | # 405399194 # "Kindle" 47 | 441258766 # "Magnet" 48 | 409203825 # "Numbers" 49 | 409201541 # "Pages" 50 | # 445189367 # "PopClip" 51 | # 413965349 # "Soulver 2" 52 | # 1062679359 # "Typeface" 53 | ) 54 | 55 | GOAPPS=( 56 | github.com/Crosse/font-install 57 | ) 58 | 59 | # If Homebrew is not installed on the system, it will be installed here 60 | if test ! $(which brew); then 61 | printf '\n\n\e[33mHomebrew not found. \e[0mInstalling Homebrew...' 62 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 63 | else 64 | printf '\n\n\e[0mHomebrew found. Continuing...' 65 | fi 66 | 67 | # Update homebrew packages 68 | printf '\nInitiating Homebrew update...\n' 69 | brew update 70 | 71 | printf '\nInstalling packages...\n' 72 | brew install ${PACKAGES[@]} 73 | 74 | printf '\n\nRemoving out of date packages...\n' 75 | brew cleanup 76 | 77 | printf '\n\nInstalling cask...\n' 78 | brew install cask 79 | 80 | printf '\n\nInstalling cask apps...\n' 81 | brew install --cask ${CASKS[@]} 82 | 83 | printf '\nInstalling MacAppStore apps...\n' 84 | for app in ${MASPACKAGES[@]}; do 85 | mas install ${app} 86 | done 87 | 88 | printf '\n\nInstalling go programs...\n' 89 | for app in "${GOAPPS[@]}"; do 90 | go install "${app}@latest" 91 | done 92 | 93 | printf '\n\nUpdating npm...\n' 94 | npm install -g npm 95 | 96 | printf '\n\nInstalling global npm packages...\n' 97 | npm install -g sass 98 | 99 | printf '\n\nSetting Global Mac Settings...\n' 100 | # better key repeat 101 | defaults write NSGlobalDomain InitialKeyRepeat -int 15 102 | defaults write NSGlobalDomain KeyRepeat -int 1 103 | # no delay for dock hiding 104 | defaults write com.apple.dock autohide-delay -float 0 105 | dscacheutil -flushcache 106 | 107 | printf '\n\nSetup autocomplete...\n' 108 | sudo mkdir -p /usr/local/share/zsh/site-functions/ 109 | sudo chown -R $(whoami) /usr/local/share/zsh/site-functions/ 110 | hugo completion zsh > /usr/local/share/zsh/site-functions/_hugo 111 | 112 | printf '\n\nSetting up antigen...\n' 113 | curl -L git.io/antigen > ${HOME}/.antigen.zsh 114 | 115 | {{ end -}} 116 | 117 | -------------------------------------------------------------------------------- /run_once_before_install-packages-windows.bat.tmpl: -------------------------------------------------------------------------------- 1 | {{- if eq .chezmoi.os "windows" }} 2 | :: upgrade choco .exe and add choco to PATH 3 | @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/upgrade.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" 4 | choco feature enable -n allowGlobalConfirmation 5 | 6 | :: install scoop 7 | @powershell -NoProfile -ExecutionPolicy Bypass -Command "iwr -useb get.scoop.sh | iex" 8 | 9 | :: upgrade all the packages 10 | 11 | :::: BROWSERS 12 | choco upgrade googlechrome -y 13 | choco upgrade firefox -y 14 | choco upgrade vivaldi -y 15 | 16 | :::: DEV TOOLS 17 | choco upgrade git -y 18 | choco upgrade conemu -y 19 | choco upgrade sourcetree -y 20 | choco upgrade golang -y 21 | choco upgrade microsoft-windows-terminal -y 22 | choco upgrade vscode -y 23 | 24 | :::: MEDIA 25 | choco upgrade itunes -y 26 | choco upgrade exiftool -y 27 | choco upgrade potplayer -y 28 | choco upgrade kindle -y 29 | choco upgrade hugin.upgrade -y 30 | choco upgrade spotify -y 31 | 32 | :::: CREATIVE 33 | choco upgrade foxitreader -y 34 | choco upgrade hugo -y 35 | 36 | :::: CLI TOOLS 37 | choco upgrade ag -y 38 | choco upgrade starship -y 39 | choco upgrade bat -y 40 | choco upgrade syncthing -y 41 | choco upgrade fzf -y 42 | choco upgrade zoxide -y 43 | choco upgrade zstandard -y 44 | choco upgrade delta -y 45 | 46 | :::: UTILS 47 | choco upgrade dropbox -y 48 | choco upgrade googledrive -y 49 | choco upgrade coretemp -y 50 | choco upgrade directoryopus -y 51 | choco upgrade autoruns -y 52 | choco upgrade unchecky -y 53 | choco upgrade powertoys -y 54 | choco upgrade treesizefree -y 55 | choco upgrade bleachbit -y 56 | choco upgrade revo-uninstaller -y 57 | choco upgrade shutup10 -y 58 | choco upgrade linkshellextension -y 59 | 60 | :::: FONTS 61 | choco upgrade firacode -y 62 | choco upgrade fontbase -y 63 | choco upgrade sourcecodepro -y 64 | choco upgrade hackfont -y 65 | choco upgrade cascadiamono -y 66 | choco upgrade cascadiacode -y 67 | choco upgrade cascadiafonts -y 68 | choco upgrade cascadiamonopl -y 69 | choco upgrade cascadiacodepl -y 70 | 71 | :::: GAMES 72 | choco upgrade goggalaxy -y 73 | choco upgrade steam -y 74 | choco upgrade origin -y 75 | choco upgrade epicgameslauncher -y 76 | 77 | :::: Drivers 78 | choco upgrade geforce-experience -y 79 | choco upgrade geforce-game-ready-driver -y 80 | :: choco upgrade intel-dsa -y 81 | 82 | IF NOT EXIST "c:\Program Files\Git\usr\bin\zsh.exe" ( 83 | curl -L https://mirror.msys2.org/msys/x86_64/zsh-5.8-5-x86_64.pkg.tar.zst > %TEMP%/zsh.pkg.tar.zst 84 | zstd -d %TEMP%/zsh.pkg.tar.zst 85 | move %TEMP%\zsh.pkg "C:\Program Files\Git\zsh.pkg.tar" 86 | cd "C:\Program Files\Git\" 87 | tar -xvf zsh.pkg.tar 88 | del %TEMP%\zsh.pkg.tar.zst 89 | del "C:\Program Files\Git\zsh.pkg.tar" 90 | ) 91 | 92 | IF NOT EXIST %HOMEPATH%/.antigen.zsh ( 93 | curl -L git.io/antigen > %HOMEPATH%/.antigen.zsh 94 | ) 95 | 96 | {{- end }} 97 | --------------------------------------------------------------------------------