{ pkgs, config, ... }: let containerStateDir = "/data"; hostStateDir = "/opt/tangd"; servicePort = 8081; in { networking.firewall.allowedTCPPorts = [ servicePort ]; containers."tang" = { autoStart = true; ephemeral = true; bindMounts."${containerStateDir}" = { hostPath = hostStateDir; isReadOnly = false; }; config = { config, pkgs, ... }: { networking.firewall.enable = false; users.groups."_tang" = {} ; users.users."_tang" = { group = "_tang"; isSystemUser = true; }; environment.systemPackages = with pkgs; [ jose tang ]; systemd.services."tangd@" = { enable = true; serviceConfig = { ExecStartPre = "${pkgs.bash}/bin/bash -c \"mkdir -p ${containerStateDir}/tang-db\""; ExecStart = "${pkgs.tang}/libexec/tangd ${containerStateDir}/tang-db"; User = "_tang"; Group = "_tang"; }; }; systemd.sockets."tangd" = { enable = true; listenStreams = [ "${toString servicePort}" ]; wantedBy = [ "sockets.target" ]; socketConfig = { Accept = true; }; }; system.stateVersion = "22.11"; }; }; }