-
Volker Schukai authoredVolker Schukai authored
flake.nix 2.80 KiB
{
description = "Bob the builder for Go projects";
# Nixpkgs / NixOS version to use.
inputs.nixpkgs.url = "nixpkgs/nixos-23.11";
outputs = {
self,
nixpkgs,
...
}: let
# to work with older version of flakes
lastModifiedDate = self.lastModifiedDate or self.lastModified or "19700101";
rootPath = ./.;
goPkgReleaseData = import "${rootPath}/project.nix";
goPkgName = goPkgReleaseData.name or "goPkg";
goPkgMnemonic = goPkgReleaseData.mnemonic or "go-pkg";
goPkgDescription = goPkgReleaseData.description or "this is a goPkg";
goPkgVersion = goPkgReleaseData.version or "0.1.0";
goPkgHash =
if (self ? shortRev)
then self.shortRev
else "dirty-not-for-production";
goPkgVendorHash = goPkgReleaseData.vendorHash or null;
# System types to support.
supportedSystems = ["x86_64-linux" "x86_64-windows" "x86_64-darwin"];
# Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'.
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
# Nixpkgs instantiated for supported system types.
nixpkgsFor = forAllSystems (system: import nixpkgs {inherit system;});
in {
packages = forAllSystems (system: let
pkgs = nixpkgsFor.${system};
in {
bob = pkgs.buildGoModule {
name = goPkgName;
# In 'nix develop', we don't need a copy of the source tree
# in the Nix store.
src = ././source;
tags = []; # add your tags here (eq "netgo" "osusergo" "static_build")
ldflags = [
"-X 'gitlab.schukai.com/oss/bob/release.version=${goPkgVersion}'"
"-X 'gitlab.schukai.com/oss/bob/release.commit=${self.rev or "unknown"}'"
"-X 'gitlab.schukai.com/oss/bob/release.buildDate=${self.lastModifiedDate or "unknown"}'"
"-X 'gitlab.schukai.com/oss/bob/release.name=${goPkgName}'"
"-X 'gitlab.schukai.com/oss/bob/release.mnemonic=${goPkgMnemonic}'"
];
#vendorHash = pkgs.lib.fakeHash;
vendorHash = null;
meta = with nixpkgs.legacyPackages.${system}.lib; {
description = goPkgDescription;
homepage = "https://gitlab.schukai.com/oss/bob";
license = licenses.mit;
maintainers = with maintainers; ["schukai GmbH"];
};
};
default = self.packages.${system}.bob;
});