diff --git a/README.md b/README.md index 710174b..a2276e7 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,10 @@ You can override any of the defaults configured in `default.config.yml` by creat pip_packages: - name: mkdocs + + configure_dock: true + dockitems_remove: [] + dockitems_persist: [] Any variable can be overridden in `config.yml`; see the supporting roles' documentation for a complete list of available variables. @@ -144,13 +148,11 @@ Finally, there are a few other preferences and settings added on for various app It's my hope that I can get the rest of these things wrapped up into Ansible playbooks soon, but for now, these steps need to be completed manually (assuming you already have Xcode and Ansible installed, and have run this playbook). - 1. Set JJG-Term as the default Terminal theme (it's installed, but not set as default automatically). - 2. Install [Sublime Package Manager](http://sublime.wbond.net/installation). - 3. Install all the apps that aren't yet in this setup (see below). - 4. Remap Caps Lock to Escape (requires macOS Sierra 10.12.1+). - 5. Set trackpad tracking rate. - 6. Set mouse tracking rate. - 7. Configure extra Mail and/or Calendar accounts (e.g. Google, Exchange, etc.). + 1. Install [Sublime Package Manager](http://sublime.wbond.net/installation). + 2. Remap Caps Lock to Escape (requires macOS Sierra 10.12.1+). + 3. Set trackpad tracking rate. + 4. Set mouse tracking rate. + 5. Configure extra Mail and/or Calendar accounts (e.g. Google, Exchange, etc.). ### Configuration to be added: diff --git a/ansible.cfg b/ansible.cfg index 1b00cf9..a823e99 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -1,3 +1,4 @@ [defaults] nocows = True roles_path = ./roles:/etc/ansible/roles +stdout_callback = yaml diff --git a/default.config.yml b/default.config.yml index 8293cc7..b62bdfc 100644 --- a/default.config.yml +++ b/default.config.yml @@ -5,6 +5,17 @@ configure_dotfiles: true configure_terminal: true configure_osx: true +# Set to 'true' to configure the Dock via dockutil. +configure_dock: false +dockitems_remove: [] +# - Launchpad +# - TV +# - Podcasts +# - 'App Store' +dockitems_persist: [] +# - name: "Sublime Text" +# path: "/Applications/Sublime Text.app/" + configure_sudoers: false sudoers_custom_config: '' # Example: diff --git a/main.yml b/main.yml index caf41f8..9097009 100644 --- a/main.yml +++ b/main.yml @@ -40,6 +40,10 @@ - import_tasks: tasks/extra-packages.yml tags: ['extra-packages'] + - import_tasks: tasks/dock.yml + when: configure_dock + tags: ['dock'] + - name: Run configured post-provision ansible task files. include_tasks: "{{ outer_item }}" loop_control: diff --git a/tasks/dock-add.yml b/tasks/dock-add.yml new file mode 100644 index 0000000..fe9c843 --- /dev/null +++ b/tasks/dock-add.yml @@ -0,0 +1,12 @@ +--- +- name: See if Dock item {{ item }} exists. + ansible.builtin.command: "dockutil --find '{{ item.name }}'" + register: dockitem_exists + failed_when: '"No such file or directory" in dockitem_exists.stdout' + changed_when: false + tags: ['dock'] + +- name: Ensure Dock item {{ item }} exists. + ansible.builtin.command: "dockutil --add '{{ item.path }}'" + when: dockitem_exists.rc >0 + tags: ['dock'] diff --git a/tasks/dock-remove.yml b/tasks/dock-remove.yml new file mode 100644 index 0000000..c22bd0d --- /dev/null +++ b/tasks/dock-remove.yml @@ -0,0 +1,14 @@ +--- +- name: find if dock item exists + ansible.builtin.command: + cmd: dockutil --find '{{ item }}' + register: dockitem_exists + changed_when: false + failed_when: '"No such file or directory" in dockitem_exists.stdout' + tags: ['dock'] + +- name: Ensure unwanted dock items removed. + ansible.builtin.command: + cmd: dockutil --remove '{{ item }}' + when: dockitem_exists.rc == 0 + tags: ['dock'] diff --git a/tasks/dock.yml b/tasks/dock.yml new file mode 100644 index 0000000..d1130ee --- /dev/null +++ b/tasks/dock.yml @@ -0,0 +1,23 @@ +--- +- name: Install dockutil. + homebrew: + name: dockutil + state: present + notify: + - Clear homebrew cache + +- name: Remove configured Dock items. + ansible.builtin.include_tasks: tasks/dock-remove.yml + loop: "{{ dockitems_remove }}" + +- name: Ensure required dock items exist. + ansible.builtin.include_tasks: tasks/dock-add.yml + loop: "{{ dockitems_persist }}" + +- name: Ensure correct Dock order. + ansible.builtin.command: + cmd: dockutil --move '{{ item.name }}' --position '{{ item.pos }}' + when: + - item.pos is defined + - item.pos length >0 + loop: "{{ dockitems_persist }}" diff --git a/tasks/osx.yml b/tasks/osx.yml index c6c5b45..ec12cd5 100644 --- a/tasks/osx.yml +++ b/tasks/osx.yml @@ -3,4 +3,3 @@ - name: Run .osx dotfiles. command: "{{ osx_script }}" changed_when: false - tags: ['osx']