diff --git a/pkgs/by-name/un/units/package.nix b/pkgs/by-name/un/units/package.nix new file mode 100644 index 000000000000..dde43648cd73 --- /dev/null +++ b/pkgs/by-name/un/units/package.nix @@ -0,0 +1,70 @@ +{ lib +, fetchurl +, python3 +, readline +, stdenv +, enableCurrenciesUpdater ? true +}: + +let + pythonEnv = python3.withPackages(p: [ + p.requests + ]); +in stdenv.mkDerivation (finalAttrs: { + pname = "units"; + version = "2.23"; + + src = fetchurl { + url = "mirror://gnu/units/units-${finalAttrs.version}.tar.gz"; + hash = "sha256-2Ve0USRZJcnmFMRRM5dEljDq+SvWK4SVugm741Ghc3A="; + }; + + outputs = [ "out" "info" "man" ]; + + buildInputs = [ + readline + ] ++ lib.optionals enableCurrenciesUpdater [ + pythonEnv + ]; + + prePatch = lib.optionalString enableCurrenciesUpdater '' + substituteInPlace units_cur \ + --replace "#!/usr/bin/env python" ${pythonEnv}/bin/python + ''; + + postInstall = lib.optionalString enableCurrenciesUpdater '' + cp units_cur ${placeholder "out"}/bin/ + ''; + + doCheck = true; + + meta = { + homepage = "https://www.gnu.org/software/units/"; + description = "Unit conversion tool"; + longDescription = '' + GNU Units converts quantities expressed in various systems of measurement + to their equivalents in other systems of measurement. Like many similar + programs, it can handle multiplicative scale changes. It can also handle + nonlinear conversions such as Fahrenheit to Celsius or wire gauge, and it + can convert from and to sums of units, such as converting between meters + and feet plus inches. + + Beyond simple unit conversions, GNU Units can be used as a general-purpose + scientific calculator that keeps track of units in its calculations. You + can form arbitrary complex mathematical expressions of dimensions + including sums, products, quotients, powers, and even roots of + dimensions. Thus you can ensure accuracy and dimensional consistency when + working with long expressions that involve many different units that may + combine in complex ways. + + The units are defined in an external data file. You can use the extensive + data file that comes with this program, or you can provide your own data + file to suit your needs. You can also use your own data file to supplement + the standard data file. + ''; + license = with lib.licenses; [ gpl3Plus ]; + mainProgram = "units"; + maintainers = with lib.maintainers; [ AndersonTorres ]; + platforms = lib.platforms.all; + }; +}) diff --git a/pkgs/tools/misc/units/default.nix b/pkgs/tools/misc/units/default.nix deleted file mode 100644 index 56dc43e7f61d..000000000000 --- a/pkgs/tools/misc/units/default.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - stdenv, - lib, - fetchurl, - readline, - enableCurrenciesUpdater ? true, - pythonPackages ? null -}: - -assert enableCurrenciesUpdater -> pythonPackages != null; - -let pythonEnv = pythonPackages.python.withPackages(ps: [ - ps.requests - ]); -in stdenv.mkDerivation rec { - pname = "units"; - version = "2.22"; - - src = fetchurl { - url = "mirror://gnu/units/${pname}-${version}.tar.gz"; - sha256 = "sha256-XRPhIHch/ncm2Qa6HZLcDt2qn8JnWe0i47jRp5MSWEg="; - }; - - buildInputs = [ readline ] - ++ lib.optionals enableCurrenciesUpdater [ - pythonEnv - ] - ; - prePatch = lib.optionalString enableCurrenciesUpdater '' - substituteInPlace units_cur \ - --replace "#!/usr/bin/env python" ${pythonEnv}/bin/python - ''; - postInstall = '' - cp units_cur ${placeholder "out"}/bin/ - ''; - - doCheck = true; - - meta = with lib; { - description = "Unit conversion tool"; - homepage = "https://www.gnu.org/software/units/"; - license = [ licenses.gpl3Plus ]; - platforms = platforms.all; - maintainers = [ maintainers.vrthra ]; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ca2a54c7719c..88165ced7ab5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14707,11 +14707,6 @@ with pkgs; inherit (darwin) cctools; }; - units = callPackage ../tools/misc/units { - enableCurrenciesUpdater = true; - pythonPackages = python3Packages; - }; - unittest-cpp = callPackage ../development/libraries/unittest-cpp { }; unnaturalscrollwheels = callPackage ../tools/inputmethods/unnaturalscrollwheels { };