Plain text configs for bootstrapping my (PDE) Personal Development Enviroment.
My primary operating system is macOS, but I do use Linux sometimes... (arch, btw!)
Also Ubuntu Server in the cloud
Feel free to try out my dotfiles or use them as inspiration! If you have a suggestion, improvement or question, please open an issue or PR!
- Open-Source
- Flow State
- Minimalism
- Keyboard Home Row Centric
- Design & Aesthetics
- Productivity (minimize distractions)
- Form & Function (beauty and action)
- Portable
- Bleeding Edge
Lazyvim Welcome screen
Yabai bsp grid with 5 cmatrix running
yabai demo with cmatrix 5 grid
Zellij fastfetch, cmatrix, htop
Zellij Neovim htop cmatrix
Zellij welcome screen
- Deno - For peek.nvim
- Neovim >= 0.9.0 (needs to be built with LuaJIT)
- Git >= 2.19.0 (for partial clones support)
- LazyVim
- a Nerd Font(v3.0 or greater) (optional, but needed to display some icons, Patched Operator Mono Provided in the repo)
- lazygit (optional)
- a C compiler for
nvim-treesitter. See here - for telescope.nvim (optional)
- a terminal that support true color and undercurl:
- Patched Operator Mono (included in fonts directory)
- Added Nerd Fonts
- Added Ligatures
defaults write -g ApplePressAndHoldEnabled -bool falseinstall ghostty through homebrew
brew install --cask ghostty
cdinto dotfiles
cd ~/dotfiles/
- stow the config
stow ghostty
- install fish shell through homebrew
brew install fish
- Add fish to the list of allowed shells by appending its path to /etc/shells
echo $(which fish) | sudo tee -a /etc/shells
- set fish shell to the default shell
chsh -s /opt/homebrew/bin/fish
- exit the current terminal
exit- check if fish shell is set as the default shell
echo $SHELL # expected output: # /opt/homebrew/bin/fish (if on macOS)
- delete config folder
rm -rf ~/.config/fishcdinto dotfiles
cd ~/dotfiles/
- stow the config
stow fish
Troubleshooting: if you don't see a recently added path in the $PATH make sure to delete ~/.config/fish/fish_variables, and exit the terminal and restart to clear the cache
- Install neovim
brew install neovim # make sure you have the latest version- install deno for (peek.nvim)
curl -fsSL https://deno.land/install.sh | sh- Backup previous config
mv ~/.config/nvim ~/.config/nvim.bak mv ~/.local/share/nvim ~/.local/share/nvim.bak
- Install LazyVim
git clone https://github.com/LazyVim/starter ~/.config/nvim
- Remove the .git folder, so you can add it to your own repo later
rm -rf ~/.config/nvim/.git- clone dotfiles (needs to be cloned in root directory for GNU Stow work)
git clone git@github.com:TheKelvinPerez/dotfiles.git ~/dotfiles- delete lua directory in nvim
rm -rf ~/.config/nvim/lua/*
cdinto dotfiles
cd ~/dotfiles/
- if on macOS (you might need to delete DS_Store files)
dir="${1:-.}" && echo "Removing .DS_STORE files from $dir" && find "$dir" -type f -name .DS_STORE -delete && echo "ALL .DS_STORE files have been removed from $dir"
- stow lazyvim
stow nvim
- startup neovim
nvim
- sit back and enjoy the installation
xcode-select --install
git --version # check to make sure you have git installedcdinto dotfiles
cd ~/dotfiles/
stowgit
stow git
- Install Zellij
brew install zellij
cdinto dotfiles
cd ~/dotfiles/
stowzellij
stow zellij
- Install Yabai
brew install koekeishiya/formulae/yabai
- Turn off your device
- Intel (apple docs):
Hold down command ⌘+R while booting your device. Apple Silicon (apple docs):
Press and hold the power button on your Mac until "Loading startup options" appears.
Click Options, then click Continue. - In the menu bar, choose
Utilities, thenTerminal - Disable System Integrity Protection
# # APPLE SILICON # # If you're on Apple Silicon macOS 13.x.x OR newer # Requires Filesystem Protections, Debugging Restrictions and NVRAM Protection to be disabled # (printed warning can be safely ignored) csrutil enable --without fs --without debug --without nvram # If you're on Apple Silicon macOS 12.x.x # Requires Filesystem Protections, Debugging Restrictions and NVRAM Protection to be disabled # (printed warning can be safely ignored) csrutil disable --with kext --with dtrace --with basesystem # # INTEL # # If you're on Intel macOS 11.x.x OR newer # Requires Filesystem Protections and Debugging Restrictions to be disabled (workaround because --without debug does not work) # (printed warning can be safely ignored) csrutil disable --with kext --with dtrace --with nvram --with basesystem
- Reboot
- For Apple Silicon; enable non-Apple-signed arm64e binaries
# Open a terminal and run the below command, then reboot
sudo nvram boot-args=-arm64e_preview_abi
- You can verify that System Integrity Protection is turned off by running
csrutil status, which returnsSystem Integrity Protection status: disabled.if it is turned off (it may showunknownfor newer versions of macOS when disabling SIP partially).
If you ever want to re–enable System Integrity Protection after uninstalling yabai; repeat the steps above, but run csrutil enable instead at step 4.
Why do you need scripting additions?
yabai uses the macOS Mach APIs to inject code into Dock.app; this requires elevated (root) privileges. You can configure your user to execute yabai --load-sa as the root user without having to enter a password. To do this, we add a new configuration entry that is loaded by /etc/sudoers.
If you know what you are doing, the following one-liner can be used to update the sudoers file correctly:
echo "$(whoami) ALL=(root) NOPASSWD: sha256:$(shasum -a 256 $(which yabai) | cut -d " " -f 1) $(which yabai) --load-sa" | sudo tee /private/etc/sudoers.d/yabai # Verify that it worked sudo visudo -f /private/etc/sudoers.d/yabai
lastly make sure to uncomment the last line from the sudoers file
sudo visudo -f /private/etc/sudoers
it should read
#includedir /private/etc/sudoers.d (sometimes it has 2 ## it should only have 1)
finaly reboot your mac
yabai -m space --focus recent
the intented result should be that you change your window focus, if not you did not correctly add the scripting additions
cdinto dotfiles
cd ~/dotfiles/
stowyabai
stow yabai
startyabai service
yabai --start-service
- Install skhd
brew install koekeishiya/formulae/skhd
startservice
skhd --start-service
cdinto dotfiles
cd ~/dotfiles/
stowzellij
stow skhd
(Programming, Content creation, Writing)
- Ghostty - Terminal
- Homebrew - Package manager
- Raycast - App Launcher
- Obsidian - Sync through iCloud
- Yabai - Window Manager
- SKHD - Keyboard Shortcut Manager
- Karabiner Elements - Hypermod and sublayers
- Shortcat - Vim for the desktop
- KeyCastr - For keyboard casting of shortcuts
- LazyVim - Neovim distribution with sane defaults and beautiful UI
- Theme: Catppuccin Mocha with transparent background
- LazyVim Extras:
- PHP - PHP language support with Intelephense
- Tailwind CSS - Tailwind CSS IntelliSense
- TOML - TOML language support
- JSON - Enhanced JSON support
- Astro - Astro framework support
- SQL - SQL language support
- Markdown - Enhanced markdown editing
- Yanky - Improved yank/paste operations
- Prettier - Code formatting
- DAP Core - Debug Adapter Protocol
- Custom Plugins:
- Claude Code - Claude AI integration for Neovim
- vim-dadbod - Database interface
- vim-be-good - Vim practice game
- vim-matchup - Enhanced % navigation
- streamer-mode - Hide sensitive env vars while streaming
- KDL - KDL language support (for Zellij)
- Language Support:
- PHP: Intelephense LSP with WordPress/WooCommerce stubs, phpcbf formatter, phpcs linter
- Twig: Twiggy Language Server, twig-cs-fixer (disabled by default)
- JavaScript/TypeScript: tsserver LSP with relative imports
- HTML: HTML LSP with Emmet support in PHP files
- CSS/SCSS: CSS LSP with Tailwind CSS support
- Astro: Full Astro framework support
- SQL: SQL language server and syntax
- Markdown: Enhanced markdown editing and preview
- TOML: TOML language support
- JSON: Enhanced JSON support
- KDL: KDL Document Language (Zellij config)
- Vimium
- Wappalyzer
- Dark Reader - with Catppuccin Mocha theme
- uBlock Origin
- 1Password
- Undistracted
- Bypass Paywalls
- Responsive Viewer
- Mobile responsive viewer for web development
- WhatFont
- Identifies fonts used on web pages
- FireShot
- Captures full screenshots of web pages
- MetaMask
- Ethereum wallet and gateway to blockchain apps
- Google Search Location Changer
- Changes your Google search location
- React Developer Tools
- Debugging tools for React applications
- Ableton Live 12 - DAW
- Affinity Photo - Professional image editing software
- Android File Transfer - File transfer tool for Android devices
- Binaural - Binaural beats generator
- LuLu - Security and network traffic blocker
- CleanShot X - Advanced screenshot and screen recording tool
- Gestimer - Simple menubar timer
- IINA - Modern video player
- KeyboardCleanTool - Tool to clean your keyboard
- Audio Hijack - Advanced audio recording software
- Memory Clean 3 - Memory optimization tool
- Parallels - Virtual machine software
- CrossOver - Run Windows applications on macOS
- Rize - Productivity tracker for macOS
- Screen Studio - Screen recording and editing tool
- ScreenFlow - Screen recording and video editing software
- TablePlus - Database manager
- The Unarchiver - File extraction utility
- xScope - Set of tools for UI/UX Designers
- Bartender 5 - macOS Menubar management
- Keka - File compression and extraction
- Voicemod - Real-time voice changer
- OBS - Open source video recording and live streaming
- Kaleidoscope - File and image comparison tool
- AlDente - macOS Battery Manager
- Dynamic Wallpaper - Wallpaper changer for macOS
- ColorSlurp - Color picker and organizer
- Elgato Stream Deck - Customizable control panel
- Farrago - Soundboard for macOS
- add links for apps i use
- neovim setup
- fish setup
- git setup
- Zellij setup
- skhd setup
- yabai setup
- obsidian setup & config
- vs code setup & config
- document how to use GNU Stow with my dotfiles
- add a quick start guide (use this for video)
- add a video showing how to bootstrap the install and using the config
- update screenshots with new tools that i'm using and display them