Multi-OS system preferences configuration with support for macOS, Arch Linux, and Debian.
preferences/
├── macos/ # macOS-specific preferences
│ ├── macos.sh # Entry point for macOS
│ ├── apps/ # Application preferences
│ │ ├── terminal/
│ │ ├── finder.sh
│ │ ├── safari.sh
│ │ ├── mail.sh
│ │ └── ...
│ ├── system/ # System preferences
│ │ ├── dock.sh
│ │ ├── keyboard.sh
│ │ ├── trackpad.sh
│ │ └── ...
│ └── close_system_preferences_panes.applescript
├── arch/ # Arch Linux-specific preferences
│ └── arch.sh
├── debian/ # Debian-specific preferences
│ └── debian.sh
├── universal/ # Cross-platform preferences
│ └── universal.sh
└── preferences.sh # Entry point with OS detection
- Supported Versions: macOS Sonoma (14.5) and newer
- Applications: Terminal, Finder, Safari, Mail, Messages, Photos, TextEdit, Activity Monitor, Maps, App Store
- System Settings: Dock, Keyboard, Trackpad, Screen, Dashboard, Language & Region, UI/UX, Security
- Desktop environment preferences (to be configured)
- System-level preferences (to be configured)
- Desktop environment preferences (to be configured)
- System-level preferences (to be configured)
Download, review, then execute the script:
source /dev/stdin <<<"$(curl -s "https://raw.githubusercontent.com/dotbrains/preferences-module/master/preferences.sh")"It should take a few minutes to install.
The script automatically detects your OS and applies the appropriate preferences:
bash preferences.shmacOS only:
bash macos/macos.shArch Linux only:
bash arch/arch.shDebian only:
bash debian/debian.shUniversal (cross-platform) only:
bash universal/universal.shpreferences.shdetects your OS using utilities functions (is_macos,is_arch,is_debian)- Routes to appropriate OS-specific script
- OS-specific script applies all relevant preferences for that platform
For macOS:
- Create new script in
macos/apps/ormacos/system/ - Make it executable:
chmod +x <script>.sh - Add call to
macos/macos.sh
For Arch/Debian:
- Create preference scripts in respective OS directory
- Make executable and add to the OS-specific entry script
For Universal:
- Add cross-platform configurations to
universal/universal.sh
- Create new directory:
fedora/,opensuse/, etc. - Create OS-specific entry script:
fedora/fedora.sh - Update
preferences.shwith OS detection logic - Implement OS-specific preferences
✅ Multi-OS support: Works across macOS, Arch Linux, and Debian
✅ Clear separation: OS-specific configurations are isolated
✅ Safe to run multiple times: Scripts are idempotent
✅ Extensible: Easy to add new OSes or preferences
✅ Maintainable: Organized structure for easy updates
This script requires the dotbrains/utilities functions for OS detection and common operations.
The code is available under the MIT license.