{"id":21664387,"url":"https://github.com/wayofdev/ansible-role-mac-cfg","last_synced_at":"2025-04-12T00:16:15.550Z","repository":{"id":41555148,"uuid":"482601511","full_name":"wayofdev/ansible-role-mac-cfg","owner":"wayofdev","description":"Ansible role to configure macOS using built-in os utilities.","archived":false,"fork":false,"pushed_at":"2023-12-04T09:33:34.000Z","size":295,"stargazers_count":13,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-12T00:16:07.391Z","etag":null,"topics":["ansible","ansible-role","automation","macos","mdm","osx-setup","provisioning"],"latest_commit_sha":null,"homepage":"https://wayof.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wayofdev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"wayofdev"}},"created_at":"2022-04-17T18:24:47.000Z","updated_at":"2024-05-20T08:28:55.000Z","dependencies_parsed_at":"2024-11-25T10:38:27.359Z","dependency_job_id":null,"html_url":"https://github.com/wayofdev/ansible-role-mac-cfg","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wayofdev%2Fansible-role-mac-cfg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wayofdev%2Fansible-role-mac-cfg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wayofdev%2Fansible-role-mac-cfg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wayofdev%2Fansible-role-mac-cfg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wayofdev","download_url":"https://codeload.github.com/wayofdev/ansible-role-mac-cfg/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248497818,"owners_count":21113984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","ansible-role","automation","macos","mdm","osx-setup","provisioning"],"created_at":"2024-11-25T10:37:22.132Z","updated_at":"2025-04-12T00:16:15.520Z","avatar_url":"https://github.com/wayofdev.png","language":"Python","funding_links":["https://github.com/sponsors/wayofdev"],"categories":[],"sub_categories":[],"readme":"\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"456\" src=\"https://raw.githubusercontent.com/wayofdev/ansible-role-tpl/master/assets/logo.gh-light-mode-only.png#gh-light-mode-only\"\u003e\n\u003cimg width=\"456\" src=\"https://raw.githubusercontent.com/wayofdev/ansible-role-tpl/master/assets/logo.gh-dark-mode-only.png#gh-dark-mode-only\"\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://actions-badge.atrox.dev/wayofdev/ansible-role-mac-cfg/goto\"\u003e\u003cimg alt=\"Build Status\" src=\"https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fwayofdev%2Fansible-role-mac-cfg%2Fbadge\u0026style=flat-square\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://galaxy.ansible.com/wayofdev/maccfg\"\u003e\u003cimg alt=\"Ansible Role\" src=\"https://img.shields.io/ansible/role/59609?style=flat-square\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/wayofdev/ansible-role-mac-cfg/tags\"\u003e\u003cimg src=\"https://img.shields.io/github/v/tag/wayofdev/ansible-role-mac-cfg?sort=semver\u0026style=flat-square\" alt=\"Latest Version\"\u003e\u003c/a\u003e\n\u003ca href=\"https://galaxy.ansible.com/wayofdev/maccfg\"\u003e\u003cimg alt=\"Ansible Quality Score\" src=\"https://img.shields.io/ansible/quality/59609?style=flat-square\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://galaxy.ansible.com/wayofdev/maccfg\"\u003e\u003cimg alt=\"Ansible Role\" src=\"https://img.shields.io/ansible/role/d/59609?style=flat-square\"/\u003e\u003c/a\u003e\n\u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/wayofdev/ansible-role-mac-cfg.svg?style=flat-square\u0026color=blue\" alt=\"Software License\"/\u003e\u003c/a\u003e\n\u003ca href=\"#\"\u003e\u003cimg alt=\"Commits since latest release\" src=\"https://img.shields.io/github/commits-since/wayofdev/ansible-role-mac-cfg/latest?style=flat-square\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n# Ansible Role: macOS config Automation\n\nRole is used to automate use of macOS [defaults](https://support.apple.com/en-gb/guide/terminal/apda49a1bb2-577e-4721-8f25-ffc0836f6997/mac) command to configure system settings. Also, additionally, there is available [duti](https://github.com/moretension/duti) tool, which assigns applications to default document types. And all that in automated way!\n\nExample mods that come enabled by default:\n\n* Finder - Disable the warning before emptying the Trash\n* Finder - Show bottom path bar by default\n* Finder - Disable the warning when changing a file extension\n* Text - Do not disable smart quotes, but set them as simple one's, instead of smart\n* and many more...\n\nThese defaults are used by wayofdev members, but you may override them by defining your own playbook with your config.\n\nIf you **like/use** this role, please consider **starring** it. Thanks!\n\n\u003cbr\u003e\n\n## 🗂 Table of contents\n\n* [Requirements](#-requirements)\n* [Role Variables](#-role-variables)\n  * [Applications](#-applications)\n  * [Dock](#-dock)\n  * [Finder](#-finder)\n  * [Input](#-input)\n  * [Language \u0026 Region](#-language--region)\n  * [Network](#-network)\n  * [Power](#-power)\n  * [Safari](#-safari)\n  * [Screensaver](#-screensaver)\n  * [Screenshots](#-screenshots)\n  * [Security](#-security)\n  * [UI](#-ui)\n* [Example Playbook](#-example-playbook)\n* [Development](#-development)\n* [Testing](#-testing)\n  * [on localhost](#-on-localhost)\n  * [over SSH](#-over-ssh)\n* [Dependencies](#-dependencies)\n* [Compatibility](#-compatibility)\n* [License](#-license)\n* [Author Information](#-author-information)\n* [Credits and Resources](#-credits-and-resources)\n* [Contributors](#-contributors)\n\n\u003cbr\u003e\n\n## 📑 Requirements\n\n  - **Homebrew**: Requires `homebrew` already installed (you can use `wayofdev.homebrew` to install it on your macOS).\n  - Up-to-date version of ansible. During maintenance/development, we stick to ansible versions and will use new features if they are available (and update `meta/main.yml` for the minimum version).\n- Compatible OS. See [compatibility](#-compatibility) table.\n- Role has dependencies on third-party roles on different operating systems. See `requirements.yml` and [dependencies](#-dependencies) section.\n\n\u003cbr\u003e\n\n## 🔧 Role Variables\n\nSection shows all possible variants of adding, moving, replacing and removing of applications, spacers, folders. Available variables are listed below, along with example values (see `defaults/main.yml`):\n\n\u003cbr\u003e\n\n### → Applications\n\nConfigures some of built-in macOS applications.\n\n* Activity Monitor\n\n```yaml\n# Show the main window when launching app.\nmaccfg_activity_monitor_show_main_window: true\n\n# Show all processes.\nmaccfg_activity_monitor_show_category: 0\n\n# Sort Activity Monitor results\nmaccfg_activity_monitor_sort_by: \"CPUUsage\"\n\n# Activity Monitor: Sort Direction\n# 0 goes for DSC\nmaccfg_activity_monitor_sort_direction: 0\n```\n\n* Mail.app\n\n```yaml\n# Copy email addresses as `foo@example.com` instead of `Foo Bar \u003cfoo@example.com\u003e` in Mail.app.\nmaccfg_mail_use_advanced_copy_format: false\n```\n\n*  MacOS Photos.app\n\n```yaml\n# Prevent Photos from opening automatically when devices are plugged in.\nmaccfg_photos_disable_hotplug: true\n```\n\n* Other applications\n\n```YAML\n# Add iOS Simulator to Launchpad.\nmaccfg_other_create_simulator_symlink: false\n```\n\n\u003cbr\u003e\n\n### → Dock\n\n```yaml\n# Drag a file over an icon in the Dock, hover, and the application will open.\n# https://macos-defaults.com/misc/enable-spring-load-actions-on-all-items.html\nmaccfg_dock_enable_spring_load_everywhere: true\n\n# Don’t show recent applications in Dock\nmaccfg_dock_show_recents: false\n```\n\n* Hot Corners\n\n```yaml\n### Hot Corners\n\n# Possible values:\n#  0: no-op\n#  2: Mission Control\n#  3: Show application windows\n#  4: Desktop\n#  5: Start screen saver\n#  6: Disable screen saver\n#  7: Dashboard\n# 10: Put display to sleep\n# 11: Launchpad\n# 12: Notification Center\n\n# Bottom right screen corner → Start screen saver\nmaccfg_dock_bottom_left_corner: 5\nmaccfg_dock_bottom_left_modifier: 0\n\n# Bottom right screen corner → Launchpad\nmaccfg_dock_bottom_right_corner: 11\nmaccfg_dock_bottom_right_modifier: 0\n```\n\n* Mission Control\n\n```yaml\n# Mission Control - Speed up animations\nmaccfg_dock_expose_animation_duration: \"0.1\"\n```\n\n\u003cbr\u003e\n\n### → Finder\n\n```yaml\n# Allow quitting via ⌘ + Q; doing so will also hide desktop icons\nmaccfg_finder_allow_quitting: true\n\n# What path should new finder windows open\n# Computer     : `PfCm`\n# Volume       : `PfVo`\n# $HOME        : `PfHm`\n# Desktop      : `PfDe`\n# Documents    : `PfDo`\n# Recents      : `PfAF`\n# Other…       : `PfLo`\n#\n# Set Desktop as the default location for new Finder windows by default\nmaccfg_finder_new_window_target: \"PfDe\"\nmaccfg_finder_new_window_target_path: \"file://~/Desktop/\"\n\n# Set search scope.\n# This Mac       : `SCev`\n# Current Folder : `SCcf`\n# Previous Scope : `SCsp`\nmaccfg_finder_search_scope: \"SCcf\"\n\n# Set preferred view mode.\n# Icon View   : `icnv`\n# List View   : `Nlsv`\n# Column View : `clmv`\n# Cover Flow  : `Flwv`\n# Use column view in all Finder windows by default\nmaccfg_finder_view_mode: \"clmv\"\n\n# Show path bar in Finder (Example: 751 items ... 351 GB left ...)\nmaccfg_finder_show_path_bar: true\n\n# Keep folders on top when sorting by name\nmaccfg_finder_keep_folders_on_top: true\n\n# Disable the warning when changing a file extension\nmaccfg_finder_disable_extension_change_warning: true\n\n# Show status bar\nmaccfg_finder_show_status_bar: true\n\n# Show bottom path bar by default\nmaccfg_finder_show_bottom_path_bar: true\n\n# Avoid creating .DS_Store files on network volumes\nmaccfg_finder_avoid_dsstore_on_network_volumes: true\n\n# Avoid creating .DS_Store files on USB volumes\nmaccfg_finder_avoid_dsstore_on_usb_volumes: true\n\n# Disable the warning before emptying the Trash\nmaccfg_finder_disable_trash_warning: true\n\n# Display full POSIX path as Finder window title\nmaccfg_finder_show_full_title: true\n\n# Show all filename extensions\nmaccfg_finder_show_all_file_exts: false\n\n# Expand the following File Info panes: General, Open With, Sharing \u0026 Permissions\nmaccfg_finder_expand_fileinfo_panels: true\n\n# Show icons for external hard drives on Desktop\nmaccfg_finder_desktop_show_ext_hard_drives: true\n\n# Show icons for hard drives on Desktop\nmaccfg_finder_desktop_show_hard_drives: false\n\n# Show icons for mounted servers on Desktop\nmaccfg_finder_desktop_show_mounted_servers: false\n\n# Show icons for removable media on Desktop\nmaccfg_finder_desktop_show_removable_media: true\n\n# Show the ~/Library folder in finder\nmaccfg_finder_unhide_library_folder: true\n\n# Show the ~/Users folder in finder\nmaccfg_finder_unhide_users_folder: true\n\n# Install duti - utility to allow to change default file types.\nmaccfg_finder_install_duti: true\n\n# Prefer custom editor over default TextEdit for plain text files.\n# Works only if flag 'install_duti' is set to true\n# Examples\n# com.sublimetext.3\n# com.sublimetext.4\n# com.microsoft.VSCode\nmaccfg_finder_default_editor: \"com.sublimetext.4\"\n```\n\n\u003cbr\u003e\n\n### → Input\n\n```yaml\n# Disable natural scroll for mouse and trackpad.\nmaccfg_input_use_native_macos_scroll: false\n```\n\n* Keyboard\n\n```yaml\n# For 0 - Use F1, F2, etc. keys as Brightness/Media\n# For 1 - Use F1, F2, etc. keys as standard function keys on external keyboards each key.\nmaccfg_input_keyboard_fn_key_state: 1\n\n# What should happen when pressing Fn key?\n# 0 - Do Nothing\n# 1 - Change Input Source\n# 2 - Show Emoji \u0026 Symbols\n# 3 - Start Dictation (Press Twice)\nmaccfg_input_keyboard_fn_usage_type: 2\n```\n\n* Text\n\n```yaml\n# Disable text auto-correction in native apps.\nmaccfg_input_text_disable_auto_correction: true\n\n# Disable text autocorrection in web.\nmaccfg_input_text_disable_web_auto_correction: true\n\n# Do not disable smart quotes, but set them as simple one's, instead of smart.\n# Use \"\" for double quotes and '' for single quotes\nmaccfg_input_text_use_simple_quotes: true\n```\n\n* Mouse\n\n```yaml\n# Magic mouse should run in two button mode\nmaccfg_input_mouse_two_button_mode: true\n\n# Magic mouse - enable double tap gesture for zoom\nmaccfg_input_mouse_double_tap_gesture: true\n```\n\n* Trackpad\n\n```yaml\n# Map bottom right corner to right-click for integrated trackpad\nmaccfg_input_trackpad_bottom_right_click_trackpad: true\n\n# Map bottom right corner to right-click for bluetooth trackpad\nmaccfg_input_trackpad_bottom_right_click_bt_trackpad: true\n```\n\n* Shortcuts\n\n```yaml\n# Allow global app shortcuts\nmaccfg_input_shortcuts_allow: true\n\n# Enable global shortcut – ⌥⌘, brings up System Preferences dialog (opt+cmd+comma)\nmaccfg_input_shortcuts_opt_cmd_comma: true\n```\n\n\u003cbr\u003e\n\n### → Language \u0026 Region\n\n```yaml\n# Set the timezone; see `sudo systemsetup -listtimezones` for other values\nmaccfg_lang_timezone: \"Europe/Riga\"\n\n# Set main languages - English US, Latvian - LV, Latvian - RU.\nmaccfg_lang_languages:\n  - en-US\n  - lv-LV\n  - ru-LV\n\nmaccfg_lang_locale: \"en_US@currency=EUR\"\n\n# Use metric measurement units.\nmaccfg_lang_metric_units: true\n\n# Set \"AppleMeasurementUnits\" setting to centimeters.\nmaccfg_lang_apple_units: Centimeters\n\n# Enables the input menu in the menu bar.\nmaccfg_lang_inputs_in_status_bar: true\n\n# List of input sources.\nmaccfg_lang_input_sources:\n  # Default input sources.\n  - name: \"ABC\"\n    id: 252\n  - name: \"Latvian\"\n    id: 30765\n  - name: \"Russian - Phonetic\"\n    id: 19457\n```\n\n\u003cbr\u003e\n\n### → Network\n\n```yaml\n# Perform hostname change? On remote machines can cause connection lose.\nmaccfg_network_change_hostname: true\n\n# This mac-book's hostname\n# On macOS, this module uses scutil to set HostName, ComputerName, and LocalHostName\nmaccfg_network_hostname: \"mbpro-{{ remote_regular_user }}\"\n```\n\n\u003cbr\u003e\n\n### → Power\n\nSection controls how mac power will be managed on charger or battery:\n\n```yaml\n# Mostly here 'pmset' utility is used. For reference see:\n# https://www.dssw.co.uk/reference/pmset.html\n#\n# To get total regular \u0026 safe sleep set following parameters to these values:\n# powernap: false\n# womp: false\n# tcpkeepalive: false\n# ttyskeepawake false\n#\n# Restart automatically if the computer freezes\nmaccfg_power_restart_on_freeze: true\n\n###\n# Settings to apply when device is on A/C charger.\n###\n\n# Wake the machine when the laptop lid is opened\nmaccfg_power_on_charger_lidwake: true\n\n# Prevent idle system sleep when any tty (e.g. remote login session) is ’active’.\nmaccfg_power_on_charger_ttyskeepawake: true\n\n# https://support.apple.com/en-gb/guide/mac-help/mh40773/mac\n#\n# Power Nap, available on Mac computers with flash memory, lets some Mac computers stay up to date\n# even while they’re sleeping. When your Mac goes to sleep, Power Nap activates periodically to update information.\n# The information that’s updated depends on whether your Mac is running on battery power (a Mac notebook computer)\n# or plugged into a power adapter (a Mac notebook computer or Mac desktop computer).\n# When your Mac is asleep and using battery power, Power Nap:\n# * Checks for new messages in Mail\n# * Updates events in Calendar\n# * Updates other iCloud events\n# When your Mac is plugged into a power adapter, Power Nap can also do activities such as\n# downloading software updates and performing Time Machine backups.\nmaccfg_power_on_charger_powernap: true\n\n# Set hibernate mode:\n# hibernatemode = 0 (binary 0000) by default on supported desktops. The system will not back memory up to\n#   persistent storage. The system must wake from the contents of memory; the system will lose context on\n#   power loss. This is, historically, plain old sleep.\n#\n# hibernatemode = 3 (binary 0011) by default on supported portables. The system will store a copy of mem-ory memory\n#   ory to persistent storage (the disk), and will power memory during sleep. The system will wake from\n#   memory, unless a power loss forces it to restore from disk image.\n#\n# hibernatemode = 25 (binary 0001 1001) is only settable via pmset. The system will store a copy of mem-ory memory\n#   ory to persistent storage (the disk), and will remove power to memory. The system will restore from\n#   disk image. If you want \"hibernation\" - slower sleeps, slower wakes, and better battery life, you\n#   should use this setting.\nmaccfg_power_on_charger_hibernatemode: 3\n\n# Display sleep timer\nmaccfg_power_on_charger_displaysleep: 15\n\n# Wake on ethernet magic packet. Same as \"Wake for network access\" in the Energy Saver preferences.\nmaccfg_power_on_charger_womp: true\n\n# System sleep timer (value in minutes, or 0 to disable)\nmaccfg_power_on_charger_sleep: 0\n\n# Wake for network access\nmaccfg_power_on_charger_tcpkeepalive: true\n\n# Display sleep will use an intermediate half-brightness state between full brightness and fully off\nmaccfg_power_on_charger_halfdim: true\n\n# Wake the machine when power source (AC/battery) is changed\nmaccfg_power_on_charger_acwake: false\n\n# https://apple.stackexchange.com/a/342286\n# Not used with SSD's\nmaccfg_power_on_charger_disksleep: 0\n\n###\n# Settings to apply when device is using battery.\n###\nmaccfg_power_on_battery_lidwake: true\nmaccfg_power_on_battery_ttyskeepawake: false\nmaccfg_power_on_battery_powernap: false\nmaccfg_power_on_battery_hibernatemode: 3\nmaccfg_power_on_battery_displaysleep: 15\nmaccfg_power_on_battery_sleep: 30\nmaccfg_power_on_battery_tcpkeepalive: false\nmaccfg_power_on_battery_halfdim: true\nmaccfg_power_on_battery_acwake: false\nmaccfg_power_on_battery_disksleep: 0\n```\n\n\u003cbr\u003e\n\n### → Safari\n\n```yaml\n# Safari: Enable Develop menu and the Web Inspector in Safari 14+\nmaccfg_safari_web_inspector: true\n\n# Safari: Change default homepage\nmaccfg_safari_homepage: \"https://app.daily.dev/\"\n\n# Safari: Setup new tab behavior\n# 0: Homepage\n# 1: Empty Page\n# 2: Same Page\n# 3: Bookmarks\n# 4: Top Sites\nmaccfg_safari_tab_behaviour: 0\n\n# Safari: Setup new window behavior\n# 0: Homepage\n# 1: Empty Page\n# 2: Same Page\n# 3: Bookmarks\n# 4: Top Sites\nmaccfg_safari_window_behaviour: 0\n```\n\n\u003cbr\u003e\n\n### → Screensaver\n\n```yaml\n# Set default system screensaver\n# Available:\n# \"Album Artwork\"\n# \"Arabesque\"\n# \"Drift\"\n# \"FloatingMessage\"\n# \"Flurry\"\n# \"Hello\"\n# \"Monterey\"\n# \"Random\"\n# \"Shell\"\n# \"Word of the Day\"\nmaccfg_screensaver_name: \"Flurry\"\n\n# Show clock when screensaver is running\nmaccfg_screensaver_show_clock: true\n\n# Show screen saver after:\n# Please choose these values, as OSX use dropdown in UI\n#\n# 0 - do not use screensaver\n# 60 - 1 minute\n# 120 - 2 minutes\n# 300 - 5 minutes\n# 600 - 10 minutes\n# 1200 - 20 minutes\n# 1800 - 30 minutes\n# 3600 - 1 hour\nmaccfg_screensaver_start_after: 300\n```\n\n\u003cbr\u003e\n\n### → Screenshots\n\n```yaml\n# Save to custom folder instead of Desktop.\nmaccfg_screenshots_directory: \"/Users/{{ remote_regular_user }}/Screenshots\"\n\n# Change the default file name prefix.\nmaccfg_screenshots_use_prefix: \"src\"\n```\n\n\u003cbr\u003e\n\n### → Security\n\nSection of  macOS's **System Preferences** → **Security \u0026 Privacy** and **Software Update**.\n\n```yaml\n# Require password when screen awakes.\nmaccfg_security_require_pass_after_awake: true\n\n# Require password immediately after sleep or screen saver begins\n# 0 is for immediate password require\nmaccfg_security_require_pass_delay: 0\n\n# Turn off Feedback Assistant data auto-gathering.\nmaccfg_privacy_apple_feedback_assistant: false\n\n# Turn off personalized ads, a little less tracking from apple side...\nmaccfg_privacy_disable_personalized_ads: true\n```\n\n* **Firewall**\n\n```yaml\n# Turn on system firewall.\n# Turned off by default.\n# If this role is used with dev-env-osx playbook, then lulu firewall is used instead.\n# Modes:\n# https://discussions.apple.com/thread/3148672\n# 0 - disabled\n# 1 - enabled in \"open\" mode\n# 2 - enabled in \"strict\" mode\nmaccfg_firewall_mode: 0\n```\n\n* **Updates**\n\n```yaml\n# Check for software updates once per week\n# Default: 7 (in days)\nmaccfg_updates_delay_days: 7\n```\n\n* **Filevault**\n\n```yaml\n# FileVault full-disk encryption with a 256-bit key to help prevent unauthorized access to the information on startup disk.\n# Can be risky to enable it on remote machines!\nmaccfg_filevault_enabled: true\n```\n\n\u003cbr\u003e\n\n### → UI\n\n```yaml\n# Expand save panel by default.\nmaccfg_ui_expand_save_panel: true\n\n# Expand save panel by default.\nmaccfg_ui_expand_print_panel: true\n\n# Automatically quit printer app once the print jobs complete.\nmaccfg_ui_quit_print_job: true\n\n# Reveal IP address, hostname, OS version, etc. when clicking the clock in the login window (only).\nmaccfg_ui_login_clock_clickable: true\n\n# Show bluetooth in menu bar.\nmaccfg_ui_menu_bar_bluetooth_icon: true\n```\n\n\u003cbr\u003e\n\n## 📗 Example Playbook\n\n```yaml\n---\n- hosts: all\n\n  # is needed when running over SSH\n  environment:\n    - PATH: \"/usr/local/bin:/usr/local/sbin:/opt/homebrew/bin:{{ ansible_env.PATH }}\"\n\n  vars:\n    maccfg_filevault_enabled: false\n\n  roles:\n    - wayofdev.homebrew\n    - wayofdev.maccfg\n```\n\n\u003cbr\u003e\n\n## ⚙️ Development\n\nTo install dependencies and start development you can check contents of our `Makefile`\n\n**Install** [poetry](https://github.com/python-poetry/poetry) using [poetry-bin](https://github.com/gi0baro/poetry-bin) and all dev python dependencies:\n\n```bash\n$ make install\n```\n\n**Install** only python dependencies, assuming that you already have poetry:\n\n```bash\n$ make install-deps\n```\n\n**Install** all git hooks:\n\n```bash\n$ make hooks\n```\n\n**Lint** all role files:\n\n```bash\n$ make lint\n```\n\n\u003cbr\u003e\n\n## 🧪 Testing\n\nYou can check `Makefile` to get full list of commands for remote and local testing. For local testing you can use these comands to test whole role or separate tasks:\n\n### → on localhost\n\n\u003e :warning: **Notice**: By defaut all tests are running against your local machine!\n\n```bash\n# run molecule tests on localhost\n$ poetry run molecule test --scenario-name default-macos-on-localhost -- -vvv\n\n# or with make command\n$ make m-local\n\n# choose which tags will be included\n$ export TASK_TAGS=\"dock-validate,dock-install\"; make m-local\n```\n\n\u003cbr\u003e\n\n### → over SSH\n\n```bash\n# run molecule scenarios against remote machines over SSH\n# this will need VM setup and configuration\n$ poetry run molecule test --scenario-name default-macos-over-ssh -- -vvv\n\n$ make m-remote\n\n# tags also can be passed\n$ export TASK_TAGS=\"dock-validate,dock-install\"\n$ make m-remote\n```\n\n\u003cbr\u003e\n\n## 📦 Dependencies\n\nInstallation handled by `Makefile` and requirements are defined in `requirements.yml`\n\n  - [wayofdev.homebrew](https://github.com/wayofdev/ansible-role-homebrew) - soft dependency, required if Homebrew isn't installed yet and only if you need `duti`\n  - [ansible.community.general](https://docs.ansible.com/ansible/latest/collections/community/general/index.html)\n\n\u003cbr\u003e\n\n## 🧩 Compatibility\n\nThis role has been tested on these systems:\n\n| system / container | tag      |\n| :----------------- | -------- |\n| macos              | monterey |\n| macos              | big-sur  |\n\n\u003cbr\u003e\n\n## 🤝 License\n\n[![Licence](https://img.shields.io/github/license/wayofdev/ansible-role-dock?style=for-the-badge\u0026color=blue)](./LICENSE)\n\n\u003cbr\u003e\n\n## 🙆🏼‍♂️ Author Information\n\nThis role was created in **2022** by [lotyp / wayofdev](https://github.com/wayofdev).\n\n\u003cbr\u003e\n\n## 🧱 Credits and Resources\n\n**Useful resources:**\n\n* [duti](https://github.com/moretension/duti)\n\n\u003cbr\u003e\n\n## 🫡 Contributors\n\n\u003cimg align=\"left\" src=\"https://img.shields.io/github/contributors-anon/wayofdev/ansible-role-dock?style=for-the-badge\"/\u003e\n\n\u003ca href=\"https://github.com/wayofdev/ansible-role-maccfg/graphs/contributors\"\u003e\n  \u003cimg src=\"https://opencollective.com/wod/contributors.svg?width=890\u0026button=false\"\u003e\n\u003c/a\u003e\n\n\u003cbr\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwayofdev%2Fansible-role-mac-cfg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwayofdev%2Fansible-role-mac-cfg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwayofdev%2Fansible-role-mac-cfg/lists"}