# just set up symlinks
./install
# or to also install apt/zsh plugins/vscode extensions
./install-allThat won't overwrite any existing dotfiles. Relocate any collisions manually
before running the install script if you want the ones in this repo (see
install.conf.yaml for which links are added).
- oh-my-zsh (zsh plugin framework and lots of aliases)
- powerlevel10k (fast zsh prompt theme)
- cyrus gdb dashboard (featureful gdb dashboard)
- tmux config
- Neovim config (
vim/.vimrcβ~/.config/nvim/init.vim)
Probably the most opinionated thing is the powerlevel10k config - see
zsh/.p10k.zsh for customizing. That theme also has a
customization wizard, see https://github.com/romkatv/powerlevel10k.
Fork this repo.
There are a few spots where I insert host-specific configs.
The ~/.gitconfig will include ~/.gitconfig-local. I use
this to apply user name/email settings based on filesystem location
(see https://git-scm.com/docs/git-config#_conditional_includes):
# in ~/.gitconfig-local:
[user]
name = Noah Pendleton
[includeIf "gitdir:~/dev/work/"]
path = ~/dev/work/.gitconfig
[includeIf "gitdir:~/dev/github/"]
path = ~/dev/github/.gitconfig
# in ~/dev/work/.gitconfig:
[user]
email = my-email@work.com
# in ~/dev/github/.gitconfig:
[user]
email = my-email@noreply.github.comAfter you set this up, verify with git config --list.
To use a separate key for a particular directory, override the ssh command in
that directory's gitconfig (e.g. ~/dev/work/.gitconfig):
[core]
sshCommand = "ssh -i ~/.ssh/id_rsa.work.pub"Using the public key file lets ssh-agent select it first without bypassing the agent (which would require re-entering the passphrase each time). Generate a public key from a private key with:
ssh-keygen -y -f ~/.ssh/id_rsa.work > ~/.ssh/id_rsa.work.pubThe ~/.zshrc file will source ~/.zshrc_local near the end,
for host-specific settings.
Not tracked in the repo (host-specific). Example for selecting the correct SSH key for GitHub:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa.github
IdentitiesOnly yesFast find replacement that honors .gitignore by default.
cargo install fd-findFuzzy searcher for terminal history and path searching.
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/installVastly faster grep replacement written in Rust.
cargo install ripgrepFast Python package and project manager.
curl -LsSf https://astral.sh/uv/install.sh | shNicer diffs, e.g. diff -du <file1> <file2> | ydiff.
uv tool install ydiffSet your environment when entering a directory, by placing a .envrc file into
that directory.
To activate a uv-managed virtualenv automatically:
# .envrc
uv venv && source .venv/bin/activatePowerlevel10k recommended font: https://github.com/romkatv/powerlevel10k/#recommended-meslo-nerd-font-patched-for-powerlevel10k
kitty.conf is installed as part of ./install.
To use kitty as the default terminal in GNOME (e.g. via ctrl+alt+t):
gsettings set org.gnome.desktop.default-applications.terminal exec "$HOME/.local/kitty.app/bin/kitty"If the key binding isn't working, check for errors with:
journalctl -f _UID=$(id --user)Requires either configuration in the gnome-weather application or enabling location in GNOME.
sudo apt install gnome-weather chrome-gnome-shell
# enable the extension
open https://extensions.gnome.org/extension/5470/weather-oclock/https://extensions.gnome.org/extension/779/clipboard-indicator/
gsettings set org.gnome.desktop.wm.preferences mouse-button-modifier "<Super>"Nice featureful gdb-dashboard. Tracked as a submodule in this repo.
Note: if debugging shared libraries that haven't been loaded yet, run
set confirm off to allow setting breakpoints on symbols that haven't loaded.
