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