diff --git a/default.config.yml b/default.config.yml
index cbf4ec40f..9001099c7 100644
--- a/default.config.yml
+++ b/default.config.yml
@@ -71,6 +71,9 @@ mas_email: ""
 mas_password: ""
 
 osx_script: "~/.osx --no-restart"
+osx_use_dotfile: true
+osx_use_defaults: false
+osx_defaults: []
 
 # Install packages from other package managers.
 # Note: You are responsible for making sure the required package managers are
diff --git a/tasks/osx.yml b/tasks/osx.yml
index b952d90db..fbad9e06d 100644
--- a/tasks/osx.yml
+++ b/tasks/osx.yml
@@ -1,5 +1,16 @@
 ---
+- name: Run macOS defaults.
+  osx_defaults:
+    domain: "{{ item.domain }}"
+    key: "{{ item.key }}"
+    type: "{{ item.type }}"
+    value: "{{ item.value }}"
+    state: "{{ item.state | default('present') }}"
+  with_items: "{{ osx_defaults }}"
+  when: osx_use_defaults
+
 # TODO: Use sudo once .osx can be run via root with no user interaction.
 - name: Run .osx dotfiles.
   shell: "{{ osx_script }}"
   changed_when: false
+  when: osx_use_dotfile