dotfiles
dotfiles copied to clipboard
macOS / Linux / Codespaces compatible dotfiles with 1-line setup script. Tested on Apple Silicon Macs. Supports both zsh and fish. Managed with Chezmoi
Dotfiles
I don't want to waste time setting up my machines, so I spent years maintaining dotfiles.
Dotfiles are meant to be forked, but mine aren't. These scripts install many things you won't ever use. Feel free to look around and copy some of my script to fit your needs.
Chezmoi
The latest version of my dotfiles are managed with Chezmoi. I was using Dotbot & Ansible before.
TODOs
- [x] Fix Fish shell broken in clean install
- [x] Add Homebrew install script (run-once)
- [x] Update this readme
- [x] Cleanup dotbot
- [ ] Linux / Github Codespaces install scripts
- [ ]
git-delta,exanot installed - [ ]
Fishcrashed
- [ ]
- [ ] Documentation website
- [ ] Instructions to import GPG keys
- [ ] 1password integration
Usage
ASK=1 sh -c "$(curl -fsSL https://raw.githubusercontent.com/narze/dotfiles/master/remote_install.sh) -x encrypted -v"
First installation will ask for your name so you can customize a bit, and it will skip the encryped files, since you have to retrieve the GPG private key manually later. Removing ASK=1 will use my names for the machine.
After the first installation you can always change the variables via ASK=1 chezmoi init or run chezmoi edit-config
To change the data or script, chezmoi cd, edit them, then run chezmoi apply.
Manual tasks (One-time per machine)
- macOS
- Run Setapp installer manually after the
brewscript is run. - Login to App Store before running (If not
maswill skip installation and open the App Store for you) - Preferences -> Change input source switch to CMD+Space, and Spotlight search to Option+Space
- Run
mackup restoreonce after Syncthing is installed, logged-in, and~/Sync/Mackupis synced. - Connect to Zerotier private network to mount NAS
- Setup Arq for backup
- Disable Boom 3D keyboard shortcuts
- Disable Timing keyboard shortcuts
- Run Setapp installer manually after the
Features
$ make
help Print command list
dotfiles Update dotfiles
apply Run chezmoi apply
macos Run macos script
Installed Applications & Tools
- macOS
- Homebrew
- Homebrew Cask
- Mas
- Chezmoi
- zsh with zsh4humans + Powerlevel10k theme
- fish with fisher + Tide theme
- asdf with Ruby & Node.js
- tmux
- macOS defaults
- etc.
- Linux
- Dotfiles only
Notes (If you have some time to read)
Zsh + Fish
After the recent drama with Zinit, I decided to give Fish a try, it is good but I also want to still maintain my Zsh configuration. I migrated the settings to zsh4human which is maintained by the one who made Powerlevel10k. It's 2-3x faster than Zinit as of now.
I'll separate the dotfiles script to install zsh or fish separately to save some space. You can also install both like mine.
Apple Silicon
Here are the list of issues I've found on running the script on M1 Macbooks (Tested on both Macbook Air & Macbook Pro)
-
~~dotbot/brew fails silently : Now they need XCode to be installed first (via App Store), rather than just XCode CLT~~ Seems to be fixed now
-
~~Kitty.app installing binaries from Homebrew does get you x86, now you have to Build from source~~
-
ghq get -l kovidgoyal/kitty /opt/homebrew/bin/python3 setup.py kitty.app # Needs python3 from brew cp -r kitty.app /Applications/kitty.app # Replace CLI rm /opt/homebrew/bin/kitty ln -s $PWD/kitty/launcher/kitty /opt/homebrew/bin/kitty -
If you want both versions, download the executable and rename it (
kitty_x86.app)
-
-
~~Docker for Mac : Replace with Tech Preview version~~
-
~~Some brew/asdf packages cannot be installed on arm64~~ See "Apple Silicon specific commands"
-
Setup both versions of Homebrew, then use shell script to point to the correct
brew# Install both versions arch -arm64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # .zshrc if [ "$(uname -m)" == "arm64" ]; then # Use arm64 brew, with fallback to x86 brew if [ -f /opt/homebrew/bin/brew ]; then export PATH="/usr/local/bin${PATH+:$PATH}"; eval $(/opt/homebrew/bin/brew shellenv) fi else # Use x86 brew, with fallback to arm64 brew if [ -f /usr/local/bin/brew ]; then export PATH="/opt/homebrew/bin${PATH+:$PATH}"; eval $(/usr/local/bin/brew shellenv) fi fi -
Rubygems : Specific bundler config is needed (See
bundle config) -
Yabai : Cannot use space switch commands (eg.
yabai -m space --focus 1) even if SIP is disabledWorkaround
Setup native shortcut keys manually and use non-consuming shortcut settings (
->) inskhd
~~Apple Silicon specific commands~~
make brew-x86: Install packages which cannot be instaled witharm64arch right now (eg. ~~kubectl,kubectx~~ Both are now supported!)