diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/misc/fend')
-rw-r--r-- | nixpkgs/pkgs/tools/misc/fend/default.nix | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/misc/fend/default.nix b/nixpkgs/pkgs/tools/misc/fend/default.nix new file mode 100644 index 000000000000..82c99628e1b0 --- /dev/null +++ b/nixpkgs/pkgs/tools/misc/fend/default.nix @@ -0,0 +1,89 @@ +{ lib +, stdenv +, fetchFromGitHub +, rustPlatform +, darwin +, pandoc +, installShellFiles +, copyDesktopItems +, makeDesktopItem +, nix-update-script +, testers +, writeText +, runCommand +, fend +}: + +rustPlatform.buildRustPackage rec { + pname = "fend"; + version = "1.3.3"; + + src = fetchFromGitHub { + owner = "printfn"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-4N2MSs4Uhd0NcS57b6qIJd8ovnUVjLiLniMsHTdZHCo="; + }; + + cargoHash = "sha256-Y8LfkFPM4MKxwW6xk93+vCASkVfsMp3GugjH/kIAvQ8="; + + nativeBuildInputs = [ pandoc installShellFiles copyDesktopItems ]; + buildInputs = lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ]; + + postBuild = '' + patchShebangs --build ./documentation/build.sh + ./documentation/build.sh + ''; + + preFixup = '' + installManPage documentation/fend.1 + ''; + + doInstallCheck = true; + + installCheckPhase = '' + [[ "$($out/bin/fend "1 km to m")" = "1000 m" ]] + ''; + + postInstall = '' + install -D -m 444 $src/icon/fend-icon-256.png $out/share/icons/hicolor/256x256/apps/fend.png + ''; + + desktopItems = [ + (makeDesktopItem { + name = "fend"; + desktopName = "fend"; + genericName = "Calculator"; + comment = "Arbitrary-precision unit-aware calculator"; + icon = "fend"; + exec = "fend"; + terminal = true; + categories = [ "Utility" "Calculator" "ConsoleOnly" ]; + }) + ]; + + passthru = { + updateScript = nix-update-script { }; + tests = { + version = testers.testVersion { package = fend; }; + units = testers.testEqualContents { + assertion = "fend does simple math and unit conversions"; + expected = writeText "expected" '' + 36 kph + ''; + actual = runCommand "actual" { } '' + ${lib.getExe fend} '(100 meters) / (10 seconds) to kph' > $out + ''; + }; + }; + }; + + meta = with lib; { + description = "Arbitrary-precision unit-aware calculator"; + homepage = "https://github.com/printfn/fend"; + changelog = "https://github.com/printfn/fend/releases/tag/v${version}"; + license = licenses.mit; + maintainers = with maintainers; [ djanatyn liff ]; + mainProgram = "fend"; + }; +} |