updated script for domains

This commit is contained in:
2026-03-27 18:01:25 -05:00
parent a7b9916635
commit bad6f80846

View File

@@ -3,9 +3,22 @@
let let
domains = config.sovran_systemsOS.domainRequirements; domains = config.sovran_systemsOS.domainRequirements;
# Build list of domain names for the missing-check script
domainNamesList = lib.concatMapStringsSep " " (d: d.name) domains; domainNamesList = lib.concatMapStringsSep " " (d: d.name) domains;
ddnsPrompt = ''
read -p " Njal.la DDNS curl command (paste full line, or Enter to skip): " DDNS_LINE
if [ -n "$DDNS_LINE" ]; then
# Strip any leading "curl " if they pasted the whole command
DDNS_LINE="''${DDNS_LINE#curl }"
# Strip surrounding quotes
DDNS_LINE="''${DDNS_LINE%\"}"
DDNS_LINE="''${DDNS_LINE#\"}"
# Replace &auto with &a=''${IP} at the end
DDNS_LINE="''${DDNS_LINE%auto}&a=''${DOLLAR}{IP}"
# Remove any trailing double &a= if they already had &a=
DDNS_LINE=$(echo "$DDNS_LINE" | sed 's/&a=&a=/\&a=/g')
'';
domainPrompts = lib.concatMapStringsSep "\n" (d: '' domainPrompts = lib.concatMapStringsSep "\n" (d: ''
echo "" echo ""
echo -e "''${GREEN} ${d.label} ''${NC}" echo -e "''${GREEN} ${d.label} ''${NC}"
@@ -21,10 +34,9 @@ let
echo "$DOMAIN" > "/var/lib/domains/${d.name}" echo "$DOMAIN" > "/var/lib/domains/${d.name}"
echo " Saved: $DOMAIN" echo " Saved: $DOMAIN"
${lib.optionalString d.needsDDNS '' ${lib.optionalString d.needsDDNS ''
read -p " Njal.la DDNS URL for $DOMAIN (paste full URL, or Enter to skip): " DDNS_URL ${ddnsPrompt}
if [ -n "$DDNS_URL" ]; then
NJALLA_ENTRIES="$NJALLA_ENTRIES NJALLA_ENTRIES="$NJALLA_ENTRIES
curl \"''${DDNS_URL%auto}''${DOLLAR}{IP}\"" curl \"$DDNS_LINE\""
fi fi
''} ''}
else else
@@ -32,7 +44,6 @@ curl \"''${DDNS_URL%auto}''${DOLLAR}{IP}\""
fi fi
'') domains; '') domains;
# Only prompt for domains that don't have a file yet
missingDomainPrompts = lib.concatMapStringsSep "\n" (d: '' missingDomainPrompts = lib.concatMapStringsSep "\n" (d: ''
if [ ! -f "/var/lib/domains/${d.name}" ]; then if [ ! -f "/var/lib/domains/${d.name}" ]; then
MISSING=true MISSING=true
@@ -44,10 +55,9 @@ curl \"''${DDNS_URL%auto}''${DOLLAR}{IP}\""
echo "$DOMAIN" > "/var/lib/domains/${d.name}" echo "$DOMAIN" > "/var/lib/domains/${d.name}"
echo " Saved: $DOMAIN" echo " Saved: $DOMAIN"
${lib.optionalString d.needsDDNS '' ${lib.optionalString d.needsDDNS ''
read -p " Njal.la DDNS URL for $DOMAIN (paste full URL, or Enter to skip): " DDNS_URL ${ddnsPrompt}
if [ -n "$DDNS_URL" ]; then
NEW_NJALLA_ENTRIES="$NEW_NJALLA_ENTRIES NEW_NJALLA_ENTRIES="$NEW_NJALLA_ENTRIES
curl \"''${DDNS_URL%auto}''${DOLLAR}{IP}\"" curl \"$DDNS_LINE\""
fi fi
''} ''}
else else
@@ -62,7 +72,6 @@ curl \"''${DDNS_URL%auto}''${DOLLAR}{IP}\""
fi fi
'') domains; '') domains;
# ── Full setup (first boot) ─────────────────────────────────
setupScript = pkgs.writeShellScriptBin "sovran-setup-domains" '' setupScript = pkgs.writeShellScriptBin "sovran-setup-domains" ''
set -euo pipefail set -euo pipefail
@@ -82,11 +91,11 @@ curl \"''${DDNS_URL%auto}''${DOLLAR}{IP}\""
echo " 1. Domains/subdomains purchased on https://njal.la" echo " 1. Domains/subdomains purchased on https://njal.la"
echo " 2. For each subdomain, add a Dynamic record in" echo " 2. For each subdomain, add a Dynamic record in"
echo " your Njal.la dashboard." echo " your Njal.la dashboard."
echo " 3. Njal.la will give you a DDNS URL like:" echo " 3. Njal.la will give you a curl command like:"
echo "" echo ""
echo -e " ''${CYAN}https://njal.la/update/?h=sub.domain.com&k=abc123&auto''${NC}" echo -e " ''${CYAN}curl \"https://njal.la/update/?h=sub.domain.com&k=abc123&auto\"''${NC}"
echo "" echo ""
echo " Have those URLs ready." echo " Have those curl commands ready."
echo "" echo ""
read -p "Press Enter to continue..." read -p "Press Enter to continue..."
@@ -157,7 +166,6 @@ SCRIPT
nixos-rebuild switch --flake /etc/nixos#nixos nixos-rebuild switch --flake /etc/nixos#nixos
''; '';
# ── Add-domain script (existing machines, new features) ─────
addDomainScript = pkgs.writeShellScriptBin "sovran-add-domains" '' addDomainScript = pkgs.writeShellScriptBin "sovran-add-domains" ''
set -euo pipefail set -euo pipefail
@@ -229,7 +237,6 @@ SCRIPT
nixos-rebuild switch --flake /etc/nixos#nixos nixos-rebuild switch --flake /etc/nixos#nixos
''; '';
# ── Check script used by autostart ──────────────────────────
needsSetup = pkgs.writeShellScriptBin "sovran-domains-need-setup" '' needsSetup = pkgs.writeShellScriptBin "sovran-domains-need-setup" ''
# First boot no setup done at all # First boot no setup done at all
if [ ! -f /var/lib/domains/.setup-complete ]; then if [ ! -f /var/lib/domains/.setup-complete ]; then
@@ -255,7 +262,6 @@ in
needsSetup needsSetup
]; ];
# ── Auto-launch on login if any domains are missing ─────────
environment.etc."xdg/autostart/sovran-setup-domains.desktop".text = '' environment.etc."xdg/autostart/sovran-setup-domains.desktop".text = ''
[Desktop Entry] [Desktop Entry]
Type=Application Type=Application