tvl-depot/tools/nixery/server/default.nix
Vincent Ambo 6912658c72 feat(server): Use hash of Nixery source as version
Uses a hash of Nixery's sources as the version displayed when Nixery
launches or logs an error. This makes it possible to distinguish
between errors logged from different versions.

The source hashes should be reproducible between different checkouts
of the same source tree.
2019-10-06 23:05:23 +01:00

62 lines
1.8 KiB
Nix

# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
{ buildGoPackage, go, lib, srcHash }:
buildGoPackage rec {
name = "nixery-server";
goDeps = ./go-deps.nix;
src = ./.;
goPackagePath = "github.com/google/nixery/server";
doCheck = true;
# The following phase configurations work around the overengineered
# Nix build configuration for Go.
#
# All I want this to do is produce a binary in the standard Nix
# output path, so pretty much all the phases except for the initial
# configuration of the "dependency forest" in $GOPATH have been
# overridden.
#
# This is necessary because the upstream builder does wonky things
# with the build arguments to the compiler, but I need to set some
# complex flags myself
outputs = [ "out" ];
preConfigure = "bin=$out";
buildPhase = ''
runHook preBuild
runHook renameImport
export GOBIN="$out/bin"
go install -ldflags "-X main.version=$(cat ${srcHash})" ${goPackagePath}
'';
fixupPhase = ''
remove-references-to -t ${go} $out/bin/server
'';
checkPhase = ''
go vet ${goPackagePath}
go test ${goPackagePath}
'';
meta = {
description = "Container image builder serving Nix-backed images";
homepage = "https://github.com/google/nixery";
license = lib.licenses.asl20;
maintainers = [ lib.maintainers.tazjin ];
};
}