forked from aylac.top/nixcfg
this repo has no description

tangled knot attempt number 500000

aylac.top 87fbc29d 84cbde3e

verified
Changed files
+60 -32
hosts
jezebel
nanpi
modules
home
programs
nixos
profiles
arr
backups
services
caddy
tangled-knot
snippets
aylac-top
-1
hosts/jezebel/default.nix
···
enable = true;
enableCaddy = true;
};
-
tangled-knot.enable = false;
uptime-kuma.enable = true;
};
};
+3 -2
hosts/nanpi/default.nix
···
arr.enable = true;
};
services = {
-
audiobookshelf.enable = true;
+
audiobookshelf.enable = false;
caddy.enable = true;
cloudflared.enable = true;
-
copyparty.enable = true;
+
copyparty.enable = false;
dnsmasq.enable = true;
forgejo.enable = true;
glance.enable = true;
···
};
vaultwarden.enable = true;
webdav.enable = true;
+
tangled-knot.enable = true;
};
};
+9
modules/home/programs/ssh/default.nix
···
# in
# rootMe "dewford";
+
matchBlocks = {
+
"knot.aylac.top" = {
+
user = "git";
+
# dont know if i can just link snippets knot here
+
hostname = "nanpi";
+
port = 2222;
+
};
+
};
+
package = pkgs.openssh;
};
};
+4 -4
modules/nixos/profiles/arr/default.nix
···
autobrr = {
enable = true;
-
openFirewall = true; # Port: 7474
+
openFirewall = false; # Port: 7474
secretFile = config.age.secrets.autobrr.path;
settings = {
host = "0.0.0.0";
···
prowlarr = {
enable = true;
# dataDir = "${cfg.dataDir}/prowlarr";
-
openFirewall = true; # Port: 9696
+
openFirewall = false; # Port: 9696
};
radarr = {
enable = true;
dataDir = "${cfg.dataDir}/radarr/.config/Radarr/";
-
openFirewall = true; # Port: 7878
+
openFirewall = false; # Port: 7878
};
sonarr = {
enable = true;
dataDir = "${cfg.dataDir}/sonarr/.config/NzbDrone/";
-
openFirewall = true; # Port: 8989
+
openFirewall = false; # Port: 8989
};
#flaresolverr = {
+3 -2
modules/nixos/profiles/backups/default.nix
···
}
{
name = "tangled-knot";
-
inherit (config.services.tangled-knot) enable;
-
paths = [config.services.tangled-knot.stateDir];
+
containerised = true;
+
inherit (config.myNixOS.services.tangled-knot) enable;
+
paths = ["/var/lib/nixos-containers/tangled-knot${config.containers.tangled-knot.config.services.tangled-knot.stateDir}"];
}
];
};
+1 -1
modules/nixos/services/caddy/default.nix
···
package = pkgs.caddy.withPlugins {
plugins = ["github.com/tailscale/caddy-tailscale@v0.0.0-20250508175905-642f61fea3cc"];
-
hash = "sha256-r68btTv8N7X/pKwGkP8FWg371rt+bZETXdEN0/ZlFJI=";
+
hash = "sha256-r9EDkhcgwK11dB46AV+Em8ZE6Aa7IDMwibDGkg3e/rc=";
};
};
tailscale.permitCertUid = "caddy";
+38 -21
modules/nixos/services/tangled-knot/default.nix
···
{
config,
lib,
+
self,
...
}: let
name = "tangled-knot";
···
config = lib.mkIf cfg.enable {
services = {
-
caddy.virtualHosts = lib.mkIf cfg.autoProxy {
-
"${service.vHost}" = {
-
extraConfig = ''
-
encode gzip zstd
-
reverse_proxy ${service.hostName}:${toString service.port}
-
'';
+
cloudflared.tunnels."${network.cloudflareTunnel}".ingress = lib.mkIf cfg.autoProxy {
+
"${service.vHost}" = "http://localhost:${toString service.port}";
+
};
+
};
+
+
containers.tangled-knot = {
+
autoStart = true;
+
config = {
+
imports = [self.inputs.tangled-core.nixosModules.knot];
+
+
programs.ssh.knownHosts = config.mySnippets.ssh.knownHosts;
+
+
services.openssh = {
+
ports = [service.sshPort];
+
settings = {
+
PasswordAuthentication = false;
+
PubkeyAuthentication = true;
+
};
};
-
"ssh.${service.vHost}" = {
-
extraConfig = ''
-
encode gzip zstd
-
reverse_proxy ${service.hostName}:22
-
'';
+
users.users.git.openssh.authorizedKeys.keyFiles =
+
lib.map (file: "${self.inputs.secrets}/publicKeys/${file}")
+
# right now this config is fine but if i ever get another machine i daily drive or a build server i need to do something else here
+
(lib.filter (file:
+
if config.networking.hostName == "morgana"
+
then "ayla_m23.pub" == file
+
else (lib.elem file ["ayla_morgana.pub" "ayla_23.pub"]))
+
(builtins.attrNames (builtins.readDir "${self.inputs.secrets}/publicKeys")));
+
+
services.tangled-knot = {
+
enable = true;
+
openFirewall = cfg.autoProxy;
+
stateDir = "/var/lib/knot";
+
server = {
+
owner = "did:plc:3c6vkaq7xf5kz3va3muptjh5";
+
hostname = service.vHost;
+
listenAddr = "localhost:${toString service.port}";
+
};
};
-
};
-
tangled-knot = {
-
enable = true;
-
openFirewall = true;
-
stateDir = "/home/git";
-
server = {
-
owner = "did:plc:3c6vkaq7xf5kz3va3muptjh5";
-
hostname = service.vHost;
-
listenAddr = "0.0.0.0:${toString service.port}";
-
};
+
system.stateVersion = "25.11";
};
};
};
+2 -1
modules/snippets/aylac-top/default.nix
···
};
tangled-knot = {
-
hostName = "jezebel";
+
hostName = "nanpi";
port = 5555;
+
sshPort = 2222;
vHost = "knot.aylac.top";
};