From 496b9b34bcaf915f930ea7a148ba9f5f0cf95308 Mon Sep 17 00:00:00 2001 From: Eli Ribble Date: Tue, 19 May 2026 15:03:09 +0000 Subject: [PATCH] Use commit time not build time Can't use build time in pure evaluation mode. --- default.nix | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/default.nix b/default.nix index eb4fc448..cb5d7e93 100644 --- a/default.nix +++ b/default.nix @@ -1,31 +1,41 @@ { pkgs ? import { }, proj ? pkgs.proj }: +let + # Get commit timestamp at eval time (pure) + getCommitTime = + if builtins.pathExists ./.git + then builtins.replaceStrings ["\n"] [""] (builtins.readFile ( + pkgs.runCommand "git-commit-time" {} '' + ${pkgs.git}/bin/git -C ${./.} log -1 --format=%ct > $out + '' + )) + else "0"; +in pkgs.buildGoModule rec { - buildTime = builtins.currentTime; - # Try to get git info, fallback to version if .git doesn't exist - # Note: This runs at eval time, so it captures the version when you build + pname = "nidus-sync"; + version = "0.0.12"; + src = ./.; + gitRevision = if builtins.pathExists ./.git then pkgs.lib.commitIdFromGitRepo ./.git else "unknown"; - gitDescribe = builtins.readFile (pkgs.runCommand "git-describe" {} '' - ${pkgs.git}/bin/git -C ${./.} describe --always --dirty --tags 2>/dev/null > $out || echo "${version}" > $out - ''); + + buildTime = getCommitTime; + ldflags = [ "-s" "-w" "-X main.Version=${version}" "-X main.Commit=${gitRevision}" - "-X main.BuildTime=${toString buildTime}" + "-X main.BuildTime=${buildTime}" ]; meta = { description = "Nidus Sync"; homepage = "https://github.com/Gleipnir-Technology/nidus-sync"; }; - pname = "nidus-sync"; - src = ./.; + subPackages = []; - version = "0.0.12"; vendorHash = "sha256-jlPS8lWdNPj60BMUcCrxteLuc7RXEXDtzlwjsFBJg0Y="; buildInputs = [ pkgs.proj ];