Add tags to tailscale nodes
This commit is contained in:
@@ -32,7 +32,10 @@
|
||||
gnome.enable = true;
|
||||
podman.enable = true;
|
||||
print.enable = true;
|
||||
tailscale.enable = true;
|
||||
tailscale = {
|
||||
enable = true;
|
||||
tags = [ "mobile" ];
|
||||
};
|
||||
runner = {
|
||||
enable = true;
|
||||
qemu = true;
|
||||
|
||||
@@ -19,7 +19,10 @@ let
|
||||
];
|
||||
in
|
||||
{
|
||||
greg.tailscale.enable = true;
|
||||
greg.tailscale = {
|
||||
enable = true;
|
||||
tags = [ "home" ];
|
||||
};
|
||||
|
||||
# Really, why do I still have to force-disable this crap?
|
||||
boot.kernel.sysctl = {
|
||||
|
||||
@@ -45,7 +45,10 @@ in
|
||||
"jellyfin.home".target = "http://localhost:8096/";
|
||||
"jellyfin.thehellings.lan".target = "http://localhost:8096/";
|
||||
};
|
||||
tailscale.enable = true;
|
||||
tailscale = {
|
||||
enable = true;
|
||||
tags = [ "home" ];
|
||||
};
|
||||
};
|
||||
|
||||
hardware = {
|
||||
|
||||
@@ -39,7 +39,10 @@
|
||||
vipInterface = "enp38s0";
|
||||
priority = 255;
|
||||
};
|
||||
tailscale.enable = true;
|
||||
tailscale = {
|
||||
enable = true;
|
||||
tags = [ "home" ];
|
||||
};
|
||||
remote-builder.enable = true;
|
||||
runner = {
|
||||
enable = true;
|
||||
|
||||
@@ -75,7 +75,10 @@
|
||||
vipInterface = "br0";
|
||||
priority = 254;
|
||||
};
|
||||
tailscale.enable = true;
|
||||
tailscale = {
|
||||
enable = true;
|
||||
tags = [ "home" ];
|
||||
};
|
||||
remote-builder.enable = true;
|
||||
runner = {
|
||||
enable = true;
|
||||
|
||||
@@ -21,7 +21,10 @@
|
||||
|
||||
greg = {
|
||||
home = true;
|
||||
tailscale.enable = true;
|
||||
tailscale = {
|
||||
enable = true;
|
||||
tags = [ "home" ];
|
||||
};
|
||||
};
|
||||
|
||||
networking = {
|
||||
|
||||
@@ -59,7 +59,10 @@ in
|
||||
dest = "gitlab";
|
||||
};
|
||||
home = true;
|
||||
tailscale.enable = true;
|
||||
tailscale = {
|
||||
enable = true;
|
||||
tags = [ "home" ];
|
||||
};
|
||||
};
|
||||
|
||||
networking = {
|
||||
|
||||
@@ -26,7 +26,10 @@
|
||||
enable = true;
|
||||
vbox = true;
|
||||
};
|
||||
tailscale.enable = true;
|
||||
tailscale = {
|
||||
enable = true;
|
||||
tags = [ "home" ];
|
||||
};
|
||||
};
|
||||
|
||||
hardware = {
|
||||
|
||||
@@ -1,7 +1,23 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.greg.tailscale;
|
||||
tags = lib.concatMapStringsSep "," (s: "tag:${s}") cfg.tags;
|
||||
setScript = pkgs.writeShellApplication {
|
||||
name = "tailscale-set";
|
||||
runtimeInputs = [
|
||||
config.services.tailscale.package
|
||||
];
|
||||
text = ''
|
||||
tailscale set --accept-routes
|
||||
tailscale set --hostname ${cfg.hostname}
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
options = {
|
||||
@@ -13,6 +29,12 @@ in
|
||||
default = config.networking.hostName;
|
||||
type = lib.types.str;
|
||||
};
|
||||
|
||||
tags = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.singleLineStr;
|
||||
default = [ ];
|
||||
description = "The tags to request for this node";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -31,9 +53,25 @@ in
|
||||
extraUpFlags = [
|
||||
"--hostname"
|
||||
cfg.hostname
|
||||
"--accept-routes"
|
||||
]
|
||||
++ lib.optionals ((builtins.length cfg.tags) > 0) [
|
||||
"--advertise-tags"
|
||||
tags
|
||||
];
|
||||
useRoutingFeatures = "both";
|
||||
};
|
||||
systemd.services.tailscaled.partOf = [ "network-online.target" ];
|
||||
systemd.services = {
|
||||
tailscale-set = {
|
||||
enable = true;
|
||||
after = [
|
||||
"tailscaled.service"
|
||||
"tailscale-autoconnect.service"
|
||||
];
|
||||
partOf = [ "network-online.target" ];
|
||||
script = lib.getExe setScript;
|
||||
};
|
||||
tailscaled.partOf = [ "network-online.target" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user