about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/headscale/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/headscale/default.nix')
-rw-r--r--nixpkgs/pkgs/servers/headscale/default.nix59
1 files changed, 59 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/headscale/default.nix b/nixpkgs/pkgs/servers/headscale/default.nix
new file mode 100644
index 000000000000..2c63e4f91a58
--- /dev/null
+++ b/nixpkgs/pkgs/servers/headscale/default.nix
@@ -0,0 +1,59 @@
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  installShellFiles,
+  nixosTests,
+}:
+buildGoModule rec {
+  pname = "headscale";
+  version = "0.22.3";
+
+  src = fetchFromGitHub {
+    owner = "juanfont";
+    repo = "headscale";
+    rev = "v${version}";
+    hash = "sha256-nqmTqe3F3Oh8rnJH0clwACD/0RpqmfOMXNubr3C8rEc=";
+  };
+
+  vendorHash = "sha256-IOkbbFtE6+tNKnglE/8ZuNxhPSnloqM2sLgTvagMmnc=";
+
+  ldflags = ["-s" "-w" "-X github.com/juanfont/headscale/cmd/headscale/cli.Version=v${version}"];
+
+  nativeBuildInputs = [installShellFiles];
+  checkFlags = ["-short"];
+
+  tags = ["ts2019"];
+
+  postInstall = ''
+    installShellCompletion --cmd headscale \
+      --bash <($out/bin/headscale completion bash) \
+      --fish <($out/bin/headscale completion fish) \
+      --zsh <($out/bin/headscale completion zsh)
+  '';
+
+  passthru.tests = { inherit (nixosTests) headscale; };
+
+  meta = with lib; {
+    homepage = "https://github.com/juanfont/headscale";
+    description = "An open source, self-hosted implementation of the Tailscale control server";
+    longDescription = ''
+      Tailscale is a modern VPN built on top of Wireguard. It works like an
+      overlay network between the computers of your networks - using all kinds
+      of NAT traversal sorcery.
+
+      Everything in Tailscale is Open Source, except the GUI clients for
+      proprietary OS (Windows and macOS/iOS), and the
+      'coordination/control server'.
+
+      The control server works as an exchange point of Wireguard public keys for
+      the nodes in the Tailscale network. It also assigns the IP addresses of
+      the clients, creates the boundaries between each user, enables sharing
+      machines between users, and exposes the advertised routes of your nodes.
+
+      Headscale implements this coordination server.
+    '';
+    license = licenses.bsd3;
+    maintainers = with maintainers; [nkje jk kradalby misterio77 ghuntley];
+  };
+}