Dotbin
dotbin
is my personal tool for scripting and managing portable software. On Windows, it also sets up Unix and GNU utilities.
Make sure you already have Rust
Since we need it here.
As part of the process, we will set up pyenv
, and for Windows, git
.
WARNING
For Windows, before we start, make sure all Python installation has been uninstalled. Make sure the PYTHONHOME
and any environment variables starting with PYENV_
are cleared. Also make sure the directory you are running commands in doesn't have a .python-version
file.
WARNING
Please run the Windows commands with PowerShell 5 for now. In the Windows setup, we will setup Windows PowerShell 7, which you should use for the rest of the setup and in general.
Download Portable Git
TIP
Skip this section on Linux, or another installation of Git is to be used.
- Uninstall any existing Git installations, and clean up the environment variables (
PATH
) - Download the portable Git from https://git-scm.com/downloads/win
- Extract the self-extracting archive to
Downloads
- Add the
bin
folder to path temporarilypowershell$env:PATH+=";C:\Users\$env:USERNAME\Downloads\PortableGit\bin"
- Verify you can run
git
from the command linepowershellget-command git
Clone the dotbin
and pyenv
repos
Windows
git clone https://github.com/Pistonite/dotbin.git $env:USERPROFILE/dotbin
New-Item -ItemType Directory -Path $env:USERPROFILE/dotbin/extra/portable -Force
git clone https://github.com/pyenv-win/pyenv-win.git $env:USERPROFILE\dotbin\extra\portable\pyenv
For Portable Git, move it to the dotbin
folder, and configure links
Move-Item -Path "C:\Users\$env:USERNAME\Downloads\PortableGit" -Destination $env:USERPROFILE\dotbin\extra\portable\git
Add-Content -Path $env:USERPROFILE\dotbin\extra\portable\link -Value "git\cmd\git.exe"
Linux
git clone https://github.com/Pistonite/dotbin.git ~/dotbin
mkdir -p ~/dotbin/extra/portable
git clone https://github.com/pyenv/pyenv.git ~/dotbin/extra/portable/pyenv
Setup pyenv
and dotbin
environment
- Windows: Execute the following in powershellpowershell
$dotbin_pyenv=$env:USERPROFILE+"\dotbin\extra\portable\pyenv\pyenv-win\" $dotbin_bin=$env:USERPROFILE+"\dotbin\bin" $dotbin_extra_symlink=$env:USERPROFILE+"\dotbin\extra\symlink" $dotbin_extra_bin=$env:USERPROFILE+"\dotbin\extra\bin" $path=$dotbin_pyenv+"bin;"+$dotbin_pyenv+"shims;"+$dotbin_bin+";"+$dotbin_extra_symlink+";"+$dotbin_extra_bin+";" [System.Environment]::SetEnvironmentVariable('PYENV',$dotbin_pyenv,"User") [System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$dotbin_pyenv,"User") [System.Environment]::SetEnvironmentVariable('PYENV_HOME',$dotbin_pyenv,"User") [System.Environment]::SetEnvironmentVariable('PATH',$path+[System.Environment]::GetEnvironmentVariable('path', "User"),"User")
- Linux: add the following to
.bashrc
bash# Pyenv export PYENV_ROOT=$HOME/dotbin/extra/portable/pyenv export PATH=$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH eval "$(pyenv init -)" alias epyvenv='source ./venv/bin/activate' # Dotbin export PATH=$HOME/dotbin/bin:$HOME/dotbin/extra/symlink:$HOME/dotbin/extra/bin:$PATH
DANGER
Restart the shell afterward to get the new PATH
Setup PowerShell 7 (Windows Only)
We will install PowerShell 7 into dotbin
and set it as the default profile for Windows Terminal.
The guides work with PowerShell 7.5 and above.
- Download the ZIP from the GitHub releases. You might need to pick a preview release.
- Set the version for scriptspowershell
$version="7.5.0-preview.5"
- Extract itpowershell
Expand-Archive -Path $env:USERPROFILE\Downloads\PowerShell-$version-win-x64.zip -DestinationPath $env:USERPROFILE\dotbin\extra\portable\pwsh
- Add to
PATH
powershell$path=$env:USERPROFILE+"\dotbin\extra\portable\pwsh;"+[System.Environment]::GetEnvironmentVariable('path', "User") [System.Environment]::SetEnvironmentVariable('PATH',$path,"User")
- Close PowerShell 5 (aka Windows PowerShell) and open Windows Terminal.
- Right click the title bar and choose "Settings"
- Click "Open JSON settings" on the lower left
- Change
defaultProfile
to{bb6f7902-320e-4f8c-bbad-9578445057d2}
- Under
profiles.list
, add a new profile at the top:json{ "commandline": "%USERPROFILE%\\dotbin\\extra\\portable\\pwsh\\pwsh.exe -NoLogo", "guid": "{bb6f7902-320e-4f8c-bbad-9578445057d2}", "hidden": false, "icon": "%USERPROFILE%\\dotbin\\extra\\portable\\pwsh\\pwsh.exe", "name": "PowerShell 7", "startingDirectory": "%USERPROFILE%" },
- Restart Windows Terminal, and confirm your PowerShell version:powershell
$PSVersionTable
Install Python and setup dotbin
WARNING
On Windows, ~
expansion only works with PowerShell 7.5 and above!
pyenv install 3.12
pyenv global 3.12
pip install -r ~/dotbin/requirements.txt
python ~/dotbin/script/configure-dotbin.py
INFO
This also sets up extra utils and coreutils for Windows. Use vipwsh
to edit the PowerShell profile and add the following to the profile.
# Coreutils
. $PSScriptRoot\Initialize-Coreutils.ps1
WARNING
Restart the shell afterward!
On Windows, for Portable Git setup, do one last step to set up git
in PATH
sudo dotbin-link
Update dotbin
To update dotbin in the future, run
git -C ~/dotbin pull
dotbin-cfg dotbin
Windows Defender
On Windows, exclude dotbin
from Windows Defender, so tool start-up is faster.
WARNING
Run as admin!
Add-MpPreference -ExclusionPath ~/dotbin