{ lib, buildGoModule, src, version, callPackage, whisper-cpp, }: let model = (callPackage ./voice-model.nix { }).small; in buildGoModule { pname = "onechat"; inherit src version; subPackages = [ "." ]; ldflags = [ "-X main.version=${version}" "-X main.voiceTranscriberPath=${whisper-cpp}/bin/whisper-cli" "-X main.voiceModelPath=${model}" ]; vendorHash = "sha256-nRDUAGSXAK5/L2xyfDh3NbMOZmrGGEIm4vtgfWsxHYU="; # The flake check runs the full replay. checkFlags = [ "-short" ]; postInstall = '' mkdir -p "$out/share/systemd/user" substitute ${./onechat.service} "$out/share/systemd/user/onechat.service" \ --subst-var-by onechat "$out/bin/onechat" ''; doInstallCheck = true; installCheckPhase = '' runHook preInstallCheck [[ "$("$out/bin/onechat" help)" == "Usage: onechat "* ]] [[ "$("$out/bin/onechat" version)" == "${version}" ]] runHook postInstallCheck ''; meta = { description = "OneChat"; mainProgram = "onechat"; platforms = lib.platforms.linux; }; }