dev
parent
14fbe792ea
commit
fcdaaaca08
@ -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…
Reference in new issue