about summary refs log tree commit diff
path: root/nixpkgs/pkgs/by-name/un/units/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/by-name/un/units/package.nix')
-rw-r--r--nixpkgs/pkgs/by-name/un/units/package.nix70
1 files changed, 70 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/by-name/un/units/package.nix b/nixpkgs/pkgs/by-name/un/units/package.nix
new file mode 100644
index 000000000000..dde43648cd73
--- /dev/null
+++ b/nixpkgs/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;
+  };
+})