Compare commits

...

42 Commits

Author SHA1 Message Date
David Heinemeier Hansson
a34a671dc8 Remove screen recording status until it is stable 2025-08-24 10:58:41 +02:00
Richard Macklin
c3af4b9469 Default OMARCHY_REF to master in boot.sh (#1030)
This will allow us to change GitHub's default branch to `dev`, so that
PRs will target the correct branch by default, but new installations
will still default to using the stable `master` branch.
2025-08-24 10:40:47 +02:00
David Heinemeier Hansson
ffe8997fad Pinta install seems to work fine now 2025-08-24 09:31:42 +02:00
David Heinemeier Hansson
e2611d9bc4 Rearrange options 2025-08-24 09:28:08 +02:00
David Heinemeier Hansson
266767df5f Show dust disk usage in reverse 2025-08-24 09:26:06 +02:00
David Heinemeier Hansson
eb4172a486 We now have audio settings in the setup menu 2025-08-24 09:24:00 +02:00
David Heinemeier Hansson
ca115b9061 Can't install firewall in chroot, so move it into its own service for now 2025-08-24 09:12:51 +02:00
David Heinemeier Hansson
ab09446971 Can't use chroot trap 2025-08-24 09:06:24 +02:00
David Heinemeier Hansson
af0f459a1a Try skipping this efibootmgr munging for a second 2025-08-24 08:46:34 +02:00
David Heinemeier Hansson
fbf9a19574 Show installation env for debugging 2025-08-24 07:40:16 +02:00
David Heinemeier Hansson
95139164a3 Skip all of powerprofilectl setup during CHROOT 2025-08-24 07:26:24 +02:00
David Heinemeier Hansson
2ae973108d Extract error trapping to its own file 2025-08-24 07:21:49 +02:00
David Heinemeier Hansson
aa0b44b7f4 Missing shebang 2025-08-24 07:20:45 +02:00
David Heinemeier Hansson
d9424b2bff Document what's missing 2025-08-24 07:09:45 +02:00
David Heinemeier Hansson
36a30dd01d Skip the battery monitor during chroot install for now 2025-08-24 07:09:08 +02:00
Ryan Hughes
82467892a3 Merge pull request #1020 from ryanrhughes/limine-fixes
Minor Limine / Snapper Tweaks and Fixes
2025-08-24 01:09:02 +02:00
Ryan Hughes
e138f7e8eb Set config files first 2025-08-24 00:18:10 +02:00
Ryan Hughes
0a75644f2d Less aggressive check 2025-08-24 00:01:36 +02:00
Ryan Hughes
3725f2d3b6 Everyone can have UKI 2025-08-24 00:01:23 +02:00
Ryan Hughes
0ebd62a32e Define boot path 2025-08-23 23:25:33 +02:00
Taha
31d97335fc Add Omarchy icon to waybar (#1017)
* Add Omarchy icon to waybar

* Add step to fonts.sh to install omarchy icon font

* Style and fixup

* Fixup installation of the omarchy font

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-23 23:22:50 +02:00
David Heinemeier Hansson
41a1fe6b21 Switch Zoom from shitty native app to better webapp
Have to compromise on 1080p but seems better than dealing with that
trash app.
2025-08-23 23:03:54 +02:00
David Heinemeier Hansson
91e686f1b2 Can't have nice things during arch-chroot for some reason! 2025-08-23 22:57:47 +02:00
David Heinemeier Hansson
75ac6910d4 Add back fastfetch which we lost when removing logging 2025-08-23 22:40:36 +02:00
David Heinemeier Hansson
b4b8788c14 Use something safe in the arch-chroot 2025-08-23 22:36:38 +02:00
David Heinemeier Hansson
76c94e2604 Breakup the omnibus config install 2025-08-23 22:31:42 +02:00
David Heinemeier Hansson
e59a98fb0b Don't fail if there 2025-08-23 22:21:56 +02:00
David Heinemeier Hansson
dee7e3e4a7 Ensure .config is there
Strange that this should be necessary for arch-chroot, but let's give it
a try
2025-08-23 22:21:28 +02:00
David Heinemeier Hansson
5a7b9292c8 Shorter 2025-08-23 21:41:15 +02:00
David Heinemeier Hansson
31ce6f689e Merge branch 'master' into dev 2025-08-23 21:29:49 +02:00
David Heinemeier Hansson
210481d758 Style 2025-08-23 21:21:00 +02:00
David Heinemeier Hansson
3bac37b21b Use the same state directory for status as everthing else 2025-08-23 21:21:00 +02:00
Ryan Hughes
1edbe89191 Merge pull request #1012 from ryanrhughes/limine-bios-support
Add Limine support for BIOS environments
2025-08-23 20:32:02 +02:00
Ryan Hughes
617e96234b Merge pull request #1010 from ryanrhughes/update-omarchy-snapshot
Make omarchy-snapshot exit if you don't have Snapper but continue update
2025-08-23 20:31:51 +02:00
Ryan Hughes
5873980703 Add efi checks 2025-08-23 20:25:46 +02:00
Ryan Hughes
b8cc8d8bc3 Move update up in case something goes wrong 2025-08-23 20:25:04 +02:00
David Heinemeier Hansson
455fe890ec Just rely on the ISO autostart to set it instead of detecting it 2025-08-23 20:23:08 +02:00
David Heinemeier Hansson
ccc8aa87d0 Improve presentation of failed command 2025-08-23 19:42:31 +02:00
Ryan Hughes
193797393f Exit if you don't have snapper but continue update 2025-08-23 19:16:47 +02:00
David Heinemeier Hansson
7056a3903a No longer need gum or tte as preflights
No more identification up front, no toast during initial install
2025-08-23 19:04:20 +02:00
David Heinemeier Hansson
3880c49469 Logging is having issues, so let's skip until sorted (#1009) 2025-08-23 18:50:32 +02:00
Shawn Yeager
cc80782160 Add two new background images to theme catppuccin (#1008)
* add two new backgrounds with background color #181824

* replace 3rd background image
2025-08-23 16:50:49 +02:00
46 changed files with 219 additions and 272 deletions

View File

@@ -1,7 +0,0 @@
[Desktop Entry]
Name=Audio Settings
Comment=Using Wiremix
Exec=alacritty --class=Wiremix --title=Wiremix -e wiremix
Icon=audio-headphones
Type=Application
Terminal=false

View File

@@ -1,12 +0,0 @@
[Desktop Entry]
Name=Zoom
Comment=Zoom Video Conference
Exec=env QT_SCALE_FACTOR=2 /usr/bin/zoom %U
Icon=Zoom
Terminal=false
Type=Application
Encoding=UTF-8
Categories=Network;Application;
StartupWMClass=zoom
MimeType=x-scheme-handler/zoommtg;x-scheme-handler/zoomus;x-scheme-handler/tel;x-scheme-handler/callto;x-scheme-handler/zoomphonecall;x-scheme-handler/zoomphonesms;x-scheme-handler/zoomcontactcentercall;application/x-zoom
X-KDE-Protocols=zoommtg;zoomus;tel;callto;zoomphonecall;zoomphonesms;zoomcontactcentercall;

View File

@@ -1,6 +1,6 @@
#!/bin/bash
options=("MariaDB" "MySQL" "Redis" "PostgreSQL" "MongoDB")
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB")
choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu
if [[ -n "$choices" ]]; then

26
bin/omarchy-install-firewall Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/bash
if ! command -v ufw &>/dev/null; then
yay -S --noconfirm --needed ufw ufw-docker
fi
# Allow nothing in, everything out
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow ports for LocalSend
sudo ufw allow 53317/udp
sudo ufw allow 53317/tcp
# Allow SSH in
sudo ufw allow 22/tcp
# Allow Docker containers to use DNS on host
sudo ufw allow in proto udp from 172.16.0.0/12 to 172.17.0.1 port 53 comment 'allow-docker-dns'
# Turn on the firewall
sudo ufw --force enable
# Turn on Docker protections
sudo ufw-docker install
sudo ufw reload

View File

@@ -184,7 +184,8 @@ show_install_menu() {
}
show_install_service_menu() {
case $(menu "Install" " Dropbox\n Tailscale") in
case $(menu "Install" "󱨑 Firewall\n Dropbox\n Tailscale") in
*Firewall*) present_terminal omarchy-install-firewall ;;
*Dropbox*) present_terminal omarchy-install-dropbox ;;
*Tailscale*) present_terminal omarchy-install-tailscale ;;
*) show_install_menu ;;

View File

@@ -8,6 +8,11 @@ if [[ -z $COMMAND ]]; then
exit 1
fi
if ! command -v snapper &>/dev/null; then
echo "You need Snapper installed to be able to use omarchy-snapshot."
exit 127
fi
case "$COMMAND" in
create)
DESC="$(omarchy-version)"

View File

@@ -3,7 +3,7 @@
# Status indicator daemon for waybar
# Calls individual status scripts and caches results
STATE_DIR="/tmp/omarchy-status"
STATE_DIR=~/.local/state/omarchy/status
DAEMON_PID_FILE="$STATE_DIR/daemon.pid"
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
@@ -11,15 +11,14 @@ mkdir -p "$STATE_DIR"
# Update all status files by calling individual scripts
update_all_status_files() {
"$SCRIPT_DIR/omarchy-status-dnd" > "$STATE_DIR/dnd"
"$SCRIPT_DIR/omarchy-status-nightlight" > "$STATE_DIR/nightlight"
"$SCRIPT_DIR/omarchy-status-recording" > "$STATE_DIR/recording"
"$SCRIPT_DIR/omarchy-status-idle" > "$STATE_DIR/idle"
"$SCRIPT_DIR/omarchy-status-dnd" >"$STATE_DIR/dnd"
"$SCRIPT_DIR/omarchy-status-nightlight" >"$STATE_DIR/nightlight"
"$SCRIPT_DIR/omarchy-status-idle" >"$STATE_DIR/idle"
}
# Generate hash for change detection
get_status_hash() {
echo "$(pgrep -c "mako|hyprsunset|wl-screenrec|wf-recorder|obs|hypridle" 2>/dev/null)$(makoctl mode 2>/dev/null | grep -c 'do-not-disturb')$(hyprctl hyprsunset temperature 2>/dev/null)"
echo "$($(makoctl mode 2>/dev/null | grep -c 'do-not-disturb')$(hyprctl hyprsunset temperature 2>/dev/null)"
}
# Start background monitoring daemon
@@ -32,24 +31,24 @@ start_daemon() {
last_hash=""
while true; do
current_hash=$(get_status_hash)
if [ "$current_hash" != "$last_hash" ]; then
update_all_status_files
last_hash="$current_hash"
fi
sleep 0.5
done
} &
echo $! > "$DAEMON_PID_FILE"
echo $! >"$DAEMON_PID_FILE"
}
# Main execution
MODULE="$1"
if [ -z "$MODULE" ]; then
echo "Usage: $0 [dnd|nightlight|recording|idle]"
echo "Usage: $0 [dnd|nightlight|idle]"
exit 1
fi

View File

@@ -1,12 +0,0 @@
#!/bin/bash
# Recording status indicator
if pgrep -x wl-screenrec >/dev/null 2>&1 || \
pgrep -x wf-recorder >/dev/null 2>&1 || \
pgrep -x obs >/dev/null 2>&1 || \
pgrep -f "ffmpeg.*(x11grab|gdigrab|avfoundation)" >/dev/null 2>&1; then
echo '{"text": "󰻂", "tooltip": "Screen recording active", "class": "status-recording"}'
else
echo '{"text": "", "tooltip": "", "class": "hidden"}'
fi

View File

@@ -2,7 +2,7 @@
set -e
omarchy-snapshot create
omarchy-snapshot create || [ $? -eq 127 ]
omarchy-update-git
omarchy-migrate
omarchy-update-system-pkgs

View File

@@ -23,8 +23,9 @@ echo -e "\nCloning Omarchy from: https://github.com/${OMARCHY_REPO}.git"
rm -rf ~/.local/share/omarchy/
git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null
# Use custom branch if instructed
if [[ -n "$OMARCHY_REF" ]]; then
# Use custom branch if instructed, otherwise default to master
OMARCHY_REF="${OMARCHY_REF:-master}"
if [[ $OMARCHY_REF != "master" ]]; then
echo -e "\eUsing branch: $OMARCHY_REF"
cd ~/.local/share/omarchy
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"

BIN
config/omarchy.ttf Normal file

Binary file not shown.

View File

@@ -4,15 +4,8 @@
"position": "top",
"spacing": 0,
"height": 26,
"modules-left": [
"custom/omarchy",
"hyprland/workspaces"
],
"modules-center": [
"group/status-cluster",
"clock",
"custom/update"
],
"modules-left": ["custom/omarchy", "hyprland/workspaces"],
"modules-center": ["group/status-cluster", "clock", "custom/update"],
"modules-right": [
"group/tray-expander",
"bluetooth",
@@ -46,7 +39,7 @@
}
},
"custom/omarchy": {
"format": "",
"format": "<span font='omarchy'>\ue900</span>",
"on-click": "omarchy-menu",
"tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space"
},
@@ -70,11 +63,11 @@
"on-click-right": "omarchy-cmd-tzupdate"
},
"network": {
"format-icons": ["󰤯","󰤟","󰤢","󰤥","󰤨"],
"format" : "{icon}",
"format-wifi" : "{icon}",
"format-ethernet" : "󰀂",
"format-disconnected" : "󰖪",
"format-icons": ["󰤯", "󰤟", "󰤢", "󰤥", "󰤨"],
"format": "{icon}",
"format-wifi": "{icon}",
"format-ethernet": "󰀂",
"format-disconnected": "󰖪",
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-disconnected": "Disconnected",
@@ -85,15 +78,11 @@
"battery": {
"format": "{capacity}% {icon}",
"format-discharging": "{icon}",
"format-charging": "{icon}",
"format-plugged": "",
"format-charging": "{icon}",
"format-plugged": "",
"format-icons": {
"charging": [
"󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"
],
"default": [
"󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"
]
"charging": ["󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"],
"default": ["󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"]
},
"format-full": "󰂅",
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
@@ -128,17 +117,13 @@
"transition-duration": 600,
"children-class": "tray-group-item"
},
"modules": [
"custom/expand-icon",
"tray"
]
"modules": ["custom/expand-icon", "tray"]
},
"group/status-cluster": {
"orientation": "inherit",
"modules": [
"custom/status-dnd",
"custom/status-nightlight",
"custom/status-recording",
"custom/status-nightlight",
"custom/status-idle"
]
},
@@ -149,17 +134,11 @@
"on-click": "makoctl mode -t do-not-disturb"
},
"custom/status-nightlight": {
"exec": "omarchy-status-daemon nightlight",
"exec": "omarchy-status-daemon nightlight",
"return-type": "json",
"interval": 1,
"on-click": "omarchy-toggle-nightlight"
},
"custom/status-recording": {
"exec": "omarchy-status-daemon recording",
"return-type": "json",
"interval": 1,
"on-click": "omarchy-cmd-screenrecord-stop"
},
"custom/status-idle": {
"exec": "omarchy-status-daemon idle",
"return-type": "json",

View File

@@ -64,7 +64,6 @@ tooltip {
#custom-status-dnd,
#custom-status-nightlight,
#custom-status-recording,
#custom-status-idle {
min-width: 12px;
margin: 0 2px;
@@ -77,11 +76,6 @@ tooltip {
opacity: 1;
}
#custom-status-recording.status-recording {
color: #a55555;
opacity: 1;
}
.hidden {
opacity: 0;
}

View File

@@ -8,4 +8,3 @@ source = ~/.local/share/omarchy/default/hypr/apps/system.conf
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf
source = ~/.local/share/omarchy/default/hypr/apps/1password.conf
source = ~/.local/share/omarchy/default/hypr/apps/jetbrains.conf
source = ~/.local/share/omarchy/default/hypr/apps/zoom.conf

View File

@@ -3,4 +3,4 @@ windowrule = tile, class:^(Chromium)$
# Only slight opacity when unfocused
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable|Brave-browser|brave-browser)$
windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube
windowrule = opacity 1 1, initialTitle:(youtube.com_/|app.zoom.us_/wc/home)

View File

@@ -1,2 +0,0 @@
windowrule = opacity 1 1, class:Zoom Workplace

View File

@@ -6,38 +6,6 @@ set -e
export PATH="$HOME/.local/share/omarchy/bin:$PATH"
OMARCHY_INSTALL=~/.local/share/omarchy/install
# Give people a chance to retry running the installation
catch_errors() {
echo -e "\n\e[31mOmarchy installation failed!\e[0m"
echo "The failing command was: \`$BASH_COMMAND\` (exit code: $?)"
echo "See your installation log: ~/.local/state/omarchy/installation.log"
echo
echo "Get help from the community via QR code or at https://discord.gg/tXFUdasqhY"
echo " "
echo " █▀▀▀▀▀█ ▄ ▄ ▀▄▄▄█ █▀▀▀▀▀█ "
echo " █ ███ █ ▄▄▄▄▀▄▀▄▀ █ ███ █ "
echo " █ ▀▀▀ █ ▄█ ▄█▄▄▀ █ ▀▀▀ █ "
echo " ▀▀▀▀▀▀▀ ▀▄█ █ █ █ ▀▀▀▀▀▀▀ "
echo " ▀▀█▀▀▄▀▀▀▀▄█▀▀█ ▀ █ ▀ █ "
echo " █▄█ ▄▄▀▄▄ ▀ ▄ ▀█▄▄▄▄ ▀ ▀█ "
echo " ▄ ▄▀█ ▀▄▀▀▀▄ ▄█▀▄█▀▄▀▄▀█▀ "
echo " █ ▄▄█▄▀▄█ ▄▄▄ ▀ ▄▀██▀ ▀█ "
echo " ▀ ▀ ▀ █ ▀▄ ▀▀█▀▀▀█▄▀ "
echo " █▀▀▀▀▀█ ▀█ ▄▀▀ █ ▀ █▄▀██ "
echo " █ ███ █ █▀▄▄▀ █▀███▀█▄██▄ "
echo " █ ▀▀▀ █ ██ ▀ █▄█ ▄▄▄█▀ █ "
echo " ▀▀▀▀▀▀▀ ▀ ▀ ▀▀▀ ▀ ▀▀▀▀▀▀ "
echo " "
if [[ -n $OMARCHY_BARE ]]; then
echo "You can retry by running: OMARCHY_BARE=true bash ~/.local/share/omarchy/install.sh"
else
echo "You can retry by running: bash ~/.local/share/omarchy/install.sh"
fi
}
trap catch_errors ERR
show_logo() {
clear
tte -i ~/.local/share/omarchy/logo.txt --frame-rate ${2:-120} ${1:-expand}
@@ -49,30 +17,32 @@ show_subtext() {
echo
}
# Start logging
source $OMARCHY_INSTALL/log/before-install.sh
# Install prerequisites
source $OMARCHY_INSTALL/preflight/show-env.sh
source $OMARCHY_INSTALL/preflight/trap-errors.sh
source $OMARCHY_INSTALL/preflight/chroot.sh
source $OMARCHY_INSTALL/preflight/mirrorlist.sh
source $OMARCHY_INSTALL/preflight/gum.sh
source $OMARCHY_INSTALL/preflight/guard.sh
source $OMARCHY_INSTALL/preflight/aur.sh
source $OMARCHY_INSTALL/preflight/tte.sh
source $OMARCHY_INSTALL/preflight/migrations.sh
# Configuration
source $OMARCHY_INSTALL/config/config.sh
source $OMARCHY_INSTALL/config/branding.sh
source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
source $OMARCHY_INSTALL/config/fix-fkeys.sh
source $OMARCHY_INSTALL/config/network.sh
source $OMARCHY_INSTALL/config/power.sh
source $OMARCHY_INSTALL/config/git.sh
source $OMARCHY_INSTALL/config/gpg.sh
source $OMARCHY_INSTALL/config/usb-autosuspend.sh
source $OMARCHY_INSTALL/config/timezones.sh
source $OMARCHY_INSTALL/config/nvidia.sh
source $OMARCHY_INSTALL/config/increase-sudo-tries.sh
source $OMARCHY_INSTALL/config/increase-lockout-limit.sh
source $OMARCHY_INSTALL/config/ignore-power-button.sh
source $OMARCHY_INSTALL/config/ssh-flakiness.sh
source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
source $OMARCHY_INSTALL/config/fix-fkeys.sh
source $OMARCHY_INSTALL/config/xcompose.sh
# Login
source $OMARCHY_INSTALL/login/plymouth.sh
@@ -110,19 +80,14 @@ if ping -c5 omarchy.org &>/dev/null; then
yay -Syu --noconfirm
fi
# Stop logging
source $OMARCHY_INSTALL/log/after-install.sh
# Reboot
show_logo laseretch 920
show_subtext "You're done! So we're ready to reboot now..."
if sudo test -f /etc/sudoers.d/99-omarchy-installer; then
sudo rm -f /etc/sudoers.d/99-omarchy-installer &>/dev/null
echo
read -n 1 -s -r -p "Remove the USB installer then press any key to reboot..."
echo
echo -e "\nRemember to remove USB installer!"
fi
sleep 2
sleep 5
reboot

View File

@@ -1,6 +1,6 @@
#!/bin/bash
if [ -z "$OMARCHY_BARE" ]; then
omarchy-tui-install "Disk Usage" "bash -c 'dust; read -n 1 -s'" float https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/qdirstat.png
omarchy-tui-install "Disk Usage" "bash -c 'dust -r; read -n 1 -s'" float https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/qdirstat.png
omarchy-tui-install "Docker" "lazydocker" tile https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/docker.png
fi

View File

@@ -13,4 +13,5 @@ if [ -z "$OMARCHY_BARE" ]; then
omarchy-webapp-install "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png
omarchy-webapp-install "Figma" https://figma.com/ https://www.veryicon.com/download/png/application/app-icon-7/figma-1?s=256
omarchy-webapp-install "Discord" https://discord.com/channels/@me https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/discord.png
omarchy-webapp-install "Zoom" https://app.zoom.us/wc/home https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/zoom.png
fi

View File

@@ -7,8 +7,7 @@ if [ -z "$OMARCHY_BARE" ]; then
xournalpp localsend-bin
# Packages known to be flaky or having key signing issues are run one-by-one
# FIXME: Add pinta back to this list when we have dealt with certificate issue
for pkg in typora spotify zoom; do
for pkg in typora spotify pinta; do
yay -S --noconfirm --needed "$pkg" ||
echo -e "\e[31mFailed to install $pkg. Continuing without!\e[0m"
done

View File

@@ -1,6 +1,7 @@
#!/bin/bash
# Copy over Omarchy configs
mkdir -p ~/.config
cp -R ~/.local/share/omarchy/config/* ~/.config/
# Use default bashrc from Omarchy
@@ -14,43 +15,3 @@ if [ -n "$OMARCHY_BARE" ]; then
mkdir -p ~/.local/state/omarchy
touch ~/.local/state/omarchy/bare.mode
fi
# Setup GPG configuration with multiple keyservers for better reliability
sudo mkdir -p /etc/gnupg
sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/
sudo chmod 644 /etc/gnupg/dirmngr.conf
sudo gpgconf --kill dirmngr || true
sudo gpgconf --launch dirmngr || true
# Increase lockout limit to 10 and decrease timeout to 2 minutes
sudo sed -i 's|^\(auth\s\+required\s\+pam_faillock.so\)\s\+preauth.*$|\1 preauth silent deny=10 unlock_time=120|' "/etc/pam.d/system-auth"
sudo sed -i 's|^\(auth\s\+\[default=die\]\s\+pam_faillock.so\)\s\+authfail.*$|\1 authfail deny=10 unlock_time=120|' "/etc/pam.d/system-auth"
# Solve common flakiness with SSH
echo "net.ipv4.tcp_mtu_probing=1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf
# Set common git aliases
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global pull.rebase true
git config --global init.defaultBranch master
# Set identification from install inputs
if [[ -n "${OMARCHY_USER_NAME//[[:space:]]/}" ]]; then
git config --global user.name "$OMARCHY_USER_NAME"
fi
if [[ -n "${OMARCHY_USER_EMAIL//[[:space:]]/}" ]]; then
git config --global user.email "$OMARCHY_USER_EMAIL"
fi
# Set default XCompose that is triggered with CapsLock
tee ~/.XCompose >/dev/null <<EOF
include "%H/.local/share/omarchy/default/xcompose"
# Identification
<Multi_key> <space> <n> : "$OMARCHY_USER_NAME"
<Multi_key> <space> <e> : "$OMARCHY_USER_EMAIL"
EOF

View File

@@ -2,7 +2,4 @@
if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then
echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf
# Rely on install/login.sh to do the rebuild
# sudo mkinitcpio -P
fi

18
install/config/git.sh Normal file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
# Set common git aliases
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global pull.rebase true
git config --global init.defaultBranch master
# Set identification from install inputs
if [[ -n "${OMARCHY_USER_NAME//[[:space:]]/}" ]]; then
git config --global user.name "$OMARCHY_USER_NAME"
fi
if [[ -n "${OMARCHY_USER_EMAIL//[[:space:]]/}" ]]; then
git config --global user.email "$OMARCHY_USER_EMAIL"
fi

8
install/config/gpg.sh Normal file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
# Setup GPG configuration with multiple keyservers for better reliability
sudo mkdir -p /etc/gnupg
sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/
sudo chmod 644 /etc/gnupg/dirmngr.conf
sudo gpgconf --kill dirmngr || true
sudo gpgconf --launch dirmngr || true

View File

@@ -0,0 +1,5 @@
#!/bin/bash
# Increase lockout limit to 10 and decrease timeout to 2 minutes
sudo sed -i 's|^\(auth\s\+required\s\+pam_faillock.so\)\s\+preauth.*$|\1 preauth silent deny=10 unlock_time=120|' "/etc/pam.d/system-auth"
sudo sed -i 's|^\(auth\s\+\[default=die\]\s\+pam_faillock.so\)\s\+authfail.*$|\1 authfail deny=10 unlock_time=120|' "/etc/pam.d/system-auth"

View File

@@ -1,2 +1,4 @@
#!/bin/bash
echo "Defaults passwd_tries=10" | sudo tee /etc/sudoers.d/passwd-tries
sudo chmod 440 /etc/sudoers.d/passwd-tries

View File

@@ -4,17 +4,16 @@
# even if they're not running off a battery. So let's make sure that's changed to performance.
yay -S --noconfirm python-gobject power-profiles-daemon
if ls /sys/class/power_supply/BAT* &>/dev/null; then
# This computer runs on a battery
powerprofilesctl set balanced || true
# FIXME: Can't set powerprofilesctl during CHROOT, must do it afterwards
if [ -z "${OMARCHY_CHROOT_INSTALL:-}" ]; then
if ls /sys/class/power_supply/BAT* &>/dev/null; then
# This computer runs on a battery
powerprofilesctl set balanced || true
# Enable battery monitoring timer for low battery notifications
if [ -n "${OMARCHY_CHROOT_INSTALL:-}" ]; then
systemctl --user enable omarchy-battery-monitor.timer
else
# Enable battery monitoring timer for low battery notifications
systemctl --user enable --now omarchy-battery-monitor.timer
else
# This computer runs on power outlet
powerprofilesctl set performance || true
fi
else
# This computer runs on power outlet
powerprofilesctl set performance || true
fi

View File

@@ -0,0 +1,4 @@
#!/bin/bash
# Solve common flakiness with SSH
echo "net.ipv4.tcp_mtu_probing=1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf

View File

@@ -0,0 +1,10 @@
#!/bin/bash
# Set default XCompose that is triggered with CapsLock
tee ~/.XCompose >/dev/null <<EOF
include "%H/.local/share/omarchy/default/xcompose"
# Identification
<Multi_key> <space> <n> : "$OMARCHY_USER_NAME"
<Multi_key> <space> <e> : "$OMARCHY_USER_EMAIL"
EOF

View File

@@ -2,6 +2,10 @@
yay -S --noconfirm --needed ttf-font-awesome ttf-cascadia-mono-nerd ttf-ia-writer noto-fonts noto-fonts-emoji
mkdir -p ~/.local/share/fonts
cp ~/.local/share/omarchy/config/omarchy.ttf ~/.local/share/fonts/
fc-cache
if [ -z "$OMARCHY_BARE" ]; then
yay -S --noconfirm --needed ttf-jetbrains-mono noto-fonts-cjk noto-fonts-extra
fi

View File

@@ -1,26 +1,5 @@
#!/bin/bash
if ! command -v ufw &>/dev/null && -z "${OMARCHY_CHROOT_INSTALL:-}"; then
yay -S --noconfirm --needed ufw ufw-docker
# Allow nothing in, everything out
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow ports for LocalSend
sudo ufw allow 53317/udp
sudo ufw allow 53317/tcp
# Allow SSH in
sudo ufw allow 22/tcp
# Allow Docker containers to use DNS on host
sudo ufw allow in proto udp from 172.16.0.0/12 to 172.17.0.1 port 53 comment 'allow-docker-dns'
# Turn on the firewall
sudo ufw --force enable
# Turn on Docker protections
sudo ufw-docker install
sudo ufw reload
if -z "${OMARCHY_CHROOT_INSTALL:-}"; then
omarchy-install-firewall
fi

View File

@@ -3,7 +3,8 @@
yay -S --noconfirm --needed \
unzip inetutils impala \
fd eza fzf ripgrep zoxide bat dust jq xmlstarlet \
wl-clipboard btop \
wl-clipboard fastfetch btop \
man tldr less whois plocate \
starship bash-completion \
gum python-poetry-core python-terminaltexteffects \
alacritty

View File

@@ -1,5 +0,0 @@
#!/bin/bash
echo -e "\n--- Pacman packages (after installation) ---"
echo "Total packages installed: $(pacman -Q | wc -l)"
pacman -Q

View File

@@ -1,16 +0,0 @@
#!/bin/bash
# Start logging a copy of everything sent to STDOUT and STDERR
mkdir -p ~/.local/state/omarchy/logs/
exec &> >(tee -a ~/.local/state/omarchy/logs/installation.log)
echo "--- System state before installation ---"
sudo pacman -S --noconfirm fastfetch
fastfetch
echo -e "\n--- System logs (journalctl / current boot) ---"
journalctl -b --no-pager
echo -e "\n--- Pacman packages (before installation) ---"
echo "Total packages installed: $(pacman -Q | wc -l)"
pacman -Q

View File

@@ -1,17 +1,22 @@
#!/bin/bash
if command -v limine &>/dev/null && [ ! -f /etc/default/limine ]; then
yay -S --noconfirm --needed limine-mkinitcpio-hook limine-snapper-sync
if command -v limine &>/dev/null; then
sudo tee /etc/mkinitcpio.conf.d/omarchy_hooks.conf <<EOF >/dev/null
HOOKS=(base udev plymouth keyboard autodetect microcode modconf kms keymap consolefont block encrypt filesystems fsck btrfs-overlayfs)
EOF
CMDLINE=$(grep "^[[:space:]]*cmdline:" /boot/EFI/limine/limine.conf | head -1 | sed 's/^[[:space:]]*cmdline:[[:space:]]*//')
[[ -f /boot/EFI/limine/limine.conf ]] && EFI=true
# Conf location is different between EFI and BIOS
[[ -n "$EFI" ]] && limine_config="/boot/EFI/limine/limine.conf" || limine_config="/boot/limine/limine.conf"
CMDLINE=$(grep "^[[:space:]]*cmdline:" "$limine_config" | head -1 | sed 's/^[[:space:]]*cmdline:[[:space:]]*//')
sudo tee /etc/default/limine <<EOF >/dev/null
TARGET_OS_NAME="Omarchy"
ESP_PATH="/boot"
KERNEL_CMDLINE[default]="$CMDLINE"
KERNEL_CMDLINE[default]+="quiet splash"
@@ -29,6 +34,11 @@ MAX_SNAPSHOT_ENTRIES=5
SNAPSHOT_FORMAT_CHOICE=5
EOF
# UKI and EFI fallback are EFI only
if [[ -z $EFI ]]; then
sudo sed -i '/^ENABLE_UKI=/d; /^ENABLE_LIMINE_FALLBACK=/d' /etc/default/limine
fi
# We overwrite the whole thing knowing the limine-update will add the entries for us
sudo tee /boot/limine.conf <<EOF >/dev/null
### Read more at config document: https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md
@@ -52,6 +62,9 @@ term_background_bright: 24283b
EOF
yay -S --noconfirm --needed limine-mkinitcpio-hook limine-snapper-sync
sudo limine-update
# Match Snapper configs if not installing from the ISO
if [ -z "${OMARCHY_CHROOT_INSTALL:-}" ]; then
if ! sudo snapper list-configs 2>/dev/null | grep -q "root"; then
@@ -68,16 +81,15 @@ EOF
sudo sed -i 's/^NUMBER_LIMIT="50"/NUMBER_LIMIT="5"/' /etc/snapper/configs/{root,home}
sudo sed -i 's/^NUMBER_LIMIT_IMPORTANT="10"/NUMBER_LIMIT_IMPORTANT="5"/' /etc/snapper/configs/{root,home}
sudo limine-update
chrootable_systemctl_enable limine-snapper-sync.service
fi
# Add UKI entry to UEFI machines to skip bootloader showing on normal boot
# Only doing this for ISO installs
if [ -n "${OMARCHY_CHROOT_INSTALL:-}" ] && efibootmgr &>/dev/null && ! efibootmgr | grep -q Omarchy; then
sudo efibootmgr --create \
--disk "$(findmnt -n -o SOURCE /boot | sed 's/[0-9]*$//')" \
--part "$(findmnt -n -o SOURCE /boot | grep -o '[0-9]*$')" \
--label "Omarchy" \
--loader "\\EFI\\Linux\\$(cat /etc/machine-id)_linux.efi"
fi
# FIXME: Make this work on real hardware
# if [ -n "$EFI" ] && efibootmgr &>/dev/null && ! efibootmgr | grep -q Omarchy; then
# sudo efibootmgr --create \
# --disk "$(findmnt -n -o SOURCE /boot | sed 's/[0-9]*$//')" \
# --part "$(findmnt -n -o SOURCE /boot | grep -o '[0-9]*$')" \
# --label "Omarchy" \
# --loader "\\EFI\\Linux\\$(cat /etc/machine-id)_linux.efi"
# fi

View File

@@ -1,8 +1,4 @@
# Chroot installations have some differences
if ! cmp -s /proc/1/root/ / 2>/dev/null; then
export OMARCHY_CHROOT_INSTALL=1
fi
# Starting the installer with OMARCHY_CHROOT_INSTALL=1 will put it into chroot mode
chrootable_systemctl_enable() {
if [ -n "${OMARCHY_CHROOT_INSTALL:-}" ]; then
sudo systemctl enable $1

View File

@@ -1,3 +0,0 @@
#!/bin/bash
sudo pacman -S --noconfirm --needed gum

View File

@@ -1,3 +1,5 @@
#!/bin/bash
# Set mirror to single geo setup
echo 'Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch' |
sudo tee /etc/pacman.d/mirrorlist >/dev/null

View File

@@ -0,0 +1,4 @@
#!/bin/bash
echo "Installation ENV:"
env | grep -E "^(OMARCHY_CHROOT_INSTALL|OMARCHY_USER_NAME|OMARCHY_USER_EMAIL|USER|HOME|OMARCHY_REPO|OMARCHY_REF|OMARCHY_BARE)="

View File

@@ -0,0 +1,34 @@
#!/bin/bash
# Give people a chance to retry running the installation
catch_errors() {
echo -e "\n\e[31mOmarchy installation failed!\e[0m"
echo
echo "This command halted with exit code $?:"
echo "$BASH_COMMAND"
echo
echo "Get help from the community via QR code or at https://discord.gg/tXFUdasqhY"
echo " "
echo " █▀▀▀▀▀█ ▄ ▄ ▀▄▄▄█ █▀▀▀▀▀█ "
echo " █ ███ █ ▄▄▄▄▀▄▀▄▀ █ ███ █ "
echo " █ ▀▀▀ █ ▄█ ▄█▄▄▀ █ ▀▀▀ █ "
echo " ▀▀▀▀▀▀▀ ▀▄█ █ █ █ ▀▀▀▀▀▀▀ "
echo " ▀▀█▀▀▄▀▀▀▀▄█▀▀█ ▀ █ ▀ █ "
echo " █▄█ ▄▄▀▄▄ ▀ ▄ ▀█▄▄▄▄ ▀ ▀█ "
echo " ▄ ▄▀█ ▀▄▀▀▀▄ ▄█▀▄█▀▄▀▄▀█▀ "
echo " █ ▄▄█▄▀▄█ ▄▄▄ ▀ ▄▀██▀ ▀█ "
echo " ▀ ▀ ▀ █ ▀▄ ▀▀█▀▀▀█▄▀ "
echo " █▀▀▀▀▀█ ▀█ ▄▀▀ █ ▀ █▄▀██ "
echo " █ ███ █ █▀▄▄▀ █▀███▀█▄██▄ "
echo " █ ▀▀▀ █ ██ ▀ █▄█ ▄▄▄█▀ █ "
echo " ▀▀▀▀▀▀▀ ▀ ▀ ▀▀▀ ▀ ▀▀▀▀▀▀ "
echo " "
if [[ -n $OMARCHY_BARE ]]; then
echo "You can retry by running: OMARCHY_BARE=true bash ~/.local/share/omarchy/install.sh"
else
echo "You can retry by running: bash ~/.local/share/omarchy/install.sh"
fi
}
trap catch_errors ERR

View File

@@ -1,3 +0,0 @@
#!/bin/bash
yay -S --noconfirm --needed python-poetry-core python-terminaltexteffects

View File

@@ -1,7 +0,0 @@
if [[ ! -f ~/.local/state/omarchy/bare.mode ]]; then
echo "Add missing installation of Zoom"
if ! command -v zoom &>/dev/null; then
yay -S --noconfirm --needed zoom
fi
fi

View File

@@ -1,3 +1,3 @@
echo "Add status indicators for screen recordings, nightlight, dnd, and idle lock to Waybar"
echo "Add status indicators for nightlight, dnd, and idle lock to Waybar"
echo
gum confirm "Replace current Waybar config (backup will be made)?" && omarchy-refresh-waybar

9
migrations/1755981930.sh Normal file
View File

@@ -0,0 +1,9 @@
echo "Add Omarchy icon to the Waybar"
mkdir -p ~/.local/share/fonts
cp ~/.local/share/omarchy/config/omarchy.ttf ~/.local/share/fonts/
fc-cache
echo
gum confirm "Replace current Waybar config (backup will be made)?" && omarchy-refresh-waybar

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB