| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- # This is a shell.nix file used to describe the environment that tailscale needs
- # for development. This includes a lot of the basic tools that you need in order
- # to get started. We hope this file will be useful for users of Nix on macOS or
- # Linux.
- #
- # For more information about this and why this file is useful, see here:
- # https://nixos.org/guides/nix-pills/developing-with-nix-shell.html
- #
- # Also look into direnv: https://direnv.net/, this can make it so that you can
- # automatically get your environment set up when you change folders into the
- # project.
- {
- pkgs ? import <nixpkgs> {},
- tailscale-go-rev ? "710a0d861098c07540ad073bb73a42ce81bf54a8",
- tailscale-go-sha ? "sha256-hnyddxiyqMFHGwV3I4wkBcYNd56schYFi0SL5/0PnMI=",
- }:
- let
- tailscale-go = pkgs.lib.overrideDerivation pkgs.go_1_18 (attrs: rec {
- name = "tailscale-go-${version}";
- version = tailscale-go-rev;
- src = pkgs.fetchFromGitHub {
- owner = "tailscale";
- repo = "go";
- rev = tailscale-go-rev;
- sha256 = tailscale-go-sha;
- };
- nativeBuildInputs = attrs.nativeBuildInputs ++ [ pkgs.git ];
- # Remove dependency on xcbuild as that causes iOS/macOS builds to fail.
- propagatedBuildInputs = [];
- checkPhase = "";
- # Our forked tailscale reads this env var to embed the git hash
- # into the Go build version.
- TAILSCALE_TOOLCHAIN_REV = tailscale-go-rev;
- });
- in
- pkgs.mkShell {
- # This specifies the tools that are needed for people to get started with
- # development. These tools include:
- # - The Go compiler toolchain (and all additional tooling with it)
- # - gotools for goimports, a robust formatting tool for Go source code
- # - gopls, the language server for Go to increase editor integration
- # - git, the version control program (used in some scripts)
- buildInputs = [
- pkgs.git
- pkgs.gotools pkgs.gopls
- tailscale-go
- ];
- }
|