config

NixOS config
Log | Files | Refs | README | LICENSE

update-debian.sh (2156B) - Raw


      1 #!/usr/bin/env bash
      2 set -euo pipefail
      3 
      4 # Script to generate updated Debian Live package definition
      5 # Usage: ./update-debian.sh <flavor>
      6 #   flavor: standard, xfce, kde, gnome, etc.
      7 
      8 SHA256SUMS_URL="https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/SHA256SUMS"
      9 
     10 if [[ $# -ne 1 ]]; then
     11     echo "Usage: $0 <flavor>" >&2
     12     echo "  flavor: standard, xfce, kde, gnome, etc." >&2
     13     exit 1
     14 fi
     15 
     16 FLAVOR="$1"
     17 
     18 # Download SHA256SUMS file
     19 SHA256SUMS_CONTENT=$(curl -s "$SHA256SUMS_URL")
     20 
     21 if [[ -z "$SHA256SUMS_CONTENT" ]]; then
     22     echo "Error: Could not download SHA256SUMS file" >&2
     23     exit 1
     24 fi
     25 
     26 # Extract version from any filename in SHA256SUMS
     27 VERSION=$(echo "$SHA256SUMS_CONTENT" | \
     28     grep -oP 'debian-live-\K[\d.]+(?=-amd64-\w+\.iso)' | \
     29     head -n1)
     30 
     31 if [[ -z "$VERSION" ]]; then
     32     echo "Error: Could not determine Debian version from SHA256SUMS" >&2
     33     exit 1
     34 fi
     35 
     36 # Extract hash from SHA256SUMS for this flavor
     37 ISO_FILENAME="debian-live-${VERSION}-amd64-${FLAVOR}.iso"
     38 HASH_HEX=$(echo "$SHA256SUMS_CONTENT" | \
     39     grep " ${ISO_FILENAME}$" | \
     40     awk '{print $1}')
     41 
     42 if [[ -z "$HASH_HEX" ]]; then
     43     echo "Error: Could not find hash for $ISO_FILENAME in SHA256SUMS" >&2
     44     echo "" >&2
     45     echo "Available ISOs:" >&2
     46     echo "$SHA256SUMS_CONTENT" | grep '\.iso$' | sed 's/^/  /' >&2
     47     exit 1
     48 fi
     49 
     50 # Convert hex hash to SRI format
     51 HASH_SRI=$(nix-hash --type sha256 --to-sri "$HASH_HEX")
     52 
     53 # Output the Nix code block
     54 cat <<EOF
     55           mrescue-debian-${FLAVOR} = mkDebianLive {
     56             flavor = "${FLAVOR}";
     57             version = "${VERSION}";
     58             hash = "${HASH_SRI}";
     59           };
     60 EOF
     61 
     62 echo ""
     63 echo "Checking mirror availability..." >&2
     64 MIRROR_URL="https://dl.jakstys.lt/boot/debian-live-${VERSION}-amd64-${FLAVOR}.iso"
     65 if curl -sI "$MIRROR_URL" | head -1 | grep -q "200"; then
     66   echo "✓ File available on mirror" >&2
     67 else
     68   echo "⚠ Warning: File not found on mirror!" >&2
     69   echo ""
     70   echo "To upload to mirror, run:" >&2
     71   echo "  ssh fwminex sh -c 'cd /var/www/dl/boot && wget https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-${VERSION}-amd64-${FLAVOR}.iso'" >&2
     72   echo ""
     73 fi