diff --git a/scripts/macos-defaults.sh b/scripts/macos-defaults.sh
new file mode 100755
index 0000000..a7c307f
--- /dev/null
+++ b/scripts/macos-defaults.sh
@@ -0,0 +1,196 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+# Close any open System Preferences panes, to prevent them from overriding
+# settings we’re about to change
+osascript -e 'tell application "System Preferences" to quit'
+
+# Ask for the administrator password upfront
+sudo -v
+
+# Keep-alive: update existing `sudo` time stamp until `.macos` has finished
+while true; do
+ sudo -n true
+ sleep 60
+ kill -0 "$$" || exit
+done 2>/dev/null &
+
+# Save to disk (not to iCloud) by default
+defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
+
+# Disable the “Are you sure you want to open this application?” dialog
+defaults write com.apple.LaunchServices LSQuarantine -bool false
+
+# Disable Typing features
+defaults write NSGlobalDomain NSAutomaticCapitalizationEnabled -bool false
+defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
+defaults write NSGlobalDomain NSAutomaticPeriodSubstitutionEnabled -bool false
+defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
+defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false
+
+# Disable press-and-hold for keys in favor of key repeat
+defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false
+defaults write NSGlobalDomain KeyRepeat -int 2
+defaults write NSGlobalDomain InitialKeyRepeat -int 15
+
+defaults write NSGlobalDomain AppleLanguages -array "en" "es" "bg"
+defaults write NSGlobalDomain AppleLocale -string "en_US@rg=eszzzz"
+
+## Finder
+
+# Screenshots/captures
+defaults write com.apple.screencapture location -string "${HOME}/Pictures/Screenshots"
+defaults write com.apple.screencapture style -string "display"
+defaults write com.apple.screencapture target -string "file"
+defaults write com.apple.screencapture video -int 1
+
+# Finder
+# Interface elements
+defaults write com.apple.finder ShowPathbar -bool true
+defaults write com.apple.finder ShowStatusBar -bool true
+defaults write com.apple.finder ShowSidebar -bool true
+defaults write com.apple.finder ShowRecentTags -bool false
+
+# View and sorting
+defaults write com.apple.finder FXPreferredViewStyle -string "Nlsv"
+defaults write com.apple.finder FXPreferredSearchViewStyle -string "Nlsv"
+defaults write com.apple.finder _FXSortFoldersFirst -bool true
+defaults write com.apple.finder FXPreferredGroupBy -string "None"
+defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
+
+# Behavior
+defaults write com.apple.finder NewWindowTarget -string "PfHm"
+defaults write com.apple.finder FXOpenFoldersInTabs -bool true
+defaults write com.apple.finder FXRemoveOldTrashItems -bool false
+defaults write com.apple.finder FXShowAllExtensions -bool true
+defaults write com.apple.finder FXEnableExtensionChangeWarning -bool true
+defaults write com.apple.finder FXRemoveICloudDriveWarning -bool true
+defaults write com.apple.finder FXWarnBeforeEmptyingTrash -bool true
+
+# Desktop icons (none)
+defaults write com.apple.finder ShowHardDrivesOnDesktop -bool false
+defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool false
+defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool false
+defaults write com.apple.finder ShowConnectedServersOnDesktop -bool false
+
+# Tags
+defaults write com.apple.finder FavoriteTagNames -array
+
+# iCloud
+defaults write com.apple.finder FXICloudDriveEnabled -bool false
+
+# Finder: show all filename extensions
+defaults write NSGlobalDomain AppleShowAllExtensions -bool true
+
+# Avoid creating .DS_Store files on network or USB volumes
+defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
+defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true
+
+## Dock
+
+#!/bin/bash
+set -euo pipefail
+
+# Reset preferences
+# rm -f ~/Library/Preferences/com.apple.dock.plist
+
+# Reset Dock layout
+defaults write com.apple.dock persistent-apps -array
+defaults write com.apple.dock persistent-others -array
+
+# Basic Dock preferences
+defaults write com.apple.dock autohide -bool true
+defaults write com.apple.dock autohide-delay -float 0
+defaults write com.apple.dock autohide-time-modifier -float 0.4
+defaults write com.apple.dock enterMissionControlByTopWindowDrag -bool false
+defaults write com.apple.dock expose-group-apps -bool true
+defaults write com.apple.dock mineffect -string "scale"
+defaults write com.apple.dock minimize-to-application -bool false
+defaults write com.apple.dock orientation -string "bottom"
+defaults write com.apple.dock show-process-indicators -bool false
+defaults write com.apple.dock show-recents -bool false
+defaults write com.apple.dock showAppExposeGestureEnabled -bool true
+defaults write com.apple.dock showDesktopGestureEnabled -bool false
+defaults write com.apple.dock showLaunchpadGestureEnabled -bool false
+defaults write com.apple.dock tilesize -int 38
+
+# Add Brave Browser
+defaults write com.apple.dock persistent-apps -array-add \
+ "
+ tile-data
+
+ file-data
+
+ _CFURLString
+ /Applications/Brave Browser.app
+ _CFURLStringType
+ 0
+
+
+ tile-type
+ file-tile
+"
+
+# Add Ghostty
+defaults write com.apple.dock persistent-apps -array-add \
+ "
+ tile-data
+
+ file-data
+
+ _CFURLString
+ /Applications/Ghostty.app
+ _CFURLStringType
+ 0
+
+
+ tile-type
+ file-tile
+"
+
+# Add Screenshots directory (display as folder, show as grid)
+defaults write com.apple.dock persistent-others -array-add \
+ "
+ tile-data
+
+ displayas
+ 1
+ showas
+ 2
+ file-data
+
+ _CFURLString
+ /Users/tomas/Pictures/Screenshots
+ _CFURLStringType
+ 0
+
+
+ tile-type
+ directory-tile
+"
+
+# Add Downloads directory (display as folder, show as grid)
+defaults write com.apple.dock persistent-others -array-add \
+ "
+ tile-data
+
+ displayas
+ 1
+ showas
+ 2
+ file-data
+
+ _CFURLString
+ /Users/tomas/Downloads
+ _CFURLStringType
+ 0
+
+
+ tile-type
+ directory-tile
+"
+
+# Apply changes
+killall Finder &>/dev/null
+killall Dock &>/dev/null
+echo "Setup complete."