Skip to content
montehooverPublic

About

Portable .zshrc and .bashrc files for starting from scratch on a new cluster or laptop.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

125 Commits

Folders and files

Repository files navigation

Monte's Dotfiles Repo

This repo was initially created using the "init-dotfiles" script: https://github.com/Vaelatern/init-dotfiles

To set up a new machine:

  1. git clone https://github.com/montehoover/.dotfiles.git ~/.dotfiles
  2. cd ~/.dotfiles && bash ./install.sh

On macOS, this also installs Homebrew, apps (via brew/mas), dev tools (Claude Code, Miniforge), configures system preferences, and sets up browser extensions. On Windows, use install.cmd instead. The install script is from dotbot, which is a submodule of this repo.

I'm using zsh with oh-my-zsh as a plugin/template manager. I'm using a pretty limited set of plugins (see line 82 of .zshrc) including zsh-autosuggestions and zsh-syntax-highlighting. I like powerlevel10k for a nice minimal theme. If I were to do this again I would use antigen instead of oh-my-zsh, but it is working fine now so I'm not going to mess with it.

I almost never use tmux, but tpm works well as it's plugin manager and I mainly use it for the tmux-sensible plugin that comes bundled with it by default and to add the dracula theme.

I have a few aliases that I like in .profile_shared.

This repo also helps me sync the small basics like .gitconfig and .ssh configs. I also use this repo to carry around slurm/sbatch templates which I find handy.

Passwordless sudo (optional)

Adds a sudoers drop-in rule that lets your user run sudo without a password prompt, which is useful for automated scripts and tools like Claude Code that run in non-interactive shells.

Setup: run sudo visudo -f /etc/sudoers.d/nopasswd and add this single line (replacing monte with your username), then save:

monte ALL=(ALL) NOPASSWD: ALL

Temporarily disable: sudoers ignores files with a . in the name, so renaming the file acts as a toggle.

sudo mv /etc/sudoers.d/nopasswd /etc/sudoers.d/nopasswd.off   # disable
sudo mv /etc/sudoers.d/nopasswd.off /etc/sudoers.d/nopasswd   # re-enable

Revert entirely: remove the drop-in file and sudo immediately reverts to requiring a password.

sudo rm /etc/sudoers.d/nopasswd

Check if enabled: the -n flag makes sudo fail rather than prompt, so this tests whether passwordless sudo is active.

sudo -n true 2>/dev/null && echo "enabled" || echo "disabled"

What Gets Installed (macOS)

Via Homebrew (Brewfile):

  • git, git-lfs
  • gh (GitHub CLI)
  • mas (Mac App Store CLI)
  • bun (JS runtime, required for Claude Code plugins)
  • lastpass-cli (secrets for automated setup)
  • iTerm2
  • Firefox
  • Google Chrome
  • Rectangle
  • Shottr
  • AltTab
  • Visual Studio Code
  • Claude

Via Mac App Store (setup_mac.sh):

  • Microsoft Word, Excel, PowerPoint, OneNote, Outlook
  • Microsoft OneDrive
  • Slack

Dev tools (setup_mac.sh):

  • Claude Code
  • Miniforge (conda)
  • ai-sync (syncs ~/.claude config across machines from a private git repo)

launchd jobs (setup_mac.sh):

  • Configured in launchd/config.yaml; each entry specifies its plist, type (LaunchAgent or LaunchDaemon), and whether to install by default

  • Jobs with run_by_default: yes are installed automatically; others are skipped

  • Plist templates live in launchd/ with {{HOME}} placeholders expanded at install time

  • To manually load a skipped job:

    # LaunchAgent
    sed "s|{{HOME}}|$HOME|g" launchd/com.example.plist > ~/Library/LaunchAgents/com.example.plist
    launchctl load ~/Library/LaunchAgents/com.example.plist
    
    # LaunchDaemon
    sed "s|{{HOME}}|$HOME|g" launchd/com.example.plist | sudo tee /Library/LaunchDaemons/com.example.plist > /dev/null
    sudo chown root:wheel /Library/LaunchDaemons/com.example.plist
    sudo launchctl load /Library/LaunchDaemons/com.example.plist
    
  • Current jobs:

    • com.ai-sync.nightly (LaunchAgent, default: yes) — pulls then pushes ~/.claude config daily at 2 AM
    • com.skills-sync.nightly (LaunchDaemon, default: yes) — copies new Claude Code skill folders into ~/.claude/skills daily at 2 AM

Claude Code Discord channel (setup_mac.sh):

  • Discord plugin install (fallback if ai-sync didn't bring it in)
  • Bot token provisioned from LastPass secure note
  • Access config (user ID + group IDs) provisioned from LastPass

Browser configuration (staged for install on next launch):

  • LastPass (Chrome + Firefox)
  • Adblock Plus (Chrome + Firefox)
  • Firefox: DuckDuckGo as default search engine, built-in password manager disabled

Shell/terminal (via submodules and config):

  • Oh My Zsh
  • zsh-autosuggestions
  • zsh-syntax-highlighting
  • Powerlevel10k theme
  • Nerd Fonts (7 families)
  • tpm (tmux plugin manager)
  • tmux-sensible plugin
  • Dracula tmux theme

Also configured:

  • SSH key generation + GitHub auth
  • iTerm2 default profile (Dynamic Profile with custom colors and font)
  • macOS preferences (Dock autohide, Finder show hidden files/path bar/list view/extensions, tap-to-click, hot corner, iCloud screenshots)

About

Portable .zshrc and .bashrc files for starting from scratch on a new cluster or laptop.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages