Select the types of activity you want to include in your feed.
retiolum: drop self.retiolum, acheron and starkstrom are in kartei now
kartei carries both cards (krebs/kartei#92), so the superconfig-only host set is empty; read hosts, own addresses and tinc host files from kartei alone.
···2525 kartei = import (self.inputs.kartei + "/modules/retiolum/hosts.nix") { inherit lib; };
26262727 name = config.networking.hostName;
2828-2929- # Nodes with no kartei card, known only inside superconfig. Exposes the same
3030- # interface as kartei's hosts.nix, so both sources merge the same way.
3131- local = self.retiolum;
3232-3333- own = kartei.own.${name} or local.own.${name};
2828+ own = kartei.own.${name};
3429in
35303631{
···4439 # (tens of thousands of suppressed messages per minute) and rotates
4540 # all other units' logs out of the journal within hours
4641 debugLevel = 0;
4747- hosts = kartei.tincHosts // local.tincHosts;
4242+ hosts = kartei.tincHosts;
4843 extraConfig = ''
4944 AutoConnect = yes
5045 LocalDiscovery = yes
-117
retiolum/default.nix
···11-{ lib }:
22-33-# Retiolum nodes that deliberately have no card in the shared kartei registry:
44-# they exist only inside superconfig, so every superconfig machine has to be
55-# told about them explicitly. Exposed as self.retiolum (see ./flake-module.nix)
66-# and consumed by configs/retiolum.nix (NixOS, via nixpkgs services.tinc) and
77-# machines/barnacle/retiolum.nix (darwin, via kartei's tincr module), so both
88-# platforms agree on the peer set.
99-#
1010-# This is data, not a module -- same shape as keys/.
1111-#
1212-# Cards use the same nets.<net> layout as kartei, and the
1313-# renderer below mirrors kartei's modules/retiolum/hosts.nix, so an entry can
1414-# move into kartei/lass unchanged if it should become reachable by the rest of
1515-# krebs rather than just the fleet.
1616-let
1717- # Only the public half, and only from the node's own committed clan vars --
1818- # nothing secret and no second copy to keep in sync. tincr writes it as a
1919- # ready-made `Ed25519PublicKey = <key>` line, so keep just the key.
2020- ed25519 =
2121- machine:
2222- lib.last (
2323- lib.splitString " " (
2424- lib.removeSuffix "\n" (
2525- builtins.readFile (../vars/per-machine + "/${machine}/retiolum/retiolum.ed25519_key.pub/value")
2626- )
2727- )
2828- );
2929-3030- retiolumOf = host: host.nets.retiolum;
3131-3232- # Own addresses in the net, rendered as Subnet lines (implicit /32 and /128).
3333- addrsOf =
3434- net:
3535- lib.optional (net.ip4 or null != null) net.ip4.addr
3636- ++ lib.optional (net.ip6 or null != null) net.ip6.addr;
3737-3838- tincHostFile =
3939- name: host:
4040- let
4141- net = retiolumOf host;
4242- tinc = net.tinc or { };
4343- # A node with a via net is dialable there; everyone else is relayed.
4444- via = if net.via or null != null then host.nets.${net.via} else null;
4545- in
4646- lib.concatStringsSep "\n" (
4747- lib.optionals (via != null) (
4848- map (addr: "Address = ${addr} ${toString (tinc.port or 655)}") via.addrs
4949- )
5050- ++ map (addr: "Subnet = ${addr}") (addrsOf net)
5151- # bare labels: tincr's DNS stub appends its suffix
5252- ++ map (alias: "Alias = ${alias}") (
5353- lib.filter (alias: alias != name) (
5454- map (lib.removeSuffix ".r") (lib.filter (lib.hasSuffix ".r") (net.aliases or [ ]))
5555- )
5656- )
5757- ++ [ "Ed25519PublicKey = ${tinc.pubkey_ed25519}" ]
5858- ++ lib.optional (tinc.weight or 300 != null) "Weight = ${toString (tinc.weight or 300)}"
5959- );
6060-6161- # /etc/hosts lines, rendered like kartei's netHostsLines for retiolum.
6262- hostsLines =
6363- hosts: withV4:
6464- lib.concatStrings (
6565- lib.mapAttrsToList (
6666- name: host:
6767- let
6868- net = retiolumOf host;
6969- aliases = lib.concatStringsSep " " (lib.unique ([ "${name}.r" ] ++ net.aliases or [ ]));
7070- in
7171- lib.optionalString (withV4 && net.ip4 or null != null) "${net.ip4.addr} ${aliases}\n"
7272- + lib.optionalString (net.ip6 or null != null) "${net.ip6.addr} ${aliases}\n"
7373- ) hosts
7474- );
7575-in
7676-rec {
7777- hosts = {
7878- starkstrom = {
7979- nets = {
8080- # Hetzner KVM box; static address, and configs/retiolum.nix opens 655,
8181- # so peers dial it directly instead of relaying through neoprism/prism.
8282- internet.addrs = [ "194.110.87.67" ];
8383- retiolum = {
8484- via = "internet";
8585- ip4.addr = "10.243.0.100";
8686- ip6.addr = "42:0:ce16::100";
8787- aliases = [ "starkstrom.r" ];
8888- tinc.pubkey_ed25519 = ed25519 "starkstrom";
8989- };
9090- };
9191- };
9292- acheron = {
9393- # gg23 router replacing styx; sits behind the vodafone NAT, so it dials
9494- # out and is relayed like any other node (no via net).
9595- nets.retiolum = {
9696- ip4.addr = "10.243.11.2";
9797- ip6.addr = "42:0:ce16::112";
9898- aliases = [ "acheron.r" ];
9999- tinc.pubkey_ed25519 = ed25519 "acheron";
100100- };
101101- };
102102- };
103103-104104- # Same interface kartei's modules/retiolum/hosts.nix exposes, so consumers
105105- # can treat both sources the same way.
106106- tincHosts = lib.mapAttrs tincHostFile hosts;
107107-108108- own = lib.mapAttrs (_: host: {
109109- ip4 = (retiolumOf host).ip4.addr or null;
110110- ip6 = (retiolumOf host).ip6.addr or null;
111111- }) hosts;
112112-113113- extraHosts = {
114114- v4v6 = hostsLines hosts true;
115115- v6only = hostsLines hosts false;
116116- };
117117-}
···1818 peers = lib.remove name servers;
1919 # Alertmanager gossips the address it advertises, so it must be the
2020 # retiolum one, not whatever private address it would pick on its own.
2121- hosts = self.inputs.kartei.hosts // self.retiolum.hosts;
2222- retiolumIp = hosts.${name}.nets.retiolum.ip4.addr;
2121+ retiolumIp = self.inputs.kartei.hosts.${name}.nets.retiolum.ip4.addr;
23222423 receiverConfig = pkgs.writeText "matrix-alertmanager-receiver.json" (
2524 builtins.toJSON {
···2626 coaxmetal = "http://coaxmetal.r:${toString executorPort}";
2727 icarus = "http://icarus.r:${toString executorPort}";
2828 shodan = "http://shodan.r:${toString executorPort}";
2929- # starkstrom is not in the shared kartei registry yet, so the fleet has
3030- # no retiolum route to it; its own nginx terminates TLS and strips the
3131- # /sigexec prefix (machines/starkstrom/config.nix).
2929+ # over public TLS (set up before starkstrom had a kartei card); its own
3030+ # nginx terminates TLS and strips the /sigexec prefix
3131+ # (machines/starkstrom/config.nix).
3232 starkstrom = "https://starkstrom.lassul.us/sigexec";
3333 };
3434 };
···11-# acheron replaces styx as the gg23 router. Like starkstrom it has no card in
22-# the shared kartei registry; its retiolum identity lives in retiolum/
33-# (self.retiolum), which every superconfig machine injects into its tinc host
44-# set and /etc/hosts. Move that entry into kartei/lass if the rest of krebs
55-# should be able to reach it too.
11+# acheron replaces styx as the gg23 router.
62{
73 imports = [
84 ../../configs
···11-# starkstrom is deliberately not in the shared kartei registry; its retiolum
22-# identity lives in retiolum/ (self.retiolum), which every superconfig machine
33-# injects into its tinc host set and /etc/hosts. Move that entry into
44-# kartei/lass if the rest of krebs should be able to reach it too.
51{
62 imports = [
73 ../../configs
···139 ./ipfs-endpoint.nix
1410 ];
15111616- # The fleet has no retiolum route here (see kartei note above), so the
1717- # sigexec dashboard on neoprism reaches this executor over public TLS
1818- # instead: nginx strips /sigexec/ so the executor verifies the same paths
1919- # the statements were signed over (/jobs etc).
1212+ # The sigexec dashboard on neoprism reaches this executor over public TLS
1313+ # (set up before starkstrom had a kartei card; starkstrom.r would work now):
1414+ # nginx strips /sigexec/ so the executor verifies the same paths the
1515+ # statements were signed over (/jobs etc).
2016 services.nginx.virtualHosts."starkstrom.lassul.us".locations."/sigexec/" = {
2117 proxyPass = "http://127.0.0.1:7601/";
2218 extraConfig = ''