{ lib , buildGoModule , fetchFromGitHub , nodejs , npmHooks , fetchNpmDeps , nix-update-script }: buildGoModule rec { pname = "godns"; version = "3.1.7"; src = fetchFromGitHub { owner = "TimothyYe"; repo = "godns"; rev = "refs/tags/v${version}"; hash = "sha256-aTCYnjv9DTlCohdESGAjMz7JQG0BsLTNMiknyB6Ut50="; }; vendorHash = "sha256-E15h5p4ppRb91EUoz5dyWNFl745rt419NMCSurMLxis="; npmDeps = fetchNpmDeps { src = "${src}/web"; hash = "sha256-gnAUI3lLDhjZ+nLap41COq765ymR6a8FgVY/aqqidTQ="; }; npmRoot = "web"; nativeBuildInputs = [ nodejs npmHooks.npmConfigHook ]; overrideModAttrs = oldAttrs: { # Do not add `npmConfigHook` to `goModules` nativeBuildInputs = lib.remove npmHooks.npmConfigHook oldAttrs.nativeBuildInputs; # Do not run `preBuild` when building `goModules` preBuild = null; }; # Some tests require internet access, broken in sandbox doCheck = false; preBuild = '' npm --prefix="$npmRoot" run build go generate ./... ''; ldflags = [ "-s" "-w" "-X main.Version=${version}" ]; passthru.updateScript = nix-update-script { }; meta = with lib; { description = "Dynamic DNS client tool supports AliDNS, Cloudflare, Google Domains, DNSPod, HE.net & DuckDNS & DreamHost, etc"; homepage = "https://github.com/TimothyYe/godns"; changelog = "https://github.com/TimothyYe/godns/releases/tag/v${version}"; license = licenses.asl20; maintainers = with maintainers; [ yinfeng ]; mainProgram = "godns"; }; }