diff --git a/.gitignore b/.gitignore index c443556f5..39a4e8702 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,7 @@ cmd/tailscaled/tailscaled # Dependency directories (remove the comment below to include it) # vendor/ + +# direnv config, this may be different for other people so it's probably safer +# to make this nonspecific. +.envrc diff --git a/shell.nix b/shell.nix new file mode 100644 index 000000000..273ecf9b6 --- /dev/null +++ b/shell.nix @@ -0,0 +1,24 @@ +# 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 {} }: + +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) + # - 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 = with pkgs; [ + go goimports gopls git + ]; +}