depot/third_party/nixpkgs/pkgs/by-name/un/units/package.nix
Default email c7cb07f092 Project import generated by Copybara.
GitOrigin-RevId: 1536926ef5621b09bba54035ae2bb6d806d72ac8
2024-02-29 21:09:43 +01:00

70 lines
2.3 KiB
Nix

{ 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;
};
})