From 12d2f7a2ac942fc3b7d88b794ed07329d9903481 Mon Sep 17 00:00:00 2001 From: Christian Baer Date: Wed, 20 May 2020 00:56:40 +0200 Subject: [PATCH] First commit with mac bootstrapping stuff --- init/Brewfile | 120 +++++++++++++++++++++++++++++++++++++++ init/mac.sh | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 274 insertions(+) create mode 100644 init/Brewfile create mode 100755 init/mac.sh diff --git a/init/Brewfile b/init/Brewfile new file mode 100644 index 0000000..eeaa34e --- /dev/null +++ b/init/Brewfile @@ -0,0 +1,120 @@ +cask_args appdir: '/Applications' +ALL_FFMPEG_OPTIONS = `brew options ffmpeg | grep -vE '\s' | grep -- '--with-'`.gsub("--", "").split("\n") + +tap "caskroom/cask" +tap "caskroom/fonts" +tap "homebrew/bundle" +tap "homebrew/cask" +tap "homebrew/cask-drivers" +tap "homebrew/core" +brew "brew-cask-completion" +brew "checkbashisms" +brew "coreutils" +brew "exiftool" +brew "ffmpeg", args: ALL_FFMPEG_OPTIONS +brew "git" +brew "grep" +brew "htop" +brew "hugo" +brew "iperf" +brew "iperf3" +brew "mas" +brew "mosh" +brew "node" +brew "nativefier" +brew "nmap" +brew "rsync" +brew "tmux" +brew "tree" +brew "vim" +brew "youtube-dl" +brew "zsh" +brew "zsh-completions" +cask "alfred" +cask "amethyst" +cask "atom" +cask "balenaetcher" +cask "bartender" +cask "bonjeff" +cask "calibre" +cask "carbon-copy-cloner" +cask "chromium" +cask "coconutbattery" +cask "db-browser-for-sqlite" +cask "dbeaver-community" +cask "diskmaker-x" +cask "evolv-escribe-suite" +cask "fantastical" +cask "firefox" +cask "fluid" +cask "fog" +cask "font-courier-prime" +cask "font-courier-prime-code" +cask "font-courier-prime-medium-and-semi-bold" +cask "font-courier-prime-sans" +cask "fork" +cask "github" +cask "handbrake" +cask "hazel" +cask "istat-menus" +cask "iterm2" +cask "java" +cask "jdownloader" +cask "libreoffice" +cask "little-snitch" +cask "marked" +cask "mediathekview" +cask "moneymoney" +cask "nextcloud" +cask "onyx" +cask "pdf-expert" +cask "portfolioperformance" +cask "qlcommonmark" +cask "ramme" +cask "sequel-pro" +cask "shifty" +cask "sloth" +cask "sonos" +cask "spotify" +cask "thunderbird" +cask "transmission" +cask "transmit" +cask "tuxera-ntfs" +cask "typora" +cask "virtualbox" +cask "vlc" +cask "wireshark" +mas "Affinity Designer", id: 824171161 +mas "Affinity Publisher", id: 881418622 +mas "Amphetamine", id: 937984704 +mas "AudioBookBinder", id: 413969927 +mas "Banking 4X", id: 926711151 +mas "Bitwarden", id: 1352778147 +mas "Cardhop", id: 1290358394 +mas "Color Picker", id: 641027709 +mas "Create Booklet", id: 943029046 +mas "Discovery", id: 1381004916 +mas "Drafts", id: 1435957248 +mas "Enpass", id: 732710998 +mas "FileBot", id: 905384638 +mas "Interact Scratchpad", id: 1199660222 +mas "Keynote", id: 409183694 +mas "Mactracker", id: 430255202 +mas "Mastonaut", id: 1450757574 +mas "Mindcad Tiler", id: 432460453 +mas "MindNode", id: 992076693 +mas "Monit", id: 1014850245 +mas "Moom", id: 419330170 +mas "Notebooks", id: 1449826029 +mas "Numbers", id: 409203825 +mas "Pages", id: 409201541 +mas "PDFify", id: 1435055351 +mas "Pixelmator", id: 407963104 +mas "Reeder", id: 1449412482 +mas "ShutterCount", id: 720123827 +mas "The Unarchiver", id: 425424353 +mas "Todoist", id: 585829637 +mas "Tweetbot", id: 557168941 +mas "VPN Monitor", id: 887410814 +mas "WhatsApp", id: 1147396723 +mas "Xcode", id: 497799835 diff --git a/init/mac.sh b/init/mac.sh new file mode 100755 index 0000000..288f982 --- /dev/null +++ b/init/mac.sh @@ -0,0 +1,154 @@ +#!/usr/bin/env sh +# Inspired by https://github.com/mathiasbynens/dotfiles/blob/master/.macos from Mathias Bynens + +MAC_HOSTNAME="leia" + +# 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 & + +# Set hostname +sudo scutil --set ComputerName "$MAC_HOSTNAME" +sudo scutil --set HostName "$MAC_HOSTNAME" +sudo scutil --set LocalHostName "$MAC_HOSTNAME" +sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string "$MAC_HOSTNAME" + +# Always show scrollbars +defaults write NSGlobalDomain AppleShowScrollBars -string "Always" + +# 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 + +# 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 automatic capitalization as it’s annoying when typing code +defaults write NSGlobalDomain NSAutomaticCapitalizationEnabled -bool false + +# Set a custom wallpaper image. `DefaultDesktop.jpg` is already a symlink, and +# all wallpapers are in `/Library/Desktop Pictures/`. The default is `Wave.jpg`. +#rm -rf ~/Library/Application Support/Dock/desktoppicture.db +#sudo rm -rf /System/Library/CoreServices/DefaultDesktop.jpg +#sudo ln -s /path/to/your/image /System/Library/CoreServices/DefaultDesktop.jpg + +# Save screenshots to the desktop +defaults write com.apple.screencapture location -string "${HOME}/Desktop" + +# Save screenshots in PNG format (other options: BMP, GIF, JPG, PDF, TIFF) +defaults write com.apple.screencapture type -string "png" + +# 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 + +# Set $HOME 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 "PfLO" +defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}" + +# 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 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 + +# 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 + +# 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" + +#Enable AirDrop over Ethernet and on unsupported Macs running Lion +defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true + +# 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 + +# 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 + +# Don’t automatically rearrange Spaces based on most recent use +defaults write com.apple.dock mru-spaces -bool false + +# Hot corners +# Bottom left screen corner → Desktop +defaults write com.apple.dock wvous-bl-corner -int 4 +defaults write com.apple.dock wvous-bl-modifier -int 0 + +# Check for software updates daily, not just once per week +defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1 + +# Kill affected apps +for app in "Activity Monitor" \ + "cfprefsd" \ + "Finder" \ + "SystemUIServer"; do + killall "${app}" &> /dev/null +done + +# Install homebrew +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" + +# Install apps from Brewfile +brew bundle