Files
sift/flake.nix
kyle dca635fb62 p1: vendorHash = null when vendor/ is committed
buildGoModule refuses a hashed fetch if vendor/ exists. Keep vendor/;
the check path already uses GOPROXY=off GOFLAGS=-mod=vendor.
2026-09-22 22:27:24 -07:00

116 lines
2.9 KiB
Nix

{
description = "sift: LLM-oriented fetch and search";
inputs.nixpkgs.url = "nixpkgs/nixos-26.05";
outputs =
{ self, nixpkgs }:
let
systems = [ "x86_64-linux" ];
forAllSystems = nixpkgs.lib.genAttrs systems;
version =
if self ? shortRev then
self.shortRev
else if self ? dirtyShortRev then
self.dirtyShortRev
else
"dev";
# Keep in lockstep with Makefile LDFLAGS / -trimpath.
ldflags = [
"-s"
"-w"
"-X"
"main.version=${version}"
];
in
{
packages = forAllSystems (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
sift = pkgs.buildGoModule {
pname = "sift";
inherit version;
src = ./.;
# vendor/ is committed; a non-null hash makes buildGoModule refuse the tree.
vendorHash = null;
env.CGO_ENABLED = "0";
ldflags = ldflags;
subPackages = [ "cmd/sift" ];
# buildGoModule already passes -trimpath.
meta = {
description = "LLM-oriented fetch and search";
mainProgram = "sift";
};
};
in
{
inherit sift;
default = sift;
}
);
nixosModules.sift =
{ pkgs, ... }:
{
imports = [ ./nix/module.nix ];
services.sift.package = nixpkgs.lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.sift;
};
nixosModules.default = self.nixosModules.sift;
checks = forAllSystems (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
src = ./.;
in
{
test = pkgs.stdenv.mkDerivation {
name = "sift-make-test-lint";
inherit src;
nativeBuildInputs = [
pkgs.go
pkgs.gcc
pkgs.gnumake
pkgs.git
];
dontConfigure = true;
buildPhase = ''
export HOME=$TMPDIR
export GOCACHE=$TMPDIR/go-cache
export GOPATH=$TMPDIR/go
export GO111MODULE=on
export GOPROXY=off
export GOFLAGS=-mod=vendor
# race detector needs cgo; build stays CGO_ENABLED=0 in packages.sift
export CGO_ENABLED=1
make test lint
'';
installPhase = ''
mkdir -p $out
echo ok > $out/ok
'';
};
}
);
devShells = forAllSystems (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
default = pkgs.mkShell {
nativeBuildInputs = [
pkgs.go
pkgs.gopls
pkgs.go-tools
pkgs.gnumake
pkgs.git
];
};
}
);
};
}