diff --git a/flake.nix b/flake.nix index bf50122500e88..f2d138c2b3aa7 100644 --- a/flake.nix +++ b/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; diff --git a/scripts/update-flake.sh b/scripts/update-flake.sh index 67aca5e79a09a..9287a820b8562 100755 --- a/scripts/update-flake.sh +++ b/scripts/update-flake.sh @@ -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!"
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: