Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 65 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,19 @@ Sparkdock is an automated macOS development environment provisioner built with A

## Features

### macOS System Defaults

**Developer-Optimized Defaults:**

- **UI/UX Improvements**: Expanded save/print panels, disk-first saving, disabled smart quotes/dashes
- **Finder Enhancements**: Show hidden files and extensions, status/path bars, prevent .DS_Store on networks
- **Dock Optimizations**: Auto-hide with fast animations, no recent apps, better window behavior
- **Keyboard/Input**: Faster key repeat rates, trackpad right-click, disabled press-and-hold
- **Safari Developer**: Web inspector, developer menu, full URLs, secure defaults
- **Terminal/Development**: UTF-8 encoding, secure input, plain text TextEdit
- **Accessibility**: Reduce motion for better focus and performance
- **System Tools**: Enhanced Activity Monitor, optimized screenshots, Time Machine settings

### Applications & Tools

**GUI Applications:**
Expand Down Expand Up @@ -68,9 +81,10 @@ The installation process:
2. **Base Tools**: Git, curl, Python 3, Ansible
3. **Sparkdock Repository**: Cloned to `/opt/sparkdock`
4. **Applications & Tools**: All packages from the configuration
5. **HTTP Proxy System**: Configured and ready to use
6. **Task Runner**: sjust command available system-wide
7. **Update Service**: Automatic update checking via launchd
5. **macOS System Defaults**: Developer-optimized system settings
6. **HTTP Proxy System**: Configured and ready to use
7. **Task Runner**: sjust command available system-wide
8. **Update Service**: Automatic update checking via launchd

## Usage

Expand All @@ -82,6 +96,54 @@ Run the provisioner to configure your system:
sparkdock
```

### Selective Deployment

Run specific parts of the configuration using Ansible tags:

**macOS System Defaults:**

The macOS defaults configuration is implemented as a YAML-driven sjust task. Both Ansible and direct usage execute the same implementation:

```bash
# Direct usage (recommended for individual use)
sjust macos-defaults # Apply all macOS developer defaults
sjust macos-defaults-check # Preview current defaults status
sjust macos-defaults-reset # Reset selected defaults (use with caution)
sjust macos-defaults-init-overrides # Create user overrides configuration

# Via Ansible (calls sjust internally)
ansible-playbook ansible/macos.yml --tags macos-defaults --ask-become-pass
```

**User Customization:**

You can override any defaults by creating user-specific configuration:

```bash
# Initialize user overrides directory and example file
sjust macos-defaults-init-overrides

# Edit your custom settings
nano ~/.local/spark/macos-defaults/overrides.yml
```

The system automatically merges your overrides with the default configuration. Configuration is stored in:
- **Default settings**: `config/macos/defaults.yml` (40+ developer-optimized defaults)
- **User overrides**: `~/.local/spark/macos-defaults/overrides.yml` (your customizations)

**Skip macOS Defaults:**
```bash
ansible-playbook ansible/macos.yml --skip-tags macos-defaults --ask-become-pass
```

**Other available tags:**
```bash
ansible-playbook ansible/macos.yml --tags docker --ask-become-pass # Docker setup only
ansible-playbook ansible/macos.yml --tags http-proxy --ask-become-pass # HTTP proxy only
ansible-playbook ansible/macos.yml --tags keyboard --ask-become-pass # Keyboard config only
ansible-playbook ansible/macos.yml --tags sjust --ask-become-pass # Task runner only
```

### Manual Migration for Existing Users

If you have an existing Sparkdock installation and want to update to the new HTTP proxy system without running the full provisioner:
Expand Down
7 changes: 7 additions & 0 deletions ansible/macos/macos/base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,13 @@
path: "{{ brew_prefix.stdout }}/share/zsh/site-functions/_sjust"
mode: "0644"

# Apply macOS system defaults configuration using sjust
- name: Apply macOS system defaults for developers
shell: /usr/local/bin/sjust macos-defaults
become: no
tags: macos-defaults
when: "'/usr/local/bin/sjust' is exists"

- name: Remove unwanted cask packages
community.general.homebrew_cask:
name: "{{ all_removed_cask_packages }}"
Expand Down
Loading