Alpha Chen 2 years ago
parent 14fbe792ea
commit fcdaaaca08
No known key found for this signature in database

@ -0,0 +1,9 @@
```sh
# Run bootstrap
./bootstrap.sh
# Configure 1Password
# Run Ansible
ansible-playbook main.yml
```

@ -0,0 +1,5 @@
[defaults]
inventory = hosts.yml
# [privilege_escalation]
# become_ask_pass = True

@ -0,0 +1,5 @@
# install homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
export PATH=/opt/homebrew/bin:$PATH
brew install ansible 1password 1password/tap/1password-cli

@ -0,0 +1,255 @@
- hosts: all
tasks:
- name: set OS X defaults
osx_defaults:
domain: "{{ item.domain | default(omit) }}"
key: "{{ item.key }}"
type: "{{ item.type }}"
value: "{{ item.value }}"
notify: restart OS X system services
with_items:
# NSGlobalDomain defaults
- # don't quit idle applications
domain: -g
key: NSDisableAutomaticTermination
type: bool
value: true
- # disable font smoothing
key: AppleFontSmoothing
type: int
value: 0
- # full keyboard access
key: AppleKeyboardUIMode
type: int
value: 3
- # show all extensions by default
key: AppleShowAllExtensions
type: bool
value: true
- # keyboard repeat rate
key: KeyRepeat
type: int
value: 2
- # delay before keyboard repeat
key: InitialKeyRepeat
type: int
value: 25
- # set sidebar item size to small
key: NSTableViewDefaultSizeMode
type: int
value: 1
- # disable resume
key: NSQuitAlwaysKeepsWindows
type: bool
value: false
- # add debug menu in web views
key: WebKitDeveloperExtras
type: bool
value: true
- # tap to click
key: com.apple.mouse.tapBehavior
type: bool
value: true
- # only show scrollbars when scrolling
key: AppleShowScrollBars
type: string
value: WhenScrolling
# Safari
- # enable Debug menu in Safari
domain: com.apple.Safari
key: IncludeInternalDebugMenu
type: bool
value: true
- # disable Java
domain: com.apple.Safari
key: com.apple.Safari.ContentPageGroupIdentifier.WebKit2JavaEnabled
type: bool
value: false
- # disable Java
domain: com.apple.Safari
key: com.apple.Safari.ContentPageGroupIdentifier.WebKit2JavaEnabledForLocalFiles
type: bool
value: false
- # disable dashboard
domain: com.apple.dashboard
key: mcx-disabled
type: bool
value: true
- # don't write .DS_Store to network volumes
domain: com.apple.desktopservices
key: DSDontWriteNetworkStores
type: bool
value: true
# Dock defaults
- # automatically hide and show the dock
domain: com.apple.dock
key: autohide
type: bool
value: true
- # minimize windows using the scale effect
domain: com.apple.dock
key: mineffect
type: string
value: scale
- # don't rearrange spaces
domain: com.apple.dock
key: mru-spaces
type: bool
value: false
- domain: com.apple.dock
key: orientation
type: string
value: left
- # set the bottom left hot corner to sleep the display
domain: com.apple.dock
key: wvous-bl-corner
type: int
value: 10
- # set the icon size to 36 pixels
domain: com.apple.dock
key: tilesize
type: int
value: 36
- # no dock delay
domain: com.apple.dock
key: autohide-delay
type: float
value: 0
# Trackpad settings
- domain: com.apple.driver.AppleBluetoothMultitouch.trackpad
key: Clicking
type: int
value: 1
- domain: com.apple.driver.AppleBluetoothMultitouch.trackpad
key: TrackpadFourFingerVertSwipeGesture
type: int
value: 0
- domain: com.apple.driver.AppleBluetoothMultitouch.trackpad
key: TrackpadThreeFingerDrag
type: bool
value: true
- domain: com.apple.driver.AppleBluetoothMultitouch.trackpad
key: TrackpadThreeFingerHorizSwipeGesture
type: int
value: 0
- domain: com.apple.driver.AppleBluetoothMultitouch.trackpad
key: TrackpadThreeFingerVertSwipeGesture
type: int
value: 0
# Finder defaults
- # don't ask when changing file extension
domain: com.apple.finder
key: FXEnableExtensionChangeWarning
type: bool
value: false
- # default to list view
domain: com.apple.finder
key: FXPreferredViewStyle
type: string
value: Nlsv
- # enable text selection in QuickLook
domain: com.apple.finder
key: QLEnableTextSelection
type: bool
value: true
- # show full path in Finder
domain: com.apple.finder
key: _FXShowPosixPathInTitle
type: bool
value: true
- # remove the proxy icon hover delay
domain: com.apple.Finder
key: NSToolbarTitleViewRolloverDelay
type: float
value: 0
- # show the proxy icon and older titlebar
# https://twitter.com/chucker/status/1395843084383043584
domain: com.apple.Finder
key: NSWindowSupportsAutomaticInlineTitle
type: bool
value: false
- # set date format in menubar
domain: com.apple.menuextra.clock
key: DateFormat
type: string
value: h:mm
- # no window shadows when capturing windows
domain: com.apple.screencapture
key: disable-shadow
type: bool
value: true
- domain: com.apple.screencapture
key: location
type: string
value: "{{ ansible_env.HOME }}/Downloads"
- domain: com.apple.screensaver
key: askForPassword
type: int
value: 1
- domain: com.apple.Terminal
key: ShowLineMarks
type: bool
value: false
# Other applications
- domain: com.google.Chrome
key: AppleEnableSwipeNavigateWithScrolls
type: bool
value: false
- domain: org.vim.MacVim
key: MMLastWindowClosedBehavior
type: int
value: 2
- domain: org.vim.MacVim
key: MMUntitledWindow
type: int
value: 1
- domain: org.vim.MacVim
key: SUCheckAtStartup
type: int
value: 1
- domain: org.vim.MacVim
key: SUEnableAutomaticChecks
type: int
value: 1
- domain: com.freron.MailMate
key: MmAllowedImageURLRegexp
type: string
value: https://((i|images|d)\.gr-assets\.com|www\.goodreads\.com|massdrop-s3\.imgix\.net|.*\.cloudfront\.net|s3\.amazonaws\.com|files\.convertkitcdn\.com/assets/pictures)/.*
- domain: com.freron.MailMate
key: MmSendMessageDelayEnabled
type: bool
value: true
- domain: com.freron.MailMate
key: MmSendMessageDelay
type: int
value: 60
handlers:
- name: restart OS X system services
command: killall {{ item }}
with_items:
- Finder
- Dock
- SystemUIServer

@ -0,0 +1,23 @@
- hosts: all
tasks:
# - name: install dockutil
# homebrew: name=dockutil state=present
- command: dockutil --list
register: dockutil_result
- name: remove all Dock icons
command: dockutil --remove all
# when: not (dockutil_result.stdout_lines | length == 1 and dockutil_result.stdout is search("^Downloads"))
- name: add ~/Downloads to the Dock
command: dockutil --add ~/Downloads
--view list
--display stack
--sort datemodified
when: not (dockutil_result.stdout_lines | length == 1 and dockutil_result.stdout is search("^Downloads"))
- name: remove Dockutil
homebrew: name=dockutil state=absent
- name: restart Dock
command: killall Dock

@ -0,0 +1,29 @@
- hosts: all
tasks:
- name: Symlink dotfiles
file:
src: ~/.dotfiles/{{ item }}
dest: ~/{{ item }}
state: link
loop:
- .config
- .gitconfig
- .hammerspoon
- .local
- .ssh
- .tmux.conf
- .zsh
- name: Symlink Prezto
file:
src: ~/.dotfiles/.zprezto
dest: ~/.zprezto
state: link
- name: Symlink Prezto runcoms
file:
src: "{{ item }}"
dest: ~/.{{ item | basename }}
state: link
with_fileglob: "~/.zprezto/runcoms/z*"

@ -0,0 +1,49 @@
- hosts: all
tasks:
- community.general.homebrew:
name: "{{ item }}"
loop:
- chruby
- difftastic
- direnv
- efm-langserver
- entr
- exa
- fasd
- fd
- fzf
- git
- git-lfs
- jq
- luarocks
- neovim
- ripgrep
- ruby-install
- shellcheck
- svn # required for source code pro
- tmux
- tree
- zsh
- fabianishere/personal/pam_reattach
- community.general.homebrew_cask:
name: "{{ item }}"
loop:
- alfred
- bartender
- dash
- fantastical
- firefox
- google-chrome
- hammerspoon
- mailmate
- obsidian
- slack
- topnotch
- zoom
# - homebrew/cask-fonts/font-source-code-pro
- homebrew/cask-fonts/font-sauce-code-pro-nerd-font
- homebrew/cask-versions/firefox-developer-edition

@ -0,0 +1,5 @@
all:
hosts:
localhost:
ansible_connection: local
ansible_python_interpreter: "{{ansible_playbook_python}}"

@ -0,0 +1,38 @@
- hosts: all
tasks:
- file: path=~/Library/KeyBindings state=directory
- name: Symlink Emacs-style keybindings for OS X
file:
src: ~/.dotfiles/macos/DefaultKeyBinding.dict
dest: ~/Library/KeyBindings/DefaultKeyBinding.dict
state: link
- file: path=~/Library/Colors state=directory
- name: symlink OS X colors palettes
file: src={{ item }} dest=~/Library/Colors/{{ item | basename }} state=link
with_fileglob: ~/.dotfiles/macos/colors/*
- file: path=~/Library/Dictionaries state=directory
- name: Install Webster's 1913 dictionary
copy:
src: ~/.dotfiles/macos/websters-1913.dictionary/
dest: ~/Library/Dictionaries/websters-1913.dictionary
- name: Enable Touch ID for sudo
block:
- lineinfile:
path: /etc/pam.d/sudo
insertafter: '^auth\s+sufficient'
regexp: '^auth\s+sufficient\s+pam_tid.so$'
line: "auth\tsufficient\tpam_tid.so"
# tmux
- shell: brew --prefix
register: brew_prefix
- lineinfile:
path: /etc/pam.d/sudo
insertbefore: '^auth\tsufficient\tpam_tid.so'
regexp: '^auth\s+optional\s+.*pam_reattach.so$'
line: "auth\toptional\t{{ brew_prefix.stdout | trim }}/lib/pam/pam_reattach.so"
become: yes

@ -0,0 +1,37 @@
- hosts: all
tasks:
- group_by: key=os_{{ ansible_distribution }}
tags: always
- ansible.builtin.git:
repo: git@git.kejadlen.dev:alpha/dotfiles.git
dest: ~/.dotfiles.git
bare: true
# macOS things
- name: Import terminal profile
ansible.builtin.command: open ~/.macos/Alpha.terminal
- name: Set terminal profile to be the default
osx_defaults:
domain: com.apple.Terminal
key: "{{ item }} Window Settings"
type: string
value: Alpha
with_items:
- Default
- Startup
- import_playbook: homebrew.yml
- import_playbook: defaults.yml
- import_playbook: dock.yml
- import_playbook: macos.yml
- hosts: all
tasks:
- ansible.builtin.command: "luarocks install fennel"
Loading…
Cancel
Save