From d3cb3bd006349d9a372c835ed472783423337894 Mon Sep 17 00:00:00 2001 From: SandaruKasa Date: Fri, 24 Jan 2025 18:35:05 +0300 Subject: [PATCH] mathematica: allow user to provide version info --- pkgs/by-name/ma/mathematica/generic.nix | 8 +- pkgs/by-name/ma/mathematica/package.nix | 81 +++-- pkgs/by-name/ma/mathematica/versions.nix | 420 +++++++++++------------ 3 files changed, 261 insertions(+), 248 deletions(-) diff --git a/pkgs/by-name/ma/mathematica/generic.nix b/pkgs/by-name/ma/mathematica/generic.nix index d9be4633e5cb..27aa6e03ce0c 100644 --- a/pkgs/by-name/ma/mathematica/generic.nix +++ b/pkgs/by-name/ma/mathematica/generic.nix @@ -3,8 +3,6 @@ autoPatchelfHook, lib, makeWrapper, - requireFile, - runCommand, stdenv, symlinkJoin, # arguments from default.nix @@ -91,9 +89,13 @@ stdenv.mkDerivation { meta pname src - version ; + version = + version # a comment to trick nixfmt + + lib.optionalString cudaSupport "-cuda" + + lib.optionalString (lang != "en") "-${lang}"; + nativeBuildInputs = [ autoPatchelfHook makeWrapper diff --git a/pkgs/by-name/ma/mathematica/package.nix b/pkgs/by-name/ma/mathematica/package.nix index 62ce806a98b0..c23563629324 100644 --- a/pkgs/by-name/ma/mathematica/package.nix +++ b/pkgs/by-name/ma/mathematica/package.nix @@ -1,34 +1,61 @@ { callPackage, + requireFile, config, lib, cudaPackages, cudaSupport ? config.cudaSupport, + /* + If you want an older version or a version with web documentation or different language, + you can override any of the following attributes: + ```nix + my_mathematica = mathematica.override { + version = "X.Y.Z"; + lang = "??"; + webdoc = true; + }; + ``` + This, however, requires that the version you are requesting is known to nixpkgs + and is added as an entry in `./versions.nix`. + If it is not, you can manually specify all the necessary information: + ```nix + my_mathematica = mathematica.override { + versionInfo = { + version = "X.Y.Z"; + lang = "en"; + language = "English"; + # Get this hash via a command similar to this: + # nix-hash --type sha256 --sri \ + # $(nix store add-path Wolfram_XX.X.X_BNDL_LINUX.sh --name 'Wolfram_XX.X.X_BNDL_LINUX.sh') + hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; + installer = "Installer_File_Name.sh"; + }; + }; + ``` + `versionInfo` will take precedence over `version`, `lang`, & `webdoc`. + */ lang ? "en", webdoc ? false, version ? null, + versionInfo ? null, /* - If you wish to completely override the src, use: + By default, this nix expression will try to find the installer in the Nix Store + based on the filename and hash (either found in ./versions.nix or provided by user in `versionInfo`). + But you can completely override the `src`: + ```nix my_mathematica = mathematica.override { - source = pkgs.requireFile { - name = "Mathematica_XX.X.X_BNDL_LINUX.sh"; - # Get this hash via a command similar to this: - # nix-store --query --hash \ - # $(nix store add-path Mathematica_XX.X.X_BNDL_LINUX.sh --name 'Mathematica_XX.X.X_BNDL_LINUX.sh') - sha256 = "0000000000000000000000000000000000000000000000000000"; - message = '' - Your override for Mathematica includes a different src for the installer, - and it is missing. - ''; - hashMode = "recursive"; + source = pkgs.fetchurl { + url = "https://example.com/Wolfram_XX.X.X_BNDL_LINUX.sh"; + hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; }; - } + }; + ``` */ source ? null, }: let - versions = callPackage ./versions.nix { }; + versions = import ./versions.nix; matching-versions = lib.sort (v1: v2: lib.versionOlder v2.version v1.version) ( lib.filter ( @@ -56,19 +83,31 @@ let in lib.compareLists lib.compare (sublist as) (sublist bs) == 0; - matchesDoc = v: (builtins.match ".*[0-9]_LIN(UX)?.sh" v.src.name != null) == webdoc; + matchesDoc = v: (builtins.match ".*[0-9]_LIN(UX)?.sh" v.installer != null) == webdoc; + + selected = lib.defaultTo found-version versionInfo; + + defaultSource = requireFile { + name = selected.installer; + message = '' + This nix expression requires that ${selected.installer} is + already part of the store. Find the file on your Mathematica CD + and add it to the nix store with nix-store --add-fixed sha256 . + ''; + inherit (selected) hash; + }; in callPackage ./generic.nix { inherit cudaSupport cudaPackages; - inherit (found-version) lang; - src = if source == null then found-version.src else source; + pname = "mathematica"; - version = - found-version.version - + lib.optionalString cudaSupport "-cuda" - + lib.optionalString (lang != "en") "-${lang}"; + + inherit (selected) version lang; + + src = lib.defaultTo defaultSource source; + meta = { description = "Wolfram Mathematica computational software system"; homepage = "https://www.wolfram.com/mathematica/"; diff --git a/pkgs/by-name/ma/mathematica/versions.nix b/pkgs/by-name/ma/mathematica/versions.nix index 339574ff5af5..67ae0e5d3086 100644 --- a/pkgs/by-name/ma/mathematica/versions.nix +++ b/pkgs/by-name/ma/mathematica/versions.nix @@ -1,231 +1,203 @@ -{ lib, requireFile }: - /* To calculate the hash of an installer, use a command like this: nix --extra-experimental-features nix-command hash file */ - -let - versions = [ - { - version = "14.3.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-F4Rl4xz3vso+N//Uz7ZXvh5CrM6nsKMQxrRR11o/aNA="; - installer = "Wolfram_14.3.0_LIN.sh"; - } - { - version = "14.3.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-FvcXXijGOcuRA1UFyVvPIyR1YaK/qrkMpLxf+mz+A/c="; - installer = "Wolfram_14.3.0_LIN_Bndl.sh"; - } - { - version = "14.2.1"; - lang = "en"; - language = "English"; - sha256 = "sha256-WNLuq9RviYF3Mj8uOALhmvcxGGHVq/TAGFMTGWoYBcc="; - installer = "Wolfram_14.2.1_LIN.sh"; - } - { - version = "14.2.1"; - lang = "en"; - language = "English"; - sha256 = "sha256-DcZbetr5wO3i/DkchgpsW3RGHfa1PslA4fK+bRQ68Bg="; - installer = "Wolfram_14.2.1_LIN_Bndl.sh"; - } - { - version = "14.2.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-wIuyWufKuchPl7phCxVM9vIIkjUHfRxIECfDyGJliqs="; - installer = "Wolfram_14.2.0_LIN.sh"; - } - { - version = "14.2.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-wY6acGoUc7y22enSi7RrcRFLvvPGaeYTta4yWExlXho="; - installer = "Wolfram_14.2.0_LIN_Bndl.sh"; - } - { - version = "14.1.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-PCpjwqA6NC+iwvYxddYBlmF5+vl76r+MoIYAL91WFns="; - installer = "Wolfram_14.1.0_LIN.sh"; - } - { - version = "14.1.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-pnu60Pv3xo3+MAkDLiU3yTPVbbQ00diV45vSVL8B310="; - installer = "Wolfram_14.1.0_LIN_Bndl.sh"; - } - { - version = "14.0.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-NzMhGQZq6o6V4UdtJxUH/yyP2s7wjTR86SRA7lW7JfI="; - installer = "Mathematica_14.0.0_LINUX.sh"; - } - { - version = "14.0.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-UrcBEg6G6nbVX++X0z0oG5JjieXL0AquAqtjzY5EBn4="; - installer = "Mathematica_14.0.0_BNDL_LINUX.sh"; - } - { - version = "13.3.1"; - lang = "en"; - language = "English"; - sha256 = "sha256-0+mYVGiF4Qn3eiLIoINSHVIqT8GtlBPFRYIOF+nHyQo="; - installer = "Mathematica_13.3.1_LINUX.sh"; - } - { - version = "13.3.1"; - lang = "en"; - language = "English"; - sha256 = "sha256-03R4s05fmTcZnlZIMSI6xlLER58MIoccoCr27F8BXOk="; - installer = "Mathematica_13.3.1_BNDL_LINUX.sh"; - } - { - version = "13.3.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-24MC0O+kBUe3TrwXUb+7QZt8tQHvWVIT8F9B6Ih+4k8="; - installer = "Mathematica_13.3.0_LINUX.sh"; - } - { - version = "13.3.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-91bw7+4ht+7g+eF32BNYf77yEQWyuPffisj4kB63pcI="; - installer = "Mathematica_13.3.0_BNDL_LINUX.sh"; - } - { - version = "13.2.1"; - lang = "en"; - language = "English"; - sha256 = "sha256-GA2k+jvE4mTJsIbMHce5c516h/glHLnXdthEfnNmk0w="; - installer = "Mathematica_13.2.1_LINUX.sh"; - } - { - version = "13.2.1"; - lang = "en"; - language = "English"; - sha256 = "sha256-ZvgG2W/gjQIo4hyXHsGta5FyTslrz/ltOe/ZK/U2Sx8="; - installer = "Mathematica_13.2.1_BNDL_LINUX.sh"; - } - { - version = "13.2.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-T9XOXA6jpgN6bcO/do9sw1L73ABtyxuZCLzftv4Cl6o="; - installer = "Mathematica_13.2.0_LINUX.sh"; - } - { - version = "13.2.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-YRUvl2H9SwpwDZx04ugd7ZnK5G+t88bzAObXsGGVhk0="; - installer = "Mathematica_13.2.0_BNDL_LINUX.sh"; - } - { - version = "13.1.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-GZyUYslx/M4aFI3Pj9Osw3/w79/Jp/4T3mRE277pNuM="; - installer = "Mathematica_13.1.0_LINUX.sh"; - } - { - version = "13.1.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-LIpGAJ3uTkZgjc0YykwusyyHQKlCnTvrZGStFfSOz60="; - installer = "Mathematica_13.1.0_BNDL_LINUX.sh"; - } - { - version = "13.0.1"; - lang = "en"; - language = "English"; - sha256 = "sha256-NnKpIMG0rxr9SAcz9tZ2Zbr4JYdX3+WabtbXRAzybbo="; - installer = "Mathematica_13.0.1_BNDL_LINUX.sh"; - } - { - version = "13.0.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-FbutOaWZUDEyXR0Xj2OwDnFwbT7JAB66bRaB+8mR0+E="; - installer = "Mathematica_13.0.0_BNDL_LINUX.sh"; - } - { - version = "12.3.1"; - lang = "en"; - language = "English"; - sha256 = "sha256-UbnKsS/ZGwCep61JaKLIpZ6U3FXS5swdcSrNW6LE1Qk="; - installer = "Mathematica_12.3.1_LINUX.sh"; - } - { - version = "12.3.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-BF3wRfbnlt7Vn2TrLg8ZSayI3LodW24F+1PqCkrtchU="; - installer = "Mathematica_12.3.0_LINUX.sh"; - } - { - version = "12.2.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-O2Z2ogPGrbfpxBilSEsDeXQoe1vgnGTn3+p03cDkANc="; - installer = "Mathematica_12.2.0_LINUX.sh"; - } - { - version = "12.1.1"; - lang = "en"; - language = "English"; - sha256 = "sha256-rUe4hr5KmGTXD1I/eSYVoFHU68mH2aD2VLZFtOtDswo="; - installer = "Mathematica_12.1.1_LINUX.sh"; - } - { - version = "12.1.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-56P1KKOTJkQj+K9wppAsnYpej/YB3VUNL7DPLYGgqZY="; - installer = "Mathematica_12.1.0_LINUX.sh"; - } - { - version = "12.0.0"; - lang = "en"; - language = "English"; - sha256 = "sha256-uftx4a/MHXLCABlv+kNFEtII+ikg4geHhDP1BOWK6dc="; - installer = "Mathematica_12.0.0_LINUX.sh"; - } - ]; - -in - -lib.flip map versions ( +[ { - version, - lang, - language, - sha256, - installer, - }: - { - inherit version lang; - src = requireFile { - name = installer; - message = '' - This nix expression requires that ${installer} is - already part of the store. Find the file on your Mathematica CD - and add it to the nix store with nix-store --add-fixed sha256 . - ''; - inherit sha256; - }; + version = "14.3.0"; + lang = "en"; + language = "English"; + hash = "sha256-F4Rl4xz3vso+N//Uz7ZXvh5CrM6nsKMQxrRR11o/aNA="; + installer = "Wolfram_14.3.0_LIN.sh"; } -) + { + version = "14.3.0"; + lang = "en"; + language = "English"; + hash = "sha256-FvcXXijGOcuRA1UFyVvPIyR1YaK/qrkMpLxf+mz+A/c="; + installer = "Wolfram_14.3.0_LIN_Bndl.sh"; + } + { + version = "14.2.1"; + lang = "en"; + language = "English"; + hash = "sha256-WNLuq9RviYF3Mj8uOALhmvcxGGHVq/TAGFMTGWoYBcc="; + installer = "Wolfram_14.2.1_LIN.sh"; + } + { + version = "14.2.1"; + lang = "en"; + language = "English"; + hash = "sha256-DcZbetr5wO3i/DkchgpsW3RGHfa1PslA4fK+bRQ68Bg="; + installer = "Wolfram_14.2.1_LIN_Bndl.sh"; + } + { + version = "14.2.0"; + lang = "en"; + language = "English"; + hash = "sha256-wIuyWufKuchPl7phCxVM9vIIkjUHfRxIECfDyGJliqs="; + installer = "Wolfram_14.2.0_LIN.sh"; + } + { + version = "14.2.0"; + lang = "en"; + language = "English"; + hash = "sha256-wY6acGoUc7y22enSi7RrcRFLvvPGaeYTta4yWExlXho="; + installer = "Wolfram_14.2.0_LIN_Bndl.sh"; + } + { + version = "14.1.0"; + lang = "en"; + language = "English"; + hash = "sha256-PCpjwqA6NC+iwvYxddYBlmF5+vl76r+MoIYAL91WFns="; + installer = "Wolfram_14.1.0_LIN.sh"; + } + { + version = "14.1.0"; + lang = "en"; + language = "English"; + hash = "sha256-pnu60Pv3xo3+MAkDLiU3yTPVbbQ00diV45vSVL8B310="; + installer = "Wolfram_14.1.0_LIN_Bndl.sh"; + } + { + version = "14.0.0"; + lang = "en"; + language = "English"; + hash = "sha256-NzMhGQZq6o6V4UdtJxUH/yyP2s7wjTR86SRA7lW7JfI="; + installer = "Mathematica_14.0.0_LINUX.sh"; + } + { + version = "14.0.0"; + lang = "en"; + language = "English"; + hash = "sha256-UrcBEg6G6nbVX++X0z0oG5JjieXL0AquAqtjzY5EBn4="; + installer = "Mathematica_14.0.0_BNDL_LINUX.sh"; + } + { + version = "13.3.1"; + lang = "en"; + language = "English"; + hash = "sha256-0+mYVGiF4Qn3eiLIoINSHVIqT8GtlBPFRYIOF+nHyQo="; + installer = "Mathematica_13.3.1_LINUX.sh"; + } + { + version = "13.3.1"; + lang = "en"; + language = "English"; + hash = "sha256-03R4s05fmTcZnlZIMSI6xlLER58MIoccoCr27F8BXOk="; + installer = "Mathematica_13.3.1_BNDL_LINUX.sh"; + } + { + version = "13.3.0"; + lang = "en"; + language = "English"; + hash = "sha256-24MC0O+kBUe3TrwXUb+7QZt8tQHvWVIT8F9B6Ih+4k8="; + installer = "Mathematica_13.3.0_LINUX.sh"; + } + { + version = "13.3.0"; + lang = "en"; + language = "English"; + hash = "sha256-91bw7+4ht+7g+eF32BNYf77yEQWyuPffisj4kB63pcI="; + installer = "Mathematica_13.3.0_BNDL_LINUX.sh"; + } + { + version = "13.2.1"; + lang = "en"; + language = "English"; + hash = "sha256-GA2k+jvE4mTJsIbMHce5c516h/glHLnXdthEfnNmk0w="; + installer = "Mathematica_13.2.1_LINUX.sh"; + } + { + version = "13.2.1"; + lang = "en"; + language = "English"; + hash = "sha256-ZvgG2W/gjQIo4hyXHsGta5FyTslrz/ltOe/ZK/U2Sx8="; + installer = "Mathematica_13.2.1_BNDL_LINUX.sh"; + } + { + version = "13.2.0"; + lang = "en"; + language = "English"; + hash = "sha256-T9XOXA6jpgN6bcO/do9sw1L73ABtyxuZCLzftv4Cl6o="; + installer = "Mathematica_13.2.0_LINUX.sh"; + } + { + version = "13.2.0"; + lang = "en"; + language = "English"; + hash = "sha256-YRUvl2H9SwpwDZx04ugd7ZnK5G+t88bzAObXsGGVhk0="; + installer = "Mathematica_13.2.0_BNDL_LINUX.sh"; + } + { + version = "13.1.0"; + lang = "en"; + language = "English"; + hash = "sha256-GZyUYslx/M4aFI3Pj9Osw3/w79/Jp/4T3mRE277pNuM="; + installer = "Mathematica_13.1.0_LINUX.sh"; + } + { + version = "13.1.0"; + lang = "en"; + language = "English"; + hash = "sha256-LIpGAJ3uTkZgjc0YykwusyyHQKlCnTvrZGStFfSOz60="; + installer = "Mathematica_13.1.0_BNDL_LINUX.sh"; + } + { + version = "13.0.1"; + lang = "en"; + language = "English"; + hash = "sha256-NnKpIMG0rxr9SAcz9tZ2Zbr4JYdX3+WabtbXRAzybbo="; + installer = "Mathematica_13.0.1_BNDL_LINUX.sh"; + } + { + version = "13.0.0"; + lang = "en"; + language = "English"; + hash = "sha256-FbutOaWZUDEyXR0Xj2OwDnFwbT7JAB66bRaB+8mR0+E="; + installer = "Mathematica_13.0.0_BNDL_LINUX.sh"; + } + { + version = "12.3.1"; + lang = "en"; + language = "English"; + hash = "sha256-UbnKsS/ZGwCep61JaKLIpZ6U3FXS5swdcSrNW6LE1Qk="; + installer = "Mathematica_12.3.1_LINUX.sh"; + } + { + version = "12.3.0"; + lang = "en"; + language = "English"; + hash = "sha256-BF3wRfbnlt7Vn2TrLg8ZSayI3LodW24F+1PqCkrtchU="; + installer = "Mathematica_12.3.0_LINUX.sh"; + } + { + version = "12.2.0"; + lang = "en"; + language = "English"; + hash = "sha256-O2Z2ogPGrbfpxBilSEsDeXQoe1vgnGTn3+p03cDkANc="; + installer = "Mathematica_12.2.0_LINUX.sh"; + } + { + version = "12.1.1"; + lang = "en"; + language = "English"; + hash = "sha256-rUe4hr5KmGTXD1I/eSYVoFHU68mH2aD2VLZFtOtDswo="; + installer = "Mathematica_12.1.1_LINUX.sh"; + } + { + version = "12.1.0"; + lang = "en"; + language = "English"; + hash = "sha256-56P1KKOTJkQj+K9wppAsnYpej/YB3VUNL7DPLYGgqZY="; + installer = "Mathematica_12.1.0_LINUX.sh"; + } + { + version = "12.0.0"; + lang = "en"; + language = "English"; + hash = "sha256-uftx4a/MHXLCABlv+kNFEtII+ikg4geHhDP1BOWK6dc="; + installer = "Mathematica_12.0.0_LINUX.sh"; + } +]