diff --git a/pkgs/by-name/mo/mongodb-ce/package.nix b/pkgs/by-name/mo/mongodb-ce/package.nix index f7c0ad3e98b7..1993ef12c2e5 100644 --- a/pkgs/by-name/mo/mongodb-ce/package.nix +++ b/pkgs/by-name/mo/mongodb-ce/package.nix @@ -7,43 +7,21 @@ openssl, versionCheckHook, writeShellApplication, + common-updater-scripts, + gitMinimal, jq, nix-update, - gitMinimal, pup, nixosTests, }: -let - version = "8.0.11"; - - srcs = version: { - "x86_64-linux" = { - url = "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2204-${version}.tgz"; - hash = "sha256-XErxsovZyMR1UmwClxn5Bm08hoYHArCtn8TSv/8eDYo="; - }; - "aarch64-linux" = { - url = "https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-ubuntu2204-${version}.tgz"; - hash = "sha256-p1eBobdnJ/uPZHScWFs3AOB7/BJn/MZQ8+VpOHonY2A="; - }; - "x86_64-darwin" = { - url = "https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-${version}.tgz"; - hash = "sha256-RLq+aFJixSt3EginpgIHWnR4CGk0KX5cmC3QrbW3jJ8="; - }; - "aarch64-darwin" = { - url = "https://fastdl.mongodb.org/osx/mongodb-macos-arm64-${version}.tgz"; - hash = "sha256-kNzByPEXi5T3+vr6t/EJuKIDEfGybrsbBqJ8vaEV5tY="; - }; - }; -in stdenv.mkDerivation (finalAttrs: { pname = "mongodb-ce"; - inherit version; + version = "8.0.11"; - src = fetchurl ( - (srcs version).${stdenv.hostPlatform.system} - or (throw "unsupported system: ${stdenv.hostPlatform.system}") - ); + src = + finalAttrs.passthru.sources.${stdenv.hostPlatform.system} + or (throw "Unsupported platform for mongodb-ce: ${stdenv.hostPlatform.system}"); nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]; dontStrip = true; @@ -59,29 +37,49 @@ stdenv.mkDerivation (finalAttrs: { install -Dm 755 bin/mongod -t $out/bin install -Dm 755 bin/mongos -t $out/bin + runHook postInstall ''; - nativeInstallCheckInputs = [ versionCheckHook ]; - versionCheckProgram = "${placeholder "out"}/bin/mongod"; - versionCheckProgramArg = "--version"; # Only enable the version install check on darwin. # On Linux, this would fail as mongod relies on tcmalloc, which # requires access to `/sys/devices/system/cpu/possible`. # See https://github.com/NixOS/nixpkgs/issues/377016 doInstallCheck = stdenv.hostPlatform.isDarwin; + nativeInstallCheckInputs = [ versionCheckHook ]; + versionCheckProgram = "${placeholder "out"}/bin/mongod"; + versionCheckProgramArg = "--version"; passthru = { + sources = { + "x86_64-linux" = fetchurl { + url = "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2404-${finalAttrs.version}.tgz"; + hash = "sha256-XErxsovZyMR1UmwClxn5Bm08hoYHArCtn8TSv/8eDYo="; + }; + "aarch64-linux" = fetchurl { + url = "https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-ubuntu2404-${finalAttrs.version}.tgz"; + hash = "sha256-p1eBobdnJ/uPZHScWFs3AOB7/BJn/MZQ8+VpOHonY2A="; + }; + "x86_64-darwin" = fetchurl { + url = "https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-${finalAttrs.version}.tgz"; + hash = "sha256-RLq+aFJixSt3EginpgIHWnR4CGk0KX5cmC3QrbW3jJ8="; + }; + "aarch64-darwin" = fetchurl { + url = "https://fastdl.mongodb.org/osx/mongodb-macos-arm64-${finalAttrs.version}.tgz"; + hash = "sha256-kNzByPEXi5T3+vr6t/EJuKIDEfGybrsbBqJ8vaEV5tY="; + }; + }; updateScript = let script = writeShellApplication { name = "${finalAttrs.pname}-updateScript"; runtimeInputs = [ + common-updater-scripts curl + gitMinimal jq nix-update - gitMinimal pup ]; @@ -92,16 +90,15 @@ stdenv.mkDerivation (finalAttrs: { # Check if the new version is available for download, if not, exit curl -s https://www.mongodb.com/try/download/community-edition/releases | pup 'h3:not([id]) text{}' | grep "$NEW_VERSION" - if [[ "${version}" = "$NEW_VERSION" ]]; then + if [[ "${finalAttrs.version}" = "$NEW_VERSION" ]]; then echo "The new version same as the old version." exit 0 fi - '' - + lib.concatStrings ( - map (system: '' - nix-update --system ${system} --version "$NEW_VERSION" ${finalAttrs.pname} - '') finalAttrs.meta.platforms - ); + + for platform in ${lib.escapeShellArgs finalAttrs.meta.platforms}; do + update-source-version "mongodb-ce" "$NEW_VERSION" --ignore-same-version --source-key="sources.$platform" + done + ''; }; in { @@ -125,7 +122,7 @@ stdenv.mkDerivation (finalAttrs: { (mongos). ''; maintainers = with lib.maintainers; [ drupol ]; - platforms = lib.attrNames (srcs version); + platforms = lib.attrNames finalAttrs.passthru.sources; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; }; })