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
make help
Use this to see in-terminal help message for available Makefile options.
make bash
This has already been run initially, but use this to sync apt
packages.
This will happen with any run of the script, including with an --install
arg.
make python
This installs Python build dependencies, pyenv
, Python 3.12
, pipx
, a
few pipx
packages that I like to have globally, and creates a symlink
for the .ruff.toml
file in the ~
directory to provide global ruff
rules.
make node
This installs nvm
, Node 18
, and a few NPM
packages that I like to
have globally.
make golang
This deletes the current installation of Golang, installs the latest version,
and copies needed environment variables to the ~/.bashrc
file.
make rust
This installs Rust/Cargo.
make vscode
This installs various VSCode extensions and merges the settings.json
with
any existing user settings on the system.
make all
Install all of the above with this.
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
- 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