Debian dotfiles for a mostly WSL2-based setup with a growing list of compatible distros/environments.
Install apt
packages and basic Bash profile:
curl -s https://raw.githubusercontent.com/dannybrown37/dotfiles/main/install/this_repo.sh | bash
The output of make
in the root directory:
Usage: make [option]
Bootstrap scripts:
bash Install Bash profile (tmux, apt packages, etc.)
python Install Python environment (uv, select uv tools)
node Install Node.js environment (nvm, Node 18, select global packages)
deno Install Deno 2
golang Install Go environment (latest Golang version)
rust Install Rust environment (latest Rust version, select global packages)
nvim Install Neovim
vscode Install VS Code extensions and settings
all Install all of the above
gnome Install Gnome extensions
These commands require GPG keys and secrets:
sync-secrets Attempt to sync local secrets and password-store
insert-ahk Push local ahk secrets to password-store
insert-bash Push local bash secrets to password-store
insert-secrets Write all secrets files to password-store
pull-ahk Pull ahk secrets from password-store to local files
pull-bash Pull bash secrets from password-store to local files
pull-secrets Read all secrets files from password-store
ahk
: run all AutoHotKey scripts in the./ahk
directory from WSL or Git Bash in the Windows environmentahk help
: feed all available hotstrings intofzf
for review (not selection)ahk kill
: kill all running autohotkey processesahk open
: open ahk/hotstrings.ahk in VSCodeahk secrets
: open ahk/secrets.ahk in VSCodebuildlogs
: see the latest build logs for configured AWS CodePipeline stackcdp
: move directly to any directory in ~/projects (with tab autocomplete)cf
: use fzf to open one or more (with tab) files in VS Codecht
: curl cht.sh for commonly used tools/languages. Add new ones as needed in cht/.cht_sh_indexcpw
: copy files from WSL to Windows easily, defaults to Downloads folder (with tab autocomplete)ff
: Fuzzy find current folder with a preview panel.fh
: Run bash history intofzf
and select command to run from there.gg/google
: google something from the terminal, no quotes needed, pops open a web browserlopen
: open to the monitoring tab of a specific AWS Lambdamk
: mkdir and cd into itnode_project_init
: spin up a git repo, gitignore file, and package.json for a Node projectnvi
: use fzf to open one or more (with tab) files in Neovimpip_project_init
: spin up a Python package starter set of files viacookiecutter
and my configuration for itpush
: Send a push alert to your phonepush_to_topic
: Send a push alert to a custom topicurl
: Open up a URL directly using the system browser
- In the
ahk/
directory, set up any number of AutoHotKey scripts:hotstrings.ahk
for generalized shortcutssecrets.ahk
for non-public shortcuts not to be committed- etc.
- In the
bin/
directory, configure scripts that use dynamic data and need to invoke other functions outside of the main function - In the
config/
directory, configure a Bash profile based on various settings:.bashrc
holds a full config file that is symlinked to~
.gitconfig
holds git config info that is symlinked to~
.inputrc
for Bash prompt customizations.ruff.toml
holds Python linting rules symlinked to~
for global use.secrets
holds data not for committing to git
- In the
./nvim
directory, configure a Neovim profile. - In the
./.vscode
directory:settings.json
for VS Code user settingsextensions.txt
for essential VS Code extensions
- In the
./wsl/
directory, configure WSL-only settings and functions
- Use Ctrl+J/Ctrl+K to scroll up and down through command history
- Use escape to clear current prompt entry
Assuming you are properly authorized to do so on the machine in question:
make insert-secrets
Push ./config/.secrets
and ./ahk/secrets.ahk
into the encrypted password-store
.
Or push individually:
make insert-ahk
make insert-bash
make pull-secrets
Pull data from the password-store
into locations at ./config/.secrets
and ./ahk/secrets.ahk
Or pull individually:
make pull-ahk
make pull-bash
make sync-secrets
Attempt to sync data between password-store
and local secrets files. Because this may
have unintended consequences, local secrets files are backed up first (password-store
would require a commit to truly overwrite).
For when you're truly starting from scratch.
In PowerShell, choose a distro:
wsl --set-default-version 2
wsl --install -d Debian
To reset a WSL distro (for example):
wsl --unregister kali-linux