nix machine / user configurations

feat: add guestbook did

ptr.pet 217fe05d cb13ca76

verified
Changed files
+47 -26
hosts
wolumonde
secrets
+20 -26
hosts/wolumonde/modules/atproto.nix
···
-
{pkgs, ...}: let
-
in {
-
services.nginx.virtualHosts."gaze.systems" = let
-
_wellKnownFile =
-
pkgs.writeText "server" "did:plc:dfl62fgb7wtjj3fcbb72naae";
-
wellKnownDir = pkgs.runCommand "well-known" {} ''
-
mkdir -p $out
-
cp ${_wellKnownFile} $out/atproto-did
-
'';
-
in {
-
locations."/.well-known/".extraConfig = ''
-
add_header content-type text/plain;
-
add_header access-control-allow-origin *;
-
alias ${wellKnownDir}/;
-
'';
-
};
-
services.nginx.virtualHosts."dawn.gaze.systems" = let
-
_atprotoDidFile =
-
pkgs.writeText "server" "did:web:dawn.gaze.systems";
-
_didFile = ../../../secrets/dawn.did;
-
wellKnownDir = pkgs.runCommand "well-known" {} ''
-
mkdir -p $out
-
cp ${_didFile} $out/did.json
-
cp ${_atprotoDidFile} $out/atproto-did
+
{pkgs, lib, ...}: let
+
mkFileCopy = name: file: "cp ${file} $out/${name}";
+
mkWellKnownDir = files: pkgs.runCommand "well-known" {} ''
+
mkdir -p $out
+
${lib.concatStringsSep "\n" (lib.mapAttrsToList mkFileCopy files)}
'';
-
in {
+
mkWellKnownCfg = files: {
useACMEHost = "gaze.systems";
forceSSL = true;
locations."/.well-known/".extraConfig = ''
add_header content-type text/plain;
add_header access-control-allow-origin *;
-
alias ${wellKnownDir}/;
+
alias ${mkWellKnownDir files}/;
'';
};
+
mkDidWebCfg = domain: {
+
"${domain}" = mkWellKnownCfg {
+
"did.json" = ../../../secrets/${domain}.did;
+
"atproto-did" = pkgs.writeText "server" "did:web:${domain}";
+
};
+
};
+
in {
+
services.nginx.virtualHosts = {
+
"gaze.systems" = mkWellKnownCfg {
+
"atproto-did" = pkgs.writeText "server" "did:plc:dfl62fgb7wtjj3fcbb72naae";
+
};
+
} // (mkDidWebCfg "dawn.gaze.systems")
+
// (mkDidWebCfg "guestbook.gaze.systems");
}
+1
hosts/wolumonde/modules/nginx.nix
···
"limbus.gaze.systems"
# "bsky.gaze.systems"
"dawn.gaze.systems"
+
"guestbook.gaze.systems"
];
};
};
secrets/dawn.did secrets/dawn.gaze.systems.did
+26
secrets/guestbook.gaze.systems.did
···
+
{
+
"@context": [
+
"https://www.w3.org/ns/did/v1",
+
"https://w3id.org/security/multikey/v1",
+
"https://w3id.org/security/suites/secp256k1-2019/v1"
+
],
+
"id": "did:web:guestbook.gaze.systems",
+
"alsoKnownAs": [
+
"at://guestbook.gaze.systems"
+
],
+
"verificationMethod": [
+
{
+
"id": "did:web:guestbook.gaze.systems#atproto",
+
"type": "Multikey",
+
"controller": "did:web:guestbook.gaze.systems",
+
"publicKeyMultibase": "zQ3shSiLsnqpyQ4SfDTT1D8qzFEoeYT8rSDXW6o8pVY7VcRBJ"
+
}
+
],
+
"service": [
+
{
+
"id": "#atproto_pds",
+
"type": "AtprotoPersonalDataServer",
+
"serviceEndpoint": "https://gaze.systems"
+
}
+
]
+
}