nixpkgs-suyu/pkgs/tools/text/hottext/default.nix
2021-05-23 10:49:18 +02:00

100 lines
2.5 KiB
Nix

{ lib, stdenv, fetchurl, fetchFromGitHub, nim, gentium, SDL2, makeDesktopItem }:
let
treeformLibs = lib.attrsets.mapAttrsToList (repo: args:
fetchFromGitHub ({
inherit repo;
owner = "treeform";
} // args)) {
bumpy = {
rev = "1.0.3";
sha256 = "sha256-mDmDlhOGoYYjKgF5j808oT2NqRlfcOdLSDE3WtdJFQ0=";
};
chroma = {
rev = "0.2.5";
sha256 = "sha256-6lNHpO2aMorgkaPfo6kRcOs9r5R6T/kislVmkeoulw8=";
};
flatty = {
rev = "0.2.1";
sha256 = "sha256-TqNnRh2+i6n98ktLRVQxt9CVw17FGLNYq29rJoMus/0=";
};
pixie = {
rev = "1.1.3";
sha256 = "sha256-xKIejVxOd19mblL1ZwpJH91dgKQS5g8U08EL8lGGelA=";
};
typography = {
rev = "0.7.9";
sha256 = "sha256-IYjw3PCp5XzVed2fGGCt9Hb60cxFeF0BUZ7L5PedTLU=";
};
vmath = {
rev = "1.0.3";
sha256 = "sha256-zzSKXjuTZ46HTFUs0N47mxEKTKIdS3dwr+60sQYSdn0=";
};
};
nimLibs = treeformLibs ++ [
(fetchFromGitHub {
owner = "nim-lang";
repo = "sdl2";
rev = "v2.0.2";
sha256 = "sha256-Ivx/gxDa2HVDjCVrJVu23i4d0pDzzv+ThmwqNjtkjsA=";
})
(fetchFromGitHub {
owner = "guzba";
repo = "nimsimd";
rev = "1.0.0";
sha256 = "sha256-kp61fylAJ6MSN9hLYLi7CU2lxVR/lbrNCvZTe0LJLGo=";
})
(fetchFromGitHub {
owner = "guzba";
repo = "zippy";
rev = "0.5.6";
sha256 = "sha256-axp4t9+8TFSpvnATlRKZyuOGLA0e/XKfvrVSwreXpC4=";
})
];
in stdenv.mkDerivation rec {
pname = "hottext";
version = "1.3";
src = fetchurl {
url = "https://git.sr.ht/~ehmry/hottext/archive/v${version}.tar.gz";
sha256 = "sha256-iz7Z2x0/yi/E6gGFkYgq/yZDOxrZGwQmumPoO9kckLQ=";
};
nativeBuildInputs = [ nim ];
buildInputs = [ SDL2 ];
nimFlags = [ "-d:release" ] ++ map (lib: "--path:${lib}/src") nimLibs;
HOTTEXT_FONT_PATH = "${gentium}/share/fonts/truetype/GentiumPlus-R.ttf";
buildPhase = ''
runHook preBuild
HOME=$TMPDIR
nim $nimFlags compile src/$pname
runHook postBuild
'';
desktopItem = makeDesktopItem {
categories = "Utility;";
comment = meta.description;
desktopName = pname;
exec = pname;
name = pname;
};
installPhase = ''
runHook preInstall
install -Dt $out/bin src/$pname
cp -r $desktopItem/* $out
runHook postInstall
'';
meta = with lib; {
description = "Simple RSVP speed-reading utility";
license = licenses.unlicense;
homepage = "https://git.sr.ht/~ehmry/hottext";
maintainers = with maintainers; [ ehmry ];
};
}