diff options
author | Vincent Ambo <tazjin@gmail.com> | 2018-03-09T11·50+0100 |
---|---|---|
committer | Vincent Ambo <github@tazj.in> | 2018-03-09T12·35+0100 |
commit | d7f19934d94f978535df1e9ea361924e15ad8239 (patch) | |
tree | 52cd4d5d8e0dc473954fbc8aafb9d706c3e74aa5 | |
parent | 4b1d44f71bf243a86b90d047ef65d5b418b4f5bd (diff) |
feat(build): Add Nix derivation for release builds
Adds a Nix derivation that produces statically linked output binaries for multiple operating systems and architectures. This requires a Nix-channel version that includes the Go 1.10 compiler.
-rw-r--r-- | release.nix | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/release.nix b/release.nix new file mode 100644 index 000000000000..fc047f26ac8e --- /dev/null +++ b/release.nix @@ -0,0 +1,53 @@ +# Copyright (C) 2016-2018 Vincent Ambo <mail@tazj.in> +# +# This file is part of Kontemplate. +# +# Kontemplate is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This file is the Nix derivation used to build release binaries for +# several different architectures and operating systems. + +{ pkgs ? import <nixpkgs> {} }: + +with pkgs; let buildGo110Package = + callPackage <nixpkgs/pkgs/development/go-modules/generic> { + go = go_1_10; +}; +in buildGo110Package rec { + name = "kontemplate-${version}"; + version = "master"; + src = ./.; + goPackagePath = "github.com/tazjin/kontemplate"; + goDeps = ./deps.nix; + + # This configuration enables the building of statically linked + # executables. For some reason, those will have multiple references + # to the Go compiler's installation path in them, which is the + # reason for setting the 'allowGoReference' flag. + dontStrip = true; # Linker configuration handles stripping + allowGoReference = true; + CGO_ENABLED="0"; + GOCACHE="off"; + + # Configure release builds via the "build-matrix" script: + buildInputs = [ git ]; + buildPhase = '' + cd go/src/${goPackagePath} + ./build-release.sh build + ''; + + outputs = [ "out" ]; + installPhase = '' + mkdir $out + cp -r release/ $out + ''; + + meta = with lib; { + description = "A resource templating helper for Kubernetes"; + homepage = "http://kontemplate.works/"; + license = licenses.gpl3; + }; +} |