{ lib, buildGoModule, installShellFiles, fetchFromGitHub, gitUpdater, testers, mods, }: buildGoModule rec { pname = "mods"; version = "1.4.1"; src = fetchFromGitHub { owner = "charmbracelet"; repo = "mods"; rev = "v${version}"; hash = "sha256-s2yzrOfZievm7t9NzHojVDNpHkQdZsqdq7zJNO7/SM8="; }; vendorHash = "sha256-Q+lpf35tAIZSHV8FBmYrgKbg5RTJzS33Zv8AH9bVxLY="; nativeBuildInputs = [ installShellFiles ]; ldflags = [ "-s" "-w" "-X=main.Version=${version}" ]; # These tests require internet access. checkFlags = [ "-skip=^TestLoad/http_url$|^TestLoad/https_url$" ]; passthru = { updateScript = gitUpdater { rev-prefix = "v"; ignoredVersions = ".(rc|beta).*"; }; tests.version = testers.testVersion { package = mods; command = "HOME=$(mktemp -d) mods -v"; }; }; postInstall = '' export HOME=$(mktemp -d) $out/bin/mods man > mods.1 $out/bin/mods completion bash > mods.bash $out/bin/mods completion fish > mods.fish $out/bin/mods completion zsh > mods.zsh installManPage mods.1 installShellCompletion mods.{bash,fish,zsh} ''; meta = with lib; { description = "AI on the command line"; homepage = "https://github.com/charmbracelet/mods"; license = licenses.mit; maintainers = with maintainers; [ dit7ya caarlos0 ]; mainProgram = "mods"; }; }