Configs, customizations, and themes to personalize my macOS experience, with a heavy focus on Laravel (Herd) development and modern CLI tools.
Important
Feel free to look around, contribute and suggest improvements. However, these will remain my personal config files/preferences written to selfishly fit my needs.
- Shell: Zsh optimized with
zinitfor fast plugin loading and Powerlevel10k instant prompt. - Terminals: WezTerm and Ghostty — both styled with the Catppuccin theme.
- Navigation: zoxide (
cd) for smarter directory jumping. - Session Management: Tmux with TPM, a custom
thelper script, and plugins for sessions, floating panes, and URL opening. - Editor: Neovim (kickstart-based,
lazy.nvim, Catppuccin theme) — aliased tovimandvi. - Laravel Integration: deep integration with Herd, Artisan, Composer, and NPM, including extensive aliases and helper functions.
- Modern CLI Tools: Replaces standard tools with better alternatives:
ls→lsd(icons, colors)cat→bat(syntax highlighting)top→bpytop(beautiful resource monitoring)neofetch→fastfetch(system info)
- AI & Dev Tools: Claude CLI, LM Studio, WakaTime (Neovim).
- Home Lab Helpers: SSH shortcuts, Wake-on-LAN, and Transmission remote control.
Ensure you have the following installed before running the setup:
- git
- zsh
- tmux
- neovim
- fzf (Required for the
tscript and shell integrations) - Recommended Modern Tools:
lsdbatzoxidefastfetchbpytop
-
Set
zshas your default shell. -
Clone the repository to your home directory:
git clone https://github.com/yourusername/dotfiles.git $HOME/bin -
Run the installation script:
cd $HOME/bin chmod +x install ./install
The install script links configuration files from this repo to your home directory.
- Dry run:
./install -n(See what happens without changes) - Verbose:
./install -v(Detailed output) - Safe: Backs up existing configurations before linking (never deletes them).
It also clones Powerlevel10k automatically if it isn't already present.
| Path | Description |
|---|---|
zsh/ |
Shell aliases (aliases.sh) and environment exports/integrations (exports.sh). |
tmux/ |
Tmux configuration, TPM plugins, and helper scripts. |
nvim/ |
Complete Neovim configuration based on kickstart.nvim. |
wezterm/ |
WezTerm terminal configuration (Monaspace Krypton font, Catppuccin Mocha). |
ghostty/ |
Ghostty terminal configuration (Dank Mono font, Catppuccin adaptive theme). |
scripts/ |
Custom scripts, including the t session helper and transmission controller. |
.zshrc |
Main shell configuration file (zinit plugins, keybindings, history, completions). |
Create a .env file in ~/bin/ to store local secrets and machine-specific configs. This file is ignored by git and safely loaded on shell startup.
# Example ~/bin/.env
HOME_IP=192.168.1.5
HOME_MAC=aa:bb:cc:dd:ee:ff
HOME_TRANSMISSION_PORT=9091
HOME_TRANSMISSION_USERNAME=admin
HOME_TRANSMISSION_PASSWORD=secretThe shell automatically detects .nvmrc files and switches Node versions via nvm when changing directories.
| Alias | Command | Description |
|---|---|---|
a |
php artisan |
Run artisan commands |
mf |
a migrate |
Run migrations |
mfs |
a migrate:fresh --seed && a optimize:clear |
Fresh migration with seeds |
mfsr |
mfs && redis-cli flushdb |
Fresh migration, seed, and flush Redis |
tinker |
a tinker |
Enter execution loop |
a:t |
artisan:test |
Run tests |
a:tp |
a:t --parallel |
Run tests in parallel |
a:tt |
artisan:test-with-coverage |
Run tests with HTML coverage report |
a:cc |
a cache:clear |
Clear caches |
a:op |
a optimize:clear |
Clear optimized files |
ide:helper |
a ide-helper:generate && a ide-helper:meta && a ide-helper:models --nowrite |
Generate IDE helpers |
duster |
./vendor/bin/duster |
Run Laravel Duster |
lint |
duster lint |
Lint code |
fix |
duster fix |
Auto-fix code |
expose |
expose --server-host=repounlock.com |
Expose local site |
share / h:s |
herd share --server-host=repounlock.com |
Share via Herd |
| Alias | Command | Description |
|---|---|---|
g |
git |
Git shorthand |
gst |
git status |
Status |
ga |
git add |
Stage files |
gaa |
git add . |
Stage all |
gc |
git commit |
Commit |
gcm |
git commit -m |
Commit with message |
gp |
git push |
Push |
gco |
git checkout |
Checkout branch |
gd |
git diff |
Diff |
gl / gll |
git log / git log --oneline --graph |
Log |
| Alias | Command | Description |
|---|---|---|
l / ls |
lsd |
List files with icons |
la |
lsd -A |
List all files |
ll |
lsd -Fl |
List with details |
cat |
bat |
View file with syntax highlighting |
top |
bpytop |
System resource monitor |
neofetch |
fastfetch |
System info |
tm |
tmux -u |
Start Tmux |
vim / vi / v |
nvim |
Open Neovim |
cc |
claude --dangerously-skip-permissions |
Claude CLI |
ccr |
claude --resume |
Resume Claude session |
| Function | Description |
|---|---|
commit [message] |
Stage all and commit (WIP if no message) |
commit:push [message] / wip |
Stage, commit, and push to current branch |
switch:master |
Checkout master and pull |
schedule:run |
Loop php artisan schedule:run every 60 seconds |
artisan:test-with-coverage |
Run tests with coverage and open in browser |
lab [command] |
SSH into home server, or run a remote command |
lab:suspend |
Suspend home server |
lab:sleep |
Suspend home server with RTC wake time |
lab:wake |
Wake home server via Wake-on-LAN |
The t script (linked to ~/.local/bin/t) is a powerhouse for managing workflow.
t: Opensfzfto select a project from~/code,~/code/turbine/products,~/code/turbine/internal, or~/bin.t [directory]: Directly opens or attaches to a tmux session for that directory.
It automatically names sessions based on the folder name and handles attaching/detaching seamlessly.
Plugins are managed via TPM. Key features include:
- Catppuccin theme with custom status modules: session, directory, todos, meetings (calendar), and date/time.
tmux-sessionx(Ctrl-a+s): Fuzzy session switcher with zoxide integration.tmux-floax(Ctrl-a+p): Floating popup window for quick tasks.tmux-fzf-url: Open URLs from the buffer withfzf.tmux-thumbs: Rapid copy-paste of file paths, IPs, etc.- Smart navigation:
Ctrl-h/j/k/lseamlessly moves between vim and tmux panes.
A Python CLI script to manage a remote Transmission daemon.
transmission --list # List all torrents
transmission --downloading # List active downloads
transmission --pause-all # Pause everything
transmission --start-all # Resume everything
transmission --stop 1 2 3 # Stop specific torrent IDs