├── .gitignore ├── roles ├── profile-developer │ ├── vars │ │ └── main.yml │ ├── tasks │ │ └── main.yml │ ├── meta │ │ └── main.yml │ └── README.md └── profile-all │ ├── tasks │ └── main.yml │ ├── meta │ └── main.yml │ └── README.md ├── .travis.yml ├── files └── ssh_config ├── vars └── roderik-secrets.yml ├── README.md ├── requirements.yml ├── admin.yml └── roderik.yml /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /.idea 3 | -------------------------------------------------------------------------------- /roles/profile-developer/vars/main.yml: -------------------------------------------------------------------------------- 1 | 2 | node_versions: 3 | - 6 4 | 5 | default_node_version: 6 6 | -------------------------------------------------------------------------------- /roles/profile-all/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: install cask applications for all users 3 | homebrew_cask: name={{item}} state=present 4 | with_items: 5 | # - vlc 6 | - keepingyouawake 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: objective-c 3 | 4 | os: 5 | - osx 6 | 7 | osx_image: xcode7 8 | 9 | script: 10 | - curl -s https://raw.githubusercontent.com/superlumic/superlumic/master/superlumic | bash -s 11 | -------------------------------------------------------------------------------- /files/ssh_config: -------------------------------------------------------------------------------- 1 | TCPKeepAlive yes 2 | ServerAliveInterval 15 3 | ServerAliveCountMax 6 4 | Compression yes 5 | ControlMaster auto 6 | ControlPath /tmp/%r@%h:%p 7 | ControlPersist yes 8 | 9 | Host * 10 | UseKeychain yes 11 | ServerAliveInterval 300 12 | ServerAliveCountMax 2 -------------------------------------------------------------------------------- /roles/profile-developer/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: tap homebrew/cask-versions 3 | homebrew_tap: tap=homebrew/cask-versions state=present 4 | 5 | - name: install developer brew applications 6 | homebrew: name={{item}} state=latest 7 | with_items: 8 | - wget 9 | - pwgen 10 | - xmlstarlet 11 | - watch 12 | - rsync 13 | - htop 14 | -------------------------------------------------------------------------------- /roles/profile-all/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Roderik van der Veer 4 | description: Ansible profile role for all users 5 | license: MIT 6 | min_ansible_version: 1.2 7 | platforms: 8 | - name: Darwin 9 | versions: 10 | - all 11 | categories: 12 | - system 13 | dependencies: 14 | - roderik.superlumic-computername 15 | - roderik.superlumic-cli 16 | -------------------------------------------------------------------------------- /vars/roderik-secrets.yml: -------------------------------------------------------------------------------- 1 | $ANSIBLE_VAULT;1.1;AES256 2 | 63623937393739383738323039636164313531303666633935396236393362383362616261663634 3 | 3536623630373762323166643362663932663333636436300a653034633261303163383336623665 4 | 61373662613138623164353666376330376438333764333066373033353735623165633137633333 5 | 3766353239306235320a363863353563616564623064373732373737356536303463653266663865 6 | 61653837623963666461313036333731343138396136646161316665633633363734663639663630 7 | 3637663238303466393634646461346633663733366665343535 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # superlumic-config 2 | 3 | This is the default configuration "role" for "superlumic". You will want 4 | to fork this one and create your own "username.yml". Use the roles 5 | folder to create "profiles". 6 | 7 | How you organise your config files is entirely up to you, but this is 8 | how I do it. The "profile-all" role are the apps and settings that 9 | everyone in my company needs. Then I have a group file per type of 10 | installation (developers, designers, etc). In the "username.yml" 11 | playbook I then add all the specific things for that user. 12 | -------------------------------------------------------------------------------- /roles/profile-developer/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Roderik van der Veer 4 | description: Ansible profile role for developers 5 | license: MIT 6 | min_ansible_version: 1.2 7 | platforms: 8 | - name: Darwin 9 | versions: 10 | - all 11 | categories: 12 | - system 13 | dependencies: 14 | - roderik.superlumic-computername 15 | - roderik.superlumic-cli 16 | - roderik.superlumic-homebrew 17 | #- roderik.superlumic-php 18 | #- roderik.superlumic-sublimetext 19 | #- roderik.superlumic-node 20 | - roderik.superlumic-vim 21 | - profile-all 22 | -------------------------------------------------------------------------------- /roles/profile-all/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | A brief description of the role goes here. 5 | 6 | Requirements 7 | ------------ 8 | 9 | Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well. 15 | 16 | Dependencies 17 | ------------ 18 | 19 | A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles. 20 | 21 | Example Playbook 22 | ---------------- 23 | 24 | Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: 25 | 26 | - hosts: servers 27 | roles: 28 | - { role: username.rolename, x: 42 } 29 | 30 | License 31 | ------- 32 | 33 | BSD 34 | 35 | Author Information 36 | ------------------ 37 | 38 | An optional section for the role authors to include contact information, or a website (HTML is not allowed). 39 | -------------------------------------------------------------------------------- /roles/profile-developer/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | A brief description of the role goes here. 5 | 6 | Requirements 7 | ------------ 8 | 9 | Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well. 15 | 16 | Dependencies 17 | ------------ 18 | 19 | A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles. 20 | 21 | Example Playbook 22 | ---------------- 23 | 24 | Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: 25 | 26 | - hosts: servers 27 | roles: 28 | - { role: username.rolename, x: 42 } 29 | 30 | License 31 | ------- 32 | 33 | BSD 34 | 35 | Author Information 36 | ------------------ 37 | 38 | An optional section for the role authors to include contact information, or a website (HTML is not allowed). 39 | -------------------------------------------------------------------------------- /requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | - name: https://github.com/ansible-collections/community.general.git 5 | type: git 6 | version: main 7 | 8 | roles: 9 | - src: https://github.com/superlumic/ansible-role-homebrew.git 10 | name: roderik.superlumic-homebrew 11 | version: master 12 | 13 | - src: https://github.com/superlumic/ansible-role-osx-defaults.git 14 | name: roderik.superlumic-osx-defaults 15 | version: master 16 | 17 | - src: https://github.com/superlumic/ansible-role-computername.git 18 | name: roderik.superlumic-computername 19 | version: master 20 | 21 | - src: https://github.com/superlumic/ansible-role-cli.git 22 | name: roderik.superlumic-cli 23 | version: master 24 | 25 | - src: https://github.com/superlumic/ansible-role-mysql.git 26 | name: roderik.superlumic-mysql 27 | version: master 28 | 29 | - src: https://github.com/superlumic/ansible-role-php.git 30 | name: roderik.superlumic-php 31 | version: master 32 | 33 | - src: https://github.com/superlumic/ansible-role-sublimetext.git 34 | name: roderik.superlumic-sublimetext 35 | version: master 36 | 37 | - src: https://github.com/superlumic/ansible-role-node.git 38 | name: roderik.superlumic-node 39 | version: master 40 | 41 | - src: https://github.com/superlumic/ansible-role-postgresql.git 42 | name: roderik.superlumic-postgresql 43 | version: master 44 | 45 | - src: https://github.com/superlumic/ansible-role-vim.git 46 | name: roderik.superlumic-vim 47 | version: master 48 | 49 | - src: https://github.com/superlumic/ansible-role-modjk.git 50 | name: roderik.superlumic-modjk 51 | version: master 52 | 53 | - src: https://github.com/superlumic/ansible-role-skylab.git 54 | name: roderik.superlumic-skylab 55 | version: master 56 | -------------------------------------------------------------------------------- /admin.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - hosts: 127.0.0.1 4 | connection: local 5 | 6 | tasks: 7 | - name: install personal cask applications 8 | homebrew_cask: name={{item}} state=present 9 | with_items: 10 | - spotify 11 | - sketch 12 | - imageoptim 13 | - imagealpha 14 | - sketch-toolbox 15 | - littleipsum1 16 | - name: create ssh directory 17 | become: yes 18 | file: 19 | path: "{{item}}" 20 | state: directory 21 | owner: root 22 | group: wheel 23 | mode: 0777 24 | with_items: 25 | - /etc/ssh 26 | - name: personal ssh config 27 | become: yes 28 | copy: 29 | src: files/ssh_config 30 | dest: /etc/ssh_config 31 | - name: add to sudoers without password 32 | become: yes 33 | lineinfile: > 34 | dest=/etc/sudoers 35 | regexp="{{ item.regexp }}" 36 | line="{{ item.line }}" 37 | state=present 38 | create=true 39 | with_items: 40 | - { regexp: '^admin', line: 'admin ALL=(ALL) NOPASSWD: ALL' } 41 | 42 | roles: 43 | - profile-all 44 | - profile-developer 45 | 46 | vars: 47 | - computername: frontend 48 | - git_user_name: Kunstmaan Admin (FE Laptop) 49 | - git_user_email: frontend@kunstmaan.be 50 | - sublime_packages: 51 | - dest: "SideBarEnhancements" 52 | repo: "https://github.com/titoBouzout/SideBarEnhancements" 53 | version: "st3" 54 | - dest: "GitGutter" 55 | repo: "https://github.com/jisaacks/GitGutter.git" 56 | version: "master" 57 | - dest: "BracketHighlighter" 58 | repo: "https://github.com/facelessuser/BracketHighlighter.git" 59 | version: "master" 60 | - dest: "Theme - Soda" 61 | repo: "https://github.com/buymeasoda/soda-theme.git" 62 | version: "master" 63 | - dest: "Base16" 64 | repo: "https://github.com/chriskempson/base16-textmate.git" 65 | version: "master" 66 | - dest: "ApplySyntax" 67 | repo: "https://github.com/facelessuser/ApplySyntax.git" 68 | version: "master" 69 | - dest: "SublimeAllAutocomplete" 70 | repo: "https://github.com/alienhard/SublimeAllAutocomplete" 71 | version: "master" 72 | - dest: "Ansible" 73 | repo: "https://github.com/clifford-github/sublime-ansible.git" 74 | version: "master" 75 | - sublime_text_color_scheme: "Packages/Base16/base16-eighties.dark.tmTheme" 76 | - sublime_text_theme: "Soda Dark 3.sublime-theme" 77 | - osx_defaults: 78 | - domain: 'com.apple.dock' 79 | key: 'autohide' 80 | type: boolean 81 | value: true 82 | - domain: 'com.apple.dock' 83 | key: 'minimize-to-application' 84 | type: integer 85 | value: 1 86 | - domain: 'com.apple.dock' 87 | key: 'show-process-indicators' 88 | type: boolean 89 | value: true 90 | - domain: 'com.apple.dock' 91 | key: 'orientation' 92 | type: string 93 | value: left 94 | - domain: 'NSGlobalDomain' 95 | key: 'NSTableViewDefaultSizeMode' 96 | type: integer 97 | value: 1 98 | - domain: 'com.apple.screencapture' 99 | key: 'type' 100 | type: string 101 | value: png 102 | - domain: 'NSGlobalDomain' 103 | key: 'KeyRepeat' 104 | type: integer 105 | value: 2 106 | - domain: 'NSGlobalDomain' 107 | key: 'InitialKeyRepeat' 108 | type: integer 109 | value: 15 110 | - domain: 'com.apple.menuextra.clock' 111 | key: 'DateFormat' 112 | type: string 113 | value: EEE MMM d HH:mm 114 | - domain: 'com.apple.menuextra.battery' 115 | key: 'ShowPercent' 116 | type: string 117 | value: 'YES' 118 | - domain: 'com.apple.finder' 119 | key: 'FXPreferredViewStyle' 120 | type: string 121 | value: "clmv" 122 | - domain: 'NSGlobalDomain' 123 | key: 'NSNavPanelExpandedStateForSaveMode' 124 | type: boolean 125 | value: true 126 | - domain: 'NSGlobalDomain' 127 | key: 'PMPrintingExpandedStateForPrint' 128 | type: boolean 129 | value: true 130 | - domain: 'com.apple.dock' 131 | key: 'tilesize' 132 | type: float 133 | value: 32 134 | - domain: 'com.apple.dock' 135 | key: 'autohide-time-modifier' 136 | type: int 137 | value: 0 138 | - domain: 'com.apple.dock' 139 | key: 'autohide-delay' 140 | type: int 141 | value: 0 142 | - domain: 'NSGlobalDomain' 143 | key: 'NSQuitAlwaysKeepsWindows' 144 | type: boolean 145 | value: false 146 | - domain: 'NSGlobalDomain' 147 | key: 'ApplePressAndHoldEnabled' 148 | type: boolean 149 | value: false 150 | - domain: 'com.apple.desktopservices' 151 | key: 'DSDontWriteNetworkStores' 152 | type: boolean 153 | value: true 154 | - domain: 'com.apple.print.PrintingPrefs' 155 | key: 'Quit When Finished' 156 | type: boolean 157 | value: true 158 | -------------------------------------------------------------------------------- /roderik.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: localhost 3 | connection: local 4 | 5 | vars_files: 6 | - vars/roderik-secrets.yml 7 | 8 | roles: 9 | - roderik.superlumic-osx-defaults 10 | - roderik.superlumic-homebrew 11 | - roderik.superlumic-cli 12 | - roderik.superlumic-computername 13 | - roderik.superlumic-vim 14 | 15 | tasks: 16 | - name: add a shortcut for archive in mail 17 | shell: defaults write com.apple.mail NSUserKeyEquivalents -dict-add "Archive" "@e" 18 | - name: install personal brew apps 19 | homebrew: name={{item}} state=latest 20 | with_items: 21 | - jq 22 | - nvm 23 | - mas 24 | - kubectl 25 | - kubectx 26 | - fzf 27 | - stern 28 | - aws-iam-authenticator 29 | - awscli 30 | - azure-cli 31 | - helm 32 | - helmfile 33 | - kompose 34 | - fastlane 35 | - ethereum 36 | - htop 37 | - minikube 38 | - gh 39 | - krew 40 | - nmap 41 | - derailed/k9s/k9s 42 | - pwgen 43 | - yarn 44 | - starship 45 | - cocoapods 46 | - watchman 47 | - yq 48 | - name: install personal cask applications 49 | homebrew_cask: name={{item}} state=present 50 | with_items: 51 | - kaleidoscope 52 | - hazel 53 | - tower 54 | - keepingyouawake 55 | - google-cloud-sdk 56 | - imageoptim 57 | - alfred 58 | - grammarly 59 | - plex 60 | - intellij-idea 61 | - cleanshot 62 | - visual-studio-code 63 | - font-fira-code 64 | - font-hack-nerd-font 65 | - font-poppins 66 | - google-chrome 67 | - docker 68 | - zoomus 69 | - daisydisk 70 | - discord 71 | - graphiql 72 | - studio-3t 73 | - microsoft-teams 74 | - mqtt-explorer 75 | - ledger-live 76 | - lens 77 | - spotify 78 | - sketch 79 | - istat-menus 80 | - slack 81 | - microsoft-office 82 | - name: '[App Store] See which apps are already installed' 83 | command: bash -c "mas list | cut -f 1 -d ' '" 84 | register: mas_list 85 | - name: '[App Store] Install Mac App Store applications' 86 | command: mas install {{ item.id }} 87 | when: item.id not in mas_list.stdout_lines 88 | with_items: 89 | - { id: '409183694', name: 'Keynote' } 90 | - { id: '1142578753', name: 'OmniGraffle' } 91 | - { id: '1333542190', name: '1Password 7' } 92 | - { id: '407963104', name: 'Pixelmator' } 93 | - { id: '1384080005', name: 'Tweetbot' } 94 | - { id: '409203825', name: 'Numbers' } 95 | - { id: '409201541', name: 'Pages' } 96 | - { id: '408981434', name: 'iMovie' } 97 | - { id: '425424353', name: 'The Unarchiver' } 98 | - { id: '1529448980', name: 'Reeder 5.' } 99 | - { id: '639968404', name: 'Parcel - Delivery Tracking' } 100 | - { id: '1482454543', name: 'Twitter' } 101 | - { id: '1462114288', name: 'Grammarly for Safari' } 102 | 103 | vars: 104 | - computername: gaia 105 | - preferred_shell: zsh 106 | - git_user_name: Roderik van der Veer 107 | - git_user_email: roderik@settlemint.com 108 | - osx_defaults: 109 | # Appearance 110 | # - domain: 'NSGlobalDomain' 111 | # key: 'AppleWindowTabbingMode' 112 | # type: string 113 | # value: "always" 114 | # Keyboard 115 | # - domain: 'NSGlobalDomain' 116 | # key: 'KeyRepeat' 117 | # type: integer 118 | # value: 2 119 | # - domain: 'NSGlobalDomain' 120 | # key: 'InitialKeyRepeat' 121 | # type: integer 122 | # value: 15 123 | # - domain: 'NSGlobalDomain' 124 | # key: 'NSAutomaticTextCompletionEnabled' 125 | # type: integer 126 | # value: 1 127 | # - domain: 'NSGlobalDomain' 128 | # key: 'NSAutomaticSpellingCorrectionEnabled' 129 | # type: integer 130 | # value: 1 131 | # - domain: 'NSGlobalDomain' 132 | # key: 'NSAutomaticQuoteSubstitutionEnabled' 133 | # type: integer 134 | # value: 1 135 | # - domain: 'NSGlobalDomain' 136 | # key: 'NSAutomaticDashSubstitutionEnabled' 137 | # type: integer 138 | # value: 1 139 | # - domain: 'NSGlobalDomain' 140 | # key: 'WebAutomaticSpellingCorrectionEnabled' 141 | # type: integer 142 | # value: 1 143 | # Trackpad 144 | # - domain: 'NSGlobalDomain' 145 | # key: 'com.apple.trackpad.scaling' 146 | # type: integer 147 | # value: 3 148 | # - domain: 'com.apple.AppleMultitouchTrackpad' 149 | # key: 'Clicking' 150 | # type: integer 151 | # value: 1 152 | # - domain: 'com.apple.AppleMultitouchTrackpad' 153 | # key: 'FirstClickThreshold' 154 | # type: integer 155 | # value: 2 156 | # - domain: 'com.apple.AppleMultitouchTrackpad' 157 | # key: 'SecondClickThreshold' 158 | # type: integer 159 | # value: 2 160 | # - domain: 'com.apple.driver.AppleBluetoothMultitouch.trackpad' 161 | # key: 'Clicking' 162 | # type: integer 163 | # value: 1 164 | # Dock 165 | # - domain: 'com.apple.dock' 166 | # key: 'autohide' 167 | # type: integer 168 | # value: 1 169 | # - domain: 'com.apple.dock' 170 | # key: 'largesize' 171 | # type: integer 172 | # value: 85 173 | # - domain: 'com.apple.dock' 174 | # key: 'magnification' 175 | # type: integer 176 | # value: 1 177 | # - domain: 'com.apple.dock' 178 | # key: 'showAppExposeGestureEnabled' 179 | # type: integer 180 | # value: 1 181 | # - domain: 'com.apple.dock' 182 | # key: 'minimize-to-application' 183 | # type: integer 184 | # value: 1 185 | # - domain: 'com.apple.dock' 186 | # key: 'show-process-indicators' 187 | # type: boolean 188 | # value: true 189 | # - domain: 'com.apple.dock' 190 | # key: 'orientation' 191 | # type: string 192 | # value: left 193 | # - domain: 'com.apple.dock' 194 | # key: 'tilesize' 195 | # type: float 196 | # value: 32 197 | - domain: 'com.apple.dock' 198 | key: 'autohide-time-modifier' 199 | type: int 200 | value: 0 201 | - domain: 'com.apple.dock' 202 | key: 'autohide-delay' 203 | type: int 204 | value: 0 205 | # Safari 206 | # - domain: 'com.apple.Safari' 207 | # key: 'IncludeInternalDebugMenu' 208 | # type: boolean 209 | # value: true 210 | # - domain: 'com.apple.Safari' 211 | # key: 'IncludeDevelopMenu' 212 | # type: boolean 213 | # value: true 214 | # - domain: 'com.apple.Safari' 215 | # key: 'WebKitDeveloperExtrasEnabledPreferenceKey' 216 | # type: boolean 217 | # value: true 218 | # - domain: 'com.apple.Safari' 219 | # key: 'com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled' 220 | # type: boolean 221 | # value: 'true' 222 | # - domain: 'NSGlobalDomain' 223 | # key: 'WebKitDeveloperExtras' 224 | # type: boolean 225 | # value: 'true' 226 | # - domain: 'com.apple.Safari.SandboxBroker' 227 | # key: 'ShowDevelopMenu' 228 | # type: integer 229 | # value: 1 230 | # Other 231 | # - domain: 'NSGlobalDomain' 232 | # key: 'NSTableViewDefaultSizeMode' 233 | # type: integer 234 | # value: 1 235 | # - domain: 'com.apple.screencapture' 236 | # key: 'type' 237 | # type: string 238 | # value: png 239 | # - domain: 'com.apple.menuextra.clock' 240 | # key: 'DateFormat' 241 | # type: string 242 | # value: EEE MMM d HH:mm 243 | # - domain: 'com.apple.menuextra.battery' 244 | # key: 'ShowPercent' 245 | # type: string 246 | # value: 'YES' 247 | # - domain: 'com.apple.finder' 248 | # key: 'FXPreferredViewStyle' 249 | # type: string 250 | # value: 'clmv' 251 | # - domain: 'NSGlobalDomain' 252 | # key: 'NSNavPanelExpandedStateForSaveMode' 253 | # type: boolean 254 | # value: true 255 | # - domain: 'NSGlobalDomain' 256 | # key: 'PMPrintingExpandedStateForPrint' 257 | # type: boolean 258 | # value: true 259 | # - domain: 'NSGlobalDomain' 260 | # key: 'NSQuitAlwaysKeepsWindows' 261 | # type: boolean 262 | # value: false 263 | # - domain: 'com.apple.desktopservices' 264 | # key: 'DSDontWriteNetworkStores' 265 | # type: boolean 266 | # value: true 267 | # - domain: 'com.apple.print.PrintingPrefs' 268 | # key: 'Quit When Finished' 269 | # type: boolean 270 | # value: true 271 | --------------------------------------------------------------------------------