From f311c01a1b2672ab2c724674de8022e83988545e Mon Sep 17 00:00:00 2001 From: "Simen A. W. Olsen" Date: Fri, 27 Dec 2024 14:37:58 +0100 Subject: reorganize --- .aliases.zsh | 31 --- .config/tmux/tmux.conf | 64 ----- .extras.zsh | 28 --- .gitconfig | 68 ----- .macos | 658 ------------------------------------------------- .path.zsh | 13 - .zshrc | 23 -- Brewfile | 158 ------------ apps/Brewfile | 158 ++++++++++++ bootstrap.sh | 35 ++- git/.gitconfig | 68 +++++ macos/macos | 658 +++++++++++++++++++++++++++++++++++++++++++++++++ tmux/tmux.conf | 64 +++++ zsh/.zshrc | 23 ++ zsh/aliases.zsh | 31 +++ zsh/extras.zsh | 28 +++ zsh/path.zsh | 13 + 17 files changed, 1076 insertions(+), 1045 deletions(-) delete mode 100644 .aliases.zsh delete mode 100644 .config/tmux/tmux.conf delete mode 100755 .extras.zsh delete mode 100644 .gitconfig delete mode 100755 .macos delete mode 100644 .path.zsh delete mode 100644 .zshrc delete mode 100644 Brewfile create mode 100644 apps/Brewfile create mode 100644 git/.gitconfig create mode 100755 macos/macos create mode 100644 tmux/tmux.conf create mode 100644 zsh/.zshrc create mode 100644 zsh/aliases.zsh create mode 100755 zsh/extras.zsh create mode 100644 zsh/path.zsh diff --git a/.aliases.zsh b/.aliases.zsh deleted file mode 100644 index ebda55c..0000000 --- a/.aliases.zsh +++ /dev/null @@ -1,31 +0,0 @@ -# Git aliases -alias git-unpushed='git log --branches --not --remotes --no-walk --decorate --oneline' -alias gb='git checkout -b' -alias gfr='git fetch upstream && git rebase upstream/main' -alias git-undo='git reset --soft HEAD~1' -alias git-clean-branches="git for-each-ref --format '%(refname:short)' refs/heads | grep -v 'master\|main' | xargs git branch -D" -alias :q='exit' -alias ls='ls --color' - -# Generic / Random / Utility -alias rg="rg --hidden --glob '!.git' --glob '!node_modules'" -alias r='cd $REPOS/github.com/' -alias c='clear' -alias afk='pmset displaysleepnow' -alias dl="cd ~/Downloads" -alias l='ls -l' -alias todo='nt' -alias tasks="open 'obsidian://open?file=-%20Oppgaver'" -alias todos="mt ~/ghq/github.com/simenandre/notes/" -# alias docker-compose=podman-compose -alias today="open 'obsidian://advanced-uri?daily=true'" -alias tre="tree -I '.git|node_modules'" -alias timeliste="open 'https://tripletex.no/execute/updateHourlist?contextId=11208568'" -alias t="open 'https://tripletex.no/execute/updateHourlist?contextId=11208568'" -alias fork-cleaner="fork-cleaner --token $(cat ~/.secrets/github-token)" -alias vi="nvim" -alias vim="nvim" -alias v="nvim" - -alias dump-issues="getBjerkIssues > ~/Downloads/issues-$(date -I).json" - diff --git a/.config/tmux/tmux.conf b/.config/tmux/tmux.conf deleted file mode 100644 index ca1ab51..0000000 --- a/.config/tmux/tmux.conf +++ /dev/null @@ -1,64 +0,0 @@ - -unbind C-b -set-option -g prefix C-a -bind-key C-a send-prefix -set -g status-style 'bg=#333333 fg=#5eacd3' -set -g mouse on -set -g base-index 1 -set -g pane-base-index 1 -set-window-option -g pane-base-index 1 -set-option -g renumber-windows on -set-option -g mouse on - -set -ga terminal-overrides ",screen-256color*:Tc" -set-option -g default-terminal "screen-256color" -set -s escape-time 0 - -set-window-option -g mode-keys vi -bind -T copy-mode-vi v send-keys -X begin-selection -bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard' - -bind '"' split-window -c "#{pane_current_path}" -bind % split-window -h -c "#{pane_current_path}" - -bind-key -r g run-shell "tmux neww lazygit" -bind-key -r i run-shell "tmux neww ~/scripts/tmux-cht.sh" - -bind-key -r f run-shell "tmux neww twm" -bind-key -r F run-shell "tmux neww twm -l" -bind-key -r e run-shell "tmux switch -t $TWM_DEFAULT" -bind X confirm-before kill-session - -# Smart pane switching with awareness of Vim splits. -# See: https://github.com/christoomey/vim-tmux-navigator - -# decide whether we're in a Vim process -is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ - | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'" - -bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L' -bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D' -bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U' -bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R' - -tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")' - -if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \ - "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'" -if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \ - "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'" - -bind-key -n 'C-Space' if-shell "$is_vim" 'send-keys C-Space' 'select-pane -t:.+' - -bind-key -T copy-mode-vi 'C-h' select-pane -L -bind-key -T copy-mode-vi 'C-j' select-pane -D -bind-key -T copy-mode-vi 'C-k' select-pane -U -bind-key -T copy-mode-vi 'C-l' select-pane -R -bind-key -T copy-mode-vi 'C-\' select-pane -l -bind-key -T copy-mode-vi 'C-Space' select-pane -t:.+ - -set -g @plugin 'tmux-plugins/tpm' -set -g @plugin 'tmux-plugins/tmux-sensible' - - -run '~/.tmux/plugins/tpm/tpm' diff --git a/.extras.zsh b/.extras.zsh deleted file mode 100755 index 0647ca0..0000000 --- a/.extras.zsh +++ /dev/null @@ -1,28 +0,0 @@ -NOTES_DIR=$HOME/ghq/github.com/simenandre/notes/ -function note() { - if [ $1 ]; then - FILE=$NOTES_DIR/$(date +%Y-%m-%d).md - - if [ $2 ]; then - FILE=$2 - fi - - echo $1 >> $FILE - fi -} - -function nt() { - if [ $1 ]; then - CONTENT="- [ ] $1" - note $CONTENT $2 - fi -} - -function getBjerkIssues() { - gh issue list --repo bjerkio/internal \ - --search "-label:backlog -label:kind/system" \ - --json title,body,url,createdAt,assignees,number,labels,comments \ - --jq 'map({url, createdAt, title, labels: [.labels[].name], assignees: [.assignees[].login], body, number: "#\(.number)", comments: .comments | map({ body: .body, createdAt: .createdAt })})' -} - - diff --git a/.gitconfig b/.gitconfig deleted file mode 100644 index 017cd90..0000000 --- a/.gitconfig +++ /dev/null @@ -1,68 +0,0 @@ -[user] -name = Simen A. W. Olsen -email = hello@simenandre.no -signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMCyUn5BfmAnd/6xi0X1mYF/+jPOmCS0bpNUePF55gCY - -[apply] -# Detect whitespace errors when applying a patch -whitespace = fix - -[core] -# Make `git rebase` safer on OS X -# More info: -trustctime = false -editor = nvim -excludesfile = ~/.gitignore_global - -[color] -# Use colors in Git commands that are capable of colored output when -# outputting to the terminal. (This is the default setting in Git ≥ 1.8.4.) -ui = auto - -[color "branch"] -current = yellow reverse -local = yellow -remote = green - -[color "diff"] -meta = yellow bold -frag = magenta bold # line info -old = red # deletions -new = green # additions - -[color "status"] -added = yellow -changed = green -untracked = cyan - -[diff] -# Detect copies as well as renames -renames = copies - -[help] -# Automatically correct and execute mistyped commands -autocorrect = 1 - -[merge] -# Include summaries of merged commits in newly created merge commit messages -log = true - -[push] -autoSetupRemote = true - -[gpg] -program = ssh -format = ssh - -[github] -user = simenandre - -[pull] -rebase = true - -[url "git@github.com:"] - insteadOf = https://github.com/ -[gpg "ssh"] - program = /Applications/1Password.app/Contents/MacOS/op-ssh-sign -[commit] - gpgsign = true diff --git a/.macos b/.macos deleted file mode 100755 index 77b3d29..0000000 --- a/.macos +++ /dev/null @@ -1,658 +0,0 @@ -#!/usr/bin/env bash - -# ~/.macos — https://mths.be/macos - -# Close any open System Preferences panes, to prevent them from overriding -# settings we’re about to change -osascript -e 'tell application "System Preferences" to quit' - -# Ask for the administrator password upfront -sudo -v - -# Keep-alive: update existing `sudo` time stamp until `.macos` has finished -while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null & - -############################################################################### -# General UI/UX # -############################################################################### - -# Set computer name (as done via System Preferences → Sharing) -#sudo scutil --set ComputerName "0x6D746873" -#sudo scutil --set HostName "0x6D746873" -#sudo scutil --set LocalHostName "0x6D746873" -#sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string "0x6D746873" - -# Set sidebar icon size to medium -defaults write NSGlobalDomain NSTableViewDefaultSizeMode -int 2 - -# Always show scrollbars -defaults write NSGlobalDomain AppleShowScrollBars -string "Always" -# Possible values: `WhenScrolling`, `Automatic` and `Always` - -# Adjust toolbar title rollover delay -defaults write NSGlobalDomain NSToolbarTitleViewRolloverDelay -float 0 - -# Expand save panel by default -defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true -defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true - -# Expand print panel by default -defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true -defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true - -# Save to disk (not to iCloud) by default -defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false - -# Automatically quit printer app once the print jobs complete -defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true - -# Disable the “Are you sure you want to open this application?” dialog -defaults write com.apple.LaunchServices LSQuarantine -bool false - -# Remove duplicates in the “Open With” menu (also see `lscleanup` alias) -/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user - -# Display ASCII control characters using caret notation in standard text views -# Try e.g. `cd /tmp; unidecode "\x{0000}" > cc.txt; open -e cc.txt` -#defaults write NSGlobalDomain NSTextShowsControlCharacters -bool true - -# Disable Resume system-wide -# defaults write com.apple.systempreferences NSQuitAlwaysKeepsWindows -bool false - -# Disable automatic termination of inactive apps -#defaults write NSGlobalDomain NSDisableAutomaticTermination -bool true - -# Disable the crash reporter -#defaults write com.apple.CrashReporter DialogType -string "none" - -# Set Help Viewer windows to non-floating mode -defaults write com.apple.helpviewer DevMode -bool true - -# Fix for the ancient UTF-8 bug in QuickLook (https://mths.be/bbo) -# Commented out, as this is known to cause problems in various Adobe apps :( -# See https://github.com/mathiasbynens/dotfiles/issues/237 -#echo "0x08000100:0" > ~/.CFUserTextEncoding - -# Reveal IP address, hostname, OS version, etc. when clicking the clock -# in the login window -sudo defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName - -# Disable Notification Center and remove the menu bar icon -#launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist 2> /dev/null - -# Disable automatic capitalization as it’s annoying when typing code -#defaults write NSGlobalDomain NSAutomaticCapitalizationEnabled -bool false - -# Disable smart dashes as they’re annoying when typing code -#defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false - -# Disable automatic period substitution as it’s annoying when typing code -#defaults write NSGlobalDomain NSAutomaticPeriodSubstitutionEnabled -bool false - -# Disable smart quotes as they’re annoying when typing code -#defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false - -# Disable auto-correct -defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false - -############################################################################### -# Trackpad, mouse, keyboard, Bluetooth accessories, and input # -############################################################################### - -# Trackpad: enable tap to click for this user and for the login screen -defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true -defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 -defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 - -# Trackpad: map bottom right corner to right-click -#defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadCornerSecondaryClick -int 2 -#defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -bool true -#defaults -currentHost write NSGlobalDomain com.apple.trackpad.trackpadCornerClickBehavior -int 1 -#defaults -currentHost write NSGlobalDomain com.apple.trackpad.enableSecondaryClick -bool true - -# Disable “natural” (Lion-style) scrolling -#defaults write NSGlobalDomain com.apple.swipescrolldirection -bool false - -# Increase sound quality for Bluetooth headphones/headsets -defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" -int 40 - -# Enable full keyboard access for all controls -# (e.g. enable Tab in modal dialogs) -#defaults write NSGlobalDomain AppleKeyboardUIMode -int 3 - -# Use scroll gesture with the Ctrl (^) modifier key to zoom -#defaults write com.apple.universalaccess closeViewScrollWheelToggle -bool true -#defaults write com.apple.universalaccess HIDScrollZoomModifierMask -int 262144 -# Follow the keyboard focus while zoomed in -#defaults write com.apple.universalaccess closeViewZoomFollowsFocus -bool true - -# Disable press-and-hold for keys in favor of key repeat -#defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false - -# Set a blazingly fast keyboard repeat rate -#defaults write NSGlobalDomain KeyRepeat -int 1 -#defaults write NSGlobalDomain InitialKeyRepeat -int 10 - -# Set language and text formats -# Note: if you’re in the US, replace `EUR` with `USD`, `Centimeters` with -# `Inches`, `en_GB` with `en_US`, and `true` with `false`. -#defaults write NSGlobalDomain AppleLanguages -array "en" "nl" -#defaults write NSGlobalDomain AppleLocale -string "en_GB@currency=EUR" -#defaults write NSGlobalDomain AppleMeasurementUnits -string "Centimeters" -#defaults write NSGlobalDomain AppleMetricUnits -bool true - -# Show language menu in the top right corner of the boot screen -#sudo defaults write /Library/Preferences/com.apple.loginwindow showInputMenu -bool true - -# Set the timezone; see `sudo systemsetup -listtimezones` for other values -#sudo systemsetup -settimezone "Europe/Brussels" > /dev/null - -# Stop iTunes from responding to the keyboard media keys -#launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist 2> /dev/null - -############################################################################### -# Energy saving # -############################################################################### - -# Enable lid wakeup -sudo pmset -a lidwake 1 - -# Restart automatically on power loss -sudo pmset -a autorestart 1 - -# Restart automatically if the computer freezes -sudo systemsetup -setrestartfreeze on - -# Sleep the display after 15 minutes -sudo pmset -a displaysleep 15 - -# Disable machine sleep while charging -sudo pmset -c sleep 0 - -# Set machine sleep to 5 minutes on battery -sudo pmset -b sleep 5 - -# Set standby delay to 24 hours (default is 1 hour) -sudo pmset -a standbydelay 86400 - -# Never go into computer sleep mode -#sudo systemsetup -setcomputersleep Off > /dev/null - -# Hibernation mode -# 0: Disable hibernation (speeds up entering sleep mode) -# 3: Copy RAM to disk so the system state can still be restored in case of a -# power failure. -#sudo pmset -a hibernatemode 0 - -# Remove the sleep image file to save disk space -#sudo rm /private/var/vm/sleepimage -# Create a zero-byte file instead… -#sudo touch /private/var/vm/sleepimage -# …and make sure it can’t be rewritten -#sudo chflags uchg /private/var/vm/sleepimage - -############################################################################### -# Screen # -############################################################################### - -# Require password immediately after sleep or screen saver begins -#defaults write com.apple.screensaver askForPassword -int 1 -#defaults write com.apple.screensaver askForPasswordDelay -int 0 - -# Save screenshots to the desktop -defaults write com.apple.screencapture location -string "${HOME}/Screenshots" - -# Save screenshots in PNG format (other options: BMP, GIF, JPG, PDF, TIFF) -defaults write com.apple.screencapture type -string "jpg" - -# Disable shadow in screenshots -#defaults write com.apple.screencapture disable-shadow -bool true - -# Enable subpixel font rendering on non-Apple LCDs -# Reference: https://github.com/kevinSuttle/macOS-Defaults/issues/17#issuecomment-266633501 -defaults write NSGlobalDomain AppleFontSmoothing -int 1 - -# Enable HiDPI display modes (requires restart) -sudo defaults write /Library/Preferences/com.apple.windowserver DisplayResolutionEnabled -bool true - -############################################################################### -# Finder # -############################################################################### - -# Finder: allow quitting via ⌘ + Q; doing so will also hide desktop icons -#defaults write com.apple.finder QuitMenuItem -bool true - -# Finder: disable window animations and Get Info animations -#defaults write com.apple.finder DisableAllAnimations -bool true - -# Set Desktop as the default location for new Finder windows -# For other paths, use `PfLo` and `file:///full/path/here/` -#defaults write com.apple.finder NewWindowTarget -string "PfDe" -#defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/Desktop/" - -# Show icons for hard drives, servers, and removable media on the desktop -#defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true -#defaults write com.apple.finder ShowHardDrivesOnDesktop -bool true -#defaults write com.apple.finder ShowMountedServersOnDesktop -bool true -#defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true - -# Finder: show hidden files by default -#defaults write com.apple.finder AppleShowAllFiles -bool true - -# Finder: show all filename extensions -#defaults write NSGlobalDomain AppleShowAllExtensions -bool true - -# Finder: show status bar -defaults write com.apple.finder ShowStatusBar -bool true - -# Finder: show path bar -defaults write com.apple.finder ShowPathbar -bool true - -# Display full POSIX path as Finder window title -#defaults write com.apple.finder _FXShowPosixPathInTitle -bool true - -# Keep folders on top when sorting by name -#defaults write com.apple.finder _FXSortFoldersFirst -bool true - -# When performing a search, search the current folder by default -defaults write com.apple.finder FXDefaultSearchScope -string "SCcf" - -# Disable the warning when changing a file extension -defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false - -# Enable spring loading for directories -#defaults write NSGlobalDomain com.apple.springing.enabled -bool true - -# Remove the spring loading delay for directories -#defaults write NSGlobalDomain com.apple.springing.delay -float 0 - -# Avoid creating .DS_Store files on network or USB volumes -defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true -defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true - -# Disable disk image verification -defaults write com.apple.frameworks.diskimages skip-verify -bool true -defaults write com.apple.frameworks.diskimages skip-verify-locked -bool true -defaults write com.apple.frameworks.diskimages skip-verify-remote -bool true - -# Automatically open a new Finder window when a volume is mounted -defaults write com.apple.frameworks.diskimages auto-open-ro-root -bool true -defaults write com.apple.frameworks.diskimages auto-open-rw-root -bool true -defaults write com.apple.finder OpenWindowForNewRemovableDisk -bool true - -# Show item info near icons on the desktop and in other icon views -#/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:showItemInfo true" ~/Library/Preferences/com.apple.finder.plist -#/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:showItemInfo true" ~/Library/Preferences/com.apple.finder.plist -#/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:showItemInfo true" ~/Library/Preferences/com.apple.finder.plist - -# Show item info to the right of the icons on the desktop -#/usr/libexec/PlistBuddy -c "Set DesktopViewSettings:IconViewSettings:labelOnBottom false" ~/Library/Preferences/com.apple.finder.plist - -# Enable snap-to-grid for icons on the desktop and in other icon views -#/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist -#/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist -#/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist - -# Increase grid spacing for icons on the desktop and in other icon views -#/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:gridSpacing 100" ~/Library/Preferences/com.apple.finder.plist -#/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:gridSpacing 100" ~/Library/Preferences/com.apple.finder.plist -#/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:gridSpacing 100" ~/Library/Preferences/com.apple.finder.plist - -# Increase the size of icons on the desktop and in other icon views -#/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:iconSize 80" ~/Library/Preferences/com.apple.finder.plist -#/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:iconSize 80" ~/Library/Preferences/com.apple.finder.plist -#/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:iconSize 80" ~/Library/Preferences/com.apple.finder.plist - -# Use list view in all Finder windows by default -# Four-letter codes for the other view modes: `icnv`, `clmv`, `glyv` -#defaults write com.apple.finder FXPreferredViewStyle -string "Nlsv" - -# Disable the warning before emptying the Trash -#defaults write com.apple.finder WarnOnEmptyTrash -bool false - -# Enable AirDrop over Ethernet and on unsupported Macs running Lion -defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true - -# Show the ~/Library folder -#chflags nohidden ~/Library && xattr -d com.apple.FinderInfo ~/Library - -# Show the /Volumes folder -#sudo chflags nohidden /Volumes - -# Expand the following File Info panes: -# “General”, “Open with”, and “Sharing & Permissions” -#defaults write com.apple.finder FXInfoPanesExpanded -dict \ -# General -bool true \ -# OpenWith -bool true \ -# Privileges -bool true - -############################################################################### -# Dock, Dashboard, and hot corners # -############################################################################### - -# Enable highlight hover effect for the grid view of a stack (Dock) -#defaults write com.apple.dock mouse-over-hilite-stack -bool true - -# Set the icon size of Dock items to 36 pixels -#defaults write com.apple.dock tilesize -int 36 - -# Change minimize/maximize window effect -#defaults write com.apple.dock mineffect -string "scale" - -# Minimize windows into their application’s icon -defaults write com.apple.dock minimize-to-application -bool true - -# Enable spring loading for all Dock items -#defaults write com.apple.dock enable-spring-load-actions-on-all-items -bool true - -# Show indicator lights for open applications in the Dock -defaults write com.apple.dock show-process-indicators -bool true - -# Wipe all (default) app icons from the Dock -# This is only really useful when setting up a new Mac, or if you don’t use -# the Dock to launch apps. -defaults write com.apple.dock persistent-apps -array - -# Show only open applications in the Dock -#defaults write com.apple.dock static-only -bool true - -# Don’t animate opening applications from the Dock -#defaults write com.apple.dock launchanim -bool false - -# Speed up Mission Control animations -defaults write com.apple.dock expose-animation-duration -float 0.1 - -# Don’t group windows by application in Mission Control -# (i.e. use the old Exposé behavior instead) -#defaults write com.apple.dock expose-group-by-app -bool false - -# Disable Dashboard -#defaults write com.apple.dashboard mcx-disabled -bool true - -# Don’t show Dashboard as a Space -#defaults write com.apple.dock dashboard-in-overlay -bool true - -# Don’t automatically rearrange Spaces based on most recent use -#defaults write com.apple.dock mru-spaces -bool false - -# Remove the auto-hiding Dock delay -defaults write com.apple.dock autohide-delay -float 0 -# Remove the animation when hiding/showing the Dock -defaults write com.apple.dock autohide-time-modifier -float 0 - -# Automatically hide and show the Dock -defaults write com.apple.dock autohide -bool true - -# Make Dock icons of hidden applications translucent -defaults write com.apple.dock showhidden -bool true - -# Don’t show recent applications in Dock -defaults write com.apple.dock show-recents -bool false - -# Disable the Launchpad gesture (pinch with thumb and three fingers) -#defaults write com.apple.dock showLaunchpadGestureEnabled -int 0 - -# Reset Launchpad, but keep the desktop wallpaper intact -#find "${HOME}/Library/Application Support/Dock" -name "*-*.db" -maxdepth 1 -delete - -# Add iOS & Watch Simulator to Launchpad -#sudo ln -sf "/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app" "/Applications/Simulator.app" -#sudo ln -sf "/Applications/Xcode.app/Contents/Developer/Applications/Simulator (Watch).app" "/Applications/Simulator (Watch).app" - -# Add a spacer to the left side of the Dock (where the applications are) -#defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type="spacer-tile";}' -# Add a spacer to the right side of the Dock (where the Trash is) -#defaults write com.apple.dock persistent-others -array-add '{tile-data={}; tile-type="spacer-tile";}' - -# Hot corners -# Possible values: -# 0: no-op -# 2: Mission Control -# 3: Show application windows -# 4: Desktop -# 5: Start screen saver -# 6: Disable screen saver -# 7: Dashboard -# 10: Put display to sleep -# 11: Launchpad -# 12: Notification Center -# 13: Lock Screen -# Top left screen corner → Mission Control -#defaults write com.apple.dock wvous-tl-corner -int 2 -#defaults write com.apple.dock wvous-tl-modifier -int 0 -# Top right screen corner → Desktop -#defaults write com.apple.dock wvous-tr-corner -int 4 -#defaults write com.apple.dock wvous-tr-modifier -int 0 -# Bottom left screen corner → Start screen saver -#defaults write com.apple.dock wvous-bl-corner -int 5 -#defaults write com.apple.dock wvous-bl-modifier -int 0 - -############################################################################### -# Safari & WebKit # -############################################################################### - -# Privacy: don’t send search queries to Apple -defaults write com.apple.Safari UniversalSearchEnabled -bool false -defaults write com.apple.Safari SuppressSearchSuggestions -bool true - -############################################################################### -# Spotlight # -############################################################################### - -# Hide Spotlight tray-icon (and subsequent helper) -#sudo chmod 600 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Search -# Disable Spotlight indexing for any volume that gets mounted and has not yet -# been indexed before. -# Use `sudo mdutil -i off "/Volumes/foo"` to stop indexing any volume. -# sudo defaults write /.Spotlight-V100/VolumeConfiguration Exclusions -array "/Volumes" -# Change indexing order and disable some search results -# Load new settings before rebuilding the index -#killall mds > /dev/null 2>&1 -# Make sure indexing is enabled for the main volume -#sudo mdutil -i on / > /dev/null -# Rebuild the index from scratch -#sudo mdutil -E / > /dev/null - -############################################################################### -# Terminal & iTerm 2 # -############################################################################### - -# Only use UTF-8 in Terminal.app -defaults write com.apple.terminal StringEncodings -array 4 - -# Enable “focus follows mouse” for Terminal.app and all X11 apps -# i.e. hover over a window and start typing in it without clicking first -#defaults write com.apple.terminal FocusFollowsMouse -bool true -#defaults write org.x.X11 wm_ffm -bool true - -# Enable Secure Keyboard Entry in Terminal.app -# See: https://security.stackexchange.com/a/47786/8918 -#defaults write com.apple.terminal SecureKeyboardEntry -bool true - -# Disable the annoying line marks -#defaults write com.apple.Terminal ShowLineMarks -int 0 - -# Install the Solarized Dark theme for iTerm -#open "${HOME}/init/Solarized Dark.itermcolors" - -# Don’t display the annoying prompt when quitting iTerm -defaults write com.googlecode.iterm2 PromptOnQuit -bool false - -############################################################################### -# Time Machine # -############################################################################### - -# Prevent Time Machine from prompting to use new hard drives as backup volume -defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true - -# Disable local Time Machine backups -hash tmutil &> /dev/null && sudo tmutil disablelocal - -############################################################################### -# Activity Monitor # -############################################################################### - -# Show the main window when launching Activity Monitor -defaults write com.apple.ActivityMonitor OpenMainWindow -bool true - -# Visualize CPU usage in the Activity Monitor Dock icon -defaults write com.apple.ActivityMonitor IconType -int 5 - -# Show all processes in Activity Monitor -defaults write com.apple.ActivityMonitor ShowCategory -int 0 - -# Sort Activity Monitor results by CPU usage -defaults write com.apple.ActivityMonitor SortColumn -string "CPUUsage" -defaults write com.apple.ActivityMonitor SortDirection -int 0 - -############################################################################### -# Address Book, Dashboard, iCal, TextEdit, and Disk Utility # -############################################################################### - -# Enable the debug menu in Address Book -#defaults write com.apple.addressbook ABShowDebugMenu -bool true - -# Enable Dashboard dev mode (allows keeping widgets on the desktop) -#defaults write com.apple.dashboard devmode -bool true - -# Enable the debug menu in iCal (pre-10.8) -#defaults write com.apple.iCal IncludeDebugMenu -bool true - -# Use plain text mode for new TextEdit documents -#defaults write com.apple.TextEdit RichText -int 0 -# Open and save files as UTF-8 in TextEdit -defaults write com.apple.TextEdit PlainTextEncoding -int 4 -defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4 - -# Enable the debug menu in Disk Utility -#defaults write com.apple.DiskUtility DUDebugMenuEnabled -bool true -#defaults write com.apple.DiskUtility advanced-image-options -bool true - -# Auto-play videos when opened with QuickTime Player -#defaults write com.apple.QuickTimePlayerX MGPlayMovieOnOpen -bool true - -############################################################################### -# Mac App Store # -############################################################################### - -# Enable the WebKit Developer Tools in the Mac App Store -#defaults write com.apple.appstore WebKitDeveloperExtras -bool true - -# Enable Debug Menu in the Mac App Store -#defaults write com.apple.appstore ShowDebugMenu -bool true - -# Enable the automatic update check -defaults write com.apple.SoftwareUpdate AutomaticCheckEnabled -bool true - -# Check for software updates daily, not just once per week -defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1 - -# Download newly available updates in background -defaults write com.apple.SoftwareUpdate AutomaticDownload -int 1 - -# Install System data files & security updates -defaults write com.apple.SoftwareUpdate CriticalUpdateInstall -int 1 - -# Automatically download apps purchased on other Macs -#defaults write com.apple.SoftwareUpdate ConfigDataInstall -int 1 - -# Turn on app auto-update -defaults write com.apple.commerce AutoUpdate -bool true - -# Allow the App Store to reboot machine on macOS updates -defaults write com.apple.commerce AutoUpdateRestartRequired -bool true - -############################################################################### -# Photos # -############################################################################### - -# Prevent Photos from opening automatically when devices are plugged in -defaults -currentHost write com.apple.ImageCapture disableHotPlug -bool true - -############################################################################### -# Messages # -############################################################################### - -# Disable automatic emoji substitution (i.e. use plain text smileys) -#defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "automaticEmojiSubstitutionEnablediMessage" -bool false - -# Disable smart quotes as it’s annoying for messages that contain code -defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "automaticQuoteSubstitutionEnabled" -bool false - -# Disable continuous spell checking -defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "continuousSpellCheckingEnabled" -bool false - -############################################################################### -# Google Chrome & Google Chrome Canary # -############################################################################### - -# Disable the all too sensitive backswipe on trackpads -defaults write com.google.Chrome AppleEnableSwipeNavigateWithScrolls -bool false -defaults write com.google.Chrome.canary AppleEnableSwipeNavigateWithScrolls -bool false - -# Disable the all too sensitive backswipe on Magic Mouse -defaults write com.google.Chrome AppleEnableMouseSwipeNavigateWithScrolls -bool false -defaults write com.google.Chrome.canary AppleEnableMouseSwipeNavigateWithScrolls -bool false - -# Use the system-native print preview dialog -#defaults write com.google.Chrome DisablePrintPreview -bool true -#defaults write com.google.Chrome.canary DisablePrintPreview -bool true - -# Expand the print dialog by default -defaults write com.google.Chrome PMPrintingExpandedStateForPrint2 -bool true -defaults write com.google.Chrome.canary PMPrintingExpandedStateForPrint2 -bool true - -############################################################################### -# Twitter.app # -############################################################################### - -# Disable smart quotes as it’s annoying for code tweets -defaults write com.twitter.twitter-mac AutomaticQuoteSubstitutionEnabled -bool false - -# Show the app window when clicking the menu bar icon -defaults write com.twitter.twitter-mac MenuItemBehavior -int 1 - -# Enable the hidden ‘Develop’ menu -defaults write com.twitter.twitter-mac ShowDevelopMenu -bool true - -# Open links in the background -defaults write com.twitter.twitter-mac openLinksInBackground -bool true - -# Allow closing the ‘new tweet’ window by pressing `Esc` -defaults write com.twitter.twitter-mac ESCClosesComposeWindow -bool true - -# Show full names rather than Twitter handles -defaults write com.twitter.twitter-mac ShowFullNames -bool true - -# Hide the app in the background if it’s not the front-most window -defaults write com.twitter.twitter-mac HideInBackground -bool true - -############################################################################### -# Kill affected applications # -############################################################################### - -for app in "Activity Monitor" \ - "Address Book" \ - "Calendar" \ - "cfprefsd" \ - "Contacts" \ - "Dock" \ - "Finder" \ - "Google Chrome Canary" \ - "Google Chrome" \ - "Mail" \ - "Messages" \ - "Opera" \ - "Photos" \ - "Safari" \ - "SizeUp" \ - "Spectacle" \ - "SystemUIServer" \ - "Terminal" \ - "Transmission" \ - "Tweetbot" \ - "Twitter" \ - "iCal"; do - killall "${app}" &> /dev/null -done -echo "Done. Note that some of these changes require a logout/restart to take effect." diff --git a/.path.zsh b/.path.zsh deleted file mode 100644 index ef41549..0000000 --- a/.path.zsh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# Add directories to the PATH and prevent to add the same directory multiple times upon shell reload. -add_to_path() { - if [[ -d "$1" ]] && [[ ":$PATH:" != *":$1:"* ]]; then - export PATH="$1:$PATH" - fi -} - -# Add ghq to PATH -add_to_path "$GOPATH/bin" -add_to_path "/Library/Frameworks/Firebird.framework/Resources/bin" - diff --git a/.zshrc b/.zshrc deleted file mode 100644 index bdc70cc..0000000 --- a/.zshrc +++ /dev/null @@ -1,23 +0,0 @@ - -# Download Znap, if it's not there yet. -[[ -r ~/.zsh_repos/znap/znap.zsh ]] || - git clone --depth 1 -- \ - https://github.com/marlonrichert/zsh-snap.git ~/.zsh_repos/znap -source ~/.zsh_repos/znap/znap.zsh # Start Znap - -export GOPATH=~/go -export REPOS=~/ghq - -znap eval starship 'starship init zsh --print-full-init' -znap prompt - -znap source marlonrichert/zsh-autocomplete -znap source zsh-users/zsh-autosuggestions - -for file in ~/.{aliases.zsh,path.zsh,extras.zsh}; do - if [[ -r "$file" ]] && [[ -f "$file" ]]; then - # shellcheck source=/dev/null - source "$file" - fi -done - diff --git a/Brewfile b/Brewfile deleted file mode 100644 index 340fcec..0000000 --- a/Brewfile +++ /dev/null @@ -1,158 +0,0 @@ -# Taps -tap "bramstein/webfonttools" # Tools for working with web fonts -tap "homebrew/cask-drivers" # Tap for cask drivers -tap "danielgtaylor/restish" # REST API client -tap "oven-sh/bun" # Bun JavaScript runtime -tap "pulumi/tap" # Pulumi infrastructure as code tools -tap "go-task/tap" # Task runner for Go -tap "tursodatabase/tap" # Turso database tools -tap "yakitrak/yakitrak" # Tap for yakitrak tools -tap "simenandre/tools" # Tap for Simen Andre's tools - -# Mas -brew "mas" # Mac App Store command-line interface -mas "Outline", id: 1356178125 # Note-taking application -mas "Remote Desktop", id: 409907375 # Microsoft Remote Desktop application - -# Shells and Shell Utilities -brew "zsh" # Z shell -brew "bash" # Modern version of Bash -brew "bash-completion" # Bash completion -brew "yadm" # Yet Another Dotfiles Manager -brew "ghq" # Manage remote repository clones -brew "moreutils" # Collection of additional Unix utilities - -# GNU Tools -brew "findutils" # GNU `find`, `locate`, `updatedb`, and `xargs`, `g`-prefixed. -brew "gnu-sed" # GNU `sed`, overwriting the built-in `sed`. -brew "grep" # More recent version of macOS `grep` - -# Networking Tools -brew "wget" # `wget` with IRI support. -brew "openssh" # OpenSSH utilities -brew "nmap" # Network mapper - -# Security and Encryption -brew "gnupg" # GnuPG to enable PGP-signing commits. -brew "git-secret" # Bash tool to store encrypted secrets in a Git repository -brew "ssh-copy-id" # Add SSH key to a server's authorized_keys - -# Compression Libraries and Tools -brew "lz4" # Compression library -brew "zlib" # Compression library -brew "zstd" # Compression library -brew "libffi" # Foreign Function Interface library -brew "p7zip" # File archiver with high compression ratio -brew "pigz" # Parallel implementation of gzip -brew "zopfli" # Compression tool - -# Programming Languages and Runtimes -brew "golang" # Go programming language -brew "python@3.10" # Python 3.10 -brew "rust" # Rust programming language -brew "zig" # Zig programming language - -# Font Tools -brew "sfnt2woff" # Convert TTF to WOFF -brew "sfnt2woff-zopfli" # Convert TTF to WOFF (with Zopfli compression) -brew "woff2" # Convert TTF to WOFF2 -cask "font-symbols-only-nerd-font" # Symbols Only Nerd Font -cask "font-jetbrains-mono" # JetBrains Mono font - -# JavaScript Runtimes and Package Managers -brew "bun" # Bun JavaScript runtime -brew "pnpm" # Fast, disk space efficient package manager -brew "volta" # JavaScript tool manager -brew "corepack" # Yarn and pnpm binary manager -brew "deno" # Secure JavaScript and TypeScript runtime - -# REST API Clients -brew "danielgtaylor/restish/restish" # REST API client - -# Version Control -brew "git" # Distributed version control system -brew "git-lfs" # Git extension for versioning large files -brew "lazygit" # Simple terminal UI for git commands -brew "microplane" # Tool for mass refactoring - -# Search Tools -brew "ripgrep" # Line-oriented search tool -brew "ack" # Search tool like grep, optimized for programmers -brew "fzf" # Command-line fuzzy finder - -# JSON/YAML Processing Tools -brew "jq" # Command-line JSON processor -brew "yq" # Command-line YAML processor - -# Cloud and IaC Tools -brew "pulumi" # Infrastructure as code tool -brew "crd2pulumi" # Generate Pulumi code from Kubernetes CRDs -brew "kube2pulumi" # Generate Pulumi code from Kubernetes YAML -brew "pulumictl" # Pulumi command-line tool -brew "tf2pulumi" # Convert Terraform code to Pulumi -brew "azure-cli" # Microsoft Azure command-line tool -brew "kubectl" # Kubernetes command-line tool -brew "helm" # Kubernetes package manager -brew "cilium-cli" # CLI to install, manage & troubleshoot Kubernetes clusters - -# Container Tools -brew "podman" # Manage pods, containers, and container images -brew "podman-compose" # Docker Compose replacement for Podman -cask "docker" # Docker desktop -cask "podman-desktop" # Podman desktop - -# Task Runners and Automation -brew "go-task" # Task runner for Go -brew "act" # Run GitHub Actions locally - -# Databases -brew "turso" # Turso database command-line tool - -# Video Meeting Applications -cask "microsoft-teams" # Microsoft Teams -cask "zoom" # Zoom video conferencing - -# Applications -cask "visual-studio-code" # Visual Studio Code editor -cask "spotify" # Spotify music streaming -brew "neovim" # Hyperextensible Vim-based text editor -cask "slack" # Slack messaging app -cask "sonos" # Sonos controller app -brew "tmux" # Terminal multiplexer -cask "figma" # Figma design tool -cask "discord" # Discord chat and voice app -cask "grammarly" # Grammarly writing assistant -cask "microsoft-remote-desktop" # Microsoft Remote Desktop app -cask "postico" # PostgreSQL GUI client -cask "cyberduck" # FTP and cloud storage browser -cask "adobe-creative-cloud" # Adobe Creative Cloud -cask "1password" # 1Password password manager -cask "openvpn-connect" # OpenVPN client -cask "raycast" # Command launcher -cask "wezterm" # Terminal emulator -cask "rectangle" # Window management app - -# Terminal Tools -brew "pv" # Pipe viewer -brew "rename" # Perl-powered file rename script -brew "rlwrap" # Readline wrapper -brew "tree" # Display directories as trees -brew "vbindiff" # Visual binary diff -brew "tmate" # Instant terminal sharing -brew "asciinema" # Record and share terminal sessions -brew "dasel" # Query and update data structures from the command line -brew "tldr" # Simplified and community-driven man pages - -# HTTP and Web Servers -brew "caddy" # Fast, multi-platform web server with automatic HTTPS -brew "goreleaser" # Deliver Go binaries as fast and easily as possible - -# Specific Toolsets -brew "whalebrew" # Dockerized CLI applications - -# Obsidian -cask "obsidian" # Obsidian note-taking app - -# My tools -brew "trippl-timely" # Not clear, could be a custom tool -brew "xlsx-mxlookup" # Not clear, could be a custom tool diff --git a/apps/Brewfile b/apps/Brewfile new file mode 100644 index 0000000..340fcec --- /dev/null +++ b/apps/Brewfile @@ -0,0 +1,158 @@ +# Taps +tap "bramstein/webfonttools" # Tools for working with web fonts +tap "homebrew/cask-drivers" # Tap for cask drivers +tap "danielgtaylor/restish" # REST API client +tap "oven-sh/bun" # Bun JavaScript runtime +tap "pulumi/tap" # Pulumi infrastructure as code tools +tap "go-task/tap" # Task runner for Go +tap "tursodatabase/tap" # Turso database tools +tap "yakitrak/yakitrak" # Tap for yakitrak tools +tap "simenandre/tools" # Tap for Simen Andre's tools + +# Mas +brew "mas" # Mac App Store command-line interface +mas "Outline", id: 1356178125 # Note-taking application +mas "Remote Desktop", id: 409907375 # Microsoft Remote Desktop application + +# Shells and Shell Utilities +brew "zsh" # Z shell +brew "bash" # Modern version of Bash +brew "bash-completion" # Bash completion +brew "yadm" # Yet Another Dotfiles Manager +brew "ghq" # Manage remote repository clones +brew "moreutils" # Collection of additional Unix utilities + +# GNU Tools +brew "findutils" # GNU `find`, `locate`, `updatedb`, and `xargs`, `g`-prefixed. +brew "gnu-sed" # GNU `sed`, overwriting the built-in `sed`. +brew "grep" # More recent version of macOS `grep` + +# Networking Tools +brew "wget" # `wget` with IRI support. +brew "openssh" # OpenSSH utilities +brew "nmap" # Network mapper + +# Security and Encryption +brew "gnupg" # GnuPG to enable PGP-signing commits. +brew "git-secret" # Bash tool to store encrypted secrets in a Git repository +brew "ssh-copy-id" # Add SSH key to a server's authorized_keys + +# Compression Libraries and Tools +brew "lz4" # Compression library +brew "zlib" # Compression library +brew "zstd" # Compression library +brew "libffi" # Foreign Function Interface library +brew "p7zip" # File archiver with high compression ratio +brew "pigz" # Parallel implementation of gzip +brew "zopfli" # Compression tool + +# Programming Languages and Runtimes +brew "golang" # Go programming language +brew "python@3.10" # Python 3.10 +brew "rust" # Rust programming language +brew "zig" # Zig programming language + +# Font Tools +brew "sfnt2woff" # Convert TTF to WOFF +brew "sfnt2woff-zopfli" # Convert TTF to WOFF (with Zopfli compression) +brew "woff2" # Convert TTF to WOFF2 +cask "font-symbols-only-nerd-font" # Symbols Only Nerd Font +cask "font-jetbrains-mono" # JetBrains Mono font + +# JavaScript Runtimes and Package Managers +brew "bun" # Bun JavaScript runtime +brew "pnpm" # Fast, disk space efficient package manager +brew "volta" # JavaScript tool manager +brew "corepack" # Yarn and pnpm binary manager +brew "deno" # Secure JavaScript and TypeScript runtime + +# REST API Clients +brew "danielgtaylor/restish/restish" # REST API client + +# Version Control +brew "git" # Distributed version control system +brew "git-lfs" # Git extension for versioning large files +brew "lazygit" # Simple terminal UI for git commands +brew "microplane" # Tool for mass refactoring + +# Search Tools +brew "ripgrep" # Line-oriented search tool +brew "ack" # Search tool like grep, optimized for programmers +brew "fzf" # Command-line fuzzy finder + +# JSON/YAML Processing Tools +brew "jq" # Command-line JSON processor +brew "yq" # Command-line YAML processor + +# Cloud and IaC Tools +brew "pulumi" # Infrastructure as code tool +brew "crd2pulumi" # Generate Pulumi code from Kubernetes CRDs +brew "kube2pulumi" # Generate Pulumi code from Kubernetes YAML +brew "pulumictl" # Pulumi command-line tool +brew "tf2pulumi" # Convert Terraform code to Pulumi +brew "azure-cli" # Microsoft Azure command-line tool +brew "kubectl" # Kubernetes command-line tool +brew "helm" # Kubernetes package manager +brew "cilium-cli" # CLI to install, manage & troubleshoot Kubernetes clusters + +# Container Tools +brew "podman" # Manage pods, containers, and container images +brew "podman-compose" # Docker Compose replacement for Podman +cask "docker" # Docker desktop +cask "podman-desktop" # Podman desktop + +# Task Runners and Automation +brew "go-task" # Task runner for Go +brew "act" # Run GitHub Actions locally + +# Databases +brew "turso" # Turso database command-line tool + +# Video Meeting Applications +cask "microsoft-teams" # Microsoft Teams +cask "zoom" # Zoom video conferencing + +# Applications +cask "visual-studio-code" # Visual Studio Code editor +cask "spotify" # Spotify music streaming +brew "neovim" # Hyperextensible Vim-based text editor +cask "slack" # Slack messaging app +cask "sonos" # Sonos controller app +brew "tmux" # Terminal multiplexer +cask "figma" # Figma design tool +cask "discord" # Discord chat and voice app +cask "grammarly" # Grammarly writing assistant +cask "microsoft-remote-desktop" # Microsoft Remote Desktop app +cask "postico" # PostgreSQL GUI client +cask "cyberduck" # FTP and cloud storage browser +cask "adobe-creative-cloud" # Adobe Creative Cloud +cask "1password" # 1Password password manager +cask "openvpn-connect" # OpenVPN client +cask "raycast" # Command launcher +cask "wezterm" # Terminal emulator +cask "rectangle" # Window management app + +# Terminal Tools +brew "pv" # Pipe viewer +brew "rename" # Perl-powered file rename script +brew "rlwrap" # Readline wrapper +brew "tree" # Display directories as trees +brew "vbindiff" # Visual binary diff +brew "tmate" # Instant terminal sharing +brew "asciinema" # Record and share terminal sessions +brew "dasel" # Query and update data structures from the command line +brew "tldr" # Simplified and community-driven man pages + +# HTTP and Web Servers +brew "caddy" # Fast, multi-platform web server with automatic HTTPS +brew "goreleaser" # Deliver Go binaries as fast and easily as possible + +# Specific Toolsets +brew "whalebrew" # Dockerized CLI applications + +# Obsidian +cask "obsidian" # Obsidian note-taking app + +# My tools +brew "trippl-timely" # Not clear, could be a custom tool +brew "xlsx-mxlookup" # Not clear, could be a custom tool diff --git a/bootstrap.sh b/bootstrap.sh index e190a7d..368ef9d 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,4 +1,35 @@ #!/bin/bash -# Install Oh My Zsh -sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended +# Install Homebrew if not installed +if ! command -v brew >/dev/null 2>&1; then + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" +fi + +# Install GNU Stow +brew install stow + +# Install packages from Brewfile +cd apps && brew bundle + +# Create symlinks using stow +cd .. +stow zsh +stow git +stow apps +stow config +stow tmux + +# Install TPM for tmux +if [ ! -d "$HOME/.tmux/plugins/tpm" ]; then + git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm +fi + +# Configure macOS defaults +sh macos/macos + +# Setup Zsh +if [ ! -d "$HOME/.zsh-repos/znap" ]; then + git clone --depth 1 https://github.com/marlonrichert/zsh-snap.git ~/.zsh-repos/znap +fi + +echo "Setup complete! Please restart your terminal." diff --git a/git/.gitconfig b/git/.gitconfig new file mode 100644 index 0000000..017cd90 --- /dev/null +++ b/git/.gitconfig @@ -0,0 +1,68 @@ +[user] +name = Simen A. W. Olsen +email = hello@simenandre.no +signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMCyUn5BfmAnd/6xi0X1mYF/+jPOmCS0bpNUePF55gCY + +[apply] +# Detect whitespace errors when applying a patch +whitespace = fix + +[core] +# Make `git rebase` safer on OS X +# More info: +trustctime = false +editor = nvim +excludesfile = ~/.gitignore_global + +[color] +# Use colors in Git commands that are capable of colored output when +# outputting to the terminal. (This is the default setting in Git ≥ 1.8.4.) +ui = auto + +[color "branch"] +current = yellow reverse +local = yellow +remote = green + +[color "diff"] +meta = yellow bold +frag = magenta bold # line info +old = red # deletions +new = green # additions + +[color "status"] +added = yellow +changed = green +untracked = cyan + +[diff] +# Detect copies as well as renames +renames = copies + +[help] +# Automatically correct and execute mistyped commands +autocorrect = 1 + +[merge] +# Include summaries of merged commits in newly created merge commit messages +log = true + +[push] +autoSetupRemote = true + +[gpg] +program = ssh +format = ssh + +[github] +user = simenandre + +[pull] +rebase = true + +[url "git@github.com:"] + insteadOf = https://github.com/ +[gpg "ssh"] + program = /Applications/1Password.app/Contents/MacOS/op-ssh-sign +[commit] + gpgsign = true diff --git a/macos/macos b/macos/macos new file mode 100755 index 0000000..77b3d29 --- /dev/null +++ b/macos/macos @@ -0,0 +1,658 @@ +#!/usr/bin/env bash + +# ~/.macos — https://mths.be/macos + +# Close any open System Preferences panes, to prevent them from overriding +# settings we’re about to change +osascript -e 'tell application "System Preferences" to quit' + +# Ask for the administrator password upfront +sudo -v + +# Keep-alive: update existing `sudo` time stamp until `.macos` has finished +while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null & + +############################################################################### +# General UI/UX # +############################################################################### + +# Set computer name (as done via System Preferences → Sharing) +#sudo scutil --set ComputerName "0x6D746873" +#sudo scutil --set HostName "0x6D746873" +#sudo scutil --set LocalHostName "0x6D746873" +#sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string "0x6D746873" + +# Set sidebar icon size to medium +defaults write NSGlobalDomain NSTableViewDefaultSizeMode -int 2 + +# Always show scrollbars +defaults write NSGlobalDomain AppleShowScrollBars -string "Always" +# Possible values: `WhenScrolling`, `Automatic` and `Always` + +# Adjust toolbar title rollover delay +defaults write NSGlobalDomain NSToolbarTitleViewRolloverDelay -float 0 + +# Expand save panel by default +defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true +defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true + +# Expand print panel by default +defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true +defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true + +# Save to disk (not to iCloud) by default +defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false + +# Automatically quit printer app once the print jobs complete +defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true + +# Disable the “Are you sure you want to open this application?” dialog +defaults write com.apple.LaunchServices LSQuarantine -bool false + +# Remove duplicates in the “Open With” menu (also see `lscleanup` alias) +/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user + +# Display ASCII control characters using caret notation in standard text views +# Try e.g. `cd /tmp; unidecode "\x{0000}" > cc.txt; open -e cc.txt` +#defaults write NSGlobalDomain NSTextShowsControlCharacters -bool true + +# Disable Resume system-wide +# defaults write com.apple.systempreferences NSQuitAlwaysKeepsWindows -bool false + +# Disable automatic termination of inactive apps +#defaults write NSGlobalDomain NSDisableAutomaticTermination -bool true + +# Disable the crash reporter +#defaults write com.apple.CrashReporter DialogType -string "none" + +# Set Help Viewer windows to non-floating mode +defaults write com.apple.helpviewer DevMode -bool true + +# Fix for the ancient UTF-8 bug in QuickLook (https://mths.be/bbo) +# Commented out, as this is known to cause problems in various Adobe apps :( +# See https://github.com/mathiasbynens/dotfiles/issues/237 +#echo "0x08000100:0" > ~/.CFUserTextEncoding + +# Reveal IP address, hostname, OS version, etc. when clicking the clock +# in the login window +sudo defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName + +# Disable Notification Center and remove the menu bar icon +#launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist 2> /dev/null + +# Disable automatic capitalization as it’s annoying when typing code +#defaults write NSGlobalDomain NSAutomaticCapitalizationEnabled -bool false + +# Disable smart dashes as they’re annoying when typing code +#defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false + +# Disable automatic period substitution as it’s annoying when typing code +#defaults write NSGlobalDomain NSAutomaticPeriodSubstitutionEnabled -bool false + +# Disable smart quotes as they’re annoying when typing code +#defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false + +# Disable auto-correct +defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false + +############################################################################### +# Trackpad, mouse, keyboard, Bluetooth accessories, and input # +############################################################################### + +# Trackpad: enable tap to click for this user and for the login screen +defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true +defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 +defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 + +# Trackpad: map bottom right corner to right-click +#defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadCornerSecondaryClick -int 2 +#defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -bool true +#defaults -currentHost write NSGlobalDomain com.apple.trackpad.trackpadCornerClickBehavior -int 1 +#defaults -currentHost write NSGlobalDomain com.apple.trackpad.enableSecondaryClick -bool true + +# Disable “natural” (Lion-style) scrolling +#defaults write NSGlobalDomain com.apple.swipescrolldirection -bool false + +# Increase sound quality for Bluetooth headphones/headsets +defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" -int 40 + +# Enable full keyboard access for all controls +# (e.g. enable Tab in modal dialogs) +#defaults write NSGlobalDomain AppleKeyboardUIMode -int 3 + +# Use scroll gesture with the Ctrl (^) modifier key to zoom +#defaults write com.apple.universalaccess closeViewScrollWheelToggle -bool true +#defaults write com.apple.universalaccess HIDScrollZoomModifierMask -int 262144 +# Follow the keyboard focus while zoomed in +#defaults write com.apple.universalaccess closeViewZoomFollowsFocus -bool true + +# Disable press-and-hold for keys in favor of key repeat +#defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false + +# Set a blazingly fast keyboard repeat rate +#defaults write NSGlobalDomain KeyRepeat -int 1 +#defaults write NSGlobalDomain InitialKeyRepeat -int 10 + +# Set language and text formats +# Note: if you’re in the US, replace `EUR` with `USD`, `Centimeters` with +# `Inches`, `en_GB` with `en_US`, and `true` with `false`. +#defaults write NSGlobalDomain AppleLanguages -array "en" "nl" +#defaults write NSGlobalDomain AppleLocale -string "en_GB@currency=EUR" +#defaults write NSGlobalDomain AppleMeasurementUnits -string "Centimeters" +#defaults write NSGlobalDomain AppleMetricUnits -bool true + +# Show language menu in the top right corner of the boot screen +#sudo defaults write /Library/Preferences/com.apple.loginwindow showInputMenu -bool true + +# Set the timezone; see `sudo systemsetup -listtimezones` for other values +#sudo systemsetup -settimezone "Europe/Brussels" > /dev/null + +# Stop iTunes from responding to the keyboard media keys +#launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist 2> /dev/null + +############################################################################### +# Energy saving # +############################################################################### + +# Enable lid wakeup +sudo pmset -a lidwake 1 + +# Restart automatically on power loss +sudo pmset -a autorestart 1 + +# Restart automatically if the computer freezes +sudo systemsetup -setrestartfreeze on + +# Sleep the display after 15 minutes +sudo pmset -a displaysleep 15 + +# Disable machine sleep while charging +sudo pmset -c sleep 0 + +# Set machine sleep to 5 minutes on battery +sudo pmset -b sleep 5 + +# Set standby delay to 24 hours (default is 1 hour) +sudo pmset -a standbydelay 86400 + +# Never go into computer sleep mode +#sudo systemsetup -setcomputersleep Off > /dev/null + +# Hibernation mode +# 0: Disable hibernation (speeds up entering sleep mode) +# 3: Copy RAM to disk so the system state can still be restored in case of a +# power failure. +#sudo pmset -a hibernatemode 0 + +# Remove the sleep image file to save disk space +#sudo rm /private/var/vm/sleepimage +# Create a zero-byte file instead… +#sudo touch /private/var/vm/sleepimage +# …and make sure it can’t be rewritten +#sudo chflags uchg /private/var/vm/sleepimage + +############################################################################### +# Screen # +############################################################################### + +# Require password immediately after sleep or screen saver begins +#defaults write com.apple.screensaver askForPassword -int 1 +#defaults write com.apple.screensaver askForPasswordDelay -int 0 + +# Save screenshots to the desktop +defaults write com.apple.screencapture location -string "${HOME}/Screenshots" + +# Save screenshots in PNG format (other options: BMP, GIF, JPG, PDF, TIFF) +defaults write com.apple.screencapture type -string "jpg" + +# Disable shadow in screenshots +#defaults write com.apple.screencapture disable-shadow -bool true + +# Enable subpixel font rendering on non-Apple LCDs +# Reference: https://github.com/kevinSuttle/macOS-Defaults/issues/17#issuecomment-266633501 +defaults write NSGlobalDomain AppleFontSmoothing -int 1 + +# Enable HiDPI display modes (requires restart) +sudo defaults write /Library/Preferences/com.apple.windowserver DisplayResolutionEnabled -bool true + +############################################################################### +# Finder # +############################################################################### + +# Finder: allow quitting via ⌘ + Q; doing so will also hide desktop icons +#defaults write com.apple.finder QuitMenuItem -bool true + +# Finder: disable window animations and Get Info animations +#defaults write com.apple.finder DisableAllAnimations -bool true + +# Set Desktop as the default location for new Finder windows +# For other paths, use `PfLo` and `file:///full/path/here/` +#defaults write com.apple.finder NewWindowTarget -string "PfDe" +#defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/Desktop/" + +# Show icons for hard drives, servers, and removable media on the desktop +#defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true +#defaults write com.apple.finder ShowHardDrivesOnDesktop -bool true +#defaults write com.apple.finder ShowMountedServersOnDesktop -bool true +#defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true + +# Finder: show hidden files by default +#defaults write com.apple.finder AppleShowAllFiles -bool true + +# Finder: show all filename extensions +#defaults write NSGlobalDomain AppleShowAllExtensions -bool true + +# Finder: show status bar +defaults write com.apple.finder ShowStatusBar -bool true + +# Finder: show path bar +defaults write com.apple.finder ShowPathbar -bool true + +# Display full POSIX path as Finder window title +#defaults write com.apple.finder _FXShowPosixPathInTitle -bool true + +# Keep folders on top when sorting by name +#defaults write com.apple.finder _FXSortFoldersFirst -bool true + +# When performing a search, search the current folder by default +defaults write com.apple.finder FXDefaultSearchScope -string "SCcf" + +# Disable the warning when changing a file extension +defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false + +# Enable spring loading for directories +#defaults write NSGlobalDomain com.apple.springing.enabled -bool true + +# Remove the spring loading delay for directories +#defaults write NSGlobalDomain com.apple.springing.delay -float 0 + +# Avoid creating .DS_Store files on network or USB volumes +defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true +defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true + +# Disable disk image verification +defaults write com.apple.frameworks.diskimages skip-verify -bool true +defaults write com.apple.frameworks.diskimages skip-verify-locked -bool true +defaults write com.apple.frameworks.diskimages skip-verify-remote -bool true + +# Automatically open a new Finder window when a volume is mounted +defaults write com.apple.frameworks.diskimages auto-open-ro-root -bool true +defaults write com.apple.frameworks.diskimages auto-open-rw-root -bool true +defaults write com.apple.finder OpenWindowForNewRemovableDisk -bool true + +# Show item info near icons on the desktop and in other icon views +#/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:showItemInfo true" ~/Library/Preferences/com.apple.finder.plist +#/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:showItemInfo true" ~/Library/Preferences/com.apple.finder.plist +#/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:showItemInfo true" ~/Library/Preferences/com.apple.finder.plist + +# Show item info to the right of the icons on the desktop +#/usr/libexec/PlistBuddy -c "Set DesktopViewSettings:IconViewSettings:labelOnBottom false" ~/Library/Preferences/com.apple.finder.plist + +# Enable snap-to-grid for icons on the desktop and in other icon views +#/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist +#/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist +#/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist + +# Increase grid spacing for icons on the desktop and in other icon views +#/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:gridSpacing 100" ~/Library/Preferences/com.apple.finder.plist +#/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:gridSpacing 100" ~/Library/Preferences/com.apple.finder.plist +#/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:gridSpacing 100" ~/Library/Preferences/com.apple.finder.plist + +# Increase the size of icons on the desktop and in other icon views +#/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:iconSize 80" ~/Library/Preferences/com.apple.finder.plist +#/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:iconSize 80" ~/Library/Preferences/com.apple.finder.plist +#/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:iconSize 80" ~/Library/Preferences/com.apple.finder.plist + +# Use list view in all Finder windows by default +# Four-letter codes for the other view modes: `icnv`, `clmv`, `glyv` +#defaults write com.apple.finder FXPreferredViewStyle -string "Nlsv" + +# Disable the warning before emptying the Trash +#defaults write com.apple.finder WarnOnEmptyTrash -bool false + +# Enable AirDrop over Ethernet and on unsupported Macs running Lion +defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true + +# Show the ~/Library folder +#chflags nohidden ~/Library && xattr -d com.apple.FinderInfo ~/Library + +# Show the /Volumes folder +#sudo chflags nohidden /Volumes + +# Expand the following File Info panes: +# “General”, “Open with”, and “Sharing & Permissions” +#defaults write com.apple.finder FXInfoPanesExpanded -dict \ +# General -bool true \ +# OpenWith -bool true \ +# Privileges -bool true + +############################################################################### +# Dock, Dashboard, and hot corners # +############################################################################### + +# Enable highlight hover effect for the grid view of a stack (Dock) +#defaults write com.apple.dock mouse-over-hilite-stack -bool true + +# Set the icon size of Dock items to 36 pixels +#defaults write com.apple.dock tilesize -int 36 + +# Change minimize/maximize window effect +#defaults write com.apple.dock mineffect -string "scale" + +# Minimize windows into their application’s icon +defaults write com.apple.dock minimize-to-application -bool true + +# Enable spring loading for all Dock items +#defaults write com.apple.dock enable-spring-load-actions-on-all-items -bool true + +# Show indicator lights for open applications in the Dock +defaults write com.apple.dock show-process-indicators -bool true + +# Wipe all (default) app icons from the Dock +# This is only really useful when setting up a new Mac, or if you don’t use +# the Dock to launch apps. +defaults write com.apple.dock persistent-apps -array + +# Show only open applications in the Dock +#defaults write com.apple.dock static-only -bool true + +# Don’t animate opening applications from the Dock +#defaults write com.apple.dock launchanim -bool false + +# Speed up Mission Control animations +defaults write com.apple.dock expose-animation-duration -float 0.1 + +# Don’t group windows by application in Mission Control +# (i.e. use the old Exposé behavior instead) +#defaults write com.apple.dock expose-group-by-app -bool false + +# Disable Dashboard +#defaults write com.apple.dashboard mcx-disabled -bool true + +# Don’t show Dashboard as a Space +#defaults write com.apple.dock dashboard-in-overlay -bool true + +# Don’t automatically rearrange Spaces based on most recent use +#defaults write com.apple.dock mru-spaces -bool false + +# Remove the auto-hiding Dock delay +defaults write com.apple.dock autohide-delay -float 0 +# Remove the animation when hiding/showing the Dock +defaults write com.apple.dock autohide-time-modifier -float 0 + +# Automatically hide and show the Dock +defaults write com.apple.dock autohide -bool true + +# Make Dock icons of hidden applications translucent +defaults write com.apple.dock showhidden -bool true + +# Don’t show recent applications in Dock +defaults write com.apple.dock show-recents -bool false + +# Disable the Launchpad gesture (pinch with thumb and three fingers) +#defaults write com.apple.dock showLaunchpadGestureEnabled -int 0 + +# Reset Launchpad, but keep the desktop wallpaper intact +#find "${HOME}/Library/Application Support/Dock" -name "*-*.db" -maxdepth 1 -delete + +# Add iOS & Watch Simulator to Launchpad +#sudo ln -sf "/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app" "/Applications/Simulator.app" +#sudo ln -sf "/Applications/Xcode.app/Contents/Developer/Applications/Simulator (Watch).app" "/Applications/Simulator (Watch).app" + +# Add a spacer to the left side of the Dock (where the applications are) +#defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type="spacer-tile";}' +# Add a spacer to the right side of the Dock (where the Trash is) +#defaults write com.apple.dock persistent-others -array-add '{tile-data={}; tile-type="spacer-tile";}' + +# Hot corners +# Possible values: +# 0: no-op +# 2: Mission Control +# 3: Show application windows +# 4: Desktop +# 5: Start screen saver +# 6: Disable screen saver +# 7: Dashboard +# 10: Put display to sleep +# 11: Launchpad +# 12: Notification Center +# 13: Lock Screen +# Top left screen corner → Mission Control +#defaults write com.apple.dock wvous-tl-corner -int 2 +#defaults write com.apple.dock wvous-tl-modifier -int 0 +# Top right screen corner → Desktop +#defaults write com.apple.dock wvous-tr-corner -int 4 +#defaults write com.apple.dock wvous-tr-modifier -int 0 +# Bottom left screen corner → Start screen saver +#defaults write com.apple.dock wvous-bl-corner -int 5 +#defaults write com.apple.dock wvous-bl-modifier -int 0 + +############################################################################### +# Safari & WebKit # +############################################################################### + +# Privacy: don’t send search queries to Apple +defaults write com.apple.Safari UniversalSearchEnabled -bool false +defaults write com.apple.Safari SuppressSearchSuggestions -bool true + +############################################################################### +# Spotlight # +############################################################################### + +# Hide Spotlight tray-icon (and subsequent helper) +#sudo chmod 600 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Search +# Disable Spotlight indexing for any volume that gets mounted and has not yet +# been indexed before. +# Use `sudo mdutil -i off "/Volumes/foo"` to stop indexing any volume. +# sudo defaults write /.Spotlight-V100/VolumeConfiguration Exclusions -array "/Volumes" +# Change indexing order and disable some search results +# Load new settings before rebuilding the index +#killall mds > /dev/null 2>&1 +# Make sure indexing is enabled for the main volume +#sudo mdutil -i on / > /dev/null +# Rebuild the index from scratch +#sudo mdutil -E / > /dev/null + +############################################################################### +# Terminal & iTerm 2 # +############################################################################### + +# Only use UTF-8 in Terminal.app +defaults write com.apple.terminal StringEncodings -array 4 + +# Enable “focus follows mouse” for Terminal.app and all X11 apps +# i.e. hover over a window and start typing in it without clicking first +#defaults write com.apple.terminal FocusFollowsMouse -bool true +#defaults write org.x.X11 wm_ffm -bool true + +# Enable Secure Keyboard Entry in Terminal.app +# See: https://security.stackexchange.com/a/47786/8918 +#defaults write com.apple.terminal SecureKeyboardEntry -bool true + +# Disable the annoying line marks +#defaults write com.apple.Terminal ShowLineMarks -int 0 + +# Install the Solarized Dark theme for iTerm +#open "${HOME}/init/Solarized Dark.itermcolors" + +# Don’t display the annoying prompt when quitting iTerm +defaults write com.googlecode.iterm2 PromptOnQuit -bool false + +############################################################################### +# Time Machine # +############################################################################### + +# Prevent Time Machine from prompting to use new hard drives as backup volume +defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true + +# Disable local Time Machine backups +hash tmutil &> /dev/null && sudo tmutil disablelocal + +############################################################################### +# Activity Monitor # +############################################################################### + +# Show the main window when launching Activity Monitor +defaults write com.apple.ActivityMonitor OpenMainWindow -bool true + +# Visualize CPU usage in the Activity Monitor Dock icon +defaults write com.apple.ActivityMonitor IconType -int 5 + +# Show all processes in Activity Monitor +defaults write com.apple.ActivityMonitor ShowCategory -int 0 + +# Sort Activity Monitor results by CPU usage +defaults write com.apple.ActivityMonitor SortColumn -string "CPUUsage" +defaults write com.apple.ActivityMonitor SortDirection -int 0 + +############################################################################### +# Address Book, Dashboard, iCal, TextEdit, and Disk Utility # +############################################################################### + +# Enable the debug menu in Address Book +#defaults write com.apple.addressbook ABShowDebugMenu -bool true + +# Enable Dashboard dev mode (allows keeping widgets on the desktop) +#defaults write com.apple.dashboard devmode -bool true + +# Enable the debug menu in iCal (pre-10.8) +#defaults write com.apple.iCal IncludeDebugMenu -bool true + +# Use plain text mode for new TextEdit documents +#defaults write com.apple.TextEdit RichText -int 0 +# Open and save files as UTF-8 in TextEdit +defaults write com.apple.TextEdit PlainTextEncoding -int 4 +defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4 + +# Enable the debug menu in Disk Utility +#defaults write com.apple.DiskUtility DUDebugMenuEnabled -bool true +#defaults write com.apple.DiskUtility advanced-image-options -bool true + +# Auto-play videos when opened with QuickTime Player +#defaults write com.apple.QuickTimePlayerX MGPlayMovieOnOpen -bool true + +############################################################################### +# Mac App Store # +############################################################################### + +# Enable the WebKit Developer Tools in the Mac App Store +#defaults write com.apple.appstore WebKitDeveloperExtras -bool true + +# Enable Debug Menu in the Mac App Store +#defaults write com.apple.appstore ShowDebugMenu -bool true + +# Enable the automatic update check +defaults write com.apple.SoftwareUpdate AutomaticCheckEnabled -bool true + +# Check for software updates daily, not just once per week +defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1 + +# Download newly available updates in background +defaults write com.apple.SoftwareUpdate AutomaticDownload -int 1 + +# Install System data files & security updates +defaults write com.apple.SoftwareUpdate CriticalUpdateInstall -int 1 + +# Automatically download apps purchased on other Macs +#defaults write com.apple.SoftwareUpdate ConfigDataInstall -int 1 + +# Turn on app auto-update +defaults write com.apple.commerce AutoUpdate -bool true + +# Allow the App Store to reboot machine on macOS updates +defaults write com.apple.commerce AutoUpdateRestartRequired -bool true + +############################################################################### +# Photos # +############################################################################### + +# Prevent Photos from opening automatically when devices are plugged in +defaults -currentHost write com.apple.ImageCapture disableHotPlug -bool true + +############################################################################### +# Messages # +############################################################################### + +# Disable automatic emoji substitution (i.e. use plain text smileys) +#defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "automaticEmojiSubstitutionEnablediMessage" -bool false + +# Disable smart quotes as it’s annoying for messages that contain code +defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "automaticQuoteSubstitutionEnabled" -bool false + +# Disable continuous spell checking +defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "continuousSpellCheckingEnabled" -bool false + +############################################################################### +# Google Chrome & Google Chrome Canary # +############################################################################### + +# Disable the all too sensitive backswipe on trackpads +defaults write com.google.Chrome AppleEnableSwipeNavigateWithScrolls -bool false +defaults write com.google.Chrome.canary AppleEnableSwipeNavigateWithScrolls -bool false + +# Disable the all too sensitive backswipe on Magic Mouse +defaults write com.google.Chrome AppleEnableMouseSwipeNavigateWithScrolls -bool false +defaults write com.google.Chrome.canary AppleEnableMouseSwipeNavigateWithScrolls -bool false + +# Use the system-native print preview dialog +#defaults write com.google.Chrome DisablePrintPreview -bool true +#defaults write com.google.Chrome.canary DisablePrintPreview -bool true + +# Expand the print dialog by default +defaults write com.google.Chrome PMPrintingExpandedStateForPrint2 -bool true +defaults write com.google.Chrome.canary PMPrintingExpandedStateForPrint2 -bool true + +############################################################################### +# Twitter.app # +############################################################################### + +# Disable smart quotes as it’s annoying for code tweets +defaults write com.twitter.twitter-mac AutomaticQuoteSubstitutionEnabled -bool false + +# Show the app window when clicking the menu bar icon +defaults write com.twitter.twitter-mac MenuItemBehavior -int 1 + +# Enable the hidden ‘Develop’ menu +defaults write com.twitter.twitter-mac ShowDevelopMenu -bool true + +# Open links in the background +defaults write com.twitter.twitter-mac openLinksInBackground -bool true + +# Allow closing the ‘new tweet’ window by pressing `Esc` +defaults write com.twitter.twitter-mac ESCClosesComposeWindow -bool true + +# Show full names rather than Twitter handles +defaults write com.twitter.twitter-mac ShowFullNames -bool true + +# Hide the app in the background if it’s not the front-most window +defaults write com.twitter.twitter-mac HideInBackground -bool true + +############################################################################### +# Kill affected applications # +############################################################################### + +for app in "Activity Monitor" \ + "Address Book" \ + "Calendar" \ + "cfprefsd" \ + "Contacts" \ + "Dock" \ + "Finder" \ + "Google Chrome Canary" \ + "Google Chrome" \ + "Mail" \ + "Messages" \ + "Opera" \ + "Photos" \ + "Safari" \ + "SizeUp" \ + "Spectacle" \ + "SystemUIServer" \ + "Terminal" \ + "Transmission" \ + "Tweetbot" \ + "Twitter" \ + "iCal"; do + killall "${app}" &> /dev/null +done +echo "Done. Note that some of these changes require a logout/restart to take effect." diff --git a/tmux/tmux.conf b/tmux/tmux.conf new file mode 100644 index 0000000..ca1ab51 --- /dev/null +++ b/tmux/tmux.conf @@ -0,0 +1,64 @@ + +unbind C-b +set-option -g prefix C-a +bind-key C-a send-prefix +set -g status-style 'bg=#333333 fg=#5eacd3' +set -g mouse on +set -g base-index 1 +set -g pane-base-index 1 +set-window-option -g pane-base-index 1 +set-option -g renumber-windows on +set-option -g mouse on + +set -ga terminal-overrides ",screen-256color*:Tc" +set-option -g default-terminal "screen-256color" +set -s escape-time 0 + +set-window-option -g mode-keys vi +bind -T copy-mode-vi v send-keys -X begin-selection +bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard' + +bind '"' split-window -c "#{pane_current_path}" +bind % split-window -h -c "#{pane_current_path}" + +bind-key -r g run-shell "tmux neww lazygit" +bind-key -r i run-shell "tmux neww ~/scripts/tmux-cht.sh" + +bind-key -r f run-shell "tmux neww twm" +bind-key -r F run-shell "tmux neww twm -l" +bind-key -r e run-shell "tmux switch -t $TWM_DEFAULT" +bind X confirm-before kill-session + +# Smart pane switching with awareness of Vim splits. +# See: https://github.com/christoomey/vim-tmux-navigator + +# decide whether we're in a Vim process +is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ + | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'" + +bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L' +bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D' +bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U' +bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R' + +tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")' + +if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \ + "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'" +if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \ + "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'" + +bind-key -n 'C-Space' if-shell "$is_vim" 'send-keys C-Space' 'select-pane -t:.+' + +bind-key -T copy-mode-vi 'C-h' select-pane -L +bind-key -T copy-mode-vi 'C-j' select-pane -D +bind-key -T copy-mode-vi 'C-k' select-pane -U +bind-key -T copy-mode-vi 'C-l' select-pane -R +bind-key -T copy-mode-vi 'C-\' select-pane -l +bind-key -T copy-mode-vi 'C-Space' select-pane -t:.+ + +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' + + +run '~/.tmux/plugins/tpm/tpm' diff --git a/zsh/.zshrc b/zsh/.zshrc new file mode 100644 index 0000000..bdc70cc --- /dev/null +++ b/zsh/.zshrc @@ -0,0 +1,23 @@ + +# Download Znap, if it's not there yet. +[[ -r ~/.zsh_repos/znap/znap.zsh ]] || + git clone --depth 1 -- \ + https://github.com/marlonrichert/zsh-snap.git ~/.zsh_repos/znap +source ~/.zsh_repos/znap/znap.zsh # Start Znap + +export GOPATH=~/go +export REPOS=~/ghq + +znap eval starship 'starship init zsh --print-full-init' +znap prompt + +znap source marlonrichert/zsh-autocomplete +znap source zsh-users/zsh-autosuggestions + +for file in ~/.{aliases.zsh,path.zsh,extras.zsh}; do + if [[ -r "$file" ]] && [[ -f "$file" ]]; then + # shellcheck source=/dev/null + source "$file" + fi +done + diff --git a/zsh/aliases.zsh b/zsh/aliases.zsh new file mode 100644 index 0000000..ebda55c --- /dev/null +++ b/zsh/aliases.zsh @@ -0,0 +1,31 @@ +# Git aliases +alias git-unpushed='git log --branches --not --remotes --no-walk --decorate --oneline' +alias gb='git checkout -b' +alias gfr='git fetch upstream && git rebase upstream/main' +alias git-undo='git reset --soft HEAD~1' +alias git-clean-branches="git for-each-ref --format '%(refname:short)' refs/heads | grep -v 'master\|main' | xargs git branch -D" +alias :q='exit' +alias ls='ls --color' + +# Generic / Random / Utility +alias rg="rg --hidden --glob '!.git' --glob '!node_modules'" +alias r='cd $REPOS/github.com/' +alias c='clear' +alias afk='pmset displaysleepnow' +alias dl="cd ~/Downloads" +alias l='ls -l' +alias todo='nt' +alias tasks="open 'obsidian://open?file=-%20Oppgaver'" +alias todos="mt ~/ghq/github.com/simenandre/notes/" +# alias docker-compose=podman-compose +alias today="open 'obsidian://advanced-uri?daily=true'" +alias tre="tree -I '.git|node_modules'" +alias timeliste="open 'https://tripletex.no/execute/updateHourlist?contextId=11208568'" +alias t="open 'https://tripletex.no/execute/updateHourlist?contextId=11208568'" +alias fork-cleaner="fork-cleaner --token $(cat ~/.secrets/github-token)" +alias vi="nvim" +alias vim="nvim" +alias v="nvim" + +alias dump-issues="getBjerkIssues > ~/Downloads/issues-$(date -I).json" + diff --git a/zsh/extras.zsh b/zsh/extras.zsh new file mode 100755 index 0000000..0647ca0 --- /dev/null +++ b/zsh/extras.zsh @@ -0,0 +1,28 @@ +NOTES_DIR=$HOME/ghq/github.com/simenandre/notes/ +function note() { + if [ $1 ]; then + FILE=$NOTES_DIR/$(date +%Y-%m-%d).md + + if [ $2 ]; then + FILE=$2 + fi + + echo $1 >> $FILE + fi +} + +function nt() { + if [ $1 ]; then + CONTENT="- [ ] $1" + note $CONTENT $2 + fi +} + +function getBjerkIssues() { + gh issue list --repo bjerkio/internal \ + --search "-label:backlog -label:kind/system" \ + --json title,body,url,createdAt,assignees,number,labels,comments \ + --jq 'map({url, createdAt, title, labels: [.labels[].name], assignees: [.assignees[].login], body, number: "#\(.number)", comments: .comments | map({ body: .body, createdAt: .createdAt })})' +} + + diff --git a/zsh/path.zsh b/zsh/path.zsh new file mode 100644 index 0000000..ef41549 --- /dev/null +++ b/zsh/path.zsh @@ -0,0 +1,13 @@ +#!/bin/bash + +# Add directories to the PATH and prevent to add the same directory multiple times upon shell reload. +add_to_path() { + if [[ -d "$1" ]] && [[ ":$PATH:" != *":$1:"* ]]; then + export PATH="$1:$PATH" + fi +} + +# Add ghq to PATH +add_to_path "$GOPATH/bin" +add_to_path "/Library/Frameworks/Firebird.framework/Resources/bin" + -- cgit v1.2.3