This repository automates machine setup for Omarchy environments.
NEW-INSTALL.shis for a fresh machine.INSTALL.shis idempotent and can be re-run safely to apply packages and configuration.set-target.shsetsINSTALL_TARGETfrom hostname so target-specific scripts can run.packages/add-packages.shsources package scripts forcommonand the current target.configs/apply-configs.shsources config scripts forcommonand the current target.
git clone https://github.com/omarchy-install-scripts.git ~/InstallBefore running the fresh install, make sure your SSH keys are already set up in 1Password on the machine.
Run:
./NEW-INSTALL.shThis flow:
- Loads machine target from
set-target.sh - Installs and initializes yadm with
configs/new-install/install-yadm.sh - Runs
INSTALL.sh
Run:
./INSTALL.shThis flow:
- Loads machine target from
set-target.sh - Installs packages via
packages/add-packages.sh - Applies configuration via
configs/apply-configs.sh
set-target.sh maps hostname to target:
home-omarchy->homeschool-omarchy->school
If hostname is unknown, the script exits with an error.
Package scripts are sourced in this order:
packages/common/*.shpackages/$INSTALL_TARGET/*.sh
Notes:
packages/add-packages.shusessource, so package scripts run in the current shell.packages/common/_node.shis prefixed with_so it sorts first and installs Node before other npm-based scripts.packages/old/contains inactive scripts that are not loaded automatically.
Current package scripts:
common/_node.sh: Installs the Omarchy Node development environment whennodeis missing.common/brave.sh: Installs Brave.common/chokidar.sh: Installschokidar-cliglobally with npm.common/codex.sh: Installsopenai-codex.common/confetti.sh: Downloads and installs the latestconfettibinary from GitHub Releases.common/dropbox.sh: Installs Dropbox through Omarchy helpers.common/espanso.sh: Installs Espanso and starts its user service.common/fonts.sh: Installs the Ubuntu font family.common/ghostty.sh: Installs Ghostty through Omarchy helpers.common/gitlab.sh: Installsglab.common/hyprland-monitor-attached.sh: Installshyprland-monitor-attached.common/intel-media-driver.sh: Installs the Intel VAAPI media driver.common/keyd.sh: Installs and enableskeyd, then symlinks the config from~/.config/keyd/default.conf.common/live-server.sh: Installslive-serverglobally with npm.common/marp.sh: Installs the Marp CLI globally with npm.common/onedrive.sh: Installsonedrive-abraunegg.common/pandoc.sh: Installs Pandoc.common/rsync.sh: Installsrsync.common/shfmt.sh: Installsshfmt.common/teams.sh: Installs the Microsoft Teams web app if its desktop entry is missing.common/todoist.sh: Installs the Todoist CLI globally with npm.common/trash.sh: Installstrash-cli.common/typora-themes.sh: Clones and installs Typora default themes into~/.config/Typora/themes.common/voxtype.sh: Installs Voxtype and registers its user service.common/zed.sh: Installs Zed and Omazed, then runsomazed setupif needed.home/anylist.sh: Installs the Anylist web app.home/aws-cli.sh: Installsaws-cli.home/calibre.sh: Installs Calibre.home/heroku.sh: Installs the Heroku CLI globally with npm.home/memcached.sh: Installs Memcached.home/mkcert.sh: Installsmkcertandnss.home/nginx.sh: Installs and enables Nginx.home/postgresql.sh: Installs PostgreSQL, initializes the cluster if needed, enables the service, and creates theposuperuser if missing.home/redis.sh: Installs and enables Redis.home/restsic.sh: Installsrestic.home/ruby-erb.sh: Installsruby-erb.home/ruby-on-rails.sh: Installs the Omarchy Ruby development environment whenrailsis missing.home/yarn.sh: Installs Yarn.school/man-pages-fr.sh: Installs French man pages.school/networking.sh: Installs and configures NetworkManager withwpa_supplicant, disables conflicting services, and removes thenm-appletautostart desktop entry.
Inactive package scripts:
old/airplay.sh: Installs AirPlay support for Pipewire and opens firewall ports for streaming.
Configuration scripts are sourced in this order:
configs/common/*.shconfigs/$INSTALL_TARGET/*.sh
Notes:
configs/apply-configs.shalso usessource, so config scripts run in the current shell.configs/new-install/contains scripts used only byNEW-INSTALL.sh.configs/old/contains inactive scripts that are not loaded automatically.
Current config scripts:
common/clone-git-projects.sh: Clones predefined repositories into~/Work, including extra home-only repositories whenINSTALL_TARGET=home.common/configure-hibernation.sh: Writes systemd sleep and logind drop-ins for suspend-then-hibernate behavior.common/copy-sudoers-rules.sh: Writes/etc/sudoers.d/custom-sudoers-ruleswith custom sudo timeout and tty ticket behavior.common/create-dropbox-symlinks.sh: Replaces local folders if needed and symlinksDocuments,Pictures,Videos, andCoursto Dropbox.common/disable-plocate.sh: Masksplocate-updatedb.timerwhen it is active.common/remove-default-apps.sh: Removes selected default Omarchy web apps, dropssignal-desktopandalacritty, and deletes~/Work/tries.common/set-default-font.sh: Sets the Omarchy font toJetBrainsMonoNL Nerd Fontwhen needed.home/configure-bluetooth-wake.sh: Installs Bluetooth wake udev rules, enables wake on current Bluetooth controllers, and enables wake for paired HID devices when possible.home/enable-config-backup.sh: Enables theconfig-backup.timeruser service when it is not already active.home/set-locale.sh: Sets system locale toen_CA.UTF-8.school/set-locale.sh: Sets system locale tofr_CA.UTF-8.
Fresh-install-only config scripts:
new-install/install-yadm.sh: Installs yadm, clonesgit@github.com:pomartel/config-files.git, resets work tree to repo state, applies alternates, and decrypts secrets.
Inactive config scripts:
old/set-power-rules.sh: Writes/etc/udev/rules.d/99-power-profile.rules, sets display brightness rules, and enablespowerprofile-low-battery.timer.