mirror of
https://github.com/coder/coder.git
synced 2025-07-15 22:20:27 +00:00
chore: add ability to include custom protoc-gen-go dependency in nix flake (#14728)
This commit is contained in:
26
flake.nix
26
flake.nix
@ -40,6 +40,27 @@
|
||||
# From https://nixos.wiki/wiki/Google_Cloud_SDK
|
||||
gdk = pkgs.google-cloud-sdk.withExtraComponents ([ pkgs.google-cloud-sdk.components.gke-gcloud-auth-plugin ]);
|
||||
|
||||
proto_gen_go_1_30 = pkgs.buildGoModule rec {
|
||||
name = "protoc-gen-go";
|
||||
owner = "protocolbuffers";
|
||||
repo = "protobuf-go";
|
||||
rev = "v1.30.0";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "protocolbuffers";
|
||||
repo = "protobuf-go";
|
||||
rev = rev;
|
||||
# Updated with ./scripts/update-flake.sh`.
|
||||
sha256 = "sha256-GTZQ40uoi62Im2F4YvlZWiSNNJ4fEAkRojYa0EYz9HU=";
|
||||
};
|
||||
subPackages = [ "cmd/protoc-gen-go" ];
|
||||
vendorHash = null;
|
||||
proxyVendor = true;
|
||||
preBuild = ''
|
||||
export GOPROXY=https://proxy.golang.org,direct
|
||||
go mod download
|
||||
'';
|
||||
};
|
||||
|
||||
# The minimal set of packages to build Coder.
|
||||
devShellPackages = with pkgs; [
|
||||
# google-chrome is not available on OSX and aarch64 linux
|
||||
@ -80,7 +101,7 @@
|
||||
playwright-driver.browsers
|
||||
postgresql_16
|
||||
protobuf
|
||||
protoc-gen-go
|
||||
proto_gen_go_1_30
|
||||
ripgrep
|
||||
# This doesn't build on latest nixpkgs (July 10 2024)
|
||||
(pinnedPkgs.sapling)
|
||||
@ -117,7 +138,7 @@
|
||||
name = "coder-${osArch}";
|
||||
# Updated with ./scripts/update-flake.sh`.
|
||||
# This should be updated whenever go.mod changes!
|
||||
vendorHash = "sha256-KyMqZxav64rbybUUFoBsOlB6XH7y8aQ7ekaYm0QD4Ew=";
|
||||
vendorHash = "sha256-kPXRp7l05iJd4IdvQeOFOgg2UNzBcloy3tA9Meep9VI=";
|
||||
proxyVendor = true;
|
||||
src = ./.;
|
||||
nativeBuildInputs = with pkgs; [ getopt openssl zstd ];
|
||||
@ -151,6 +172,7 @@
|
||||
'';
|
||||
};
|
||||
packages = {
|
||||
proto_gen_go = proto_gen_go_1_30;
|
||||
all = pkgs.buildEnv {
|
||||
name = "all-packages";
|
||||
paths = devShellPackages;
|
||||
|
@ -5,6 +5,20 @@ set -eu
|
||||
|
||||
cd "$(dirname "${BASH_SOURCE[0]}")/.."
|
||||
|
||||
check_and_install() {
|
||||
if ! command -v "$1" &>/dev/null; then
|
||||
echo "$1 is not installed. Attempting to install..."
|
||||
if ! nix-env -iA nixpkgs."$1"; then
|
||||
echo "Failed to install $1. Please install it manually and try again."
|
||||
exit 1
|
||||
fi
|
||||
echo "$1 has been installed successfully."
|
||||
fi
|
||||
}
|
||||
|
||||
check_and_install jq
|
||||
check_and_install nix-prefetch-git
|
||||
|
||||
OUT=$(mktemp -d -t nar-hash-XXXXXX)
|
||||
|
||||
echo "Downloading Go modules..."
|
||||
@ -13,4 +27,14 @@ echo "Calculating SRI hash..."
|
||||
HASH=$(go run tailscale.com/cmd/nardump --sri "$OUT/pkg/mod/cache/download")
|
||||
sudo rm -rf "$OUT"
|
||||
|
||||
echo "Updating go.mod vendorHash"
|
||||
sed -i "s#\(vendorHash = \"\)[^\"]*#\1${HASH}#" ./flake.nix
|
||||
|
||||
# Update protoc-gen-go sha256
|
||||
echo "Updating protoc-gen-go sha256..."
|
||||
PROTOC_GEN_GO_REV=$(nix eval --extra-experimental-features nix-command --extra-experimental-features flakes --raw .#proto_gen_go.rev)
|
||||
echo "protoc-gen-go version: $PROTOC_GEN_GO_REV"
|
||||
PROTOC_GEN_GO_SHA256=$(nix-prefetch-git https://github.com/protocolbuffers/protobuf-go --rev "$PROTOC_GEN_GO_REV" | jq -r .hash)
|
||||
sed -i "s#\(sha256 = \"\)[^\"]*#\1${PROTOC_GEN_GO_SHA256}#" ./flake.nix
|
||||
|
||||
echo "Flake updated successfully!"
|
||||
|
Reference in New Issue
Block a user