• Stars
    star
    1,309
  • Rank 35,952 (Top 0.8 %)
  • Language
    Shell
  • License
    ISC License
  • Created over 12 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🖥️ Automated Configuration, Preferences and Software Installation for macOS

\[._.]/ - Hi, I'm the MacOS bot

I will update your MacOS machine with Better™ system defaults, preferences, software configuration and even auto-install some handy development tools and apps that my developer friends find helpful.

You don't need to install or configure anything upfront! This works with a brand-new machine from the factory as well as an existing machine that you've been working with for years.

Forget About Manual Configuration!

Don't you hate getting a new laptop or joining a new team and then spending a whole day setting up your system preferences and tools? Me too. That's why we automate; we did it once and we don't want to have to do it again.

\[^_^]/ - This started as Adam Eivy's MacOS shell configuration dotfiles but has grown to a multi-developer platform for machine configuration.

When I finish with your machine, you will be able to look at your command-line in full-screen mode like this (running iTerm):

iTerm Screenshot

Check out how your shell prompt includes the full path, node.js version & the working git branch along with a lot of other info! We use powerlevel9k for command prompt, so customization of what you want is easily changable in ./.zshrc The top terminal is using vim as a full replacement IDE. The bottom left two are git terminals. The bottom right is running vtop

To launch fullscreen, hit Command + Enter in iTerm, then use Command + d and Command + D to create split panes.

\[._.]/ - I'm so excited I just binaried in my pants!

Watch me run!

Running

Installation

Note: I recommend forking this repo in case you don't like anything I do and want to set your own preferences (and pull request them!)

☢️ REVIEW WHAT THIS SCRIPT DOES PRIOR TO RUNNING It's always a good idea to review arbitrary code from the internet before running it on your machine with sudo power! You are responsible for everything this script does to your machine (see LICENSE) The creator of this repo has a high tolerance for nuking his machine and starting over. If you have a low tolerance for this, proceed with caution.

git clone --recurse-submodules https://github.com/atomantic/dotfiles ~/.dotfiles
cd ~/.dotfiles;
# run this using terminal (not iTerm, lest iTerm settings get discarded on exit)
./install.sh
  • When it finishes, open iTerm and press Command + , to open preferences. Under Profiles > Colors, select "Load Presets" and choose the Solarized Dark Patch scheme. If it isn't there for some reason, import it from ~/.dotfiles/configs -- you may also need to select the Hack font and check the box for non-ascii font and set to Roboto Mono For Powerline (I've had mixed results for automating these settings--love a pull request that improves this)
  • I've also found that you need to reboot before fast key repeat will be enabled

Note: if you have problems cloning the submodules behind proxy, you can use this command to convert git:// to https://: git config --global url.https://github.com/.insteadOf git://github.com/

Note: running install.sh is idempotent. You can run it again and again as you add new features or software to the scripts! I'll regularly add new configurations so keep an eye on this repo as it grows and optimizes.

Restoring Dotfiles

If you have existing dotfiles for configuring git, zsh, vim, etc, these will be backed-up into ~/.dotfiles_backup/$(date +"%Y.%m.%d.%H.%M.%S") and replaced with the files from this project. You can restore your original dotfiles by using ./restore.sh $RESTOREDATE where $RESTOREDATE is the date folder name you want to restore.

The restore script does not currently restore system settings--only your original dotfiles. To restore system settings, you'll need to manually undo what you don't like (so don't forget to fork, review, tweak)

3.x.x+ Upgrade Instructions!

3.0.0 brings huge changes. If you have made any modifications (and didn't make your own fork), you will want to backup your dotfiles prior to running git-up or git pull on ~/.dotfiles.

Do the following to upgrade your ~/.dotfiles safely:

  1. backup your dotfiles: cp -R ~/.dotfiles ~/.dotfiles_old
  2. cd ~/.dotfiles
  3. update dotfiles: git up or git pull
  4. remove old submodule location: rm -rf .vim (now lives in homedir/.vim)
  5. inspect install.sh and config.js to make sure all the software you want is installed
  6. inspect homedir/* for any changes you want to port from ./dotfiles_old
  7. run install.sh again

Additional

VIM as IDE

I am moving away from using Atom and instead using vim as my IDE. I use Vundle to manage vim plugins (instead of pathogen). Vundle is better in many ways and is compatible with pathogen plugins. Additionally, vundle will manage and install its own plugins so we don't have to use git submodules for all of them.

Crontab

You can cron ~/.crontab if you want to add my nightly cron software updates.

\[0_0]/ - Note that this may wake you in the morning to compatibility issues so use only if you like being on the edge

Remap Caps-Lock

  • I highly recommend remapping your Caps Lock key to Control per Dr. Bunsen: Remap Caps Lock

Settings

This project changes a number of settings and configures software on MacOS. Here is the current list:

Prompt Driven Configuration

The following will only happen if you agree on the prompt

  • install a gitshots script to take a photo using your camera on every git commit (these go in as a post-commit hook to your .git_template)
  • overwrite your /etc/hosts file with a copy from someonewhocares.org (see ./configs/hosts for the file that will be used)
  • replace the system wallpaper with img/wallpaper.jpg

Security

  • Enable firewall
  • Enable firewall stealth mode (no response to ICMP / ping requests)
  • Disable remote apple events
  • Disable wake-on modem
  • Disable wake-on LAN
  • Disable guest account login

General System Changes

  • always boot in verbose mode (not MacOS GUI mode)
  • Disable the sound effects on boot
  • Menu bar: disable transparency
  • Menu bar: hide the Time Machine, Volume, User, and Bluetooth icons
  • Set highlight color to green
  • Set sidebar icon size to medium
  • Always show scrollbars
  • Increase window resize speed for Cocoa applications
  • Expand save panel by default
  • Expand print panel by default
  • allow 'locate' command
  • Set standby delay to 24 hours (default is 1 hour)
  • Save to disk (not to iCloud) by default
  • Automatically quit printer app once the print jobs complete
  • Disable the “Are you sure you want to open this application?” dialog
  • Remove duplicates in the “Open With” menu (also see 'lscleanup' alias)
  • Display ASCII control characters using caret notation in standard text views
  • Disable the crash reporter
  • Set Help Viewer windows to non-floating mode
  • Reveal IP, hostname, OS, etc. when clicking clock in login window
  • Check for software updates daily, not just once per week
  • Disable smart quotes as they’re annoying when typing code
  • Disable smart dashes as they’re annoying when typing code

Trackpad, mouse, keyboard, Bluetooth accessories, and input

  • Trackpad: enable tap to click for this user and for the login screen
  • Trackpad: map bottom right corner to right-click
  • Disable “natural” (Lion-style) scrolling
  • Increase sound quality for Bluetooth headphones/headsets
  • Enable full keyboard access for all controls (e.g. enable Tab in modal dialogs)
  • Use scroll gesture with the Ctrl (^) modifier key to zoom
  • Follow the keyboard focus while zoomed in
  • Disable press-and-hold for keys in favor of key repeat
  • Set a blazingly fast keyboard repeat rate:
  • Set language and text formats (english/US)

Configuring the Screen

  • Require password immediately after sleep or screen saver begins
  • Save screenshots to the desktop
  • Save screenshots in PNG format (other options: BMP, GIF, JPG, PDF, TIFF)
  • Disable shadow in screenshots
  • Enable subpixel font rendering on non-Apple LCDs
  • Enable HiDPI display modes (requires restart)

Finder Configs

  • Keep folders on top when sorting by name (Sierra only)
  • Allow quitting via ⌘ + Q; doing so will also hide desktop icons
  • Disable window animations and Get Info animations
  • Set Desktop as the default location for new Finder windows
  • Show hidden files by default
  • Show all filename extensions
  • Show status bar
  • Show path bar
  • Allow text selection in Quick Look
  • Display full POSIX path as Finder window title
  • When performing a search, search the current folder by default
  • Disable the warning when changing a file extension
  • Enable spring loading for directories
  • Remove the spring loading delay for directories
  • Avoid creating .DS_Store files on network volumes
  • Disable disk image verification
  • Automatically open a new Finder window when a volume is mounted
  • Use list view in all Finder windows by default
  • Disable the warning before emptying the Trash
  • Empty Trash securely by default
  • Enable AirDrop over Ethernet and on unsupported Macs running Lion
  • Show the ~/Library folder
  • Expand the following File Info panes: “General”, “Open with”, and “Sharing & Permissions”

Dock & Dashboard

  • Enable highlight hover effect for the grid view of a stack (Dock)
  • Set the icon size of Dock items to 36 pixels
  • Change minimize/maximize window effect to scale
  • Minimize windows into their application’s icon
  • Enable spring loading for all Dock items
  • Show indicator lights for open applications in the Dock
  • Don’t animate opening applications from the Dock
  • Speed up Mission Control animations
  • Don’t group windows by application in Mission Control
  • Disable Dashboard
  • Don’t show Dashboard as a Space
  • Don’t automatically rearrange Spaces based on most recent use
  • Remove the auto-hiding Dock delay
  • Remove the animation when hiding/showing the Dock
  • Automatically hide and show the Dock
  • Make Dock icons of hidden applications translucent
  • Make Dock more transparent
  • Reset Launchpad, but keep the desktop wallpaper intact

Configuring Hot Corners

  • Top left screen corner → Mission Control
  • Top right screen corner → Desktop
  • Bottom right screen corner → Start screen saver

Configuring Safari & WebKit

  • Set Safari’s home page to ‘about:blank’ for faster loading
  • Prevent Safari from opening ‘safe’ files automatically after downloading
  • Allow hitting the Backspace key to go to the previous page in history
  • Hide Safari’s bookmarks bar by default
  • Hide Safari’s sidebar in Top Sites
  • Disable Safari’s thumbnail cache for History and Top Sites
  • Enable Safari’s debug menu
  • Make Safari’s search banners default to Contains instead of Starts With
  • Remove useless icons from Safari’s bookmarks bar
  • Enable the Develop menu and the Web Inspector in Safari
  • Add a context menu item for showing the Web Inspector in web views

Configuring Mail

  • Disable send and reply animations in Mail.app
  • Copy email addresses as '[email protected]' instead of 'Foo Bar [email protected]' in Mail.app
  • Add the keyboard shortcut ⌘ + Enter to send an email in Mail.app
  • Display emails in threaded mode, sorted by date (oldest at the top)
  • Disable inline attachments (just show the icons)
  • Disable automatic spell checking

Spotlight

  • Disable Spotlight indexing for any volume that gets mounted and has not yet been indexed
  • Change indexing order and disable some file types from being indexed
  • Load new settings before rebuilding the index
  • Make sure indexing is enabled for the main volume

iTerm2

  • Installing the Solarized Dark theme for iTerm
  • Don’t display the annoying prompt when quitting iTerm
  • Hide tab title bars
  • Set system-wide hotkey to show/hide iterm with ctrl+tick ( ^ + `)
  • Set normal font to Hack 12pt
  • Set non-ascii font to Roboto Mono for Powerline 12pt

Time Machine

  • Prevent Time Machine from prompting to use new hard drives as backup volume
  • Disable local Time Machine backups

Activity Monitor

  • Show the main window when launching Activity Monitor
  • Visualize CPU usage in the Activity Monitor Dock icon
  • Show all processes in Activity Monitor
  • Sort Activity Monitor results by CPU usage

Address Book, Dashboard, iCal, TextEdit, and Disk Utility

  • Enable the debug menu in Address Book
  • Enable Dashboard dev mode (allows keeping widgets on the desktop)
  • Use plain text mode for new TextEdit documents
  • Open and save files as UTF-8 in TextEdit
  • Enable the debug menu in Disk Utility

Mac App Store

  • Enable the WebKit Developer Tools in the Mac App Store
  • Enable Debug Menu in the Mac App Store

Messages

  • Disable automatic emoji substitution (i.e. use plain text smileys)
  • Disable smart quotes as it’s annoying for messages that contain code

SizeUp.app

  • Start SizeUp at login
  • Don’t show the preferences window on next start

Software Installation

homebrew, fontconfig, git, nvm (node + npm), and zsh (latest) are all installed inside the install.sh as foundational software for running this project. Additional software is configured in config.js and can be customized in your own fork/branch (you can change everything in your own fork/brance). The following is the software that I have set as default:

Utilities

  • ack
  • ag
  • coreutils
  • dos2unix
  • findutils
  • fortune
  • gawk
  • gifsicle
  • gnupg
  • gnu-sed
  • homebrew/dupes/grep
  • httpie
  • imagemagick (only if gitshots enabled)
  • imagesnap (only if gitshots enabled)
  • jq
  • mas
  • moreutils
  • nmap
  • openconnect
  • reattach-to-user-namespace
  • homebrew/dupes/screen
  • tmux
  • tree
  • ttyrec
  • vim --override-system-vi
  • watch
  • wget --enable-iri

Apps

  • box-sync
  • gpgtools
  • iterm2
  • sizeup
  • slack
  • the-unarchiver
  • xquartz

NPM Global Modules

  • antic
  • buzzphrase
  • eslint
  • gulp
  • instant-markdown-d
  • npm-check
  • prettyjson
  • trash
  • vtop

License

This project is licensed under ISC. Please fork, contribute and share.

Contributions

Contributions are always welcome in the form of pull requests with explanatory comments.

Please refer to the Contributor Covenant

Loathing, Mehs and Praise

  1. Loathing should be directed into pull requests that make it better. woot.
  2. Bugs with the setup should be put as GitHub issues.
  3. Mehs should be > /dev/null
  4. Praise should be directed to @antic

Author

More here: https://adameivy.com

¯\(ツ)/¯ Warning / Liability

Warning: The creator of this repo is not responsible if your machine ends up in a state you are not happy with. If you are concerned, look at the code to review everything this will do to your machine :)

More Repositories

1

JavaScript-Playing-Cards

🃏A playing card JavaScript and CSS library for creating standard deck games. Looking for developers to create game pack extensions to add onto this. The library is wrapped to allow it to act as a plugin for jquery (or another framework)
JavaScript
157
star
2

is-ua-webview

📱tiny/simple npm module for detecting webview status of a user-agent
JavaScript
58
star
3

hicetnunc_tools

Auditing, IPFS Pinning, and other tools for creators, collectors, and network support of hic et nunc
JavaScript
49
star
4

hapi-and-healthy

🚦Fully Configurable Health Status API for Hapi Servers
JavaScript
33
star
5

ml_class

🤖 Machine Learning Demystified
Jupyter Notebook
28
star
6

btd_bot

💸 "Buy The Dip" Bot - A Coinbase Pro semi-automated trading bot, built only for escalating buying and selling at percentage changes.
JavaScript
26
star
7

pine_scripts

💹 TradingView Custom Pine Scripts
Shell
23
star
8

henpin

hěn pīn 狠拼 (very together, much backup)
JavaScript
20
star
9

bitcoin_orderbook_indicator

📉📈Bitcoin orderbook data collection and analysis. Just some fun data science stuff
Jupyter Notebook
14
star
10

jquery.imgExplosion

💥Firework explosion of an image, optionally rotating into the screen in variable sizes and exploding at the end. w00t.
JavaScript
13
star
11

generator-dockerize

Yeoman Generator: Scaffolding for Dockerized Development Environment
Shell
10
star
12

buzzphrase

🤖 Sometimes you need a "balanced reciprocal programming concept for parallel management options"
JavaScript
7
star
13

undermore

More underscore/lodash mixins and a base library to fork as your own collection of common (otherwise global) javascript functions. AKA modash (compatibile with lodash)
JavaScript
7
star
14

stock_signals

💹 my own stock data collection engine, saving a bunch of data for a Google Spreadsheet process. UPDATE: this is no longer in use or maintained but could be academically interesting so I'll leave it here.
Jupyter Notebook
7
star
15

bespoke-theme-atomantic

👨‍💻️ A Bespoke.js Theme that uses x-gif and a few other things for impact. This is my own base-line for presentations.
Stylus
6
star
16

alphabetize-object-keys

🔠 deeply alphabetize the keys of an object
JavaScript
6
star
17

hapi-auth-header

🔐 Full Authorization Header Auth Scheme for Hapi Node Server Framework
JavaScript
6
star
18

is-ua-bot

🤖 tiny javascript module for checking user agents against a bot regex match (returns boolean)
JavaScript
5
star
19

gallery

NFT hosting gallery for hicetnunc works (hosted on my GitHub pages)
JavaScript
4
star
20

kegiot

DIY IoT Kegerator, using Beagle Bone Black, LCD Readout, RFID Reader, Node.js and more.
Eagle
4
star
21

jquery.ChromeFrameNotify

Adds notification of Google Chrome Frame update for Internet Explorer users
JavaScript
4
star
22

unlocked

🔓 fun scripts to execute on machines where people walk away without locking the screen
Shell
4
star
23

jquery.gmapDirections

Simple jquery driven wrapper and form handler for the Google Maps Driving Directions API
JavaScript
4
star
24

atomantic.github.io

Portfolio v2
JavaScript
4
star
25

PHP-Site-Template

A template for creating a new PHP driven website (folder structure and base files) -- this project is mainly a hub for students of Adam Eivy's Web Development classes at Seattle Central Community College but is available to anyone who wishes to join in creating a universally usable foundation for a php site template. Please make suggestions for additions/modifications or join the project before forking :)
4
star
26

jquery.codeassist

Creates a code assist menu within textarea and input fields, which allows users to select from a list of suggested values. This effect is triggered by the entry of a key character such as %, $ or [
JavaScript
4
star
27

antic

🤣 node command line tool to output a random joke. Things you might here me say, followed by befuddled stares.
JavaScript
3
star
28

presentation_automate_yourself

🤖 Presentation for Code Fellows Partner Power Hour: Automate Yourself Out of a Job
Pug
3
star
29

btc_challenge

jupyter notebooks for experimenting with https://www.reddit.com/r/Bitcoin/comments/8kk0pa/1_btc_is_hidden_in_this_puzzle_good_luck/
Jupyter Notebook
3
star
30

rectanglar_rotations

📦Just a quick CSS 3D rectangular rotation layout so I can check my manual drawing practice work
JavaScript
2
star
31

FamilySearchFinder

FamilySearch Direct Lineage Finder
JavaScript
2
star
32

tilde

all my ~
HTML
2
star
33

gdax_stats

💹⚖️Reporting CLI Tool for Getting Liquid GDAX Balances
JavaScript
2
star
34

myq

MyQ is a Realtime Queue Management System for Life Tasks
JavaScript
2
star
35

POSThuman

📝 A Power-On Self-Test for Humans
JavaScript
2
star
36

hapi_playground

Playground and testbed for Hapi server
JavaScript
2
star
37

HTML5-Site-Template

A template for creating a new HTML5 website (folder structure and base files) -- this project is mainly a hub for students of Adam Eivy's Web Development classes at Seattle Central Community College but is available to anyone who wishes to join in creating a universally usable foundation for an html5 site template. Please make suggestions for additions/modifications or join the project before forking :)
2
star
38

canhazcookie

🍪 Test engine for cookie behaviors, using Node.js. Primarily building to validate Safari behavioral assumptions.
Shell
1
star
39

B2G-Comics

B2G Comics Reader: So far just a reader for Sleep Deprivation Ninja :)
JavaScript
1
star
40

lab_istanbul

debug repo for using Hapi + Lab and gulp-istanbul together
JavaScript
1
star
41

tunic

🎹 A simple webapp for helping me translate my whistled tunes into piano keys
JavaScript
1
star
42

buzzphrasebot

🤖 A buzzphrase generator twitter bot
JavaScript
1
star
43

serverless_node_middlen

🖥️ Quick example for a Code Fellows class to show how one could create a Dockerized Serverless Middleman service with user uploaded functions (not scalable/secure)
JavaScript
1
star
44

dockerized

Dockerized App with Automated Developer Environment Management - generated by generator-dockerize `yo dockerize`
Shell
1
star
45

shadowpuppet.net

I don't foresee ever running my freelance web development business again--so I'm replacing the old website with the simplest website I can think of: a bespoke slidedeck
CSS
1
star