{ 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 = ./.; vendorHash = "sha256-byOhTmZTW76qEyv8PyuCtbj2C+nk894nPyuwjhFJqtk="; 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 ]; }; } ); }; }