# MyConfig
[](https://badge.fury.io/py/myconfig-osx)
[](https://pepy.tech/project/myconfig-osx)
[](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
[](https://www.python.org/downloads/)
[](https://www.apple.com/macos/)
[](https://github.com/kehr/myconfig/stargazers)
A comprehensive macOS system configuration backup and restore tool designed for developers and system administrators.
## Features
- **Complete System Backup**: Comprehensive backup of Homebrew packages, VS Code extensions, dotfiles, system preferences, and application configurations
- **Enhanced Application Detection**: Automatic detection and backup of 200+ applications across 15+ categories including development tools, design software, productivity apps, and system utilities
- **CLI Tools Support**: Intelligent detection and backup of 50+ command-line development tools including git, vim, tmux, zsh, node.js, python, rust, and more
- **Secure and Reliable**: Automatically excludes sensitive files (SSH keys, passwords) with built-in security filtering and backup integrity validation
- **Preview Mode**: Preview what will be backed up or restored before executing operations
- **Compression Support**: Create compressed backup archives (.tar.gz) for easy storage and sharing
- **Template System**: Professional documentation generation with customizable templates for README.md, manifests, and metadata files
- **Configuration Profiles**: Multiple configuration profiles for different use cases (minimal, development, full)
- **Plugin System**: Extensible architecture supporting custom plugins for additional functionality
- **Modern Architecture**: Class-based design with proper separation of concerns and comprehensive error handling
- **Cross-Platform Compatibility**: Optimized for macOS with support for various package managers and development environments
## Quick Start
### Installation
**Method 1: PyPI Installation (Recommended)**
```bash
# Install from PyPI
pip install myconfig-osx
# Verify installation
myconfig --version
myconfig doctor
```
**Method 2: Development Installation**
```bash
# Clone the repository
git clone https://github.com/kehr/myconfig.git
cd myconfig
# Install in development mode
pip install -e .
# Verify installation
myconfig --version
myconfig doctor
```
**Method 3: Direct Usage (No Installation)**
```bash
# Clone the repository
git clone https://github.com/kehr/myconfig.git
cd myconfig
# Set execution permissions
chmod +x bin/myconfig
chmod +x scripts/install.sh
# Use directly
./bin/myconfig --help
# Or install from source
./scripts/install.sh
```
### Basic Usage
```bash
# Export current system configuration
myconfig export
# Export with compression
myconfig export --compress
# Preview export contents (shows what will be backed up)
myconfig --preview export
# Restore configuration from backup
myconfig restore <backup-directory>
# Restore from compressed archive
myconfig restore backup.tar.gz
# System health check and diagnostics
myconfig doctor
# Scan and display detected applications and CLI tools
myconfig scan
```
## Main Commands
| Command | Description |
|---------|-------------|
| `export [dir]` | Export configuration to specified directory (auto-generates name if not provided) |
| `export --compress [dir]` | Create compressed backup archive (.tar.gz) |
| `restore <dir>` | Restore configuration from backup directory or archive |
| `unpack <archive>` | Unpack compressed backup archive |
| `scan` | Scan and display installed applications and CLI tools |
| `doctor` | System environment check and diagnostics |
| `--preview` | Preview mode - show what will be processed without executing |
| `--dry-run` | Test run mode - show operations without executing them |
| `profile list` | List available configuration profiles |
| `profile use <name>` | Apply specified configuration profile |
| `defaults export-all` | Export all system defaults domains |
| `diff <dir1> <dir2>` | Compare differences between two backup directories |
## Supported Components
### System Tools
- **Homebrew**: Complete package management (formulas, casks, taps) with automatic Brewfile generation
- **Mac App Store**: Application lists with mas integration
- **System Preferences**: macOS defaults domains with curated domain lists
- **LaunchAgents**: User services and background processes
### Development Environment
- **VS Code**: Extensions, settings, and workspace configurations
- **Package Managers**: npm global packages, pip user packages, pipx packages
- **Version Control**: Git configurations, SSH settings (excluding sensitive keys)
- **Shell Environments**: zsh, fish, bash configurations with prompt customizations
### Applications (200+ Supported)
- **Development Tools**: IDEs (IntelliJ, PyCharm, WebStorm, Xcode), editors (Sublime Text, Atom), database tools (TablePlus, Sequel Pro)
- **Design and Creative**: Adobe Creative Suite, Sketch, Figma, Canva, Affinity Suite
- **Productivity**: Office suites, note-taking apps, task managers, calendar applications
- **Communication**: Slack, Discord, Zoom, Microsoft Teams, messaging apps
- **System Utilities**: Alfred, Bartender, CleanMyMac, monitoring tools
- **Browsers**: Chrome, Firefox, Safari, Edge with extension and bookmark support
- **Media Tools**: VLC, IINA, Spotify, audio/video editing software
### CLI Development Tools (50+ Supported)
- **Editors**: vim, neovim, emacs with configuration files and plugins
- **Terminal Tools**: tmux, screen, terminal multiplexers and session managers
- **Shell Enhancement**: starship, oh-my-zsh, fish shell with themes and plugins
- **Development Languages**: node.js, python, rust, go, java, php configurations
- **Build Tools**: make, cmake, gradle, maven, cargo, npm, yarn, pnpm
- **Cloud Tools**: AWS CLI, Google Cloud SDK, Azure CLI, kubectl, helm
- **Database CLI**: mysql, postgresql, mongodb, redis command-line clients
- **Network Tools**: curl, wget, httpie, network utilities and configurations
- **Security Tools**: gpg, ssh, vault, encryption and security utilities
## Project Structure
```
myconfig/
├── bin/myconfig # Executable script
├── config/ # Configuration files
│ ├── config.toml # Main configuration file
│ ├── defaults/ # System defaults domain configurations
│ └── profiles/ # Configuration profiles (minimal, dev-full)
├── docs/ # Comprehensive documentation
│ ├── usage.md # Usage guide and examples
│ ├── configuration.md # Configuration reference
│ ├── cli-tools.md # CLI tools detection guide
│ ├── plugins.md # Plugin development guide
│ └── templates.md # Template system documentation
├── myconfig/ # Python source package
│ ├── core/ # Core modules (class-based architecture)
│ │ ├── config.py # Configuration management
│ │ ├── executor.py # Command execution engine
│ │ ├── backup.py # Backup orchestration
│ │ └── components/ # Individual backup components
│ ├── actions/ # Action modules (legacy support)
│ ├── plugins/ # Plugin system
│ ├── templates/ # File generation templates
│ ├── template_engine.py # Template processing engine
│ ├── logger.py # Logging configuration
│ ├── cli.py # Command line interface
│ └── utils.py # Utility functions
├── scripts/ # Installation and utility scripts
└── tests/ # Comprehensive test suite
```
## Security Features
- **Automatic Security Filtering**: Excludes sensitive files (SSH private keys, password files, authentication tokens)
- **Backup Integrity Validation**: Verifies backup completeness and file integrity
- **Safe Restoration**: Creates automatic backups of existing files before restoration
- **Detailed Logging**: Comprehensive operation logging for audit trails
- **Permission Preservation**: Maintains file permissions and symbolic links during backup/restore
## Configuration
MyConfig uses TOML configuration files with support for:
- **Component Enablement**: Selectively enable/disable backup components
- **Custom Application Paths**: Define custom configuration paths for applications
- **CLI Tools Configuration**: Specify detection methods and configuration paths for command-line tools
- **Security Settings**: Configure exclusion patterns and sensitive file handling
- **Template Customization**: Customize generated documentation and metadata files
- **Profile Management**: Create and manage different configuration profiles
See [Configuration Reference](./docs/configuration.md) for detailed configuration options.
## Documentation
Comprehensive documentation is available in the [docs](./docs/) directory:
- [Usage Guide](./docs/usage.md) - Detailed usage instructions and examples
- [Configuration Reference](./docs/configuration.md) - Complete configuration options
- [CLI Tools Guide](./docs/cli-tools.md) - CLI tools detection and configuration
- [Plugin Development](./docs/plugins.md) - Plugin system and extension development
- [Template System](./docs/templates.md) - Customizing output file templates
- [Security Features](./docs/security.md) - Security mechanisms and best practices
## Common Use Cases
### New Machine Setup
```bash
# On old machine: create backup
myconfig export machine-backup --compress
# On new machine: restore configuration
myconfig restore machine-backup.tar.gz
```
### Regular Backups
```bash
# Create timestamped backup
myconfig export "backup-$(date +%Y%m%d)"
# Automated backup script
myconfig export --compress && echo "Backup completed"
```
### Development Environment Migration
```bash
# Preview what will be backed up
myconfig --preview export
# Export development environment
myconfig export dev-environment
# Restore on new development machine
myconfig restore dev-environment
```
## Requirements
- **Operating System**: macOS 10.14 (Mojave) or later
- **Python**: Python 3.8 or later
- **Dependencies**: tomli, click, rich (automatically installed)
- **Optional**: Homebrew (for package management), mas (for App Store apps)
## Contributing
Contributions are welcome! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
## License
This project is licensed under the GNU General Public License v2.0 - see the [LICENSE](./LICENSE) file for details.
## Support
- **Issues**: Report bugs and feature requests on [GitHub Issues](https://github.com/kehr/myconfig/issues)
- **Documentation**: Comprehensive guides available in the [docs](./docs/) directory
- **Community**: Join discussions and get help from the community
## Changelog
See [CHANGELOG.md](docs/CHANGELOG.md) for version history and release notes.
Raw data
{
"_id": null,
"home_page": null,
"name": "myconfig-osx",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "Kyle <kehr.china@gmail.com>",
"keywords": "macos, backup, restore, configuration, dotfiles, homebrew",
"author": null,
"author_email": "Kyle <kehr.china@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/bc/55/43f83761ea5a2c850bed25f81e1c07766b209eb63abfc43c8202af901472/myconfig_osx-1.3.2.tar.gz",
"platform": null,
"description": "# MyConfig\n\n[](https://badge.fury.io/py/myconfig-osx)\n[](https://pepy.tech/project/myconfig-osx)\n[](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)\n[](https://www.python.org/downloads/)\n[](https://www.apple.com/macos/)\n[](https://github.com/kehr/myconfig/stargazers)\n\nA comprehensive macOS system configuration backup and restore tool designed for developers and system administrators.\n\n## Features\n\n- **Complete System Backup**: Comprehensive backup of Homebrew packages, VS Code extensions, dotfiles, system preferences, and application configurations\n- **Enhanced Application Detection**: Automatic detection and backup of 200+ applications across 15+ categories including development tools, design software, productivity apps, and system utilities\n- **CLI Tools Support**: Intelligent detection and backup of 50+ command-line development tools including git, vim, tmux, zsh, node.js, python, rust, and more\n- **Secure and Reliable**: Automatically excludes sensitive files (SSH keys, passwords) with built-in security filtering and backup integrity validation\n- **Preview Mode**: Preview what will be backed up or restored before executing operations\n- **Compression Support**: Create compressed backup archives (.tar.gz) for easy storage and sharing\n- **Template System**: Professional documentation generation with customizable templates for README.md, manifests, and metadata files\n- **Configuration Profiles**: Multiple configuration profiles for different use cases (minimal, development, full)\n- **Plugin System**: Extensible architecture supporting custom plugins for additional functionality\n- **Modern Architecture**: Class-based design with proper separation of concerns and comprehensive error handling\n- **Cross-Platform Compatibility**: Optimized for macOS with support for various package managers and development environments\n\n## Quick Start\n\n### Installation\n\n**Method 1: PyPI Installation (Recommended)**\n\n```bash\n# Install from PyPI\npip install myconfig-osx\n\n# Verify installation\nmyconfig --version\nmyconfig doctor\n```\n\n**Method 2: Development Installation**\n\n```bash\n# Clone the repository\ngit clone https://github.com/kehr/myconfig.git\ncd myconfig\n\n# Install in development mode\npip install -e .\n\n# Verify installation\nmyconfig --version\nmyconfig doctor\n```\n\n**Method 3: Direct Usage (No Installation)**\n\n```bash\n# Clone the repository\ngit clone https://github.com/kehr/myconfig.git\ncd myconfig\n\n# Set execution permissions\nchmod +x bin/myconfig\nchmod +x scripts/install.sh\n\n# Use directly\n./bin/myconfig --help\n\n# Or install from source\n./scripts/install.sh\n```\n\n### Basic Usage\n\n```bash\n# Export current system configuration\nmyconfig export\n\n# Export with compression\nmyconfig export --compress\n\n# Preview export contents (shows what will be backed up)\nmyconfig --preview export\n\n# Restore configuration from backup\nmyconfig restore <backup-directory>\n\n# Restore from compressed archive\nmyconfig restore backup.tar.gz\n\n# System health check and diagnostics\nmyconfig doctor\n\n# Scan and display detected applications and CLI tools\nmyconfig scan\n```\n\n## Main Commands\n\n| Command | Description |\n|---------|-------------|\n| `export [dir]` | Export configuration to specified directory (auto-generates name if not provided) |\n| `export --compress [dir]` | Create compressed backup archive (.tar.gz) |\n| `restore <dir>` | Restore configuration from backup directory or archive |\n| `unpack <archive>` | Unpack compressed backup archive |\n| `scan` | Scan and display installed applications and CLI tools |\n| `doctor` | System environment check and diagnostics |\n| `--preview` | Preview mode - show what will be processed without executing |\n| `--dry-run` | Test run mode - show operations without executing them |\n| `profile list` | List available configuration profiles |\n| `profile use <name>` | Apply specified configuration profile |\n| `defaults export-all` | Export all system defaults domains |\n| `diff <dir1> <dir2>` | Compare differences between two backup directories |\n\n## Supported Components\n\n### System Tools\n- **Homebrew**: Complete package management (formulas, casks, taps) with automatic Brewfile generation\n- **Mac App Store**: Application lists with mas integration\n- **System Preferences**: macOS defaults domains with curated domain lists\n- **LaunchAgents**: User services and background processes\n\n### Development Environment\n- **VS Code**: Extensions, settings, and workspace configurations\n- **Package Managers**: npm global packages, pip user packages, pipx packages\n- **Version Control**: Git configurations, SSH settings (excluding sensitive keys)\n- **Shell Environments**: zsh, fish, bash configurations with prompt customizations\n\n### Applications (200+ Supported)\n- **Development Tools**: IDEs (IntelliJ, PyCharm, WebStorm, Xcode), editors (Sublime Text, Atom), database tools (TablePlus, Sequel Pro)\n- **Design and Creative**: Adobe Creative Suite, Sketch, Figma, Canva, Affinity Suite\n- **Productivity**: Office suites, note-taking apps, task managers, calendar applications\n- **Communication**: Slack, Discord, Zoom, Microsoft Teams, messaging apps\n- **System Utilities**: Alfred, Bartender, CleanMyMac, monitoring tools\n- **Browsers**: Chrome, Firefox, Safari, Edge with extension and bookmark support\n- **Media Tools**: VLC, IINA, Spotify, audio/video editing software\n\n### CLI Development Tools (50+ Supported)\n- **Editors**: vim, neovim, emacs with configuration files and plugins\n- **Terminal Tools**: tmux, screen, terminal multiplexers and session managers\n- **Shell Enhancement**: starship, oh-my-zsh, fish shell with themes and plugins\n- **Development Languages**: node.js, python, rust, go, java, php configurations\n- **Build Tools**: make, cmake, gradle, maven, cargo, npm, yarn, pnpm\n- **Cloud Tools**: AWS CLI, Google Cloud SDK, Azure CLI, kubectl, helm\n- **Database CLI**: mysql, postgresql, mongodb, redis command-line clients\n- **Network Tools**: curl, wget, httpie, network utilities and configurations\n- **Security Tools**: gpg, ssh, vault, encryption and security utilities\n\n## Project Structure\n\n```\nmyconfig/\n\u251c\u2500\u2500 bin/myconfig # Executable script\n\u251c\u2500\u2500 config/ # Configuration files\n\u2502 \u251c\u2500\u2500 config.toml # Main configuration file\n\u2502 \u251c\u2500\u2500 defaults/ # System defaults domain configurations\n\u2502 \u2514\u2500\u2500 profiles/ # Configuration profiles (minimal, dev-full)\n\u251c\u2500\u2500 docs/ # Comprehensive documentation\n\u2502 \u251c\u2500\u2500 usage.md # Usage guide and examples\n\u2502 \u251c\u2500\u2500 configuration.md # Configuration reference\n\u2502 \u251c\u2500\u2500 cli-tools.md # CLI tools detection guide\n\u2502 \u251c\u2500\u2500 plugins.md # Plugin development guide\n\u2502 \u2514\u2500\u2500 templates.md # Template system documentation\n\u251c\u2500\u2500 myconfig/ # Python source package\n\u2502 \u251c\u2500\u2500 core/ # Core modules (class-based architecture)\n\u2502 \u2502 \u251c\u2500\u2500 config.py # Configuration management\n\u2502 \u2502 \u251c\u2500\u2500 executor.py # Command execution engine\n\u2502 \u2502 \u251c\u2500\u2500 backup.py # Backup orchestration\n\u2502 \u2502 \u2514\u2500\u2500 components/ # Individual backup components\n\u2502 \u251c\u2500\u2500 actions/ # Action modules (legacy support)\n\u2502 \u251c\u2500\u2500 plugins/ # Plugin system\n\u2502 \u251c\u2500\u2500 templates/ # File generation templates\n\u2502 \u251c\u2500\u2500 template_engine.py # Template processing engine\n\u2502 \u251c\u2500\u2500 logger.py # Logging configuration\n\u2502 \u251c\u2500\u2500 cli.py # Command line interface\n\u2502 \u2514\u2500\u2500 utils.py # Utility functions\n\u251c\u2500\u2500 scripts/ # Installation and utility scripts\n\u2514\u2500\u2500 tests/ # Comprehensive test suite\n```\n\n## Security Features\n\n- **Automatic Security Filtering**: Excludes sensitive files (SSH private keys, password files, authentication tokens)\n- **Backup Integrity Validation**: Verifies backup completeness and file integrity\n- **Safe Restoration**: Creates automatic backups of existing files before restoration\n- **Detailed Logging**: Comprehensive operation logging for audit trails\n- **Permission Preservation**: Maintains file permissions and symbolic links during backup/restore\n\n## Configuration\n\nMyConfig uses TOML configuration files with support for:\n\n- **Component Enablement**: Selectively enable/disable backup components\n- **Custom Application Paths**: Define custom configuration paths for applications\n- **CLI Tools Configuration**: Specify detection methods and configuration paths for command-line tools\n- **Security Settings**: Configure exclusion patterns and sensitive file handling\n- **Template Customization**: Customize generated documentation and metadata files\n- **Profile Management**: Create and manage different configuration profiles\n\nSee [Configuration Reference](./docs/configuration.md) for detailed configuration options.\n\n## Documentation\n\nComprehensive documentation is available in the [docs](./docs/) directory:\n\n- [Usage Guide](./docs/usage.md) - Detailed usage instructions and examples\n- [Configuration Reference](./docs/configuration.md) - Complete configuration options\n- [CLI Tools Guide](./docs/cli-tools.md) - CLI tools detection and configuration\n- [Plugin Development](./docs/plugins.md) - Plugin system and extension development\n- [Template System](./docs/templates.md) - Customizing output file templates\n- [Security Features](./docs/security.md) - Security mechanisms and best practices\n\n## Common Use Cases\n\n### New Machine Setup\n```bash\n# On old machine: create backup\nmyconfig export machine-backup --compress\n\n# On new machine: restore configuration\nmyconfig restore machine-backup.tar.gz\n```\n\n### Regular Backups\n```bash\n# Create timestamped backup\nmyconfig export \"backup-$(date +%Y%m%d)\"\n\n# Automated backup script\nmyconfig export --compress && echo \"Backup completed\"\n```\n\n### Development Environment Migration\n```bash\n# Preview what will be backed up\nmyconfig --preview export\n\n# Export development environment\nmyconfig export dev-environment\n\n# Restore on new development machine\nmyconfig restore dev-environment\n```\n\n## Requirements\n\n- **Operating System**: macOS 10.14 (Mojave) or later\n- **Python**: Python 3.8 or later\n- **Dependencies**: tomli, click, rich (automatically installed)\n- **Optional**: Homebrew (for package management), mas (for App Store apps)\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.\n\n## License\n\nThis project is licensed under the GNU General Public License v2.0 - see the [LICENSE](./LICENSE) file for details.\n\n## Support\n\n- **Issues**: Report bugs and feature requests on [GitHub Issues](https://github.com/kehr/myconfig/issues)\n- **Documentation**: Comprehensive guides available in the [docs](./docs/) directory\n- **Community**: Join discussions and get help from the community\n\n## Changelog\n\nSee [CHANGELOG.md](docs/CHANGELOG.md) for version history and release notes.\n",
"bugtrack_url": null,
"license": null,
"summary": "macOS configuration backup and restore tool",
"version": "1.3.2",
"project_urls": {
"Bug Tracker": "https://github.com/kehr/myconfig/issues",
"Changelog": "https://github.com/kehr/myconfig/blob/main/docs/OPTIMIZATION_SUMMARY.md",
"Documentation": "https://github.com/kehr/myconfig/blob/main/docs/",
"Homepage": "https://github.com/kehr/myconfig",
"Repository": "https://github.com/kehr/myconfig"
},
"split_keywords": [
"macos",
" backup",
" restore",
" configuration",
" dotfiles",
" homebrew"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "262b670e6859ff9b2bec8cdadbd0a4c43fd256de8606fc8705214992d31d87b5",
"md5": "0c0f018520c948f5e1487beaa2fec4f8",
"sha256": "78e4b1c079352dc918889045242ed61b90a0eb981614b7ca89cffec1f517c6ea"
},
"downloads": -1,
"filename": "myconfig_osx-1.3.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0c0f018520c948f5e1487beaa2fec4f8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 56406,
"upload_time": "2025-08-19T15:32:40",
"upload_time_iso_8601": "2025-08-19T15:32:40.941368Z",
"url": "https://files.pythonhosted.org/packages/26/2b/670e6859ff9b2bec8cdadbd0a4c43fd256de8606fc8705214992d31d87b5/myconfig_osx-1.3.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bc5543f83761ea5a2c850bed25f81e1c07766b209eb63abfc43c8202af901472",
"md5": "256132cffb586ad78706a5e066dc9aa4",
"sha256": "9f87ecae7354e50cf77abf57021e886795e4087c506247a46301e5732a63b539"
},
"downloads": -1,
"filename": "myconfig_osx-1.3.2.tar.gz",
"has_sig": false,
"md5_digest": "256132cffb586ad78706a5e066dc9aa4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 48567,
"upload_time": "2025-08-19T15:32:42",
"upload_time_iso_8601": "2025-08-19T15:32:42.268113Z",
"url": "https://files.pythonhosted.org/packages/bc/55/43f83761ea5a2c850bed25f81e1c07766b209eb63abfc43c8202af901472/myconfig_osx-1.3.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-19 15:32:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "kehr",
"github_project": "myconfig",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "myconfig-osx"
}