diff --git a/pkgs/by-name/ga/gaw/package.nix b/pkgs/by-name/ga/gaw/package.nix
index d65c354f633f..91a0c4d43b4b 100644
--- a/pkgs/by-name/ga/gaw/package.nix
+++ b/pkgs/by-name/ga/gaw/package.nix
@@ -1,19 +1,78 @@
{
stdenv,
- fetchurl,
+ runCommandLocal,
lib,
+ htmlq,
+ curl,
+ cacert,
gtk3,
pkg-config,
}:
stdenv.mkDerivation rec {
- pname = "gaw";
- version = "20220315";
+ pname = "gaw3";
+ version = "20250128";
- src = fetchurl {
- url = "https://download.tuxfamily.org/gaw/download/gaw3-${version}.tar.gz";
- sha256 = "0j2bqi9444s1mfbr7x9rqp232xf7ab9z7ifsnl305jsklp6qmrbg";
- };
+ # https://www.rvq.fr/php/ndl.php?id=gaw.*
+ # https://www.rvq.fr/php/ndl.php?id=gaw3-20250128.tar.gz
+ src =
+ runCommandLocal "gaw3-${version}.tar.gz"
+ {
+ BASE = "https://www.rvq.fr/php/ndl.php";
+ FNAME = "gaw3-${version}.tar.gz";
+
+ nativeBuildInputs = [
+ htmlq
+ curl
+ ];
+ SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
+
+ outputHashMode = "recursive";
+ outputHashAlgo = "sha256";
+ outputHash = "sha256-3uO+209+cmu231iabyYmABmgegyxAxswWDWA/v8WSy0=";
+ }
+ ''
+ # fetch download page
+ html_form=$(
+ curl "$BASE?id=$FNAME" |
+ tr '\n' ' ' | tr -s ' ' | # minimize whitespace
+ htmlq tr | # select table rows, one per line
+ grep "
$FNAME | " | # filter for row of interest
+ head -n1 | # first match, just in case
+ htmlq form --base "$BASE"
+ )
+
+ declare -a curl_args=()
+
+ # hidden fields
+ declare -a input_names=()
+ readarray -td $'\n' input_names < <(
+ htmlq <<<"$html_form" "input[type=hidden]" -a name
+ )
+ for input_name in "''${input_names[@]}"; do
+ input_value=$(
+ htmlq <<<"$html_form" "input[type=hidden][name=''${input_name}]" -a value
+ )
+ echo "$input_name = $input_value"
+ curl_args+=( --form "$input_name=$input_value" )
+ done
+
+ # destination
+ curl_args+=(
+ "https://www.rvq.fr/$( htmlq <<<"$html_form" form -a action )"
+ )
+
+ # POST and download
+ (set -x
+ curl -X POST "''${curl_args[@]}" $NIX_CURL_FLAGS --output "$FNAME"
+ )
+
+ # unpack and strip root dir
+ mkdir unpack/
+ tar xvf "$FNAME" --directory=unpack/
+ [[ "$(printf "%s\n" unpack/* | wc -l)" -eq 1 ]]
+ cp -a unpack/* $out
+ '';
nativeBuildInputs = [ pkg-config ];
@@ -28,7 +87,7 @@ stdenv.mkDerivation rec {
input from sound cards. Data can be imported to gaw using files,
direct tcp/ip connection or directly from the sound card.
'';
- homepage = "http://gaw.tuxfamily.org";
+ homepage = "https://www.rvq.fr/linux/gaw.php";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ fbeffa ];
platforms = platforms.linux;