{ stdenv , lib , fetchFromGitHub , fetchpatch , pkg-config , wget , unzip , mawk , sqlite , which , lua5_3 , installShellFiles , makeWrapper }: let luaEnv = lua5_3.withPackages (p: with p; [ luasql-sqlite3 luautf8 ]); in stdenv.mkDerivation rec { pname = "openrussian-cli"; version = "1.0.0"; src = fetchFromGitHub { owner = "rhaberkorn"; repo = "openrussian-cli"; rev = version; hash = "sha256-lu13Dd3D4P/7Yol1ixt86BHk86y8DMsbFzfi244+KuY="; }; patches = [ (fetchpatch { url = "https://github.com/rhaberkorn/openrussian-cli/commit/984e555acbadbd1aed7df17ab53e2c586a2f8f68.patch"; hash = "sha256-/z4YrEeuejtCtwiFXksFREwgQoWvtI0Kl9w75KDQfF8="; }) # Work around https://github.com/dumblob/mysql2sqlite/issues/75 ./use-mawk.patch ]; nativeBuildInputs = [ pkg-config wget unzip sqlite which installShellFiles makeWrapper mawk ]; buildInputs = [ luaEnv ]; makeFlags = [ "LUA=${luaEnv}/bin/lua" "LUAC=${luaEnv}/bin/luac" ]; dontConfigure = true; # Can't use "make install" here installPhase = '' runHook preInstall mkdir -p $out/bin $out/share/openrussian cp openrussian-sqlite3.db $out/share/openrussian cp openrussian $out/bin wrapProgram $out/bin/openrussian \ --prefix LUA_PATH ';' '${lua5_3.pkgs.luaLib.genLuaPathAbsStr luaEnv}' \ --prefix LUA_CPATH ';' '${lua5_3.pkgs.luaLib.genLuaCPathAbsStr luaEnv}' runHook postInstall ''; postInstall = '' installShellCompletion --cmd openrussian --bash ./openrussian-completion.bash installManPage ./openrussian.1 ''; meta = with lib; { description = "Offline Console Russian Dictionary (based on openrussian.org)"; homepage = "https://github.com/rhaberkorn/openrussian-cli"; license = with licenses; [ gpl3Only mit cc-by-sa-40 ]; maintainers = with maintainers; [ zane ]; mainProgram = "openrussian"; platforms = platforms.unix; }; }