{"id":28127654,"url":"https://github.com/alessio/mkdmg","last_synced_at":"2026-03-07T10:03:34.813Z","repository":{"id":289489864,"uuid":"971428017","full_name":"alessio/mkdmg","owner":"alessio","description":"Build fancy DMGs","archived":false,"fork":false,"pushed_at":"2026-02-22T16:39:58.000Z","size":84,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-22T20:47:47.252Z","etag":null,"topics":["build-tool","cli","disk-image","dmg","golang","macos","package","shell","tools"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alessio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-23T14:02:41.000Z","updated_at":"2026-02-22T16:40:02.000Z","dependencies_parsed_at":"2025-04-23T15:38:27.843Z","dependency_job_id":null,"html_url":"https://github.com/alessio/mkdmg","commit_stats":null,"previous_names":["alessio/mkdmg"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/alessio/mkdmg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alessio%2Fmkdmg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alessio%2Fmkdmg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alessio%2Fmkdmg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alessio%2Fmkdmg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alessio","download_url":"https://codeload.github.com/alessio/mkdmg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alessio%2Fmkdmg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30212021,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T09:02:10.694Z","status":"ssl_error","status_checked_at":"2026-03-07T09:02:08.429Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["build-tool","cli","disk-image","dmg","golang","macos","package","shell","tools"],"created_at":"2025-05-14T11:22:26.852Z","updated_at":"2026-03-07T10:03:34.801Z","avatar_url":"https://github.com/alessio.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 💿 mkdmg\n\n**The Fancy Apple Disk Image Creator**\n\n[![Go](https://github.com/alessio/mkdmg/actions/workflows/go.yml/badge.svg)](https://github.com/alessio/mkdmg/actions/workflows/go.yml)\n[![GoDoc](https://godoc.org/al.essio.dev/cmd/mkdmg?status.svg)](https://pkg.go.dev/al.essio.dev/cmd/mkdmg)\n[![Go Report Card](https://goreportcard.com/badge/github.com/alessio/mkdmg)](https://goreportcard.com/report/github.com/alessio/mkdmg)\n[![License](https://img.shields.io/github/license/alessio/mkdmg.svg)](https://github.com/alessio/mkdmg/blob/main/LICENSE)\n[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/alessio/mkdmg)](https://github.com/alessio/mkdmg/releases)\n\n\u003cp align=\"center\"\u003e\n  \u003cbr /\u003e\n  \u003cb\u003emkdmg\u003c/b\u003e is a powerful, modern CLI wrapper around \u003ccode\u003ehdiutil\u003c/code\u003e designed to make creating, signing, and notarizing macOS Disk Images (\u003ccode\u003e.dmg\u003c/code\u003e) effortless.\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n\u003c/div\u003e\n\n---\n\n## ✨ Features\n\n- 🚀 **Simple:** Create DMGs with a single command.\n- ⚙️ **Configurable:** JSON configuration for reproducible builds.\n- 📦 **Formats:** Supports multiple DMG formats (`UDZO`, `UDBZ`, `ULFO`, `ULMO`).\n- 🔐 **Security:** Integrated codesigning and notarization workflow.\n- 🖥️ **Filesystems:** Support for both HFS+ and APFS.\n- 🛡️ **Sandbox:** Create sandbox-safe disk images.\n\n## 📦 Installation\n\n### Pre-built Binaries\n\nYou can download the latest pre-built binaries for macOS (Darwin) from the [GitHub Releases page](https://github.com/alessio/mkdmg/releases).\n\n1.  Visit the [releases page](https://github.com/alessio/mkdmg/releases).\n2.  Download the archive matching your architecture (`x86_64` or `arm64`).\n3.  Extract the archive and move the `mkdmg` binary to a directory in your `PATH` (e.g., `/usr/local/bin`).\n\n### From Source\n\nRequires Go 1.26 or later.\n\n```sh\ngo install al.essio.dev/cmd/mkdmg@latest\n```\n\nTo build from a local checkout:\n\n```sh\nmake build\n```\n\n### Verification\n\nTo verify the integrity of the downloaded binary, you can use the `checksums.txt` file provided in the [GitHub Releases](https://github.com/alessio/mkdmg/releases).\n\n1. Download the binary archive and the `checksums.txt` file.\n2. Run the following command to verify the checksum:\n\n```sh\nsha256sum -c checksums.txt --ignore-missing\n```\n\n## 🚀 Usage\n\n```sh\nmkdmg [OPTION]... [OUTFILE.DMG [DIRECTORY]]\n```\n\n`mkdmg` reads its configuration from a JSON file (default: `mkdmg.json` in the current directory). You can optionally provide positional arguments to override the output path and source directory from the config.\n\n```sh\n# Use default config (mkdmg.json)\nmkdmg\n\n# Use a specific config file\nmkdmg --config path/to/config.json\n\n# Override output path and source directory\nmkdmg MyApp.dmg ./build\n\n# Override output path only (source_dir must be in config)\nmkdmg MyApp.dmg\n\n# Dry run to preview commands\nmkdmg --dry-run --verbose\n```\n\n## ⚙️ Options\n\n| Flag | Shorthand | Description | Default |\n| :--- | :---: | :--- | :--- |\n| `--config` | | Path to a JSON configuration file. | `mkdmg.json` |\n| `--dry-run` | `-s` | Simulate the process without creating any files. | `false` |\n| `--verbose` | `-v` | Enable verbose output for `mkdmg`. | `false` |\n| `--version` | `-V` | Print version information and exit. | |\n| `--help` | `-h` | Display the help message and exit. | |\n\n## 📄 JSON Configuration\n\nAll build settings are defined in the JSON configuration file.\n\n### Example `mkdmg.json`\n\n```json\n{\n  \"volume_name\": \"MyApplication\",\n  \"volume_size_mb\": 0,\n  \"sandbox_safe\": false,\n  \"bless\": false,\n  \"filesystem\": \"HFS+\",\n  \"signing_identity\": \"\",\n  \"notarize_credentials\": \"\",\n  \"image_format\": \"UDZO\",\n  \"hdiutil_verbosity\": 0,\n  \"output_path\": \"./dist/MyApplication.dmg\",\n  \"source_dir\": \"./build/Release\",\n  \"simulate\": false\n}\n```\n\n### Configuration Reference\n\n| Field | Type | Default | Description |\n| :--- | :--- | :--- | :--- |\n| `volume_name` | `string` | *(Filename)* | Name of the mounted volume. Defaults to `output_path` filename if empty. |\n| `volume_size_mb` | `number` | `0` | Volume size in megabytes. If `0`, `hdiutil` calculates the minimum size automatically. |\n| `sandbox_safe` | `boolean` | `false` | Enables sandbox-safe mode. **Incompatible with `APFS`**. |\n| `bless` | `boolean` | `false` | Blesses the folder/volume (makes it bootable/auto-open). |\n| `filesystem` | `string` | `\"HFS+\"` | Filesystem type. Options: `\"HFS+\"`, `\"APFS\"`. |\n| `signing_identity` | `string` | `\"\"` | Name or hash of the code signing identity to use. |\n| `notarize_credentials` | `string` | `\"\"` | Profile name for `notarytool` credentials. |\n| `image_format` | `string` | `\"UDZO\"` | DMG format. Options: `\"UDZO\"` (zlib), `\"UDBZ\"` (bzip2), `\"ULFO\"` (lzfse), `\"ULMO\"` (lzma). |\n| `hdiutil_verbosity` | `number` | `0` | Verbosity level for the underlying `hdiutil` command. |\n| `output_path` | `string` | *(Required)* | Destination path for the `.dmg` file. |\n| `source_dir` | `string` | *(Required)* | Directory containing files to package. |\n| `simulate` | `boolean` | `false` | If `true`, prints commands without executing them. |\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  Made with ❤️ by \u003ca href=\"https://github.com/alessio\"\u003eAlessio Treglia\u003c/a\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falessio%2Fmkdmg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falessio%2Fmkdmg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falessio%2Fmkdmg/lists"}