From 70f14af21eaa130f0f677d30310951715c9498eb Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Tue, 29 Dec 2020 12:17:03 -0500 Subject: [PATCH] add nix-shell boilerplate (#1028) This enables users of nix-shell to automagically have the correct development environment by simply changing directory into a checkout of this repo. For more information on this see the following links: - https://christine.website/blog/how-i-start-nix-2020-03-08 - https://direnv.net/ --- .gitignore | 4 ++++ shell.nix | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 shell.nix 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 + ]; +}