Jack O'Sullivan
6c98ef8944
Some checks failed
CI / Check, build and cache Nix flake (push) Failing after 1h15m14s
This reverts commit 7c05b6158f
.
113 lines
3.4 KiB
Nix
113 lines
3.4 KiB
Nix
{ lib, pkgs, config, assignments, allAssignments, ... }:
|
|
let
|
|
inherit (lib) concatStringsSep;
|
|
inherit (lib.my.c) pubDomain;
|
|
inherit (lib.my.c.britway) prefixes domain;
|
|
|
|
# Can't use overrideAttrs because we need to override `vendorHash` within `buildGoModule`
|
|
headscale' = (pkgs.headscale.override {
|
|
buildGoModule = args: pkgs.buildGoModule (args // rec {
|
|
version = "0.23.0-alpha12";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "juanfont";
|
|
repo = "headscale";
|
|
rev = "v${version}";
|
|
hash = "sha256-kZZK0cXnFARxblSMz01TDcBbTorkHGAwGpR+a4/mYfU=";
|
|
};
|
|
patches = [];
|
|
vendorHash = "sha256-EorT2AVwA3usly/LcNor6r5UIhLCdj3L4O4ilgTIC2o=";
|
|
doCheck = false;
|
|
});
|
|
});
|
|
|
|
advRoutes = concatStringsSep "," [
|
|
lib.my.c.home.prefixes.all.v4
|
|
lib.my.c.home.prefixes.all.v6
|
|
];
|
|
pubNameservers = [
|
|
"1.1.1.1"
|
|
"1.0.0.1"
|
|
"2606:4700:4700::1111"
|
|
"2606:4700:4700::1001"
|
|
];
|
|
in
|
|
{
|
|
config = {
|
|
environment.systemPackages = [
|
|
# For CLI
|
|
config.services.headscale.package
|
|
];
|
|
|
|
services = {
|
|
headscale = {
|
|
enable = true;
|
|
settings = {
|
|
disable_check_updates = true;
|
|
unix_socket_permission = "0770";
|
|
server_url = "https://hs.${pubDomain}";
|
|
database = {
|
|
type = "sqlite3";
|
|
sqlite.path = "/var/lib/headscale/db.sqlite3";
|
|
};
|
|
noise.private_key_path = "/var/lib/headscale/noise_private.key";
|
|
prefixes = with lib.my.c.tailscale.prefix; { inherit v4 v6; };
|
|
dns = {
|
|
# Use IPs that will route inside the VPN to prevent interception
|
|
# (e.g. DNS rebinding filtering)
|
|
nameservers.split = {
|
|
"${domain}" = pubNameservers;
|
|
"${lib.my.c.colony.domain}" = with allAssignments.estuary.base; [
|
|
ipv4.address ipv6.address
|
|
];
|
|
"${lib.my.c.home.domain}" = with allAssignments; [
|
|
river.hi.ipv4.address
|
|
river.hi.ipv6.address
|
|
stream.hi.ipv4.address
|
|
stream.hi.ipv6.address
|
|
];
|
|
};
|
|
magic_dns = true;
|
|
base_domain = "ts.${pubDomain}";
|
|
};
|
|
oidc = {
|
|
only_start_if_oidc_is_available = true;
|
|
issuer = "https://accounts.google.com";
|
|
client_id = "545475967061-l45cln081mp8t4li2c34v7t7b8la6f4f.apps.googleusercontent.com";
|
|
client_secret_path = config.age.secrets."britway/oidc-secret.txt".path;
|
|
scope = [ "openid" "profile" "email" ];
|
|
allowed_users = [ "jackos1998@gmail.com" ];
|
|
};
|
|
};
|
|
};
|
|
|
|
tailscale = {
|
|
enable = true;
|
|
authKeyFile = config.age.secrets."tailscale-auth.key".path;
|
|
openFirewall = true;
|
|
interfaceName = "tailscale0";
|
|
extraUpFlags = [
|
|
"--operator=${config.my.user.config.name}"
|
|
"--login-server=https://hs.nul.ie"
|
|
"--netfilter-mode=off"
|
|
"--advertise-exit-node"
|
|
"--advertise-routes=${advRoutes}"
|
|
"--accept-routes=false"
|
|
];
|
|
};
|
|
};
|
|
|
|
my = {
|
|
secrets = {
|
|
files = {
|
|
"britway/oidc-secret.txt" = {
|
|
owner = "headscale";
|
|
group = "headscale";
|
|
mode = "440";
|
|
};
|
|
"tailscale-auth.key" = {};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|