From ba4571ec35f2f8c45307165d80d71fc17b64904e Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2023 19:13:49 +0000 Subject: [PATCH 01/67] fix(windows): correctly bootstrap pathman install --- _webi/template.ps1 | 5 +++- _webi/webi-pwsh.ps1 | 7 +++--- pathman/install.bat | 19 --------------- pathman/install.ps1 | 59 ++++++++++++++++++++++++++++++++++++++++++++- pathman/releases.js | 3 +++ 5 files changed, 69 insertions(+), 24 deletions(-) delete mode 100644 pathman/install.bat diff --git a/_webi/template.ps1 b/_webi/template.ps1 index 3201046d4..7be7ec8f7 100644 --- a/_webi/template.ps1 +++ b/_webi/template.ps1 @@ -57,7 +57,10 @@ function webi_add_path } # Run pathman to set up the folder -& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/bin +if (Test-Path -Path "$Env:USERPROFILE.local\bin\pathman.exe") +{ + & "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/bin +} {{ installer }} diff --git a/_webi/webi-pwsh.ps1 b/_webi/webi-pwsh.ps1 index eaaac85bd..996225967 100644 --- a/_webi/webi-pwsh.ps1 +++ b/_webi/webi-pwsh.ps1 @@ -52,9 +52,10 @@ IF($Env:WEBI_HOST -eq $null -or $Env:WEBI_HOST -eq "") if (!(Test-Path -Path .local\bin\pathman.exe)) { - & curl.exe -fsSL -A "$Env:WEBI_UA" "$Env:WEBI_HOST/packages/pathman/install.ps1" -o .\.local\tmp\pathman-setup.ps1 - powershell .\.local\tmp\pathman-setup.ps1 - # TODO del .\.local\tmp\pathman-setup.bat + $PATHMAN_URL = "$Env:WEBI_HOST/api/installers/pathman.ps1?formats=zip,exe,tar" + # Invoke-WebRequest -UserAgent "Windows amd64" "$PATHMAN_URL" -OutFile ".\.local\tmp\pathman.install.ps1" + & curl.exe -fsSL -A "$Env:WEBI_UA" "$PATHMAN_URL" -o .\.local\tmp\pathman.install.ps1 + powershell .\.local\tmp\pathman.install.ps1 } # Run pathman to set up the folder diff --git a/pathman/install.bat b/pathman/install.bat deleted file mode 100644 index 67ae251f8..000000000 --- a/pathman/install.bat +++ /dev/null @@ -1,19 +0,0 @@ -pushd "%userprofile%" || goto :error - IF NOT EXIST .local ( - mkdir .local || goto :error - ) - IF NOT EXIST .local\bin ( - mkdir .local\bin || goto :error - ) - - pushd .local\bin || goto :error - rem TODO %PROCESSOR_ARCH% - powershell $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest "https://rootprojects.org/pathman/dist/windows/amd64/pathman.exe" -OutFile pathman.exe || goto :error - popd || goto :error -popd - -goto :EOF - -:error -echo Failed with error #%errorlevel%. -exit /b %errorlevel% diff --git a/pathman/install.ps1 b/pathman/install.ps1 index 5ec3a4b32..26944ca41 100644 --- a/pathman/install.ps1 +++ b/pathman/install.ps1 @@ -1,3 +1,60 @@ #!/usr/bin/env pwsh -curl.exe -fsSL -A "$Env:WEBI_UA" "https://rootprojects.org/pathman/dist/windows/amd64/pathman.exe" -o "$Env:USERPROFILE\.local\bin\pathman.exe" +################### +# Install pathman # +################### + +# Every package should define these variables +$pkg_cmd_name = "pathman" + +$pkg_dst_cmd = "$Env:USERPROFILE\.local\bin\pathman.exe" +$pkg_dst = "$pkg_dst_cmd" + +$pkg_src_cmd = "$Env:USERPROFILE\.local\opt\pathman-v$Env:WEBI_VERSION\bin\pathman.exe" +$pkg_src_bin = "$Env:USERPROFILE\.local\opt\pathman-v$Env:WEBI_VERSION\bin" +$pkg_src_dir = "$Env:USERPROFILE\.local\opt\pathman-v$Env:WEBI_VERSION" +$pkg_src = "$pkg_src_cmd" + +New-Item "$Env:USERPROFILE\Downloads\webi" -ItemType Directory -Force | out-null +$pkg_download = "$Env:USERPROFILE\Downloads\webi\$Env:WEBI_PKG_FILE" + +# Fetch archive +IF (!(Test-Path -Path "$Env:USERPROFILE\Downloads\webi\$Env:WEBI_PKG_FILE")) +{ + echo "Downloading pathman from $Env:WEBI_PKG_URL to $pkg_download" + & curl.exe -A "$Env:WEBI_UA" -fsSL "$Env:WEBI_PKG_URL" -o "$pkg_download.part" + & move "$pkg_download.part" "$pkg_download" +} + +IF (!(Test-Path -Path "$pkg_src_cmd")) +{ + echo "Installing pathman" + + # TODO: create package-specific temp directory + # Enter tmp + pushd .local\tmp + + # Remove any leftover tmp cruft + Remove-Item -Path ".\pathman-v*" -Recurse -ErrorAction Ignore + Remove-Item -Path ".\pathman.exe" -Recurse -ErrorAction Ignore + + # Unpack archive file into this temporary directory + # Windows BSD-tar handles zip. Imagine that. + echo "Unpacking $pkg_download" + & tar xf "$pkg_download" + + # Settle unpacked archive into place + echo "Install Location: $pkg_src_cmd" + New-Item "$pkg_src_bin" -ItemType Directory -Force | out-null + Move-Item -Path ".\pathman-v*"-Destination "$pkg_src_cmd" + + # Exit tmp + popd +} + +echo "Copying into '$pkg_dst_cmd' from '$pkg_src_cmd'" +Remove-Item -Path "$pkg_dst_cmd" -Recurse -ErrorAction Ignore | out-null +Copy-Item -Path "$pkg_src" -Destination "$pkg_dst" -Recurse + +# for the special case of pathman bootstrapping itself +& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/bin diff --git a/pathman/releases.js b/pathman/releases.js index 019ca9b1e..8317779ff 100644 --- a/pathman/releases.js +++ b/pathman/releases.js @@ -7,6 +7,9 @@ var baseurl = 'https://git.rootprojects.org'; module.exports = function (request) { return github(request, owner, repo, baseurl).then(function (all) { + all.releases = all.releases.filter(function (release) { + return !/debug/.test(release.name); + }); return all; }); }; From efb67109fbdacd13757faf033b6ce058c558c809 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Tue, 9 May 2023 00:04:59 +0000 Subject: [PATCH 02/67] ref!: replace pathman with PowerShell [Environment]::SetEnvironmentVariable --- _webi/template.ps1 | 92 +++++++++++++++++++++++++++++++++++++-------- _webi/webi-pwsh.ps1 | 22 ----------- _webi/webi.bat | 13 +------ deno/install.ps1 | 3 -- git/install.ps1 | 4 +- golang/install.ps1 | 8 +--- node/install.ps1 | 2 +- pathman/install.ps1 | 3 -- sass/install.ps1 | 2 +- sudo/install.ps1 | 3 -- webi/README.md | 4 +- zig/install.ps1 | 2 +- 12 files changed, 84 insertions(+), 74 deletions(-) diff --git a/_webi/template.ps1 b/_webi/template.ps1 index 7be7ec8f7..54062c476 100644 --- a/_webi/template.ps1 +++ b/_webi/template.ps1 @@ -42,27 +42,87 @@ New-Item -Path .local\opt -ItemType Directory -Force | out-null # {{ baseurl }} # {{ version }} -function webi_add_path +function webi_path_add($pathname) { - Write-Host '' - Write-Host '*****************************' -ForegroundColor red -BackgroundColor white - Write-Host '* IMPORTANT - READ ME *' -ForegroundColor red -BackgroundColor white - Write-Host '*****************************' -ForegroundColor red -BackgroundColor white - Write-Host '' - & "$Env:USERPROFILE\.local\bin\pathman.exe" add "$args[0]" - # Note: not all of these work as expected, so we use the unix-style, which is most consistent - #& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/bin - #& "$Env:USERPROFILE\.local\bin\pathman.exe" add "$Env:USERPROFILE\.local\bin" - #& "$Env:USERPROFILE\.local\bin\pathman.exe" add %USERPROFILE%\.local\bin -} + # C:\Users\me => C:/Users/me + $my_home = $Env:UserProfile + $my_home = $my_home.replace('\\', '/') + $my_home_re = [regex]::escape($my_home) -# Run pathman to set up the folder -if (Test-Path -Path "$Env:USERPROFILE.local\bin\pathman.exe") -{ - & "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/bin + # ~/bin => %USERPROFILE%/bin + $pathname = $pathname.replace('~/', "$Env:UserProfile/") + + # C:\Users\me\bin => %USERPROFILE%/bin + $my_pathname = $pathname.replace('\\', '/') + $my_pathname = $my_pathname -ireplace $my_home_re, "%USERPROFILE%" + + $all_user_paths = [Environment]::GetEnvironmentVariable("Path", "User") + $user_paths = $all_user_paths -Split(';') + $exists_in_path = $false + foreach ($user_path in $user_paths) + { + # C:\Users\me\bin => %USERPROFILE%/bin + $my_user_path = $user_path.replace('\\', '/') + $my_user_path = $my_user_path -ireplace $my_home_re, "%USERPROFILE%" + + if ($my_user_path -ieq $my_pathname) + { + $exists_in_path = $true + } + } + if (-Not $exists_in_path) + { + $all_user_paths = $pathname + ";" + $all_user_paths + [Environment]::SetEnvironmentVariable("Path", $all_user_paths, "User") + } + + $session_paths = $Env:Path -Split(';') + $in_session_path = $false + foreach ($session_path in $session_paths) + { + # C:\Users\me\bin => %USERPROFILE%/bin + $my_session_path = $session_path.replace('\\', '/') + $my_session_path = $my_session_path -ireplace $my_home_re, "%USERPROFILE%" + + if ($my_session_path -ieq $my_pathname) + { + $in_session_path = $true + } + } + + if (-Not $in_session_path) + { + $my_cmd = 'PATH ' + "$pathname" + ';%PATH%' + $my_pwsh = '$Env:Path = "' + "$pathname" + ';$Env:Path"' + + Write-Host '' + Write-Host '**********************************' -ForegroundColor red -BackgroundColor white + Write-Host '* IMPORTANT -- READ ME *' -ForegroundColor red -BackgroundColor white + Write-Host '* (run the PATH command below) *' -ForegroundColor red -BackgroundColor white + Write-Host '**********************************' -ForegroundColor red -BackgroundColor white + Write-Host '' + echo "" + echo "Copy, paste, and run the appropriate command to update your PATH:" + echo "(or close and reopen the terminal, or reboot)" + echo "" + echo "cmd.exe:" + echo " $my_cmd" + echo "" + echo "PowerShell:" + echo " $my_pwsh" + echo "" + } } +#$has_local_bin = echo "$Env:PATH" | Select-String -Pattern '\.local.bin' +#if (!$has_local_bin) +#{ + webi_path_add ~/.local/bin +#} + {{ installer }} +webi_path_add ~/.local/bin + # Done popd diff --git a/_webi/webi-pwsh.ps1 b/_webi/webi-pwsh.ps1 index 996225967..f3bc3aef9 100644 --- a/_webi/webi-pwsh.ps1 +++ b/_webi/webi-pwsh.ps1 @@ -50,28 +50,6 @@ IF($Env:WEBI_HOST -eq $null -or $Env:WEBI_HOST -eq "") $Env:WEBI_HOST = "https://webinstall.dev" } -if (!(Test-Path -Path .local\bin\pathman.exe)) -{ - $PATHMAN_URL = "$Env:WEBI_HOST/api/installers/pathman.ps1?formats=zip,exe,tar" - # Invoke-WebRequest -UserAgent "Windows amd64" "$PATHMAN_URL" -OutFile ".\.local\tmp\pathman.install.ps1" - & curl.exe -fsSL -A "$Env:WEBI_UA" "$PATHMAN_URL" -o .\.local\tmp\pathman.install.ps1 - powershell .\.local\tmp\pathman.install.ps1 -} - -# Run pathman to set up the folder -# (using unix style path because... cmd vs powershell vs whatever) -$has_local_bin = echo "$Env:PATH" | Select-String -Pattern '\.local.bin' -if (!$has_local_bin) -{ - Write-Host '' - Write-Host '**********************************' -ForegroundColor red -BackgroundColor white - Write-Host '* IMPORTANT -- READ ME *' -ForegroundColor red -BackgroundColor white - Write-Host '* (run the PATH command below) *' -ForegroundColor red -BackgroundColor white - Write-Host '**********************************' -ForegroundColor red -BackgroundColor white - Write-Host '' - & "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/bin -} - # {{ baseurl }} # {{ version }} diff --git a/_webi/webi.bat b/_webi/webi.bat index 6023b9226..53f986381 100644 --- a/_webi/webi.bat +++ b/_webi/webi.bat @@ -10,18 +10,7 @@ pushd "%userprofile%" || goto :error mkdir .local\opt || goto :error ) - pushd .local\bin || goto :error - if NOT EXIST pathman.exe ( - echo updating PATH management - powershell $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest https://webinstall.dev/packages/pathman/install.bat -OutFile pathman-setup.bat || goto :error - call .\pathman-setup.bat || goto :error - del pathman-setup.bat || goto :error - rem TODO there's rumor of a windows tool called 'pathman' that does the same thing? - ) - popd || goto :error - .\.local\bin\pathman add ".local\bin" || goto :error - - echo downloading and installing %1 + echo Downloading and installing %1 powershell $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest https://webinstall.dev/packages/%1/install.ps1 -OutFile %1-webinstall.bat || goto :error rem TODO only add if it's not in there already diff --git a/deno/install.ps1 b/deno/install.ps1 index afe3436c5..ae0e90398 100644 --- a/deno/install.ps1 +++ b/deno/install.ps1 @@ -38,6 +38,3 @@ IF (!(Test-Path -Path "$Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERS echo "Copying into '$Env:USERPROFILE\.local\bin\$Env:PKG_NAME.exe' from '$Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERSION.exe'" Remove-Item -Path "$Env:USERPROFILE\.local\bin\$Env:PKG_NAME.exe" -Recurse -ErrorAction Ignore Copy-Item -Path "$Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERSION.exe" -Destination "$Env:USERPROFILE\.local\bin\$Env:PKG_NAME.exe" -Recurse - -# Add to path -& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/bin diff --git a/git/install.ps1 b/git/install.ps1 index 0c35faf20..d44ba68f8 100644 --- a/git/install.ps1 +++ b/git/install.ps1 @@ -53,6 +53,4 @@ Remove-Item -Path "$pkg_dst" -Recurse -ErrorAction Ignore Copy-Item -Path "$pkg_src" -Destination "$pkg_dst" -Recurse # Add to path -& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/opt/git/cmd -#& "$Env:USERPROFILE\.local\bin\pathman.exe" add "$Env:USERPROFILE\.local\opt\git\cmd" -#& "$Env:USERPROFILE\.local\bin\pathman.exe" add %USERPROFILE%\.local\opt\git\cmd +webi_path_add ~/.local/opt/git/cmd diff --git a/golang/install.ps1 b/golang/install.ps1 index 1a2ebd748..dbc26123c 100644 --- a/golang/install.ps1 +++ b/golang/install.ps1 @@ -85,11 +85,7 @@ echo stringer & "$pkg_dst_cmd" install golang.org/x/tools/cmd/stringer # Add to path -& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/opt/go/bin -#& "$Env:USERPROFILE\.local\bin\pathman.exe" add "$Env:USERPROFILE\.local\opt\go\bin" -#& "$Env:USERPROFILE\.local\bin\pathman.exe" add %USERPROFILE%\.local\opt\go\bin +webi_path_add ~/.local/opt/go/bin # Special to go: add default GOBIN to PATH -& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/go/bin -#& "$Env:USERPROFILE\.local\bin\pathman.exe" add "$Env:USERPROFILE\go\bin" -#& "$Env:USERPROFILE\.local\bin\pathman.exe" add %USERPROFILE%\go\bin +webi_path_add ~/go/bin diff --git a/node/install.ps1 b/node/install.ps1 index e7e4a7078..f5c9872a6 100644 --- a/node/install.ps1 +++ b/node/install.ps1 @@ -41,4 +41,4 @@ Remove-Item -Path "$Env:USERPROFILE\.local\opt\$Env:PKG_NAME" -Recurse -ErrorAct Copy-Item -Path "$Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERSION" -Destination "$Env:USERPROFILE\.local\opt\$Env:PKG_NAME" -Recurse # Add to path -& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/opt/node +webi_path_add ~/.local/opt/node diff --git a/pathman/install.ps1 b/pathman/install.ps1 index 26944ca41..866333c82 100644 --- a/pathman/install.ps1 +++ b/pathman/install.ps1 @@ -55,6 +55,3 @@ IF (!(Test-Path -Path "$pkg_src_cmd")) echo "Copying into '$pkg_dst_cmd' from '$pkg_src_cmd'" Remove-Item -Path "$pkg_dst_cmd" -Recurse -ErrorAction Ignore | out-null Copy-Item -Path "$pkg_src" -Destination "$pkg_dst" -Recurse - -# for the special case of pathman bootstrapping itself -& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/bin diff --git a/sass/install.ps1 b/sass/install.ps1 index 12fa350fd..c911d4ff0 100644 --- a/sass/install.ps1 +++ b/sass/install.ps1 @@ -52,4 +52,4 @@ echo "Linking '$pkg_dst_dir' from '$pkg_src_dir'" New-Item -ItemType Junction -Path "$pkg_dst_dir" -Target "$pkg_src_dir" > $null # Add to path -& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/opt/dart-sass +webi_path_add ~/.local/opt/dart-sass diff --git a/sudo/install.ps1 b/sudo/install.ps1 index 6f0b54d97..d14df0392 100644 --- a/sudo/install.ps1 +++ b/sudo/install.ps1 @@ -5,8 +5,5 @@ echo "Installing sudo.cmd..." # Couldn't figure out how to get this to work with "here strings", so forgive the ugly, but at least it works Set-Content -Path .local\bin\sudo.cmd -Value "@echo off`r`npowershell -Command ""Start-Process cmd -Verb RunAs -ArgumentList '/c cd /d %CD% && %*'""`r`n@echo on" -# Add to path -& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/bin - echo "Installed to '$Env:USERPROFILE\.local\bin\sudo.cmd'" echo "" diff --git a/webi/README.md b/webi/README.md index cf4030d0c..57f9b3bf7 100644 --- a/webi/README.md +++ b/webi/README.md @@ -62,10 +62,8 @@ These are the files that are installed when you use [webinstall.dev](/): ~/.local/opt/pathman-* # Windows -~/.local/bin/webi.cmd +~/.local/bin/webi.bat ~/.local/bin/webi-pwsh.ps1 -~/.local/bin/pathman.exe -~/.local/opt/pathman-* ``` Assuming that you don't use `pathman` for anything else, you can safely remove diff --git a/zig/install.ps1 b/zig/install.ps1 index f26860da1..1b41673e2 100644 --- a/zig/install.ps1 +++ b/zig/install.ps1 @@ -57,4 +57,4 @@ Remove-Item -Path "$pkg_dst" -Recurse -ErrorAction Ignore | out-null Copy-Item -Path "$pkg_src" -Destination "$pkg_dst" -Recurse # Add to Windows PATH -& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/opt/zig +webi_path_add ~/.local/opt/zig From 3ab9eee3525f741154a9f4ea24f8dcad5a94a9db Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Thu, 18 May 2023 02:16:52 -0600 Subject: [PATCH 03/67] fix(nerdfont): pin version to tag 'v2.3.3' rather than 'master' (now v3.x) --- nerdfont/README.md | 104 +++++++++++++++++++++---------------------- nerdfont/install.ps1 | 2 +- nerdfont/install.sh | 2 +- 3 files changed, 54 insertions(+), 54 deletions(-) diff --git a/nerdfont/README.md b/nerdfont/README.md index 8557c2122..09551c721 100644 --- a/nerdfont/README.md +++ b/nerdfont/README.md @@ -10,7 +10,7 @@ tagline: | > A font with a high number of extra glyphs from popular 'iconic fonts' such as > Font Awesome ➶, Devicons ➶, Octicons ➶, and others. -![](https://github.com/ryanoasis/nerd-fonts/raw/master/images/sankey-glyphs-combined-diagram.svg) +![](https://github.com/ryanoasis/nerd-fonts/raw/v2.3.3/images/sankey-glyphs-combined-diagram.svg) This installs just "Droid Sans Mono for Powerline Nerd Font Complete.otf". @@ -21,57 +21,57 @@ See [All Nerd Fonts](https://www.nerdfonts.com/font-downloads) view list -- [3270 Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/3270) -- [Agave](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Agave) -- [Anonymice Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/AnonymousPro) -- [Arimo](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Arimo) -- [Aurulent Sans Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/AurulentSansMono) -- [BigBlueTerminal](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/BigBlueTerminal) -- [Bitstream Vera Sans Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/BitstreamVeraSansMono) -- [Blex\*](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/IBMPlexMono) -- [Caskaydia Cove Nerd Font\*](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/CascadiaCode) -- [Code New Roman Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/CodeNewRoman) -- [Cousine Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Cousine) -- [DaddyTimeMono](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/DaddyTimeMono) -- [DejaVu Sans Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/DejaVuSansMono) -- [Droid Sans Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/DroidSansMono) -- [Fantasque Sans Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/FantasqueSansMono) -- [Fira Code Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/FiraCode) -- [Fira Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/FiraMono) -- [Go Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Go-Mono) -- [Gohu Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Gohu) -- [Hack Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Hack) -- [Hasklug Nerd Font\*](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Hasklig) -- [Heavy Data Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/HeavyData) -- [Hermut Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Hermit) -- [iM-Writing\*](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/iA-Writer) -- [Inconsolata Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Inconsolata) -- [Inconsolata Go Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/InconsolataGo) -- [Inconsolata LGC Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/InconsolataLGC) -- [Iosevka Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Iosevka) -- [JetBrains Mono](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/JetBrainsMono) -- [Lekton Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Lekton) -- [Literation Mono Nerd Font\*](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/LiberationMono) -- [Meslo Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Meslo) -- [Monofur Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Monofur) -- [Monoid Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Monoid) -- [Mononoki Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Mononoki) -- [M+ (MPlus) Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/MPlus) -- [Noto](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Noto) -- [OpenDyslexic](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/OpenDyslexic) -- [Overpass](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Overpass) -- [ProFont (Windows tweaked) Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/ProFont) -- [ProFont (x11) Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/ProFont) -- [ProggyClean Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/ProggyClean) -- [Roboto Mono](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/RobotoMono) -- [Sauce Code Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/SourceCodePro) -- [Shure Tech Mono Nerd Font\*](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/ShareTechMono) -- [Space Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/SpaceMono) -- [Terminess Nerd Font\*](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Terminus) -- [Tinos](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Tinos) -- [Ubuntu Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Ubuntu) -- [Ubuntu Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/UbuntuMono) -- [Victor Mono](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/VictorMono) +- [3270 Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/3270) +- [Agave](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Agave) +- [Anonymice Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/AnonymousPro) +- [Arimo](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Arimo) +- [Aurulent Sans Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/AurulentSansMono) +- [BigBlueTerminal](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/BigBlueTerminal) +- [Bitstream Vera Sans Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/BitstreamVeraSansMono) +- [Blex\*](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/IBMPlexMono) +- [Caskaydia Cove Nerd Font\*](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/CascadiaCode) +- [Code New Roman Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/CodeNewRoman) +- [Cousine Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Cousine) +- [DaddyTimeMono](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/DaddyTimeMono) +- [DejaVu Sans Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/DejaVuSansMono) +- [Droid Sans Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/DroidSansMono) +- [Fantasque Sans Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/FantasqueSansMono) +- [Fira Code Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/FiraCode) +- [Fira Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/FiraMono) +- [Go Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Go-Mono) +- [Gohu Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Gohu) +- [Hack Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Hack) +- [Hasklug Nerd Font\*](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Hasklig) +- [Heavy Data Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/HeavyData) +- [Hermut Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Hermit) +- [iM-Writing\*](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/iA-Writer) +- [Inconsolata Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Inconsolata) +- [Inconsolata Go Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/InconsolataGo) +- [Inconsolata LGC Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/InconsolataLGC) +- [Iosevka Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Iosevka) +- [JetBrains Mono](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/JetBrainsMono) +- [Lekton Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Lekton) +- [Literation Mono Nerd Font\*](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/LiberationMono) +- [Meslo Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Meslo) +- [Monofur Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Monofur) +- [Monoid Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Monoid) +- [Mononoki Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Mononoki) +- [M+ (MPlus) Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/MPlus) +- [Noto](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Noto) +- [OpenDyslexic](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/OpenDyslexic) +- [Overpass](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Overpass) +- [ProFont (Windows tweaked) Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/ProFont) +- [ProFont (x11) Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/ProFont) +- [ProggyClean Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/ProggyClean) +- [Roboto Mono](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/RobotoMono) +- [Sauce Code Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/SourceCodePro) +- [Shure Tech Mono Nerd Font\*](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/ShareTechMono) +- [Space Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/SpaceMono) +- [Terminess Nerd Font\*](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Terminus) +- [Tinos](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Tinos) +- [Ubuntu Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/Ubuntu) +- [Ubuntu Mono Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/UbuntuMono) +- [Victor Mono](https://github.com/ryanoasis/nerd-fonts/blob/v2.3.3/patched-fonts/VictorMono)