-
-
Notifications
You must be signed in to change notification settings - Fork 112
Nix Flake Installation
Ali edited this page Dec 2, 2023
·
1 revision
The flake below is an example template that will assist in building a go-capnp
module for various system architectures.
If you're unfamiliar with nix flakes
please read here before continuing.
{
description = "go-capnp example flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
};
outputs = { self, nixpkgs, ... }:
let
supportedSystems = [ "x86_64-linux" ];
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
in
{
packages = forAllSystems (system:
let
pkgs = nixpkgsFor.${system};
go-capnp = pkgs.fetchFromGitHub {
name = "go-capnp";
owner = "capnproto";
repo = "go-capnp";
rev = "main";
hash = "sha256-P6YP5b5Bz5/rS1ulkt1tSr3mhLyxxwgCin4WRFErPGM="; # change accordingly
};
in
{
capnpc-go = pkgs.buildGoModule {
pname = "capnpc-go";
src = go-capnp;
version = "1.2.3";
sourceRoot = "go-capnp";
vendorHash = "sha256-DRNbv+jhIHzoBItuiQykrp/pD/46uysFbazLJ59qbqY="; # change accordingly
buildPhase = ''
go install ./capnpc-go
'';
};
dev = pkgs.stdenv.mkDerivation {
pname = "example_project_name";
version = "1.2.3";
srcs = [ go-capnp ];
sourceRoot = "example_project-src/"; # Change to project name
shellHook = ''
echo "Entered devshell"
export CAPNPC_GO_STD="${capnpc-go.src}/std" # Setting the path for capnp
'';
nativeBuildInputs = with pkgs; [ capnpc-go go gopls gotools ];
};
});
};
}
hash
and vendorHash
can be found by adding a placeholder hash(or just something full of zeroes) e.g. hash = “0000000”
and running nix build
or nix develop
which will error out and then output the correct hash. Copy that into the fields. Consult the docs for more info.