Add tags to tailscale nodes
This commit is contained in:
@@ -32,7 +32,10 @@
|
|||||||
gnome.enable = true;
|
gnome.enable = true;
|
||||||
podman.enable = true;
|
podman.enable = true;
|
||||||
print.enable = true;
|
print.enable = true;
|
||||||
tailscale.enable = true;
|
tailscale = {
|
||||||
|
enable = true;
|
||||||
|
tags = [ "mobile" ];
|
||||||
|
};
|
||||||
runner = {
|
runner = {
|
||||||
enable = true;
|
enable = true;
|
||||||
qemu = true;
|
qemu = true;
|
||||||
|
|||||||
@@ -19,7 +19,10 @@ let
|
|||||||
];
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
greg.tailscale.enable = true;
|
greg.tailscale = {
|
||||||
|
enable = true;
|
||||||
|
tags = [ "home" ];
|
||||||
|
};
|
||||||
|
|
||||||
# Really, why do I still have to force-disable this crap?
|
# Really, why do I still have to force-disable this crap?
|
||||||
boot.kernel.sysctl = {
|
boot.kernel.sysctl = {
|
||||||
|
|||||||
@@ -45,7 +45,10 @@ in
|
|||||||
"jellyfin.home".target = "http://localhost:8096/";
|
"jellyfin.home".target = "http://localhost:8096/";
|
||||||
"jellyfin.thehellings.lan".target = "http://localhost:8096/";
|
"jellyfin.thehellings.lan".target = "http://localhost:8096/";
|
||||||
};
|
};
|
||||||
tailscale.enable = true;
|
tailscale = {
|
||||||
|
enable = true;
|
||||||
|
tags = [ "home" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
|
|||||||
@@ -39,7 +39,10 @@
|
|||||||
vipInterface = "enp38s0";
|
vipInterface = "enp38s0";
|
||||||
priority = 255;
|
priority = 255;
|
||||||
};
|
};
|
||||||
tailscale.enable = true;
|
tailscale = {
|
||||||
|
enable = true;
|
||||||
|
tags = [ "home" ];
|
||||||
|
};
|
||||||
remote-builder.enable = true;
|
remote-builder.enable = true;
|
||||||
runner = {
|
runner = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -75,7 +75,10 @@
|
|||||||
vipInterface = "br0";
|
vipInterface = "br0";
|
||||||
priority = 254;
|
priority = 254;
|
||||||
};
|
};
|
||||||
tailscale.enable = true;
|
tailscale = {
|
||||||
|
enable = true;
|
||||||
|
tags = [ "home" ];
|
||||||
|
};
|
||||||
remote-builder.enable = true;
|
remote-builder.enable = true;
|
||||||
runner = {
|
runner = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -21,7 +21,10 @@
|
|||||||
|
|
||||||
greg = {
|
greg = {
|
||||||
home = true;
|
home = true;
|
||||||
tailscale.enable = true;
|
tailscale = {
|
||||||
|
enable = true;
|
||||||
|
tags = [ "home" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
|
|||||||
@@ -59,7 +59,10 @@ in
|
|||||||
dest = "gitlab";
|
dest = "gitlab";
|
||||||
};
|
};
|
||||||
home = true;
|
home = true;
|
||||||
tailscale.enable = true;
|
tailscale = {
|
||||||
|
enable = true;
|
||||||
|
tags = [ "home" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
|
|||||||
@@ -26,7 +26,10 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
vbox = true;
|
vbox = true;
|
||||||
};
|
};
|
||||||
tailscale.enable = true;
|
tailscale = {
|
||||||
|
enable = true;
|
||||||
|
tags = [ "home" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
|
|||||||
@@ -1,7 +1,23 @@
|
|||||||
{ lib, config, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.greg.tailscale;
|
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
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
@@ -13,6 +29,12 @@ in
|
|||||||
default = config.networking.hostName;
|
default = config.networking.hostName;
|
||||||
type = lib.types.str;
|
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 = [
|
extraUpFlags = [
|
||||||
"--hostname"
|
"--hostname"
|
||||||
cfg.hostname
|
cfg.hostname
|
||||||
|
"--accept-routes"
|
||||||
|
]
|
||||||
|
++ lib.optionals ((builtins.length cfg.tags) > 0) [
|
||||||
|
"--advertise-tags"
|
||||||
|
tags
|
||||||
];
|
];
|
||||||
useRoutingFeatures = "both";
|
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