diff --git a/nixos/doc/manual/release-notes/rl-2611.section.md b/nixos/doc/manual/release-notes/rl-2611.section.md index ca0762676bc6..af409f57b3ee 100644 --- a/nixos/doc/manual/release-notes/rl-2611.section.md +++ b/nixos/doc/manual/release-notes/rl-2611.section.md @@ -160,6 +160,8 @@ - [firefox-syncserver.database.type](#opt-services.firefox-syncserver.database.type) no longer defaults to `"mysql"`. You must now explicitly choose between `"mysql"` and `"postgresql"`. New deployments should prefer PostgreSQL. +- `chatgpt` has been retargeted to OpenAI's new ChatGPT desktop app, while the previous app has been renamed to `chatgpt-classic`. + ## Other Notable Changes {#sec-release-26.11-notable-changes} diff --git a/pkgs/by-name/ch/chatgpt-classic/package.nix b/pkgs/by-name/ch/chatgpt-classic/package.nix new file mode 100644 index 000000000000..88268c2fadc9 --- /dev/null +++ b/pkgs/by-name/ch/chatgpt-classic/package.nix @@ -0,0 +1,61 @@ +{ + lib, + stdenvNoCC, + fetchurl, + xar, + cpio, + unzip, +}: + +let + source = import ./source.nix; +in +stdenvNoCC.mkDerivation { + pname = "chatgpt-classic"; + inherit (source) version; + + src = fetchurl source.src; + + strictDeps = true; + __structuredAttrs = true; + + nativeBuildInputs = [ + xar + cpio + unzip + ]; + + unpackPhase = '' + runHook preUnpack + + xar -xf "$src" + zcat Payload | cpio -i + unzip -q "Library/Application Support/OpenAI/ChatGPT Classic Update/ChatGPT Classic.app.zip" + + runHook postUnpack + ''; + + installPhase = '' + runHook preInstall + + mkdir -p "$out/Applications" + mkdir -p "$out/bin" + cp -a "ChatGPT Classic.app" "$out/Applications" + ln -s "$out/Applications/ChatGPT Classic.app/Contents/MacOS/ChatGPT Classic" "$out/bin/ChatGPT Classic" + + runHook postInstall + ''; + + passthru.updateScript = ./update.sh; + + meta = { + description = "Desktop application for ChatGPT Classic"; + homepage = "https://openai.com/chatgpt/desktop/"; + changelog = "https://help.openai.com/en/articles/9703738-macos-app-release-notes"; + license = lib.licenses.unfree; + maintainers = with lib.maintainers; [ wattmto ]; + platforms = lib.platforms.darwin; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + mainProgram = "ChatGPT Classic"; + }; +} diff --git a/pkgs/by-name/ch/chatgpt-classic/source.nix b/pkgs/by-name/ch/chatgpt-classic/source.nix new file mode 100644 index 000000000000..f6946445a37c --- /dev/null +++ b/pkgs/by-name/ch/chatgpt-classic/source.nix @@ -0,0 +1,7 @@ +{ + version = "1.2026.184"; + src = { + url = "https://persistent.oaistatic.com/sidekick/public/ChatGPT_Classic.pkg"; + hash = "sha256-uj7mpU4tSsEBr2Ypwnu7bdeogCVrrMQs/MWW34CS5Jk="; + }; +} diff --git a/pkgs/by-name/ch/chatgpt-classic/update.sh b/pkgs/by-name/ch/chatgpt-classic/update.sh new file mode 100755 index 000000000000..871a6b4f6685 --- /dev/null +++ b/pkgs/by-name/ch/chatgpt-classic/update.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl libxml2 + +XML_URL="https://persistent.oaistatic.com/sidekick/public/sparkle_public_appcast.xml" + +XML_DATA=$(curl -s $XML_URL) + +LATEST_VERSION=$(echo "$XML_DATA" | xmllint --xpath '/rss/channel/item[1]/*[local-name()="shortVersionString"]/text()' -) +DOWNLOAD_URL=$(echo "$XML_DATA" | xmllint --xpath 'string(//item[1]/enclosure/@url)' -) + +HASH=$(nix-prefetch-url $DOWNLOAD_URL | xargs nix --extra-experimental-features nix-command hash convert --hash-algo sha256) + +SOURCE_NIX="$(dirname ${BASH_SOURCE[0]})/source.nix" + +cat > "${SOURCE_NIX}" << _EOF_ +{ + version = "$LATEST_VERSION"; + src = { + url = "$DOWNLOAD_URL"; + hash = "$HASH"; + }; +} +_EOF_ diff --git a/pkgs/by-name/ch/chatgpt/package.nix b/pkgs/by-name/ch/chatgpt/package.nix index 9799e446af64..d9e32b3ae907 100644 --- a/pkgs/by-name/ch/chatgpt/package.nix +++ b/pkgs/by-name/ch/chatgpt/package.nix @@ -2,8 +2,7 @@ lib, stdenvNoCC, fetchurl, - _7zz, - undmg, + unzip, }: let @@ -15,8 +14,11 @@ stdenvNoCC.mkDerivation { src = fetchurl source.src; + strictDeps = true; + __structuredAttrs = true; + nativeBuildInputs = [ - undmg + unzip ]; sourceRoot = "."; diff --git a/pkgs/by-name/ch/chatgpt/source.nix b/pkgs/by-name/ch/chatgpt/source.nix index 722c0470785d..cff4771c84e4 100644 --- a/pkgs/by-name/ch/chatgpt/source.nix +++ b/pkgs/by-name/ch/chatgpt/source.nix @@ -1,7 +1,7 @@ { - version = "1.2026.119"; + version = "26.803.81509"; src = { - url = "https://persistent.oaistatic.com/sidekick/public/ChatGPT_Desktop_public_1.2026.119_1780053722.dmg"; - hash = "sha256-2RNQ7KS/Bf1boJHpC5qWNdFsWf+NoOVlXqZVEUf7Kh0="; + url = "https://persistent.oaistatic.com/codex-app-prod/ChatGPT-darwin-arm64-26.803.81509.zip"; + hash = "sha256-NMfmKWeK1dY6Y57GlKW4O4X04b18Ie4qvP77sEEJW5w="; }; } diff --git a/pkgs/by-name/ch/chatgpt/update.sh b/pkgs/by-name/ch/chatgpt/update.sh index 871a6b4f6685..37fc5cf5d264 100755 --- a/pkgs/by-name/ch/chatgpt/update.sh +++ b/pkgs/by-name/ch/chatgpt/update.sh @@ -1,7 +1,7 @@ #!/usr/bin/env nix-shell #!nix-shell -i bash -p curl libxml2 -XML_URL="https://persistent.oaistatic.com/sidekick/public/sparkle_public_appcast.xml" +XML_URL="https://persistent.oaistatic.com/codex-app-prod/appcast.xml" XML_DATA=$(curl -s $XML_URL)