Skip to content

Latest commit

 

History

History
4207 lines (3703 loc) · 121 KB

provisioning.org

File metadata and controls

4207 lines (3703 loc) · 121 KB

Provisioning

  • First Steps
    • Download a ZIP copy of the repo
    • SSH Keys
      • If you are re-using an existing .ssh directory then prepare it now
        • Take it from some secure location local like another partition or remote
      • Install a copy of your .ssh directory before you move on from here
        • Manually do an ssh-add -K private-key-name on all of the keys
    • Open provisioning.org
  • Flow
    • ORG files are manual steps
    • SH files are shell scripts which may require human input
    • Steps
      • Perform them in order of their file names numerically eg 01..02..03..n
      • The steps are tedious, time consuming and boring so they are broken up into to logical units to make it easy for you to take a break and finish later without forgetting where you are and what you were doing.
      • You can usually perform the ORG file manual steps whenver you want because they are configuration. This can be a stress-reliever. I usally configure each application the first time that I need it instead of configuring them all at once.
    • Testing.org tells you if it worked
  • Notes
    • Install system updates whenever you feel like it
    • When you re-run the provisioner it might install a newer version of your software for which you don’t have a license.
    • Separating the scripts helps because they are usually a little bit wrong and easier to fix the smaller scripts than one giant script.

Steps

OS X

Installation

- Action Prefix for Boxes:
- Host :: "On the Metal"
- Guest :: "Virtualized"
- Re-image your box
- During system configuration /before/ creating a user YES log into the App Store
- Make a user
  - DISAllow location services
  - Named ~gcr~
    - Choose an avatar
    - Don't use location for timezone
    - Don't allow AppleID to reset this password
  - Disallow user analytics reporting.
  - Allow Siri
- Maybe install software updates, or do it later.
- Install Google Chrome (manually)
- Development Tools
  - XCode
    - This is *optional*.
    - If you are only going to use the CLT tools (for development and utility)
      then skip this step, *Xcode isn't required*.
    - If you want to use the [[https://developer.apple.com/library/archive/documentation/Accessibility/Conceptual/AccessibilityMacOSX/OSXAXTestingApps.html][Accessibility Inspector]] then you /do/ need Xcode
    - If you want to develop using Xcode then you will install it.
    - If you determined that /yes/ you do need Xcode then
      - If you are on the /latest/ version of macOS then you
        *can only install latest version of Xcode* from the App Store. If you have
        absolutely no requirements either for internal use (like specific versions
        of development tools or accessibility tools) or external (support specific
        older versions of iOS or macOS) can install Xcode via the App Store.
      - If you are on a previous version of your tech stack then you may download
        Xcode manually [[https://developer.apple.com/download/more/][here]]. .
  - Command Line Tools (CLT)
    - Install the CLT and let it run since only need it once you start using
      the provsioning scripts
    - Run this and choose *Install*.
      #+NAME: org_gcr_2018-09-29T15-30-58-05-00_cosmicality_EFF7FEE8-6F4D-49AF-81E2-85120B6194D2
      #+BEGIN_SRC sh
      xcode-select --install
      #+END_SRC
- Utility Scripts
  - Mount only required volumes
    - Clarify
      - Spotlight suggests applications and files on those volumes and
        you usually don't want that
      - Applications get locks on files on non host volumes
    - For =host1= that means =host1= and =Storage=
    - Write a shell script and run it at logon
      - Customize this for the install partition
      - These scripts live in my personal =util= directory
        #+NAME: org_gcr_2018-09-29T15-30-58-05-00_cosmicality_9C6DBD93-7735-4200-82A0-0A206002159D
        #+BEGIN_SRC sh
  #!/usr/bin/env bash
# -*- mode: sh; -*-
diskutil unmount /dev/disk0s3
diskutil unmount /dev/disk0s4
diskutil unmount /dev/disk0s6
diskutil unmount /dev/disk0s7
diskutil unmount /dev/disk0s8
        #+END_SRC
- System Preferences
  - General
    - NO: Close windows when quitting an app
  - Desktop & Screensaver
    - Desktop
      - Black
    - Screensaver
      - *(Host)*: "Message", 5m
      - *(Guest)*: "Message", 5m
  - Dock
    - Size: 50%
    - Magnification: Off
    - Position: Bottom
    - Maximize windows using: Genie Effect
    - Double clicking a title bar: NO
    - Minimize windows into application icon: Yes
    - Animate opening apps: Yes
    - Auto hide/show dock: Yes
    - Show indicator for open apps: Yes
  - Mission Control
    - Displays have separate spaces: YES
  - Language & Region: *NA*
  - Security & Privacy: *NA*
  - Spotlight
    - Search Results
      - Applications
      - Calculator
      - Documents
      - Folders
      - System Preferences
      - UN-CHECK Allow Spotlight Suggestions in Look up
    - Privacy
      - Big folders like DropBox or TimeMachine
      - External disks especially snapshot partitions
  - Notifications: *NA*
  - Displays *(Host)* \rarr Maximize resolution
  - Energy saver
    - *(Host)*
      - On battery, Screen sleep 5m
        - Don't slightly dim the display on battery power
      - On power
        - Display off at 15m
        - Disable Power Nap
    - *(Guest)*
      - Computer sleep: never
  - Keyboard *(Host)*
    - Keyboard
      - YES Adjust keyboard brightness in low light
      - YES Turn keyboard backlight off after 30s
      - YES Show keyboard and emoji viewers in menu bar
      - NO Use F1,  F2,  etc.  keys as standard function keys
        - Do nothing to the modifier keys, everything will happen in Karabiner-Elements
    - Shortcuts
      - Leave Display alone: retain all defaults
      - Screen Shots
        - Screen as file: C-M-s-3
        - Screen to clipboard: C-M-s-S-3
        - Selection as file: C-M-s-S-4
        - Selection to clipboard: C-M-s-S-4
      - Spotlight
        - Show Spot light search: Alt-Tab
      - Everything else uncheck
  - Mouse
    - *(Host)* Connect Bluetooth mouse
    - Tracking Speed
      - MBP Trackpad: 100%
      - Anker Palm Mouse: 50%
      - Dell Mouse: 80%
  - Trackpad *(Host)*
    - Point & Click
      - Look up & data detectors: FALSE
      - Secondary click: TRUE
      - Tap to click: TRUE
  - Printers & Scanners *(Host)*
    - Canon MG6600
      - Print
        - Add it so it shows up.
      - Scanner
        - Must scan something for it to automatically install Apple's scanning
          driver. NO NOT use Canon's software
        - Scanning Setup
          - Kind: Black & White
          - Resolution DPI: 150
          - Scan To: ~/Documents
          - Name: HEREISTHESCAN
          - Format: PDF
            - Combine into single document: YES
          - Everything else is: NO
  - Sound
    - Show volume in menubar
  - Startup Disk: *NA*
  - iCloud: *NA*
  - Internet Accounts: *NA*
  - App Store: *NA*
  - Network: *NA*
  - Bluetooth *(Host)*
    - Show in menu bar
  - Extensions: *NA*
  - Sharing: *NA*
  - Users & Groups: Enable Guest User without Parental Controls.
  - Siri
    - Enable Siri: Yes
    - Language: English (US)
    - Siri Voice: Australian Female
    - Voice Feedback: On
    - Mic Input: Internal Microphone
    - Keyboard Shortcut: Hold Command Space
    - Show Siri in menu bar: NO
  - Parental Controls: *NA*
  - Date & Time: *NA*
    - Time Zone
      - YES Set time zone automatically using current location.
  - Time Machine: *NA*
  - Accessibility
    - Display
      - Increase contrast
        - Automatically Reduces transparency
      - Contrast: Normal
      - Cursor size: 50%
      - YES Shake mouse pointer to locate
      - Speech
        - Voice: CereProc Jess
          - Speaking Rate: Normal+%10
          - In the drop down add it to listed voices
        - Speak selected text on key: Command-Command-Option-s
    - Zoom
      - NO Use keyboard shortcuts
      - YES Smooth images
        - VoiceOver: *NA*
    - Descriptions: *NA*
    - Captions: *NA*
    - Audio: *NA*
    - Dictation: On
      - Use Enhanced Dictation (Offline Enabled)
      - Shortcut: Control-Command-Option d
    - Keyboard: *NA*
    - Mouse & Trackpad
      - Trackpad Options
        - Enable Dragging: *Without* Drag Lock
    - Switch Control: *NA*
    - YES: Show Accessibility status in menu bar
  - iCloud: *NA*
    - Don't use the file store or the keychain
  - SwitchResX: *NA*
  - Tuxera NTFS: *NA*
- *(Host)* KeyChain Access (Application)
  - Preferences
  - Show keychain status in menubar
- Finder
  - Preferences
    - General
      - Show nothing on the desktop
      - New Finder windows show: Home dir
      - YES Open folders in tabs instead of new windows
    - Sidebar
      - Applications
      - Desktop
        - Stuff gets placed there automatically sometimes
      - Documents
      - Downloads
      - Home
      - Connected servers
      - Bonjour computers
      - This computer
      - Hard disks
      - External disks
      - CDs, DVDs, and iPods
  - Favorites
    - Dropbox
    - gcr
    - Screenshots
    - Documents
    - git
    - Downloads
    - tmp
    - Desktop
    - Applications
  - View
    - Show everything but preview
      - Provisioner should set this up automatically, but it doesn't seem to
        work anymore.

Configuration

Machine

This script should be idempotent. Set the computer’s “names”. There are 3 resources (1, 2, 3) that I used to make sense of the different names. It is simple, and new to me.

Originally I set every name to the same value. Doing so didn’t result in warnings but it did result in an incorrect “Computer Name” and “Local Host Name”. Based on that experience, I’m going to give names using this strategy to name machines now:

  • HostName
    • All lower case
    • <Logical name>-<UUID>.<org|vm>
  • LocalHostName
    • All lower case
    • <Logical name>-<UUID>
  • NetBIOS
    • All lower case
    • <Logical name>-<UUID>
  • ComputerName
    • “<Logical name> (<UUID>)”

Defining this naming approach helped me learn more about the intent of the name and what I wanted from them.

Depending upon “who” is asking, your Mac has four names. If you want to set them all at once your can do it like this. I care most about the correct name showing up in the terminal.

Finally I decided that sometimes the best thing to do is to give them all the same name so there is never a problem confusing them with another system.

sudo scutil --set HostName ""
echo "Enter HostName (plain old hostname): "
read vhn
sudo scutil --set HostName $vhn
sudo scutil --set LocalHostName ""
echo "Enter LocalHostName (name for Bonjour services): "
read vlhn
sudo scutil --set LocalHostName $vlhn
sudo defaults delete 'com.apple.smb.server' NetBIOSName
echo "Enter NetBIOSName (name that Windows boxes will see): "
read vnbn
sudo defaults write 'com.apple.smb.server' NetBIOSName -string $vnbn
sudo scutil --set ComputerName ""
echo "Enter ComputerName (human friendly GUI name): "
read vcn
sudo scutil --set ComputerName $cn

Display login window as name and password.

sudo defaults write /Library/Preferences/com.apple.loginwindow.plist SHOWFULLNAME -bool true

Login message.

sudo defaults write /Library/Preferences/com.apple.loginwindow.plist LoginwindowText -string "
All creativity is an extended form of a joke.
          — Alan Kay"

Cycle through system information by clicking on the clock at the login screen[fn:1f8bbd98e464862a:https://apple.stackexchange.com/questions/155429/view-machine-name-on-login-screen].

sudo defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName

Disable Gatekeeper.

sudo spctl --master-disable
User

This script should be idempotent.

  • These commands are all copied
    • Including the documentation
    • Some of them have corrections and changes
Globals, Logical or Literal

Set background.

cd ~/Pictures/
curl -O "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/M101_hires_STScI-PRC2006-10a.jpg/1280px-M101_hires_STScI-PRC2006-10a.jpg" P

Set default volume.

osascript -e 'set volume output volume 50'

Disable auto-correct.

defaults write 'NSGlobalDomain' NSAutomaticSpellingCorrectionEnabled -bool false

Expand print panel by default.

defaults write 'NSGlobalDomain' PMPrintingExpandedStateForPrint -bool true
defaults write 'NSGlobalDomain' PMPrintingExpandedStateForPrint2 -bool true

Expand save panel by default.

defaults write 'NSGlobalDomain' NSNavPanelExpandedStateForSaveMode -bool true
defaults write 'NSGlobalDomain' NSNavPanelExpandedStateForSaveMode2 -bool true

Automatically quit printer app once the print jobs complete.

defaults write 'com.apple.print.PrintingPrefs' 'Quit When Finished' -bool true

Hide the menubar.

defaults write NSGlobalDomain _HIHideMenuBar -bool true

Add battery percentage in menubar.

defaults write 'com.apple.menuextra.battery' ShowPercent -bool true

Add date in menubar clock.

defaults write 'com.apple.menuextra.clock' DateFormat -string "EEE MMM d  HH:mm"

Prevent Time Machine from prompting to use new hard drives as backup volume.

defaults write 'com.apple.TimeMachine' DoNotOfferNewDisksForBackup -bool true

Avoid creating .DS_Store files on network volumes.

defaults write 'com.apple.desktopservices' DSDontWriteNetworkStores -bool true

Save to disk (not to iCloud) by default.

defaults write 'NSGlobalDomain' NSDocumentSaveNewDocumentsToCloud -bool false

Increase window resize speed for Cocoa applications.

defaults write 'NSGlobalDomain' NSWindowResizeTime -float 0.001

Use the Graphite theme.

defaults write 'NSGlobalDomain' AppleAquaColorVariant -int 6

Use dark menu bar and Dock

defaults write 'NSGlobalDomain' AppleInterfaceStyle -string Dark

Disable the “Are you sure you want to open this application?” dialog.

defaults write com.apple.LaunchServices LSQuarantine -bool false

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 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

Restart automatically if the computer freezes.

sudo systemsetup -setrestartfreeze on

Check for software updates daily, not just once per week.

defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1

Disable smart quotes as they’re annoying when typing code.

defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false

Disable smart dashes as they’re annoying when typing code.

defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
Hardware

Disable press-and-hold for keys in favor of key repeat.

defaults write 'NSGlobalDomain' ApplePressAndHoldEnabled -bool false

Use all F1, F2, etc. keys as standard function keys.

defaults write 'NSGlobalDomain' com.apple.keyboard.fnState -bool true

Increase sound quality for Bluetooth headphones/headsets.

defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" -int 40
Dock

Automatically hide and show the dock.

defaults write com.apple.dock autohide -bool true && killall Dock

Do not animate opening applications from the Dock.

defaults write com.apple.dock launchanim -bool false && killall Dock

Enable highlight hover effect for the grid view of a stack.

defaults write com.apple.dock mouse-over-hilte-stack -bool true && killall Dock

Make Dock icons of hidden applications translucent.

defaults write com.apple.dock showhidden -bool true && killall Dock

Minimize to application.

defaults write com.apple.dock minimize-to-application -bool true && killall Dock

Move the Dock to the bottom side of the screen.

defaults write com.apple.dock orientation -string bottom && killall Dock

Remove the animation when hiding/showing the dock.

defaults write com.apple.Dock autohide-time-modifier -float 0 && killall Dock

Remove the auto-hiding Dock delay”.

defaults write com.apple.Dock autohide-delay -float 0 && killall Dock

Set the icon size of Dock items to 50 pixels.

defaults write com.apple.Dock tilesize -int 50 && killall Dock

Show indicator lights for open applications in the Dock.

defaults write com.apple.Dock show-process-indicators -bool true && killall Dock

Wipe all (default) app icons from Dock.

defaults write 'com.apple.dock' persistent-apps -array '' && killall Dock

Speed up Mission Control animations.

defaults write 'com.apple.dock' expose-animation-duration -float 0.1 && killall Dock
Finder

Allow text selection in Quick Look.

defaults write 'com.apple.finder' QLEnableTextSelection -bool true && killall Finder

Automatically open a new Finder window when a volume is mounted.

defaults write 'com.apple.frameworks.diskimages' auto-open-ro-root -bool true && killall Finder
defaults write 'com.apple.frameworks.diskimages' auto-open-rw-root -bool true && killall Finder
defaults write 'com.apple.finder' OpenWindowForNewRemovableDisk -bool true && killall Finder

Disable the warning before emptying the Trash.

defaults write 'com.apple.finder' WarnOnEmptyTrash -bool false && killall Finder

Disable the warning when changing a file extension.

defaults write 'com.apple.finder' FXEnableExtensionChangeWarning -bool false && killall Finder

Set finder to display full path in title bar.

defaults write 'com.apple.finder' _FXShowPosixPathInTitle -bool true && killall Finder

New Finder window shows the homefolder.

defaults write 'com.apple.finder' NewWindowTarget -string PfHm && killall Finder

When performing a search, search the current folder by default.

defaults write 'com.apple.finder' FXDefaultSearchScope -string SCcf && killall Finder

Show all files in Finder.

defaults write 'com.apple.finder' AppleShowAllFiles -bool true && killall Finder

Show file extensions in Finder.

defaults write 'com.apple.finder' AppleShowAllExtensions -bool true && killall Finder

Show path bar in Finder.

defaults write 'com.apple.finder' ShowPathbar -bool true && killall Finder

Show status bar in Finder.

defaults write 'com.apple.finder' ShowStatusBar -bool true && killall Finder

Sidebar icon size Small.

defaults write 'NSGlobalDomain' NSTableViewDefaultSizeMode -bool true && killall Finder
  • Finder view style settings [[icnv: Icon View

Nlsv: List View clmv: Column View Flwv: Cover Flow View][Via]]

icnv
Icon View
Nlsv
List View
clmv
Column View
Flwv
Cover Flow View
defaults write 'com.apple.Finder' FXPreferredViewStyle Nlsv && killall Finder

Via: Set item arrangement to none (enables folder dropdowns, ‘Name’ if you want to remove them)

defaults write com.apple.finder FXPreferredGroupBy -string "None"

Sort list view by kind in ascending order (Windows style).

/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:ExtendedListViewSettings:sortColumn kind" ~/Library/Preferences/com.apple.finder.plist
/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:ExtendedListViewSettings:columns:4:ascending true" ~/Library/Preferences/com.apple.finder.plist
/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:ListViewSettings:sortColumn kind" ~/Library/Preferences/com.apple.finder.plist
/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:ListViewSettings:columns:kind:ascending true" ~/Library/Preferences/com.apple.finder.plist

Finder: disable window animations and Get Info animations.

defaults write com.apple.finder DisableAllAnimations -bool true

Show nothing on the desktop.

defaults write com.apple.finder CreateDesktop -bool false
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool false
defaults write com.apple.finder ShowHardDrivesOnDesktop -bool false
defaults write com.apple.finder ShowMountedServersOnDesktop -bool false
defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool false
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

Disable shadow in screenshots.

defaults write com.apple.screencapture disable-shadow -bool true

Save screenshots in PNG format.

defaults write 'com.apple.screencapture' type -string png && killall SystemUIServer

Enable subpixel font rendering on non-Apple LCDs.

defaults write 'NSGlobalDomain' AppleFontSmoothing -int 2

Via

mkdir -p ~/Screen\ Shots
defaults write com.apple.screencapture location ~/Screen\ Shots
Hotcorners
  • 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

Top left screen corner → Desktop. Changed to keybinding.

defaults write com.apple.dock wvous-tl-corner -int 0
defaults write com.apple.dock wvous-tl-modifier -int 0

Top right screen corner → Mission Control. Also added a keybinding.

write defaults com.apple.dock wvous-tr-corner -int 0
defaults write com.apple.dock wvous-tr-modifier -int 0

Bottom right screen corner → App windows. Changed to keybinding.

defaults write com.apple.dock wvous-br-corner -int 0
defaults write com.apple.dock wvous-br-modifier -int 0

Bottom left screen corner → Start Screensaver Changed to keybinding.

defaults write com.apple.dock wvous-bl-corner -int 0
defaults write com.apple.dock wvous-bl-modifier -int 0
Spaces
# Don’t automatically rearrange Spaces based on most recent use
defaults write com.apple.dock mru-spaces -bool false
# Set edge-dragging delay to 0.7
defaults write com.apple.dock workspaces-edge-delay -float 1.0
Mouse

Reasonably fast.

defaults write 'NSGlobalDomain' com.apple.mouse.scaling -float 2
Terminal

Only use UTF-8 in Terminal.app.

defaults write com.apple.terminal StringEncodings -array 4
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 usageefaults write com.apple.ActivityMonitor Sort.Column -string “CPUUsage”.

defaults write com.apple.ActivityMonitor SortDirection -int 0
Complete
echo "Script complete"
echo "Log out then back in to see changes"

Administration

Install

Brew & Brew Cask

Brew is here.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

BrewCask is here.

brew tap caskroom/cask

Software with different releases

brew tap caskroom/versions
brew update
git
Need current Git for Bash prompt so install immediately instead of in dev section.
brew install git
Git Checkout Directory

Prepare the anonymous GitHub directory.

rm -rf ~/git/github-anonymous
mkdir -p ~/git/github-anonymous
cd ~/git/github-anonymous
Karabiner-Elements

Karabiner-Elements.

if [ ! -d "/Library/Application Support/VMware Tools" ]; then
  brew cask install karabiner-elements
else
  echo "karabiner-elements: Only install on hosts"
fi
rm ~/.config/karabiner || true
cd ~/src
rm -rf ./karabiner
git clone gitlab-`whoami`:grettke/karabiner-elements.git karabiner
ln -s ~/src/karabiner ~/.config/karabiner
Bash Configuration

Set up Bash. Make everything expected available.

git clone https://github.com/grettke/bash.git
cd bash
./deploy
cd
Bash Software

Via.

bash --version
brew install bash
if grep "/usr/local/bin/bash" /etc/shells > /dev/null; then
    echo "brew bash already configured in shells; doing nothing"
else
    sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'
    chsh -s /usr/local/bin/bash
fi
brew install bashdb
bashhome=$(brew --prefix bash)
bdbhome=$(brew --prefix bashdb)
rm -rf $bashhome/share/bashdb
ln -s $bdbhome/share/bashdb $bashhome/share/bashdb
unset bashhome
unset bdbhome
brew install bash-completion@2
bash --version
bashdb --version
Fonts
brew tap caskroom/fonts

Install them automatically.

brew cask install \
     font-anonymous-pro \
     font-awesome-terminal-fonts \
     font-dejavu-sans \
     font-fira-mono \
     font-fira-sans \
     font-fontawesome \
     font-hack \
     font-han-nom-a \
     font-icomoon \
     font-mfizz \
     font-montserrat \
     font-quivira \
     font-source-code-pro \
     font-symbola \
     font-unifrakturcook \
     font-unifrakturmaguntia

Utilities.

brew install fondu
Terminal
rm -rf ~/git/github-anonymous/osx-terminal.app-colors-solarized
cd ~/git/github-anonymous
git clone https://github.com/tomislav/osx-terminal.app-colors-solarized.git
Fortune
brew install fortune
GNU Core Utilities
brew install coreutils
brew install gnu-sed
Joe
brew install joe
pwgen
brew install pwgen
GNU Tar
brew install gnu-tar
Complete
echo "Script complete"

Configure

* Desktop
- System Preferences, Desktop & Screensaver, Pictures
- M101 should have been downloaded already
  - Set it on every monitor
* Terminal

- Profiles
  - Profile bar on the left
    - Import the Solarized dark and light theme
    - The the default theme to light
  - Text
    - Font: Hack: 18
    - Cursor: block
  - Window
    - Yes: Working directory or document, and path
  - Keyboard
    - Use Option as Meta key: YES
  - Advanced
    - No Audible bell
    - Yes visual bell (not just when sound is muted)
    - NO Set locale environment variables on startup
      - Set them in your =bashrc=, not here

Usability

Install

PopChar
  • Refiled on [2016-12-13 Tue 21:04]
    Correct placement
brew cask install popchar
Little Snitch
brew cask install little-snitch
Wireshark
brew cask install wireshark
Bartender
brew cask install bartender
flux
if [ ! -d "/Library/Application Support/VMware Tools" ]; then
    brew cask install flux
else
    echo "flux: Only install on hosts"
fi
xquartz

X-Server.

Install it.

brew cask install xquartz

Don’t run any applications on startup.

defaults write org.macosforge.xquartz.X11 app_to_run /usr/bin/true

The font in application is too small.

Default resolution too low? Fonts too small?

Do your fonts come out too small in programs like Gimp? This and related
problems are especially noticeable on the MacBook Pro with high-definition
screen. The problem is that older versions of X11 use a resolution setting of
75dpi (dots per inch), and even newer ones use 96dpi by default. Since X11
2.3.2rc4, you can override this default and put in a value that suits your
display. For example, for the MacBook Pro, the appropriate value is 133dpi. To
do this, enter the following in the Terminal, and restart X11:

You should replace 133 by some other number appropriate to your display if it
is not 133dpi. How do you tell what the appropriate dpi setting is? One way
(there may be simpler ones!) is to fire up Acrobat or Acrobat Reader, and look
at Preferences -> Page Display, which will tell you what the System Setting
for your resolution is in dpi.
defaults write org.macosforge.xquartz.X11 dpi -int 105

Depending on your Spaces and external monitor setup X windows can appear “off the screen” in a netherworld to which no mortal has access. Fortunately wmcontrol can access and manipulate them to return them to this mortal realm.

brew install wmctrl
Tuxera NTFS
brew cask install tuxera-ntfs
SwitchResX
brew cask install switchresx
Terminal Notifier
brew install terminal-notifier
Malwarebytes
brew cask install malwarebytes
Copy’em Paste

See manual install.

Geekbench
brew cask install geekbench
DaisyDisk
brew cask install daisydisk
Contexts
brew cask install contexts
coconutBattery
brew cask install coconutbattery
freefilesync
brew cask install freefilesync
Path Finder
brew cask install path-finder
Done
echo "The Administration is complete."
echo "Restart your Terminal to pick up the changes."

Configure

* PopChar
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:A4645B88-8730-43A6-B95D-70C9B223E709
:END:

- Register it
- Preferences
  - Activation
    - Location: Status item
      - Hotkey: Can't figure out how to set this
    - Animate window: No
    - Close window then
      - After selecting a char: No
      - When mouse leaves window: No
      - When clicking outside window: No
    - Start at Login: Yes
  - View & Insert
    - Character size: About 50%
    - Display shadows: Yes
    - Recent fonts: 10
    - Highlight recent: No
    - Insert HTML as: only numbers
* Little Snitch
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:8BA10CF6-4417-4BA7-87F7-8843BEFD3A1A
:END:

- Run the installer
- Start it
- Register it
- Configure per below
- Enable integration
- Start at boot

Granting:

- *Always grant minimum required*
- For known good TLD's, grant it forever
  - Lots of connections to *.apple.com
  - For apps that want to call homen do forever

- Gen
  - YES Show status in the menu bar
  - YES Show inactive warning
  - Operation mode: Alert
- Alert:
  - Yes: Confirm automatically
    - Allow connection attempts
  - NO: Confirm with return and escape.
    - Can use control-return and command-return intead
  - Detail level: Show port and protocol details
- Monitor:
  - On: Network monitor
  - Keyboard shortcut: Off
  - Show network activity in menu bar.
    - Show data rates numerically. Monochrome.
  - NO: Show auto when mouse enters. Hide in 2s.
- APS
  - Yes: Enable automatic profile switching
    - When joining: Ask
  - No: Save geolocation of networks.
  - Yes: Distinguish OPenVPN remote servers
- Security
  - Allow rules and profile edit.
  - Allow profile switch.
  - Allow preference editing
  - Respect privacy.
- Advanced
  - Approve rules automatically.
- Update
  - Automatically check for updates daily

* Bartender
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:86C875D1-5D80-4F83-B57A-13DDD6FF6ADB
:END:

- License it
- GENERAL
  - Launch Bartender at login: yes.
  - At bartender launch: show bartender bar: NO.
  - Bartender bar: autohides, YES.
- Appearance
  - Menu bar icon: Star
  - Show when bartender bar is open: YES.
* flux
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:259043E9-87B2-4C1F-9C4B-719BDD01B79F
:END:

- NA

- Enable at startup

* Tuxera NTFS
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:F19D1770-5EA4-43E9-B0B0-1183A6E0ABE2
:END:

- Install it
  - brew only downloads the installer
- Open the Preferences Panel
- License it

* SwitchResX
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:5940C5DD-06F1-4A0E-B387-5F1FD329C651
:END:

- Open the Preferences Panel- License it
- General Settings
  - Key shortcut
    - Open: Command-F10
  - Startup Settings
    - [X] Launch SwitchResX Daemon automatically after login

* XQuartz
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:946F1EBD-8DA9-411E-AABC-F32FD038BE7D
:END:

- Preferences
  - Input
    - Emulate three button mouse: NO
      - Already works don't need to emulate it
    - Follow system keyboard layout: NO
      - Was the default
    - Enable key equivelants under X11: NO
      - Must be disabled in order for Control-Option swap in XModMap to work
    - Option keys send Alt_L and Alt_R: NO
      - By using XModMap you can still use Option for special characters
  - Output
    - Full screen mode (using command-option-a): NO
      - Possibly useful for possible lone-window recovery
      - Not using it because it seem to only allow working in full screen mode
        and toggle just switches you back to the Mac desktop.
  - Pasteboard
    - Enable syncing: YES
      - Was the default
    - Update Pasteboard when CLIPBOARD changes: NO
      - So copy paste works correctly under X apps. Can't paste from X into
        macOS now, but can still copy from macOS and paste into X.
    - Update CLIPBOARD when Pasteboard changes: YES
      - So you can copy from macOS to X (I think)
    - Update PRIMARY (middle-click) when Pasteboard changes: YES
      - Was the default
    - Update Pasteboard immediately when new text is selected: NO
      - Was the default
  - Windows
    - Click-through Inactive Windows: NO
      - Was the default
    - Focus Follows Mouse: NO
      - I don't like it
    - Focus On New Windows: YES
      - So you know a new window started
  - Security
    - Authenticate connections: YES
      - If you don't then you get a .Xauthority error when you 'ssh -y'
    - Allow connections from network clients: NO
      - Was the default
* Inkscape
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:F7270C1E-AE77-4ABD-8C07-CD7B0709D5C3
:END:

- Everything is store in Git
- Notables follow
- Preferences
  - Input/Output
    - Color management ([[https://www.colourphil.co.uk/rendering_intents.shtml][reference]])
      - Dispaly adjustment
        - Display profile: Adobe RGB (1998)
        - Retrieve profile from display: NO
        - Display rendering intent: Saturation
      - Proofing
        - Simulate output on the screen: YES
        - Mark out of gamut colors: YES
        - Out of gamut warning color: Neon Green
        - Device profile: GRACoL2006)Coated1v2.icc
        - Device rendering intent: Relative Colormetric
        - Black point compensation: YES

* Malwarebytes
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:C40DBC76-A87D-4094-BAE1-0F4B0787ABED
:END:
- License pro version
- Enable Real-Time Protection
- Preferences
  - Scheduled Scans
    - Daily

* Geekbench
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:C4918DCD-AF6D-44B9-9ED5-9E96DF88B26E
:END:
- Run it.
- Accept license.
- Enter license.

* DaisyDisk
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:44034479-AFC0-4B8B-ACB9-70BAB80357F1
:END:
- License it.

* Contexts
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:3B0E7BF9-13FD-44A6-8360-80629C400E0E
:END:
- Welcome
  - Yes: Launch Context at login
- Appearance
  - Theme: Vibrant Dark
    - Same as Finder
  - Yes: Increase contrast
  - Text size: Large
- Features
  - General
    - Keyboard layout: Use current
    - Yes: When switching to an app w/out windows then open the Dock
    - Yes: When using multiple displays, use switching workaround
      Yes: Show app icon badges
  - Rules
    - Group windows: Manually
    - Yes: Show running apps which do not have any windows open
  - Sidebar
    - Show sidebar on: No display
      (This disables the sidebar so nothing to configure)
  - Panel
    - Show panel on: All displays
    - Panel width: %50
    - No: Moving the cursor over Panel changes the selected item
    - No: Scrolling when Panel is visible changes the selected item
  - Search
    - Search with: Control-Tab
    - Fast search with: Nothing (disable it)
    - Search shortcuts: 3
    - Yes: Allow one mismatched character
  - Command-Tab
    - Disable all of them
    - General settings
      - Yes: Typing characters starts Fast Search when Panel is visible
  - Number Switcher
    - Change nothing
  - Gestures
    - Change nothing
- License
- About

* Path Finder
:PROPERTIES:
:ID:       org_gcr_2019-08-11T16-10-48-05-00_cosmicality:D995CD76-01CD-4555-9CFA-0E1AF0B2D86E
:END:

todo

Utility

Install

Some packages appear here in Utility because they are required to use Utility features.
Java
brew cask install java
Maven
brew install maven
languagetool
brew install languagetool
aspell
brew install aspell -all
pandoc
brew install pandoc
Markdown
brew install markdown
Marked 2
brew cask install marked
Graphics
ImageMagic
brew install imagemagick --with-fftw --with-fontconfig --with-webp --with-x11
Gifsicle
brew install gifsicle
GIMP
brew cask install gimp
icoutils
brew install icoutils
povray
brew install povray --with-openexr
ditaa
brew install ditaa
plantuml
brew install plantuml
graphviz
brew install graphviz
figlet
brew install figlet
toilet
brew install toilet
exiftool
brew install exiftool
pdf-images
brew cask install pdf-images
xmllint
brew install libxml2
dos2unix
brew install dos2unix

Sometimes installation fails with the error.

gcr@vela:.../man/de/man1⮞ brew link dos2unix
Linking /usr/local/Cellar/dos2unix/7.3.2...
Error: Could not symlink share/man/de/man1/dos2unix.1
/usr/local/share/man/de/man1 is not writable.

The solution is.

chown -R `whoami` /usr/local/share/man/de/man1
ccrypt
brew install ccrypt
tree
brew install tree
archey
brew install archey
LAME
brew install lame
FFmpeg
brew install ffmpeg
qpdf
brew install qpdf
XnView MP
brew cask install xnviewmp
rename
brew install rename
DjVu
brew cask install djview
qpdf
brew install qpdf
uni2ascii
brew install uni2ascii
Done
cry "Script is done"

Configure

* Marked 2

- License it
- Chose "Code" profile which chooses
  - Default style: Github
  - Processor: Discount (GFM)
  - Syntax Highlight Style: Github
  - Enabled
    - Syntax Highlighting
    - GitHub Checkboxes
    - MathJaxq
- Preferences
  - General
    - NO Show Style Picker
    - NO Show word count
  - Preview
    - YES Enable Mini Map navigation
    - YES Show scroll progress indicator
    - YES Automatically validate URLs on update
  - Style
    - Default style: GitHub
  - Proofing
    - YES Highlight Markdown syntax errors

Internet

Install

Skype
Only install it on hosts.
if [ ! -d "/Library/Application Support/VMware Tools" ]; then
    brew cask install skype
else
    echo "skype: Only install on hosts"
fi
Textual
if [ ! -d "/Library/Application Support/VMware Tools" ]; then
  brew cask install textual
else
  echo "textual: Only install on hosts"
fi
Pulse Messenger
brew cask install pulse-sms
WhatsApp
if [ ! -d "/Library/Application Support/VMware Tools" ]; then
    brew cask install whatsapp
else
    echo "whatsapp: Only install on hosts"
fi
Slack
if [ ! -d "/Library/Application Support/VMware Tools" ]; then
  brew cask install slack
else
  echo "slack: Only install on hosts"
fi
Dropbox
if [ ! -d "/Library/Application Support/VMware Tools" ]; then
    brew cask install dropbox
else
    echo "dropbox: Only install on hosts"
fi
Chrome

No work to do: it is installed manually.

Lynx
brew install lynx
Firefox
brew cask install firefox

Sometimes this install fails. I checked the file download. The file exists. The name hasn’t changed. Did a manual install instead.

Brave
Brew recipe doesn’t work so manually install. a
Filezilla
brew cask install filezilla
Cyberduck
brew cask install cyberduck
Mountain Duck
brew cask install mountain-duck
Kindle
brew cask install kindle
wget
brew install wget
Screenflow
brew cask install screenflow
inkscape

Pull application configuration and data.

cd ~/git/gitlab
rm -rf ./inkscape
git clone gitlab-`whoami`:grettke/inkscape.git

(Re)Install and (re)prepare directories without running it (before its data directory is created)

brew cask remove inkscape
rm ~/.config/inkscape || true
ln -s ~/git/gitlab/inkscape ~/.config/inkscape
brew cask install inkscape
Color Sync
cd ~/git/gitlab
rm -rf ./colorsyncprofiles
git clone gitlab-`whoami`:grettke/colorsyncprofiles.git
rm ~/Library/ColorSync/Profiles || true
ln -s ~/git/gitlab/colorsyncprofiles ~/Library/ColorSync/Profiles
scribus
brew cask install scribus
librsvg
For rsvg-convert.
brew install librsvg
libxml2
b
brew install libxml2
jpegoptim
brew install jpegoptim
optipng
brew install optipng
Deluge
brew cask install deluge
Speedtest.net CLI
brew install speedtest_cli
GMVault
brew cask install gmvault
SoX
brew install sox --with-lame
audio
brew install mp3gain
brew install normalize
brew install mp3val
brew install id3lib
brew cask install mp3gain-express
iSyncr Mac
brew cask install isyncr
rsync
brew install rsync
JabRef
brew cask install jabref
LibreOffice

Use the “power user” cutting edge release.

brew cask install libreoffice

Configure

* Skype
:PROPERTIES:
:ID:       org_gcr_2019-01-15T21-26-25-06-00_cosmicality:CB7EC827-3D85-4B6F-8080-5DA25E07A279
:END:

*Only install on hosts*

- Log in and disable notifications for log in and out

* Dropbox
:PROPERTIES:
:ID:       org_gcr_2019-01-15T21-26-25-06-00_cosmicality:E5E7D91B-E5AC-4678-94BB-B3AE7549B1A9
:END:

*Only install on hosts*

- Log in
- Sync nothing right away
- Choose what is critical here
  - Screenshots
  - Everything
- Pause it and copy everything over on a wired network

* Chrome
:PROPERTIES:
:ID:       org_gcr_2019-01-15T21-26-25-06-00_cosmicality:52BA5FA1-20C8-49BE-9014-FC57715D337B
:END:

- Sign into Chrome
- Let the settings sync
- Log into gmail

* Firefox
:PROPERTIES:
:ID:       org_gcr_2019-01-15T21-26-25-06-00_cosmicality:B7BC0115-7261-4ADE-A40A-74BB5DE8F678
:END:

- Install the standard plugins
  - NoScript
  - HTTPS Everywhere

* FileZilla
:PROPERTIES:
:ID:       org_gcr_2019-01-15T21-26-25-06-00_cosmicality:B6EA5AD1-0100-4B20-A89F-819913432668
:END:

- Set up later

* Cyberduck
:PROPERTIES:
:ID:       org_gcr_2019-01-15T21-26-25-06-00_cosmicality:CE69CAF2-DD19-48B1-9131-7FDDEEFFC4B1
:END:

- General
  - Save workspace: NO
  - Open a new browser window on startup: YES
  - Use Keychain: YES
  - Confirm disconnect: YES
  - Default protocol: SFTP
- Browser
  - General
    - Show hidden files: YES
    - Double click opens file in an external editor: NO
      Return key selects folder or file to rename: NO
    - Info window always shows current selection: NO
    - Use spring-loaded folders when dragging files: NO
  - Appearance
    - Use alternating row color: YES
    - Horizontal lines: YES
    - Vertinal lines: NO
  - Bookmarks
    - Use Large Icons
- Transfers
  - Left alone
- Editor
  - Left alone
- FTP
  - Default app: Cyberduck
- SFTP
  - Default app: Cyberduck
- S3
  - Left alone
- Bandwidth
  - Left alone
- Connection
  - Left alone
- Cryptomator
  - Left alone
- Update
  - Left alone
- Language
  - Left alone

* Kindle
:PROPERTIES:
:ID:       org_gcr_2019-01-15T21-26-25-06-00_cosmicality:139E332F-6A6B-4E8D-BF88-2353FD1D9FDC
:END:

- Login

* Screenflow
:PROPERTIES:
:ID:       org_gcr_2019-01-15T21-26-25-06-00_cosmicality:3C4C2B7D-E41F-4BCB-9482-D8BC0C5E81D5
:END:

- Register

* Deluge
:PROPERTIES:
:ID:       org_gcr_2019-01-15T21-26-25-06-00_cosmicality:25768AC4-B7CB-41B5-8DCC-851607B8D218
:END:
- Start on login

* iSyncr Mac
:PROPERTIES:
:ID:       org_gcr_2019-01-15T21-26-25-06-00_cosmicality:37350F41-BD8F-4299-A051-1138FCCCDCD4
:END:
- Do not start at login

* Textual
:PROPERTIES:
:ID:       org_gcr_2019-01-15T21-26-25-06-00_cosmicality:ABAE21B8-2647-41B4-A5A1-25FFCA040268
:END:

*Textual Preferences*

- General
  - Request confirmation before quitting: YES
  - Updates: Just notify if there are any
- Highlights
  - Match: Whole Words
  - Log highlights to a separate window: YES
  - Highlight current nickname: YES
  - Highlight Words
    - NA
  - Exclude Words
    - NA
- Notifications
  - Alerts
    - NA
  - Speech
    - Only speak Channel Messages for the selected channel: YES
    - Include when speaking a Channel Message:
      - Nickname: YES
  - Advanced
    - Show number of unread private messages on dock icon: NO
    - Show number of unread channel messages on doc icon: NO
    - Show notifications when Textual is focused: YES
- Behavior
  - Open browser links in the background: YES
  - Automatically rejoin a channel when kicked: NO
  - Automatically join a channel when invited: NO
  - Toggle away status when your display goes to sleep: NO
  - Restore scrollback from previous sessions: YES
  - Restore the state of queries from previous session: NO
- Controls
  - Keyboard & Mouse
    - Channel navigation is limited to the selected server: YES
    - Double clicking a user: Open Query
    - Command + W key action: Close Main Windo
    - Connect to server on double click: NO
    - Disconnect from server on double click: NO
    - Join channel on double click: NO
    - Leave channel on double click: NO
    - Automatically copy selected text: YES
  - Main Text Field
  - Hide the buttons left of the input text field: NO
  - Check spelling while typing: NO
  - Check grammar while typing: NO
  - Correct spelling automatically: NO
  - Save input history for each channel rather than globally: NO
  - Command-Return sends message as an action: YES
  - Control+Enter sends message instead of inserting a newline: YES
  - Text size in the input field: Normal
  - Tab key action: Completes everything
  - Auto complete suffix: NA
- Interface
  - NA
- Style.
  - General.
    - Style: Default
    - Font: DJSM 18
  - Everything else was NA
- Addons
  - NA
- Advanced.
  - Inline Media
    - General: Show stuff: NO
    - Images & Video: NA
    - Limitations: Don't inline anything
  - Default Identity.
    - Nickname: grettke
    - Away Nickname: grettke💤
    - Username: grettke
    - Real Name: Grant Rettke
  - Off-the-Record Messaging
    - Enable: YES
    - Do not send unencrypted messages: YES
  - Everything else was NA

*Server properties*

- Server Properties
  - Address Book: NA
  - Channel List
    - #org-mode
    - #emacs
    - #scheme
    - #bash
  - Connect Commands: NA
  - Encoding: NA
  - General
    - Name: freenode
    - Server address: freenode
    - Connect Securely: YES
    - Connect when Textual opens: YES
    - Perform reconnect on disconnect: YES
    - Perform reconnent on waking from sleep: YES
  - Identity
    - Nickname, Username, and Real Name are copied over from the main preferences
    - Password: yes enter it
    - Wait for identification before joining channels: YES
    - Warn if channels can't be joined: YES
  - Highlights: NA
  - Messages
    - Part & Quit Message
      - "Ever has it been that love knows not its own depth until the hour of separation."
    - Computer Sleep Quit Message
      - "Sleep, those little slices of death — how I loathe them."
- Vendor Specific: NA
- Advanced: NA

#+END_SRC

DevOps

Install

Carbon Copy Cloner

Only install it on hosts.

#+BEGIN_SRC sh
if [ ! -d "/Library/Application Support/VMware Tools" ]; then
    brew cask install carbon-copy-cloner
else
    echo "carbon-copy-cloner: Only install on hosts"
fi
VMWare Fusion

Only install it on hosts.

if [ ! -d "/Library/Application Support/VMware Tools" ]; then
    brew cask install vmware-fusion
else
    echo "vmware-fusion: Only install on hosts"
fi
iPartition
brew cask install ipartition

Configure

* Carbon Copy Cloner

*Only install on hosts*

- Steps
  - Install version 4
  - License it
  - Preferences \rarr Notifications \rarr Show CCC icon in the menu bar
- Application Configuration
  - Mirror the storage partition
    - Identify and drag \rarr storage partition
    - Identify and drag \rarr destination partition
    - Schedule the task
      - Daily
      - 5:30pm
      - Defer to other writers
      - If the external is not mounted then run it when it returns
    - Before this task runs
      - Pull Git repos
  - Mirror the boot partition
    - Identify and drag \rarr boot partition
    - Identify and drag \rarr destination partition
    - Save it
    - Modify the storage backup task to run /this/ task upon completion

* VMWare

*Only install on hosts*

- On a host: License it

* iPartition

- License it
  - It uses the PNG license file

Development

Install

Deltawalker
brew cask install deltawalker
Python

Install Python 2 and virtualenv.

brew install python@2
globalpip install virtualenv
globalpip install --upgrade pip setuptools virtualenv
Proselint

Install proselint.

cd ~/
rm -rf ~/proselint
mkdir -p ~/proselint
cd ~/proselint
vens
veon
pip2.7 install proselint
veof
cd ~/
YAMLLint
cd ~/
rm -rf ~/yamllint
mkdir -p ~/yamllint
cd ~/yamllint
vens
veon
pip2.7 install yamllint
veof
cd ~/
Ruby

Manage multiple versions.

brew install ruby
brew install rbenv
Racket
brew cask install racket
forth
brew install gforth
node & npm

Brew installs =NPM by default with Node.

brew install node
jshint
npm install -g jshint
GNU APL
brew install gnu-apl
Emacs

Install the build from EmacsForMacOSX.

Update the path and the aliases for it.

Setting up Emacs here went though revisions using Brew for the vanilla version, railwaycat port, emacs-plus, and then quitting it altogether to manually install the EmacsForMacOSX build. After Brew and Cask merged I switched to installing EmacsForMacOSX from Brew.

brew cask install emacs
Autoconf
brew install autoconf
Automake
brew install automake
gnutls
brew install gnutls
go
brew install go
brew install gox
Sourcetree
brew cask install sourcetree
JetBrains Toolbox*
brew cask install jetbrains-toolbox
R Studio
brew cask install rstudio
Dash
brew cask install dash
The Silver Searcher
brew install the_silver_searcher
ripgrep
brew install ripgrep
shellcheck
brew install shellcheck
make
brew install make
vcard
cd ~/
rm -rf ~/vcard
mkdir -p ~/vcard
cd ~/vcard
vens
veon
pip2.7 install vcard
veof
cd ~/
nedit
brew install nedit
Scrivener
brew cask install scrivener

Configure

* DeltaWalker

- License it.
- Set preferences for new comparisons (be sure of this, easy not to)
  - General
    - Date formatting: English (United States)
    - Max available memory: 4096
    - [X] Automatically find new updates and notify me
    - Colors and Fonts
      - Basic: DJSM 10
        - Text Editor Block Selection Font
        - Text Font
      - Differences
        - Colors:
          - Addition: Green
          - Change: Turqoise
          - Conflict: Red
          - Deletion: Purple
  - All Comparisons
    - [ ] Use text differencing optimized for speed
    - [X] Use text differencing optimized for accuracy
    - [X] Follow symbolic links
    - [ ] Ignore differences in whitespace
      - Want to know about tabs versus spaces
    - [ ] Ignore differences in character case
      - Interesting but default do care
    - [ ] Ignore differences in line endings (CF and LF)
      - Most systems don't care, but I do and should fix it
  - Text comparison
    - Editors
      - YES Show whitespace characters
      - Apperance color options
        - Current line highlight: Turquoise
          - So you can see the outline of the change while the current line
            indication is still obvious
- Set up the "Compare with DeltaWalker.workflow"
  - Go to its [Cask location]/Extras
  - Copy it to ~/Library/Services
  - Opening it in Automator by double clicking it in Finder
  - Immediately saving it and closing it
- Save the new configuration and guit DW, and then start it again and verify
  that the settings are saved. Once they were not.
- Sample files for diffing used to be included
  - Not anymore so nothing to test

* Sourcetree

- Skip Setup, Login
- Preferences
  - General: Disallow SourceTree from modifying yoru global Git config file
  - Diff
    - Set font to DJSM 9

* JetBrains Toolbox*
** Toolbox Configuration
- Update Toolbox App automatically: YES
  - It is the app, not the installed products
- Keep only latest version: NO
  - Support multiple versions
- Generate shell scripts: YES
  - Into ~/.bin
- Run at login: YES
- Send usage statistics: NO
** Product Installation
- For
  - IntelliJ
  - PyCharm
  - WebStorm
- Do
  - Install the Current Stable version
  - Open it's Toolbox Settings and Do
    - Stay on the stable version you chose: YES
    - Install updates automatically: NO
    - Update to Release (instead of EAP): SELECTED
** Standard Product Configuration
- Complete Installation: Do not import settings
- EULA: Yes
- Data Sharing: No
- Customize: Skip Remaining and Set Defaults
- Preferences
  - Appearance
  - Editor
    - General
      - Apperance
        - No blinking
        - Use block caret
        - Now show hard wrap
        - No line numbers
    - Font
      - Font: Hack
        - Show only monospaced fonts? No
      - Size: 14
      - Fallback: Symbola
    - Color Scheme
      - Choose Darcula
      - Then duplicate it by appending ' - Grant'
    - Code Style
      - Scheme: Copy the Default IDE style appending ' - Grant'
      - Indent Detection? No Nothing.
      - Hard wrap at: 80
        - Wrap on typing: Yes
* The Silver Searcher

- NA

* RStudio

- The R setup is still manual so only do this setup /after/ you install R.
- RStudio
  - Preferences
    - General
      - Default working directory (when not in a project): ~
      - Restore most recent project: Yes
      - Restore previously open source documents: No
      - Restore .RData: No
      - Save worksapce to .RData: No
    - Appearance
      - Editor font: Hack
      - Font size: 12
      - Editor theme: Solarized Light
* Rbenv

Steps

- Note: rbenv is already installed from brew
- Find out the current version of Ruby you want to use
  - Find out what is the current stable version [[https://www.ruby-lang.org/en/downloads/][here]]
    - 2.5.1 on 2018-09-14
- Start a new Terminal
- Start configuring
- See what is already available from RBenv
  - rbenv versions
- Install it the version you chose above
  - rbenv install N.N.N.
  - It builds it from scratch
- Verify you are using it
  - rbenv version
  - Should see N.N.N.
- Set global version to N.N.N.
  - rbenv global N.N.N.

Manual

Logitech C920

Camera Settings app.

Copy’em Paste

  • Shortcuts During Setup
    • C-M-s-c: Copy to clipboard
    • C-M-s-v: Paste from clipbard
    • C-M-s-S-v: Paste as plain text
  • Preferences
    • Install helper
    • Launch at login
    • Menubar icon: Not color
    • Window Appearance: Midnight
    • Window Position: Open near mouse pointer

WNW

Checkout a copy of the server from the server.

CRON

Install the crontab.

Font By Language

APL: SimPL Font
Devanagari
Egyptian Hieroglyphs: NewGardiner TrueType Font
Last Resort

iTunes

  • References
  • General
    • Library name has no spaces
    • No star ratings
    • Large list size
    • No notifications
    • CD Import settings
      • AAC, 160kbps, Use VBR
      • Use error correction
  • Playback
    • na
  • Sharing
    • everything
  • Downloads
    • Only check download full-size and high-quality
  • Store
    • Always require a password, automatically download artwork
  • Restrictions
    • None and don’t show content ratings
  • Devices
    • na
  • Advanced
    • Media folder location on Dropbox
    • Keep it organized
    • Copy files into it when adding
    • Share iTunes library XML
    • Keep miniplayer on top

TextEdit

  • Preferences
    • New Document
      • Default to: Rich Text
      • Font Plain/Rich: 18—DJSM, DJ Serif
    • Open and Save
      • Opening a HTML or RTF, don’t show the code, this isn’t a code editor
      • DO add a text extension to plain text files

PDFPenPro

The R Project

  • Context
    • brew install r has runtime issues on my machine
    • brew cask install r has a bad download link
    • Therefore install the R manually from here
  • Downloaded the pkg
  • Ran the package
  • It finishes
  • Set up the development environment
    • By now
      • HELP is installed
      • R is installed
    • Review R.org
    • Tangle R.org
    • Link the configuration files: sh .Rsetup.sh
    • Open up R in a terminal because it will be prompting you for things
    • Install assertthat first because everything depends on it
    • Install the local libraries: source(“.Rinstall.r”)

Microsoft Office

MS Office This is in BrewCask, but the download is waste of time. I have it locally. Use the version I bought; not the latest which is in brew.

I keep going back and forth on this one. Is it worth saving 15 minutes having to install it myself?

* MS Office For Mac
- Start it.
- It asks for your name.
- It asks about updates and stuff.
  - Get them all.
  - Take 3-5 iterations
- When activation occurs, the app always locks up then I quit it and it
  restarts after sending an error report. It works after that.
- When it checks for updates, tell it to check daily.
- Configure
  - Save
    - Save AutoRecover information after this number of minutes: 1

Visible Body

* Visible Body

- Human Anatomy Atlas
- Muscle Premium
- Skeleton Premium
- License key
  - Copy directory from the email
  - Tried printing to pdf or saving to a file and copying from that and neither
    work
  - Need to copy from their into an Org document and try that

Entropy

* Entropy

- [[http://www.eigenlogik.com/entropy/][Download]]
- Install
- License
- Open all zip files with Entropy
  - Find a zip file, Get Info, Open With, Entropy, Change All

Guitar Pro

* Guitar Pro

- [[http://www.guitar-pro.com/en/index.php][Here]]. Sign into MySongBook.

Cepestral Callie & David

* Cepestral Callie & David

[[http://www.cepstral.com/][Here]].

You might need to log out and in again to make the "Cepstral Voices" appear in
System Preferences.

License them. Test them.

Set Dictation & Text to Speech to: Callie

CereProc

  • Install Jess.
    • Add to displayed voices from English (United Kingdom)
  • Install William
    • Add to displayed voices from English (United Kingdom)
  • Install Hannah
  • Install Adam

Ink2Go

* Ink2Go

- [[http://ink2go.org/][Here]]
- License it
- Preferences
  - Keyboard Shortcuts
    - Command-F12: Activate
    - Command-F11: Activate+Pen
  - Toolbar
    - Everything enabled but
      - Crop / Pause
      - Record / Stop
      - Webcam

Dyalog APL

* Dyalog APL

- NA

PL2303 Driver

Install the PL2303 Driver.

Gramps

Use The Persisted Data
  • Pull application data
    git clone gitlab-gcr:grettke/gramps.git ~/git/gitlab/gramps
        
  • (Re)Install and (re)prepare directories without running it (before its data directory is created)
    brew cask remove gramps
    rm ~/Library/Application\ Support/gramps || true
    ln -s ~/git/gitlab/gramps ~/Library/Application\ Support/gramps
    brew cask install gramps
        
  • Start it and you should see the database and preferences
Create The Persisted Data
  • Create a new Git project (for this example using the names in the “Use Persisted Data”)
  • Follow the same setup directions as in “Use The Persisted Data”
  • This leaves you with empty folders: Gramps hasn’t been initialized yet. Openening it initilizes it.
  • Open Gramps and then immediately close it without having changed anything anywhere
  • Add this to Git: it is the starting point of your project.

Phiewer

Obvious settings.

App Store Installs

Sweet Home 3D
Pages
* Pages
- NA
Debtinator
* Debtinator

- NA
Microsoft Remote Desktop
* Microsoft Remote Desktop

- Don't open the session full-screen.
Text2Speech PRO
* Text2Speech PRO

- General
  - Preferences
    - Voice :: Cepstral Callie
    - Speaking Rate :: 175 w/m
    - App check text encoding failover :: UTF-8
    - [ ] Send file to iTunes
PixelMator
* PixelMator

- NA
Mousepose
* Mousepose

- Grant "accessibility" permission
- Settings
  - Mousepose
    - Toggle Hotkey: Control-Escape
    - Advanced
      - Increase hotkey: C-2
      - Decrease hotkey: C-1
      - Window focus toggle: C-3
  - Mouse Clicks
  - Keystrokes
    - Default is standalone
    - Hotkey: C-4
  - Miscellaneous
    - When logging in: Start Mousepose
    - Show icon in: Menu bar
- Bartend it
Webcam Settings By Mactaris
* Webcam Settings By Mactaris

- Enable at startup
Key Codes
* Key Codes

- NA
Blackmagic Disk Speed Test
* Blackmagic Disk Speed Test
- Always use the smallest file size
HazeOver
* HazeOver
- General
  - Percent haze: 20%
  - Enable Hazeover: YES
  - Start at login: YES
  - Show status on menubar: YES
- Advanced
  - Shortcut: Option-Command-[
  - Background color: Black
    Highlight: One window only
  - Animation: 0.25s
- Displays
  - Choose:
    - YES: Dim all windows on displays without keyboard focus
    - NO: Highlight windows on displays without keyboard focus
  - Show when secondary display is connected? YES
  - Allow accessibility features? YES
* BetterSnapTool
:PROPERTIES:
:ID:       org_gcr_2018-09-29T16-11-05-05-00_cosmicality:DC3C70B2-06B8-416C-8B78-EB06CEAD1CA9
:END:
- General Settings
  - Start BetterSnapTool every time your Mac starts up: YES
- Customization
  - Advanced settings
    - Increase snapping recognition areas by: 33 px (YES)
      - Only increase if more than one monitor is connected: YES
- Keyboard Shortcuts: *NA*
- Snap Areas
  - If checked BetterSnapTool will use a bit more memory, but Snap Areas show up faster
- Extras
  - Double-click a windows' title-bar: Left two thirds
    - Restore old size & position after double-clicking again: YES

TeX

Install
MacTeX

Manually install MacTex-2018.

# This script is intentionally left blank.
Configure
- I value seeing these commands succeed so pasting them is OK
- MacTeX installation is typically so painful that I want this part to be easy

Set up my TeX stuff for KOMA-script. Backup the default configuration first.

#+begin_src sh
ls /usr/local/texlive/2018
sudo cp /usr/local/texlive/2018/texmf.cnf /usr/local/texlive/2018/texmf.cnf-`date '+%Y_%m_%d__%H_%M_%S'`
ls /usr/local/texlive/2018
sudo tlmgr conf texmf TEXMFHOME ~/git/gitlab/texmf/
#+end_src

Check that the path is really updated.

#+begin_src sh
kpsewhich KomaDefault.lco
#+end_src

The documents say to maybe do the following. I did it.

#+begin_src sh
sudo mktexlsr
#+end_src

Audacity

  • Install and update like this
  • Also install LAME for MP3 export

Plantronics Hub

After you configure your device uninstall this and reboot: it’s update services uses 1.5GB of memory.

  • Install the Plantronics Hub software
  • VOYAGER LEGEND
    • Settings
      • Special Mode Settings
        • General
          • Answer/Ignore: ON
          • Caller ID: ON
          • Mute Off Alert: Tone & Voice
          • Mute Reminder:
            • Audible Reminder
            • Every 5 min
        • Language
          • English-UK
        • Sensors & Presence
          • Wearing Sensor (MASTER): ON
        • Wireless
          • HD Voice: ON
          • Streaming Audio: ON
      • General
        • Plantronics Product Improvement Program: Off
        • Software Log Level: Low
      • Ringtones & Volume
        • “Voyager Legend: There are no available device-specific settings in this category.”
        • Software Settings
          • Ring Location: Primary Device Only
      • Softphones & Media Players
        • “Voyager Legend: There are no available device-specific settings in this category.”
        • Software Settings
          • Target Softphone: None
            • Therefore no further configuration is required
      • Sensors & Presence
        • Software Settings
          • Aware for Microsoft: Off
      • Wireless
        • See Special Mode Settings

Freeplane

https://www.freeplane.org/wiki/index.php/Home

SSH and Git

Generic

OSX creates this directory everywhere and it must be ignored. This code block is surprising. It lives here because it should only hapen after installing Git.

echo .DS_Store > ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
  • Do you really want to create a new SSH and Git configuration?
  • Did you already ran this script and you are copying over those files onto this new box?
  • Check if the user wants to do that work again and make it easy to exit the script
echo ""
echo "With your help I configure SSH for you"
echo ""
echo "First I =rm -rf ~/.ssh= *destroying* your entire SSH configuration"
echo "Second I create a public and private keypair"
echo "Third I create a config file for Github and Bitbuccket"
echo "Fourth you upload your public SSH key both to Github and Bitbucket"
echo "Fifth I test each connection out and let you know if it worked"
echo ""
echo "Then again maybe you *don't want me to do any of that*"
echo "Maybe you already ran this script want to *keep* it"
echo "Maybe you brought an existing config and key pair files with you"
echo "Doesn't make any difference... its completely hypothetical"
echo ""
echo "Time to choose:"

PS3="Your choice (press the corresonding number): "

bail="*Stop*. *Don’t*. *Get me outta here*. *Exit this script*."
stay="Yup. Gotcha. Do it. Run this script."
options=("$bail" "$stay")

select opt in "${options[@]}"
do
    case $opt in
        "$bail")
            echo "*Sayonara*"
            sleep 1
            exit
            ;;
        "$stay")
            echo "Gotcha. Running it."
            sleep 1
            break
            ;;
        *)
            echo "You're not getting outta here until you choose."
            ;;
    esac
done

Generate the key. There is no passphrase.

rm -rf ~/.ssh
mkdir ~/.ssh
cd ~/.ssh
echo "What email address would you like to use for this SSH key?"
read SSHEMAIL
echo "What logical name, organization, or group name? For example: gitlab"
read SSHORG
SSHID=`whoami`-`hostname`
SSHUID=$SSHID-$SSHORG-`date '+%Y_%m_%d_%H_%M_%S'`
SSHFILE=$SSHUID-rsa
ssh-keygen -N '' -t rsa -C $SSHEMAIL -f $SSHFILE

Set permissions so that ssh will run.

chmod 600 ~/.ssh/$SSHFILE
chmod 600 ~/.ssh/$SSHFILE.pub
ssh-add -K ~/.ssh/$SSHFILE

Add they key to Bitbucket and GitHub and GitLab.

echo "Name your Git site key: $SSHFILE"
cat ~/.ssh/$SSHFILE.pub | pbcopy
read -p
"The new key is in your clipboard. Go and add this key to BitBucket, GitHub and GitLab. When you are finished, hit [enter] to continue."

Set up ~/.ssh/config.

cat > ~/.ssh/config << EOF
Host github-`whoami`
     HostName github.com
     User git
     PreferredAuthentications publickey
     IdentityFile ~/.ssh/$SSHFILE.pub
Host bitbucket-`whoami`
     HostName bitbucket.org
     User git
     PreferredAuthentications publickey
     IdentityFile ~/.ssh/$SSHFILE.pub
Host gitlab-`whoami`
     HostName gitlab.com
     User git
     PreferredAuthentications publickey
     IdentityFile ~/.ssh/$SSHFILE.pub
EOF

Test each one out.

Separate them to allow for easier copy-pasting.

ssh -T bitbucket-`whoami`
read -p "Did it work? If not, fix it. [hit enter to continue]"
ssh -T gitlab-`whoami`
read -p "Did it work? If not, fix it. [hit enter to continue]"
ssh -T github-`whoami`
read -p "Did it work? If not, fix it. [hit enter to continue]"

Personal

Configure you .ssh directory for Git. You might have extracted a zip here and need to make it a Git working copy. Or maybe you set it up somewhere somehow else as a git checkout. Handle either situation safely.

function 22C8initsshdir {
  cd ~/
  local timestamp=`date +%Y%m%d%H%M%S`
  local newdotssh="newssh$timestamp"
  local olddotssh="oldssh$timestamp"
  printf "Cloning .ssh directory from Git to %s\n" "$newdotssh"
  git clone gitlab-gcr:grettke/dotssh.git "$newdotssh"
  printf "Renaming local .ssh directory to %s\n" "$olddotssh"
  mv .ssh "$olddotssh"
  printf "Renaming new working copy %s to .ssh\n" "$newdotssh"
  mv "$newdotssh" .ssh
  printf "Leaving the backup in case there were any problems.\n"
}
22C8initsshdir

Set up my preferences.

git config --global user.name "Grant Rettke"
git config --global user.email grant@wisdomandwonder.com
git config --global color.ui true
git config --global core.autocrlf input
git config --global alias.st status
git config --global alias.ci commit
git config --global svn.rmdir true
git config --global alias.dt difftool
git config --global alias.mt mergetool
git config --global diff.tool deltawalker
git config --global difftool.deltawalker.cmd '/Applications/DeltaWalker.app/Contents/Resources/git-diff $LOCAL $REMOTE'
git config --global difftool.prompt false
git config --global merge.tool deltawalker
git config --global mergetool.deltawalker.cmd '/Applications/DeltaWalker.app/Contents/Resources/git-merge $LOCAL $REMOTE $BASE $MERGED'
git config --global mergetool.keepBackup false

Check out projects to get basic stuff working.

rm -rf ~/git/github
rm -rf ~/git/gitlab

mkdir -p ~/git/github
mkdir -p ~/git/gitlab

cd ~/git/gitlab
git clone gitlab-`whoami`:grettke/resume.git
git clone gitlab-`whoami`:grettke/notes.git
git clone gitlab-`whoami`:grettke/signature.git
git clone gitlab-`whoami`:grettke/grant-personal.git
git clone gitlab-`whoami`:grettke/correspondence.git
git clone gitlab-`whoami`:grettke/wnw.git
git clone gitlab-`whoami`:grettke/texmf.git
git clone gitlab-`whoami`:grettke/sgph

cd ~/git/github
git clone github-`whoami`:grettke/osx-provision.git
git clone github-`whoami`:grettke/bash.git
git clone github-`whoami`:grettke/wisdomandwonder.git
git clone github-`whoami`:grettke/recursive-git-status-bash.git

cd ~/git/github-anonymous
git clone https://github.com/encharm/Font-Awesome-SVG-PNG
git clone https://github.com/dwyl/english-words.git
git clone https://github.com/manute/gorepl-mode.git

At this point, the Bash initialization files point at the directory with my SSH key. Log out and in again and delete the anonymous pull. Not sure how to automate this part yet.

rm ~/src || true
rm -rf ~/git/src
mkdir -p ~/git/src
ln -s ~/git/src ~/src
cd ~/src
git clone github-`whoami`:grettke/help.git
rm ~/.emacs.el || true
ln -s ~/src/help/.emacs.el ~/.emacs.el
rm -rf ~/.emacs.d.copy
mv ~/.emacs.d ~/.emacs.d.copy
rm -rf ~/src/.emacs.d
mkdir ~/src/.emacs.d
cd ~/src/.emacs.d
git clone gitlab-`whoami`:grettke/dotemacsdotd.git .
ln -s ~/src/.emacs.d ~/.emacs.d
mv ~/.emacs.d/eshell ~/.emacs.d/eshell.copy
ln -s ~/src/help/eshell/ ~/.emacs.d/eshell
rm ~/.jshintrc || true
ln -s ~/src/help/.jshintrc ~/.jshintrc
rm ~/.Xmodmap || true
ln -s ~/src/help/.Xmodmap ~/.Xmodmap

Get everything else that lives in src.

rm -rf ~/src/xml-rpc-el
rm -rf ~/src/metaweblog
rm -rf ~/src/org2blog
rm -rf ~/src/org2blogwiki
rm -rf ~/src/pretty-mode
rm -rf ~/src/auto-capitalize
rm -rf ~/src/corporate-bs-generator
rm -rf ~/src/org-utf-to-xetex
rm -rf ~/src/universal-emotions-emoticons
rm -rf ~/src/list
rm -rf ~/src/hardware
cd ~/src
git clone github-`whoami`:grettke/xml-rpc-el.git
git clone github-`whoami`:org2blog/metaweblog.git
git clone github-`whoami`:org2blog/org2blog.git
git clone github-`whoami`:org2blog/org2blog.wiki.git org2blogwiki
git clone github-`whoami`:pretty-mode/pretty-mode.git
git clone github-`whoami`:grettke/corporate-bs-generator.git
git clone github-`whoami`:grettke/org-utf-to-xetex.git
git clone github-`whoami`:grettke/universal-emotions-emoticons.git
git clone gitlab-`whoami`:grettke/list.git
git clone gitlab-`whoami`:grettke/hardware

iTunes.

rm -rf ~/Music/iTunes
rm ~/Music/iTunes || true
cd ~/git/gitlab
rm -rf ./iTunes
git clone gitlab-`whoami`:grettke/iTunes.git
ln -s ~/git/gitlab/iTunes ~/Music/iTunes

Set up util scripts.

rm ~/util || true
cd ~/src
rm -rf ./util
git clone gitlab-`whoami`:grettke/util.git
ln -s ~/src/util ~/util

aspell.

cd ~/src
rm -rf ./aspell
git clone gitlab-`whoami`:grettke/aspell.git
rm ~/.aspell.en.pws || true
rm ~/.aspell.en.prepl || true
ln -s ~/src/aspell/.aspell.en.pws ~/.aspell.en.pws
ln -s ~/src/aspell/.aspell.en.prepl ~/.aspell.en.prepl

macOS System Dictionary

cd ~/src
rm -rf ./macoslocaldictionary
git clone glb:grettke/macoslocaldictionary.git
rm ~/Library/Spelling/LocalDictionary | true
ln -s ~/src/macoslocaldictionary/LocalDictionary ~/Library/Spelling/LocalDictionary

Org-Mode

Install

rm -rf ~/src/org-mode
cd ~/src
echo `date +%Y-%m-%dT%H:%M:%S%z`
git clone https://code.orgmode.org/bzg/org-mode.git
cd org-mode
git fetch && git fetch --tags
echo `date +%Y-%m-%dT%H:%M:%S%z`
git checkout release_9.0.9
mk autoloads

Testing

- [ ] Get Emacs running
- [ ] Re-tangle everything step by step
  - [ ] ECM
  - [ ] Fundamental
  - [ ] Org2Blog
  - [ ] HELP
- [ ] Diagram.org verification
  - Delete every result block: just do it manually search for =#+RESULT=
  - Delete all image output
  - Execute entire document successfully
  - Images re-appear
  - [ ] Ditaa
  - [ ] PlantUML
  - [ ] Graphviz
- [ ] eshell
  - Run it
  - Emacs uses correct HELP directory
- [ ] ccrypt
- [ ] ispell
- [ ] weasel words
- [ ] proselint buffer
  - Flycheck buffer
- [ ] langtool
  - Verify installation, can have the wrong dir and the tool just says that
    there are no issues
  - Run =langtool-check-buffer=
  - ~qk c~ does the scan, ~qk C~ suggests corrects, verified on a corresponsence
- [ ] Correspondence
  - Pick a letter
  - Address and signature and everything looks right
- [ ] Messages
  - Make sure that there are no startup warnings or issues
- [ ] Build resume
  - Blow away out-files and make
  - [ ] MD
  - [ ] TXT
  - [ ] PDF FULL
  - [ ] PDF ONE PAGE
  - [ ] DOCX
- [ ] Export to everything
  - Longest test, takes 35m on a VM
  - This is used for publishing
  - First delete everything
  - [ ] html
    - Images are links, not images
  - [ ] md
    - Images are links, not images
  - [ ] pdf
  - [ ] txt