From c6917585cd8f071922b0d7c8d0bcf92c478468e1 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 17 May 2026 20:47:23 +0200 Subject: [PATCH] Simpler --- bin/omarchy-dns | 62 +++++++++---------------------------------------- 1 file changed, 11 insertions(+), 51 deletions(-) diff --git a/bin/omarchy-dns b/bin/omarchy-dns index 6b3b0dc8..d5493a4c 100755 --- a/bin/omarchy-dns +++ b/bin/omarchy-dns @@ -6,26 +6,6 @@ set -euo pipefail -provider_from_arg() { - case "${1:-}" in - Cloudflare | cloudflare) - echo "Cloudflare" - ;; - Google | google) - echo "Google" - ;; - DHCP | dhcp) - echo "DHCP" - ;; - Custom | custom) - echo "Custom" - ;; - *) - return 1 - ;; - esac -} - current_dns_provider() { local dns="" local compact="" @@ -53,27 +33,10 @@ current_dns_provider() { fi } -self_path() { - local self="${BASH_SOURCE[0]}" - - if [[ $self != /* ]]; then - self=$(command -v -- "$self") - fi - - readlink -f "$self" -} - require_root() { - if (( EUID == 0 )); then - return + if (( EUID != 0 )); then + exec pkexec omarchy-dns "$@" fi - - if ! command -v pkexec >/dev/null; then - echo "Error: pkexec is required to change DNS settings." >&2 - exit 1 - fi - - exec pkexec "$(self_path)" "$@" } lock_dns_to_resolved() { @@ -104,7 +67,6 @@ unlock_dns_to_dhcp() { } usage() { - echo "Usage: omarchy-dns [Cloudflare|Google|DHCP|Custom]" >&2 } if (( $# == 0 )); then @@ -112,20 +74,11 @@ if (( $# == 0 )); then exit 0 fi -if (( $# > 1 )); then - usage - exit 1 -fi - -if ! provider=$(provider_from_arg "$1"); then - usage - exit 1 -fi - -require_root "$provider" +provider="$1" case "$provider" in Cloudflare) + require_root "$provider" tee /etc/systemd/resolved.conf >/dev/null <<'EOF' [Resolve] DNS=1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com 2606:4700:4700::1111#cloudflare-dns.com 2606:4700:4700::1001#cloudflare-dns.com @@ -136,6 +89,7 @@ EOF ;; Google) + require_root "$provider" tee /etc/systemd/resolved.conf >/dev/null <<'EOF' [Resolve] DNS=8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google @@ -146,6 +100,7 @@ EOF ;; DHCP) + require_root "$provider" tee /etc/systemd/resolved.conf >/dev/null <<'EOF' [Resolve] DNSOverTLS=no @@ -154,6 +109,7 @@ EOF ;; Custom) + require_root "$provider" echo "Enter your DNS servers (space-separated, e.g. '192.168.1.1 1.1.1.1'):" if ! read -r dns_servers; then dns_servers="" @@ -171,6 +127,10 @@ FallbackDNS=9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns. EOF lock_dns_to_resolved ;; +*) + echo "Usage: omarchy-dns [Cloudflare|Google|DHCP|Custom]" >&2 + exit 1 + ;; esac systemctl restart systemd-networkd systemd-resolved