tangled.sh knot

Ryan Gibb 84175115 122afcd3

Changed files
+147
hosts
secrets
+103
flake.lock
···
"type": "github"
}
},
"gomod2nix": {
"inputs": {
"nixpkgs": [
···
"type": "github"
}
},
"hyperbib-eeg": {
"inputs": {
"flake-utils": "flake-utils_5",
···
"owner": "RyanGibb",
"repo": "i3-workspace-history",
"type": "github"
}
},
"mirage-opam-overlays": {
···
"nixpkgs-sonarr": "nixpkgs-sonarr",
"nixpkgs-unstable": "nixpkgs-unstable",
"nur": "nur",
"timewall": "timewall"
}
},
···
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
···
"type": "github"
}
},
+
"gitignore": {
+
"inputs": {
+
"nixpkgs": [
+
"tangled",
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1709087332,
+
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
+
"owner": "hercules-ci",
+
"repo": "gitignore.nix",
+
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
+
"type": "github"
+
},
+
"original": {
+
"owner": "hercules-ci",
+
"repo": "gitignore.nix",
+
"type": "github"
+
}
+
},
"gomod2nix": {
"inputs": {
"nixpkgs": [
···
"type": "github"
}
},
+
"htmx-src": {
+
"flake": false,
+
"locked": {
+
"narHash": "sha256-nm6avZuEBg67SSyyZUhjpXVNstHHgUxrtBHqJgowU08=",
+
"type": "file",
+
"url": "https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js"
+
},
+
"original": {
+
"type": "file",
+
"url": "https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js"
+
}
+
},
"hyperbib-eeg": {
"inputs": {
"flake-utils": "flake-utils_5",
···
"owner": "RyanGibb",
"repo": "i3-workspace-history",
"type": "github"
+
}
+
},
+
"ia-fonts-src": {
+
"flake": false,
+
"locked": {
+
"lastModified": 1686932517,
+
"narHash": "sha256-2T165nFfCzO65/PIHauJA//S+zug5nUwPcg8NUEydfc=",
+
"owner": "iaolo",
+
"repo": "iA-Fonts",
+
"rev": "f32c04c3058a75d7ce28919ce70fe8800817491b",
+
"type": "github"
+
},
+
"original": {
+
"owner": "iaolo",
+
"repo": "iA-Fonts",
+
"type": "github"
+
}
+
},
+
"indigo": {
+
"flake": false,
+
"locked": {
+
"lastModified": 1738491661,
+
"narHash": "sha256-+njDigkvjH4XmXZMog5Mp0K4x9mamHX6gSGJCZB9mE4=",
+
"owner": "oppiliappan",
+
"repo": "indigo",
+
"rev": "feb802f02a462ac0a6392ffc3e40b0529f0cdf71",
+
"type": "github"
+
},
+
"original": {
+
"owner": "oppiliappan",
+
"repo": "indigo",
+
"type": "github"
+
}
+
},
+
"lucide-src": {
+
"flake": false,
+
"locked": {
+
"narHash": "sha256-5ipNSxTlQ7627lGgsyZxk7vS1sr9RkrlR8/QMj2Zg6s=",
+
"type": "file",
+
"url": "https://unpkg.com/lucide@0.482.0"
+
},
+
"original": {
+
"type": "file",
+
"url": "https://unpkg.com/lucide@0.482.0"
}
},
"mirage-opam-overlays": {
···
"nixpkgs-sonarr": "nixpkgs-sonarr",
"nixpkgs-unstable": "nixpkgs-unstable",
"nur": "nur",
+
"tangled": "tangled",
"timewall": "timewall"
}
},
···
"original": {
"owner": "nix-systems",
"repo": "default",
+
"type": "github"
+
}
+
},
+
"tangled": {
+
"inputs": {
+
"gitignore": "gitignore",
+
"htmx-src": "htmx-src",
+
"ia-fonts-src": "ia-fonts-src",
+
"indigo": "indigo",
+
"lucide-src": "lucide-src",
+
"nixpkgs": [
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1742406297,
+
"narHash": "sha256-cgvmt451qgo44nLYdYkxs02btGyCROj9esDzZRRRU10=",
+
"owner": "RyanGibb",
+
"repo": "tangled",
+
"rev": "396ea88e0c5e7e50de3bc77a3fb72bcb19b64e85",
+
"type": "github"
+
},
+
"original": {
+
"owner": "RyanGibb",
+
"repo": "tangled",
"type": "github"
}
},
+2
flake.nix
···
nix-rpi5.url = "gitlab:vriska/nix-rpi5?ref=main";
nur.url = "github:nix-community/NUR/e9e77b7985ef9bdeca12a38523c63d47555cc89b";
timewall.url = "github:bcyran/timewall/";
# deduplicate flake inputs
eilean.inputs.nixpkgs.follows = "nixpkgs";
···
nix-rpi5.inputs.nixpkgs.follows = "nixpkgs";
nur.inputs.nixpkgs.follows = "nixpkgs";
timewall.inputs.nixpkgs.follows = "nixpkgs";
};
outputs =
···
nix-rpi5.url = "gitlab:vriska/nix-rpi5?ref=main";
nur.url = "github:nix-community/NUR/e9e77b7985ef9bdeca12a38523c63d47555cc89b";
timewall.url = "github:bcyran/timewall/";
+
tangled.url = "github:RyanGibb/tangled/";
# deduplicate flake inputs
eilean.inputs.nixpkgs.follows = "nixpkgs";
···
nix-rpi5.inputs.nixpkgs.follows = "nixpkgs";
nur.inputs.nixpkgs.follows = "nixpkgs";
timewall.inputs.nixpkgs.follows = "nixpkgs";
+
tangled.inputs.nixpkgs.follows = "nixpkgs";
};
outputs =
+34
hosts/owl/default.nix
···
../../modules/ryan-website.nix
../../modules/alec-website.nix
../../modules/fn06-website.nix
];
environment.systemPackages = with pkgs; [
···
value = "vps";
}
# generate with
# sudo openssl x509 -in /var/lib/acme/mail.freumh.org/fullchain.pem -pubkey -noout | openssl pkey -pubin -outform der | sha256sum | awk '{print "3 1 1", $1}'
{
···
security.acme-eon.nginxCerts = [
"capybara.fn06.org"
"shrew.freumh.org"
];
services.nginx.virtualHosts."capybara.fn06.org" = {
forceSSL = true;
···
networking.firewall.allowedTCPPorts = [ 7001 ];
services.openssh.openFirewall = true;
}
···
../../modules/ryan-website.nix
../../modules/alec-website.nix
../../modules/fn06-website.nix
+
inputs.tangled.nixosModules.knotserver
];
environment.systemPackages = with pkgs; [
···
value = "vps";
}
+
{
+
name = "knot";
+
type = "CNAME";
+
value = "vps";
+
}
+
# generate with
# sudo openssl x509 -in /var/lib/acme/mail.freumh.org/fullchain.pem -pubkey -noout | openssl pkey -pubin -outform der | sha256sum | awk '{print "3 1 1", $1}'
{
···
security.acme-eon.nginxCerts = [
"capybara.fn06.org"
"shrew.freumh.org"
+
"knot.freumh.org"
];
services.nginx.virtualHosts."capybara.fn06.org" = {
forceSSL = true;
···
networking.firewall.allowedTCPPorts = [ 7001 ];
services.openssh.openFirewall = true;
+
+
age.secrets.tangled = {
+
file = ../../secrets/tangled.age;
+
mode = "660";
+
owner = "git";
+
group = "git";
+
};
+
services.tangled-knotserver = {
+
enable = true;
+
repo.mainBranch = "master";
+
server.hostname = "knot.freumh.org";
+
server = {
+
secretFile = config.age.secrets.tangled.path;
+
listenAddr = "127.0.0.1:5555";
+
internalListenAddr = "127.0.0.1:5444";
+
};
+
};
+
services.nginx.virtualHosts."knot.freumh.org" = {
+
forceSSL = true;
+
locations."/" = {
+
proxyPass = ''
+
http://${config.services.tangled-knotserver.server.listenAddr}
+
'';
+
proxyWebsockets = true;
+
};
+
};
}
+1
secrets/secrets.nix
···
owl
];
"eon-sirref-primary.cap.age".publicKeys = user ++ [ owl ];
}
···
owl
];
"eon-sirref-primary.cap.age".publicKeys = user ++ [ owl ];
+
"tangled.age".publicKeys = user ++ [ owl ];
}
+7
secrets/tangled.age
···
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw Ttbl5LTzHDAP3kG7kbRErJr+ayerVYZIWZeLPmZmD0U
+
Uvon5zchwp3jwP/wHJ5/jIrmDhSVOxGKEhLGPtnQj9w
+
-> ssh-ed25519 suwb0g N+Z7lyQailIdkJMiCuFapSN3LhYphejMvB0x4Au1zBI
+
dC6ju3bdhzyLB19/WFwgmr+HxTG9vd2fO/EB/WYjodM
+
--- s2WjTwvpTi8jhAn0/yqBcTmzh77wbpYulovyEdGE7KQ
+
G����}w����{� n�od&i,V����U��%�'!R46�{>� )>to�]Hh�����2F��A����Tv�!�;���)R�lM%U=|W"?*��e��"����i�KB�F