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.
This commit is contained in:
		
							parent
							
								
									4b1d44f71b
								
							
						
					
					
						commit
						d7f19934d9
					
				
					 1 changed files with 53 additions and 0 deletions
				
			
		
							
								
								
									
										53
									
								
								release.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								release.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -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; | ||||||
|  |   }; | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue