{"id":49084903,"url":"https://github.com/supermarsx/machinit","last_synced_at":"2026-04-20T14:35:58.512Z","repository":{"id":326438653,"uuid":"1105510549","full_name":"supermarsx/machinit","owner":"supermarsx","description":"My weird macOS provisioning script thingy","archived":false,"fork":false,"pushed_at":"2026-01-18T13:02:57.000Z","size":2127,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-18T18:41:57.548Z","etag":null,"topics":["app","dotfiles","initialization","install","mac","macos","performance","provisioning","script","shell","tool","tweaks"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/supermarsx.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","contributing":null,"funding":".github/funding.yml","license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"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},"funding":{"github":"supermarsx"}},"created_at":"2025-11-27T18:06:26.000Z","updated_at":"2026-01-18T13:03:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/supermarsx/machinit","commit_stats":null,"previous_names":["supermarsx/machinit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/supermarsx/machinit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supermarsx%2Fmachinit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supermarsx%2Fmachinit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supermarsx%2Fmachinit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supermarsx%2Fmachinit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/supermarsx","download_url":"https://codeload.github.com/supermarsx/machinit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supermarsx%2Fmachinit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32050988,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["app","dotfiles","initialization","install","mac","macos","performance","provisioning","script","shell","tool","tweaks"],"created_at":"2026-04-20T14:35:52.909Z","updated_at":"2026-04-20T14:35:58.490Z","avatar_url":"https://github.com/supermarsx.png","language":"Shell","funding_links":["https://github.com/sponsors/supermarsx"],"categories":[],"sub_categories":[],"readme":"![machinit banner](https://github.com/user-attachments/assets/4126f9e7-dc86-4024-b7c0-9ae04b3aeba5)\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n[![CI](https://img.shields.io/github/actions/workflow/status/supermarsx/machinit/.github/workflows/ci.yml?branch=main\u0026style=flat-square)](https://github.com/supermarsx/machinit/actions/workflows/ci.yml)\n[![GitHub stars](https://img.shields.io/github/stars/supermarsx/machinit?style=flat-square)](https://github.com/supermarsx/machinit/stargazers)\n[![GitHub forks](https://img.shields.io/github/forks/supermarsx/machinit?style=flat-square)](https://github.com/supermarsx/machinit/network/members)\n[![GitHub watchers](https://img.shields.io/github/watchers/supermarsx/machinit?style=flat-square)](https://github.com/supermarsx/machinit/watchers)\n[![Open issues](https://img.shields.io/github/issues/supermarsx/machinit?style=flat-square)](https://github.com/supermarsx/machinit/issues)\n[![Made with Shell \u0026 Tears](https://img.shields.io/badge/made%20with-Shell%20%26%20Tears-ffa500?style=flat-square)](https://github.com/supermarsx/machinit)\n\n\n# machinit — macOS bootstrap \u0026 dotfiles installer\n\n\u003e A curated macOS bootstrap and dotfiles installer designed for reproducible, opinionated developer setups. Includes a safe installer flow, shell aliases \u0026 functions, zsh completions, and a test harness to validate changes.\n\nKey goals:\n- reproducible machine setup for dev environments\n- safe, audit-friendly defaults with a DRY_RUN (dry-run) mode\n- curated CLI completions, aliases, and helper scripts for productivity\n\n---\n\n## Quick start\n\n1. Clone the repo and run the installer:\n\n```bash\ngit clone https://github.com/supermarsx/machinit.git\ncd machinit\nchmod +x install.sh\n./install.sh\n```\n\n2. See what would change without applying anything:\n\n```bash\n./install.sh --dry-run\n```\n\n3. Customize `config.toml` before running for any machine-specific settings.\n\n## CLI flags / options\n\nThe top-level installer `install.sh` exposes several useful command-line flags to control\nbehavior and limit the scope of operations (useful for automation or CI). A quick reference:\n\n- `--dry-run` — Simulate actions without making changes (safe testing).\n- `--update` — Self-update the repository (git pull) and exit.\n- `--config \u003cfile\u003e` — Use an alternate configuration TOML file to filter which scripts run.\n- `--no-log` — Disable persistent logging to the `./logs/` directory.\n- `--verbose` / `-v` — Enable verbose stdout (set -x) for troubleshooting.\n- `--start-from \u003cscript\u003e` — Resume execution starting at the specified script file name.\n- `--run-only \u003cN\u003e` — Run only the 1-based indexed script N from `scripts/` and exit.\n- `--restart-ui` — After a successful run, perform the final UI restart step (Dock/Finder/etc.).\n- `--update-shell` — Only update `~/.aliases` and `~/.functions` then exit (runs `scripts/012_install_dotfiles.sh --only-shell`).\n- `--reset-finder-view` — Remove per-folder `.DS_Store` files under the user's home and set Finder list-view defaults.\n-- `--pin-sidebar` — Pin configured Finder sidebar items (Downloads / Projects) then exit. By default the installer uses the bundled finder_sidebar_editor implementation located at `scripts/lib/finder_sidebar_editor.py`.\n\t- `--pin-sidebar-use-mysides` — When used with `--pin-sidebar`, explicitly request that the installer use the `mysides` tool instead of the default finder_sidebar_editor.\n- `--clear-logs` — Remove all files under `./logs/` and exit.\n- `--resume-failure` — Resume a previously failed run using the script name recorded in `logs/last_failed`.\n- `--exit` — Immediate no-op exit (used for testing/CI flows).\n- `--computer-name \u003cname\u003e` — Set the computer name non-interactively (uses macOS scutil and defaults writes).\n- `--help` / `-h` — Show short help for the installer.\n\nAdditionally some scripts accept their own flags. For example:\n\n- `scripts/052_configure_finder_and_sidebar.sh --add-sidebar-only` — Add Finder sidebar items only and exit (useful when run directly or via `install.sh --pin-sidebar`).\n-- `scripts/052_configure_finder_and_sidebar.sh --use-mysides` — Explicitly request the script use the `mysides` tool to perform pinning; by default the script prefers the bundled finder_sidebar_editor under `scripts/lib` and will not try `mysides` unless explicitly instructed.\n\nfinder_sidebar_editor integration (bundled)\n-------------------------------\nThis repository includes a bundled, dependency-light finder_sidebar_editor\nimplementation under `scripts/lib/finder_sidebar_editor.py` which is used by\ndefault by `scripts/052_configure_finder_and_sidebar.sh` and by the\ntop-level `install.sh --pin-sidebar` flow. This avoids external dependencies\nand ensures predictable behavior across systems.\n\nIf you'd prefer to use an external `mysides` binary instead, invoke the\nscript or installer with the `--use-mysides` / `--pin-sidebar-use-mysides`\nflags (the installer won't try `mysides` unless explicitly requested).\n\nIf you're interested in the original upstream project (robperc/FinderSidebarEditor),\nyou may still install it separately via pip if you want the fuller behavior:\n\nExample:\n```bash\npython3 -m pip install \"git+https://github.com/robperc/FinderSidebarEditor.git\"\n```\n\n-- By default the repository uses the bundled `finder_sidebar_editor` under `scripts/lib`.\n\tIf you'd prefer the older cli-based `mysides` path instead, invoke the script\n\twith `--use-mysides` or set the environment variable `USE_MYSIDES=1`. At the\n\ttop-level installer use `--pin-sidebar-use-mysides` when invoking `--pin-sidebar`.\n\nWhen the bundled finder_sidebar_editor cannot be used (for example, python3 is\nnot found) the script falls back to AppleScript UI automation. `mysides` is\nonly attempted when explicitly requested with `--use-mysides`.\n- `scripts/011_check_aliases_functions_conflicts.sh --abort-on-conflict` — Exit non-zero if conflicts detected (used by `scripts/012_install_dotfiles.sh` by default; the top-level installer bypasses aborts during a full run).\n\nUse `./install.sh --dry-run` to test these behaviors safely before running on a live machine.\n\n\n## What this repo contains (short)\n\n- `install.sh` — top-level orchestrator (supports flags like `--dry-run`, `--resume-failure`, `--clear-logs`).\n- `scripts/` — many ordered scripts to install packages, configure system settings, and apply UI customizations.\n- `assets/` — dotfiles, zsh completion files, themes, and templates.\n- `dev_scripts/` — test, fetcher, and maintenance helpers (fetch completions, run the test harness, linting helpers).\n- `dev_scripts/generate_inventory.py` — generates a current list of aliases, functions, completions, install targets and defaults into `docs/inventory.md` (run locally to refresh).\n- `tests/` — local test harness that validates non-destructive behavior (safely using DRY_RUN).\n\n---\n\n## Global gitignore\n\nThis repository provides a recommended global gitignore at `assets/.gitignore_global`. It is intended as a sensible default for macOS developer machines and includes common ignores for:\n\n- OS files and caches (macOS)\n- Editors / IDEs (VS Code, JetBrains/IntelliJ/Android Studio)\n- Language/tool build artifacts (Node.js, Python, Rust, Go, Java/Gradle, Ruby/Rails, PHP/Composer)\n- Mobile/tooling (Android/Kotlin, Xcode/iOS)\n- Containers / infra (Docker, Terraform)\n- Environment and secret files (e.g. `.env`, private keys)\n\nHow to use it locally as your global excludes file:\n\n```bash\ncp assets/.gitignore_global ~/.gitignore_global\ngit config --global core.excludesfile ~/.gitignore_global\n```\n\nNotes:\n- The file is meant to be a convenient starting point — review and customize it for your workflow before applying globally.\n- It intentionally does not ignore dependency lockfiles (e.g. `package-lock.json`, `Gemfile.lock`, `Cargo.lock`) since those are commonly committed for reproducible builds.\n- Contributions and additions are welcome; keep unrelated repo-specific ignores out of the global file.\n\n## Functions\n\nThe following helper functions are provided in `assets/.functions`. Source that file into your shell (`source /path/to/machinit/assets/.functions`) to make these available in your interactive session.\n\n- `mkd` — create a new directory (with parents) and immediately `cd` into it.\n- `cdf` — change working directory to the top-most Finder window location (macOS Finder integration).\n- `targz` — create a `.tar.gz` archive using `zopfli`, `pigz` or `gzip` (chooses best available compressor).\n- `fs` — show size of a file or total size of a directory in a human-readable form (portable `du` wrapper).\n- `diff` — use Git’s colored diff when available (`git diff --no-index --color-words`).\n- `dataurl` — produce a data URL (base64) from a file; sets proper mime-type for text files.\n- `server` — start a simple HTTP server (Python) from the current directory and open it in a browser; enables CORS.\n- `gz` — compare original and gzipped file sizes and print ratio.\n- `digga` — run `dig` with useful flags to show concise DNS answers.\n- `getcertnames` — print the Common Name and Subject Alternative Names from an HTTPS certificate for a domain.\n- `o` — `open` wrapper: `o` opens the current directory if called without args, otherwise opens its arguments.\n- `tre` — enhanced `tree` alias: show hidden files, color, ignore `.git` and `node_modules`, view with `less`.\n- `generate_git_key` — interactive helper to generate a new SSH key (ed25519), add it to the ssh-agent/keychain, and instruct how to add the public key to GitHub.\n- `myaliases` — print a formatted table of aliases and functions (supports `--aliases`, `--functions`, `--all`).\n- `findPid` — helper to find process IDs by process name/regex (uses `lsof -t -c`).\n- `recent` — `cd` to the most recently modified project directory under `~/Projects` (supports indexing and name patterns).\n- `ll` — robust `ls` wrapper that prefers GNU `ls`/`gls` but falls back safely for BSD systems.\n- `myip` — robust public IP lookup with multiple service fallbacks and optional IPv6 support.\n\n\nThese functions are written to be safe for interactive shells (bash/zsh). If you rely on shell-specific features, consider sourcing the file from the appropriate rc file (e.g. `~/.zshrc` or `~/.bashrc`).\n\n## Aliases\n\nThe following aliases are provided in `assets/.aliases` for quick command-line shortcuts.\n\nNote: these aliases live in `assets/.aliases`. Source this file from your shell rc to enable them (for example, add `source /path/to/machinit/assets/.aliases` to `~/.zshrc` or `~/.bashrc`). The file is intended to be compatible with both bash and zsh; do not execute it directly because aliases defined in a subshell will not persist in your interactive shell.\n\n- `bup` — `brew update \u0026\u0026 brew upgrade \u0026\u0026 brew cleanup` — update Homebrew, upgrade packages, cleanup\n- `reloaddns` — `dscacheutil -flushcache \u0026\u0026 sudo killall -HUP mDNSResponder` — flush macOS DNS cache and restart `mDNSResponder` (requires `sudo`)\n- `dnsreload` — `dscacheutil -flushcache \u0026\u0026 sudo killall -HUP mDNSResponder` — flush macOS DNS cache and restart `mDNSResponder` (requires `sudo`)\n- `timestamp` — `date +%s` — print current epoch timestamp (seconds since UNIX epoch)\n- `jsrefresh` — `rm -rf node_modules/ package-lock.json \u0026\u0026 npm install` — remove node deps and reinstall\n\nNavigation:\n- `..` — `cd ..` — go up one directory\n- `...` — `cd ../../..` — go up two levels\n- `....` — `cd ../../../../` — go up three levels\n- `.....` — `cd ../../../../` — go up deeper (lenient duplicate)\n- `cd..` — `cd ..` — alternate form to go up one\n- `~` — `cd ~` — go to home directory\n- `~~` — `cd -` — switch to previous working directory (use `~~` to go to the previous dir)\n\nShortcuts:\n- `c` — `clear` — clear terminal screen\n- `h` — `history` — display shell history\n \n\nZsh / config editors:\n- `zshconf` — `nano ~/.zshrc` — open zsh configuration for quick edits\n\nProject navigation:\n- `projects` — `cd ~/Projects` — change to `~/Projects`\n- `repos` — `cd ~/Projects` — same as `projects`\n\nCommon folders:\n- `docs` — `cd ~/Documents` — go to `~/Documents`\n- `downloads` — `cd ~/Downloads` — go to `~/Downloads`\n- `dl` — `cd ~/Downloads` — short form to go to `~/Downloads`\n\nHelpers:\n- `qfind` — `find . -name` — find files by name in current dir\n- `lsock` — `sudo lsof -i -P` — list network sockets (requires sudo)\n\nNetwork:\n- `ping_test` — `ping 1.1.1.1` — quick ping to Cloudflare DNS\n- `localip` — `ipconfig getifaddr en0` — show local IP address for primary interface (macOS)\n\nNPM shortcuts:\n- `ni` — `npm install` — shorthand to install npm dependencies\n- `nps` — `npm start` — shorthand to run `npm start`\n\nDiagnostics \u0026 fun:\n- `wtf` — `dmesg | tail` — show last kernel messages\n- `up` — `echo \"Time is an illusion.\"; uptime` — prints a fun message then shows uptime\n\nClipboard emoticons:\n- `shrug` — `echo \"¯\\\\_(ツ)_/¯\" | pbcopy` — copy shrug emoticon to clipboard\n- `tableflip` — `echo \"(╯°□°）╯︵ ┻━┻\" | pbcopy` — copy tableflip emoticon to clipboard\n- `fix` — `echo \"┬─┬ ノ( ゜-゜ノ)\" | pbcopy` — copy fix emoticon to clipboard\n\nUtilities:\n- `entropy` — `openssl rand -base64 64` — generate 64 bytes of base64 randomness\n- `void` — `\u003e/dev/null 2\u003e\u00261` — shortcut for discarding output\n- `fractal` — `open -a Terminal .` — open current folder in Terminal\n- `eldritchterror` — `open https://en.wikipedia.org/wiki/Heat_death_of_the_universe` — open doom article\n\nSystem:\n- `path` — `echo -e ${PATH//:/\\\\n}` — print PATH entries one-per-line (uses `${PATH//:/\\\\n}` which is supported in bash and zsh)\n- `cpu` — `top -o cpu` — show top processes by CPU\n- `mem` — `top -o rsize` — show top processes by memory usage (resident size)\n\n- `afk` — `pmset displaysleepnow` — put display to sleep / lock screen\n- `wifi_pass` — `security find-generic-password -wa` — retrieve WiFi password from keychain (append SSID)\n \n## Completions\n\nThe `assets/completions/` directory contains curated zsh completion scripts included with these dotfiles. Install or source them into your shell to get improved tab completion for many common commands.\n\nIncluded completion scripts (filename -\u003e purpose):\n\n- `_git` — Git CLI: subcommands and options completion.\n- `_npm` — npm: curated npm subcommands and package.json helpers.\n- `_node` — Node.js: official node CLI completion.\n- `_copilot` — Copilot CLI: GitHub/AWS Copilot command completion.\n- `_nvm` — Node Version Manager: install/use/list completions.\n- `_npx` — npx: run binaries from node_modules with completion.\n- `_yarn` — yarn: common yarn commands.\n- `_cargo` — Cargo (Rust): build/test/run/etc. completions.\n- `_rustc` — rustc: compiler flags and options.\n- `_clang` / `_clang++` — Clang/Clang++: compiler options.\n- `_gcc` / `_g++` — GCC/G++: compiler and linker flags.\n- `_cmake` — CMake: generator and target completions.\n- `_gnumake` — GNU make: common targets and options.\n- `_vcpkg` — vcpkg: package manager completions for C/C++.\n- `_black` / `_flake8` — Python tooling (formatter/linter) completions.\n- `_grep` / `_egrep` / `_fgrep` — grep-family completions (search tools).\n- `_rg` / `_ripgrep` — ripgrep: fast recursive search completion.\n- `_ssh` — ssh client completions (hosts, options).\n- `_curl` — curl: URL/option completions and common flags.\n- `_wget` — wget: download utility completions.\n- `_tar` — tar: archive operations and options.\n- `_rsync` — rsync: sync options and remote/target completions.\n- `_ip` / `_ipconfig` — network tools (ip/ipconfig) completions.\n- `_ping` / `_dig` / `_nslookup` — DNS and network diagnostic completions.\n- `_df` / `_du` — disk utilities completions.\n- `_cat` / `_dd` / `_hexdump` — raw file utilities completions.\n- `_code` / `_gh` / `_github` / `_opencode` / `_codex` — editor \u0026 GitHub/CLI completions.\n- `_cron` / `_crontab` — cron scheduling helpers and crontab completions.\n- `_dockutil` — macOS Dock utility completions.\n- `_nvram` / `_ifconfig` — macOS system utilities completions.\n\nNote: Some completions are auto-generated or derived from upstream sources; where available the scripts prefer a tool's native completion output. For the full list, see the `assets/completions/` folder.\n\n## Installed Apps\n\nThese are the GUI apps and developer tools the installer can install (via Homebrew Casks or other helpers). Each entry references the script that performs the install in `scripts/`.\n\n### Editors \u0026 IDEs\n\n- `Visual Studio Code` — popular, extensible code editor with many extensions. (`scripts/021_install_vscode.sh`)\n- `OpenCode` — a lightweight code editor/tooling package installed via Homebrew. (`scripts/023_install_opencode.sh`)\n- `Mark Text` — an open-source WYSIWYG Markdown editor for writing and previewing Markdown. (`scripts/010_install_apps.sh`)\n\n### Terminal \u0026 Shells\n\n- `iTerm2` — a feature-rich terminal emulator for macOS with profiles, tabs and split panes. (`scripts/010_install_apps.sh`)\n- `PowerShell` — Microsoft's cross-platform shell and scripting environment. (`scripts/007_install_powershell.sh`)\n\n### Browsers \u0026 Web Tools\n\n- `Google Chrome` — the Chromium-based web browser. (`scripts/028_install_google_chrome.sh`)\n- `Chrome DevTools MCP` — Chrome DevTools helper/utility installed for browser development workflows. (`scripts/027_install_chrome_devtools_mcp.sh`)\n- `Firefox` — the Mozilla Firefox web browser (configurable via policies.json for extensions). (`scripts/020_install_firefox.sh`)\n\n### Office \u0026 Productivity\n\n- `Microsoft Word` — word processing application from Microsoft Office. (`scripts/035_install_microsoft_word.sh`)\n- `Microsoft Excel` — spreadsheet application from Microsoft Office. (`scripts/032_install_microsoft_excel.sh`)\n- `Microsoft PowerPoint` — presentation application from Microsoft Office. (`scripts/034_install_microsoft_powerpoint.sh`)\n- `Microsoft Outlook` — email and calendar client from Microsoft Office. (`scripts/033_install_microsoft_outlook.sh`)\n- `Standard Notes` — an encrypted note-taking application focused on privacy and sync. (`scripts/010_install_apps.sh`)\n- `Adobe Acrobat Reader` — a PDF reader for viewing and annotating PDFs. (`scripts/036_install_adobe_reader.sh`)\n\n### Communication\n\n- `Beeper` — chat/IM aggregation client that can bridge multiple services. (`scripts/024_install_beeper.sh`)\n- `GitHub Desktop` — graphical Git client for GitHub workflows. (`scripts/025_install_github_desktop.sh`)\n\n### Dev Tooling \u0026 Runtimes\n\n- `nvm (Node Version Manager)` — manage multiple Node.js versions per-user. (`scripts/004_install_nvm.sh`)\n- `Rust (rustup)` — installs the Rust toolchain using `rustup` (compiler, Cargo, toolchains). (`scripts/005_install_rust.sh`)\n- `vcpkg` — C/C++ package manager for native dependencies. (`scripts/006_install_vcpkg.sh`)\n- `OpenAI Codex CLI` — CLI tooling for interacting with the Codex/AI helper (where available). (`scripts/022_install_codex.sh`)\n\n### Networking \u0026 Security\n\n- `OpenVPN Connect` — official OpenVPN client for connecting to OpenVPN servers. (`scripts/037_install_openvpn.sh`)\n\n### Security \u0026 Password managers\n\n- `Bitwarden` — a secure cloud-backed password manager and vault (desktop client). (`scripts/030_install_bitwarden.sh`)\n- `KeePassXC` — an offline, open-source cross-platform password manager for local vaults. (`scripts/026_install_keepassxc.sh`)\n\n### Sync \u0026 Storage\n\n- `Nextcloud` — desktop sync client for Nextcloud file sync services. (`scripts/029_install_nextcloud.sh`)\n\n### Fonts \u0026 System\n\n- `Fantasque Sans Mono` — a bundled monospace font installed for development/terminal use. (`scripts/009_install_fonts.sh`)\n\n\n## System tweaks \u0026 defaults (summary)\n\nThis installer applies a curated set of macOS preference tweaks and system settings across multiple scripts. Most changes are DRY_RUN-safe and are applied using `defaults write`, `pmset`, `nvram`, `dockutil`, or the helper `set_user_default` to target per-user domains. Changes that require elevated privileges write to `/Library/Preferences` or are run with `sudo`.\n\nHigh-level categories of tweaks applied by the installer:\n\n- **UI / Appearance:** enable Dark Mode, reduce transparency, disable many window animations, set system accent/highlight values, show battery percentage.\n- **Dock \u0026 Mission Control:** adjust icon size, enable auto-hide with no delay/animation, minimize-to-application, hide recent apps, speed up Mission Control animations, pin curated apps and folder stacks (via `dockutil`).\n- **Finder \u0026 Sidebar:** show all filename extensions, enable status/path bars, default to List view, prevent `.DS_Store` on network/USB volumes, configure sidebar items and default new-window location, unhide `~/Library` and `/Volumes`.\n- **Safari:** privacy/security changes (disable search suggestions, show full URL, enable Develop menu, disable AutoFill, disable Java/plugins, block pop-ups), clear Favorites/History when requested, and postpone Safari recommendation notices.\n- **Spotlight:** restrict indexing to Applications only and disable web/Siri suggestions and Spotlight query suggestions.\n- **Power \u0026 Performance:** SSD-friendly settings (hibernatemode, remove sleepimage), enable HiDPI, pmset tweaks (lid wake, display sleep, low power mode), and disable some background agents where possible.\n- **Input devices \u0026 keyboard:** disable swipe navigation, adjust keyboard illumination, map Fn to Emoji \u0026 Symbols, disable automatic capitalization/quotes/period substitution and auto-correct.\n- **Security \u0026 Privacy:** disable crash reporting/auto-submit, enable Application Firewall + stealth/block-all, disable AirDrop/AirPlay Receiver, and disable quarantine prompts for Brew-installed apps where configured.\n- **System apps \u0026 utilities:** prevent Photos auto-open on plug, Time Machine behavior tweaks, Activity Monitor showing all processes, TextEdit defaults (UTF-8), and App Store/Software Update preferences.\n- **Terminal \u0026 iTerm2:** import themes, set Terminal encoding and secure keyboard entry, and inject a theme prompt block into `~/.zshrc`.\n\nNotes:\n\n- Many preference writes are best-effort and may be ignored by newer macOS versions, MDM profiles, or TCC restrictions. Where applicable, scripts check for Full Disk Access or use `execute_as_user` to write per-user preferences.\n- Restarts of Finder/Dock/SystemUIServer are deferred to `scripts/999_restart_apps.sh` so changes are applied together at the end of a full run.\n\n## Firefox extensions\n\nThe installer can configure Firefox via a `policies.json` file to auto-install curated extensions. The current curated list (written by `scripts/020_configure_firefox_policies.sh`) is:\n\n- `uBlock Origin` — content blocker for ads and trackers.\n- `Violentmonkey` — userscript manager for custom client-side scripts.\n- `Stylus` — site-specific CSS manager for custom styling.\n- `FoxyProxy Standard` — advanced proxy management helper.\n- `Dark Reader` — per-site dark mode for websites.\n- `ColorZilla` — eyedropper and color utilities for web design.\n- `Bitwarden` — password manager and vault integration.\n- `Clear Cache` — quick cache clearing helper for Firefox.\n\nThese are installed by `scripts/020_configure_firefox_policies.sh` into Firefox's `distribution/policies.json` (requires Full Disk Access to write into the app bundle path when run locally).\n\n## Visual Studio Code extensions\n\nThe installer installs a small curated list of VS Code extensions (see `scripts/031_install_vscode_extensions.sh`). Current extensions include:\n\n- `openai.chatgpt` — OpenAI / ChatGPT integration for editor assistance.\n- `dbaeumer.vscode-eslint` — ESLint integration for JavaScript/TypeScript linting.\n- `github.vscode-github-actions` — GitHub Actions workflow tooling.\n- `github.copilot-chat` — GitHub Copilot Chat extension.\n- `davidanson.vscode-markdownlint` — Markdown linting rules and validation.\n- `christian-kohler.npm-intellisense` — npm package auto-imports for JS/TS.\n- `timonwong.shellcheck` — ShellCheck integration for shell script linting.\n- `rooveterinaryinc.roo-cline` — curated tooling (installed when available).\n- `chadbaileyvh.oled-pure-black---vscode` — dark OLED-friendly theme.\n- `streetsidesoftware.code-spell-checker` — spelling diagnostics for code and docs.\n\nVS Code extensions are installed by `scripts/031_install_vscode_extensions.sh` using the `code` CLI when available; the script is DRY_RUN-aware and will skip installation in CI/dry-run modes.\n\n## Test harness \u0026 CI\n\nWe validate changes using the test harness `dev_scripts/test.sh`. This script discovers tests under `tests/` and runs them in a safe manner.\n\nCommon commands:\n\n```bash\n# Run all tests (shell + python where applicable)\n./dev_scripts/test.sh\n\n# Run only completion-related tests and print output\n./dev_scripts/test.sh --pattern completions --verbose\n\n# Use the pytest mode for python tests when helpful\n./dev_scripts/test.sh --pytest\n```\n\nLocal development checklist:\n\n1. Make edits to completions, scripts, dotfiles\n2. Run linting: `./dev_scripts/lint.sh`\n3. Run focused tests: `./dev_scripts/test.sh --pattern completions --verbose`\n4. If everything passes, commit and open a PR\n\nCI note: the repository has a GitHub Actions pipeline that runs these tests for PRs and pushes — keep changes test-friendly and DRY_RUN-safe.\n\n---\n\n## Contributing\n\nWe welcome contributions — typical flows:\n\n1. Fork and create topic branch.\n2. Make small, well-scoped changes (completions, scripts, docs, tests).\n3. Add/adjust tests in `tests/` to exercise changes, prefer DRY_RUN-friendly assertions.\n4. Run the test harness locally and ensure green CI.\n\nDeveloper tips:\n\n- Keep completions conservative and offline-friendly (avoid network calls during shell completion evaluation).\n- Use `dev_scripts/fetch_completions.py` to fetch or regenerate helpful completions.\n- If replacing an existing completion file, keep a backup copy or prefer `.generated` suffix until changes are validated.\n\n---\n\n## Security \u0026 Notes\n\nThis installer makes system-level changes and should be audited carefully before running. Use `--dry-run` and test on disposable machines or VMs if in doubt.\n\n---\n\n## License\n\nMIT — see `license.md`.\n\n---\n\nIf you'd like, I can also generate:\n- a single cheat-sheet markdown (commands + flags) for tools we polished (e.g., Copilot, Codex, OpenCode), or\n- machine-readable JSON/YAML specifications for completions (useful for generating richer completions).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupermarsx%2Fmachinit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsupermarsx%2Fmachinit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupermarsx%2Fmachinit/lists"}