commit d7101d70a93fec4dda2f092269414123fc11d2d7
parent 430c89f728e24d46ca015fdf09e9498594a36499
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Wed, 15 Oct 2025 11:30:30 +0200
parent 430c89f728e24d46ca015fdf09e9498594a36499
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Wed, 15 Oct 2025 11:30:30 +0200
hosts/morio: replace matrix-homeserver (`grapevine` -> `continuwuity`)
10 files changed, 254 insertions(+), 321 deletions(-)
A
|
77
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A
|
120
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/config/nixos/modules/presets/zaphyra/mautrixBridges/signal.nix b/config/nixos/modules/presets/zaphyra/mautrixBridges/signal.nix @@ -20,8 +20,8 @@ in config = lib.mkIf cfg.enable { assertions = [ { - assertion = config.modules.websites."grapevine.zaphyra.eu".enable == true; - message = "The option 'modules.websites.\"grapevine.zaphyra.eu\"' must be enabled in order to use this module."; + assertion = config.modules.websites."continuwuity.zaphyra.eu".enable == true; + message = "The option 'modules.websites.\"continuwuity.zaphyra.eu\"' must be enabled in order to use this module."; } ]; @@ -31,7 +31,7 @@ in enable = true; package = pkgs.mautrix-signal.override { withGoolm = true; }; environmentFile = config.sops.secrets."environments/mautrixBridges/signal".path; - serviceDependencies = [ "grapevine.service" ]; + serviceDependencies = [ "continuwuity.service" ]; settings = rec { network.device_name = "Mautix-Signal (on ${homeserver.domain})"; network.displayname_template = "{{or .ProfileName .PhoneNumber \"Unknown user\"}} (Signal)"; @@ -49,7 +49,7 @@ in relay.enabled = false; backfill.enabled = true; - # double_puppet.secrets."${homeserver.domain}" = "as_token:$MAUTRIX_DOUBLE_PUPPET_SHARED_SECRET"; + double_puppet.secrets."${homeserver.domain}" = "as_token:$MAUTRIX_DOUBLE_PUPPET_SHARED_SECRET"; appservice = { id = "signal"; @@ -65,16 +65,15 @@ in permissions."${homeserver.domain}" = "admin"; - cleanup_on_logout = - { - enabled = true; - } - // (lib.genAttrs [ "manual" "bad_credentials" ] (name: { - shared_has_users = "delete"; - shared_no_users = "delete"; - relayed = "delete"; - private = "delete"; - })); + cleanup_on_logout = { + enabled = true; + } + // (lib.genAttrs [ "manual" "bad_credentials" ] (name: { + shared_has_users = "delete"; + shared_no_users = "delete"; + relayed = "delete"; + private = "delete"; + })); }; }; };
diff --git a/config/nixos/modules/presets/zaphyra/mautrixBridges/telegram.nix b/config/nixos/modules/presets/zaphyra/mautrixBridges/telegram.nix @@ -21,8 +21,8 @@ in config = lib.mkIf cfg.enable { assertions = [ { - assertion = config.modules.websites."grapevine.zaphyra.eu".enable == true; - message = "The option 'modules.websites.\"grapevine.zaphyra.eu\"' must be enabled in order to use this module."; + assertion = config.modules.websites."continuwuity.zaphyra.eu".enable == true; + message = "The option 'modules.websites.\"continuwuity.zaphyra.eu\"' must be enabled in order to use this module."; } ]; @@ -32,7 +32,7 @@ in enable = true; package = pkgs.tgc.mautrix-telegramgo; environmentFile = config.sops.secrets."environments/mautrixBridges/telegram".path; - serviceDependencies = [ "grapevine.service" ]; + serviceDependencies = [ "continuwuity.service" ]; settings = rec { network.device_info.device_model = "Mautix-TelegramGO (on ${homeserver.domain})"; network.api_id = "$TELEGRAM_API_ID"; @@ -52,7 +52,7 @@ in backfill.enabled = true; backfill.max_initial_messages = 400; - # double_puppet.secrets."${homeserver.domain}" = "as_token:$MAUTRIX_DOUBLE_PUPPET_SHARED_SECRET"; + double_puppet.secrets."${homeserver.domain}" = "as_token:$MAUTRIX_DOUBLE_PUPPET_SHARED_SECRET"; appservice = { id = "telegram"; @@ -68,16 +68,15 @@ in permissions."${homeserver.domain}" = "admin"; - cleanup_on_logout = - { - enabled = true; - } - // (lib.genAttrs [ "manual" "bad_credentials" ] (name: { - shared_has_users = "delete"; - shared_no_users = "delete"; - relayed = "delete"; - private = "delete"; - })); + cleanup_on_logout = { + enabled = true; + } + // (lib.genAttrs [ "manual" "bad_credentials" ] (name: { + shared_has_users = "delete"; + shared_no_users = "delete"; + relayed = "delete"; + private = "delete"; + })); }; }; };
diff --git a/config/nixos/modules/presets/zaphyra/mautrixBridges/whatsapp.nix b/config/nixos/modules/presets/zaphyra/mautrixBridges/whatsapp.nix @@ -21,8 +21,8 @@ in config = lib.mkIf cfg.enable { assertions = [ { - assertion = config.modules.websites."grapevine.zaphyra.eu".enable == true; - message = "The option 'modules.websites.\"grapevine.zaphyra.eu\"' must be enabled in order to use this module."; + assertion = config.modules.websites."continuwuity.zaphyra.eu".enable == true; + message = "The option 'modules.websites.\"continuwuity.zaphyra.eu\"' must be enabled in order to use this module."; } ]; @@ -31,7 +31,7 @@ in tgc.services.mautrixBridge.whatsapp = { enable = true; package = pkgs.mautrix-whatsapp.override { withGoolm = true; }; - serviceDependencies = [ "grapevine.service" ]; + serviceDependencies = [ "continuwuity.service" ]; environmentFile = config.sops.secrets."environments/mautrixBridges/whatsapp".path; settings = rec { network = { @@ -61,7 +61,7 @@ in backfill.enabled = true; backfill.max_initial_messages = 100; - # double_puppet.secrets."${homeserver.domain}" = "as_token:$MAUTRIX_DOUBLE_PUPPET_SHARED_SECRET"; + double_puppet.secrets."${homeserver.domain}" = "as_token:$MAUTRIX_DOUBLE_PUPPET_SHARED_SECRET"; appservice = { id = "whatsapp"; @@ -77,16 +77,15 @@ in permissions."${homeserver.domain}" = "admin"; - cleanup_on_logout = - { - enabled = true; - } - // (lib.genAttrs [ "manual" "bad_credentials" ] (name: { - shared_has_users = "delete"; - shared_no_users = "delete"; - relayed = "delete"; - private = "delete"; - })); + cleanup_on_logout = { + enabled = true; + } + // (lib.genAttrs [ "manual" "bad_credentials" ] (name: { + shared_has_users = "delete"; + shared_no_users = "delete"; + relayed = "delete"; + private = "delete"; + })); }; }; };
diff --git a/config/nixos/modules/websites/continuwuity-migration.zaphyra.eu.nix b/config/nixos/modules/websites/continuwuity-migration.zaphyra.eu.nix @@ -0,0 +1,77 @@ +{ + hostConfig, + povSelf, + config, + lib, + pkgs, + ... +}: + +let + inherit (lib) types; + cfg = lib.getAttrFromPath povSelf config; + +in +{ + + options = { + enable = { + type = types.bool; + default = false; + }; + subdomain = { + type = types.str; + default = "continuwuity-migration"; + }; + domain = { + type = types.str; + default = "zaphyra.eu"; + }; + }; + + config = lib.mkIf cfg.enable { + dns.zones = { + "${cfg.domain}".subdomains."${cfg.subdomain}".CNAME = [ + "${config.networking.fqdn}." + ]; + }; + + modules.filesystem.impermanence.system.dirs = [ + { + directory = "/var/lib/continuwuity"; + mode = "0700"; + user = "continuwuity"; + group = "continuwuity"; + } + ]; + + services.matrix-continuwuity = { + enable = true; + settings = { + global = { + address = [ "::1" ]; + trusted_servers = [ + "matrix.org" + "tchncs.de" + ]; + server_name = "${cfg.subdomain}.${cfg.domain}"; + allow_registration = false; + yes_i_am_very_very_sure_i_want_an_open_registration_server_prone_to_abuse = false; + well_known.server = "${cfg.subdomain}.${cfg.domain}:443"; + }; + }; + }; + + services.nginx = { + enable = true; + virtualHosts."${cfg.subdomain}.${cfg.domain}" = { + enableACME = true; + forceSSL = true; + kTLS = true; + locations."/".proxyPass = + "http://[::1]:${toString config.services.matrix-continuwuity.settings.global.port}/"; + }; + }; + }; + +}
diff --git a/config/nixos/modules/websites/continuwuity.zaphyra.eu.nix b/config/nixos/modules/websites/continuwuity.zaphyra.eu.nix @@ -0,0 +1,120 @@ +{ + povSelf, + name, + config, + lib, + pkgs, + ... +}: + +let + inherit (lib) types; + cfg = lib.getAttrFromPath povSelf config; + cfgWebsites = lib.getAttrFromPath (lib.remove name povSelf) config; + +in +{ + + options = { + enable = { + type = types.bool; + default = false; + }; + subdomain = { + type = types.str; + default = "continuwuity"; + }; + domain = { + type = types.str; + default = "zaphyra.eu"; + }; + }; + + config = lib.mkIf cfg.enable { + assertions = [ + { + assertion = cfgWebsites."zaphyra.eu".enable == true; + message = "The option 'modules.websites.\"zaphyra.eu\"' must be enabled in order to use this module."; + } + ]; + + dns.zones = { + "${cfg.domain}".subdomains."${cfg.subdomain}".CNAME = [ + "${config.networking.fqdn}." + ]; + }; + + modules.filesystem.impermanence.system.dirs = [ + "/var/lib/private/continuwuity" + ]; + + services.matrix-continuwuity = { + enable = true; + settings = { + global = { + address = [ "::1" ]; + trusted_servers = [ + "matrix.org" + "tchncs.de" + ]; + server_name = cfg.domain; + allow_registration = false; + yes_i_am_very_very_sure_i_want_an_open_registration_server_prone_to_abuse = false; + }; + }; + }; + + services.nginx = { + enable = true; + virtualHosts = + let + matrixServerConfig = { + "m.server" = "${cfg.subdomain}.${cfg.domain}:443"; + }; + matrixClientConfig = { + "m.homeserver".base_url = "https://${cfg.subdomain}.${cfg.domain}/"; + }; + in + { + "${config.services.matrix-continuwuity.settings.global.server_name}" = { + locations = { + "= /.well-known/matrix/server".extraConfig = '' + add_header Content-Type application/json; + add_header "Access-Control-Allow-Origin" "*"; + add_header "Access-Control-Allow-Methods" "GET, POST, PUT, DELETE, OPTIONS"; + add_header "Access-Control-Allow-Headers" "Origin, X-Requested-With, Content-Type, Accept, Authorization"; + return 200 '${builtins.toJSON matrixServerConfig}'; + ''; + "= /.well-known/matrix/client".extraConfig = '' + add_header Content-Type application/json; + add_header "Access-Control-Allow-Origin" "*"; + add_header "Access-Control-Allow-Methods" "GET, POST, PUT, DELETE, OPTIONS"; + add_header "Access-Control-Allow-Headers" "Origin, X-Requested-With, Content-Type, Accept, Authorization"; + return 200 '${builtins.toJSON matrixClientConfig}'; + ''; + }; + }; + "${cfg.subdomain}.${cfg.domain}" = { + useACMEHost = "${config.networking.fqdn}"; + forceSSL = true; + kTLS = true; + locations = { + "/_matrix" = { + proxyPass = "http://[::1]:${toString config.services.matrix-continuwuity.settings.global.port}"; + proxyWebsockets = true; + }; + "/".root = pkgs.cinny.override { + conf = { + defaultHomeserver = 0; + homeserverList = [ cfg.domain ]; + hashRouter.enabled = true; + allowCustomHomesevrers = false; + }; + }; + }; + }; + }; + }; + }; + +}
diff --git a/flake.lock b/flake.lock @@ -20,30 +20,6 @@ "url": "https://git.zaphyra.eu/airpodsctl" } }, - "attic": { - "inputs": { - "crane": "crane", - "flake-compat": "flake-compat", - "flake-parts": "flake-parts", - "nix-github-actions": "nix-github-actions", - "nixpkgs": "nixpkgs", - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1752217044, - "narHash": "sha256-5TomR72rn4q+5poQcN6EnanxeXKqJSqWVAoDAFN0lUc=", - "owner": "zhaofengli", - "repo": "attic", - "rev": "24fad0622fc9404c69e83bab7738359c5be4988e", - "type": "github" - }, - "original": { - "owner": "zhaofengli", - "ref": "main", - "repo": "attic", - "type": "github" - } - }, "blobs": { "flake": false, "locked": { @@ -78,37 +54,6 @@ }, "crane": { "locked": { - "lastModified": 1751562746, - "narHash": "sha256-smpugNIkmDeicNz301Ll1bD7nFOty97T79m4GUMUczA=", - "owner": "ipetkov", - "repo": "crane", - "rev": "aed2020fd3dc26e1e857d4107a5a67a33ab6c1fd", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "crane_2": { - "locked": { - "lastModified": 1752946753, - "narHash": "sha256-g5uP3jIj+STUcfTJDKYopxnSijs2agRg13H0SGL5iE4=", - "owner": "ipetkov", - "repo": "crane", - "rev": "544d09fecc8c2338542c57f3f742f1a0c8c71e13", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "ref": "master", - "repo": "crane", - "type": "github" - } - }, - "crane_3": { - "locked": { "lastModified": 1731098351, "narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=", "owner": "ipetkov", @@ -122,7 +67,7 @@ "type": "github" } }, - "crane_4": { + "crane_2": { "locked": { "lastModified": 1754269165, "narHash": "sha256-0tcS8FHd4QjbCVoxN9jI+PjHgA4vc/IjkUSp+N3zy0U=", @@ -229,7 +174,7 @@ "tgcNUR", "nixpkgs" ], - "nixpkgs-stable": "nixpkgs-stable_3" + "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { "lastModified": 1754361940, @@ -245,29 +190,6 @@ "type": "github" } }, - "fenix": { - "inputs": { - "nixpkgs": [ - "grapevine", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src" - }, - "locked": { - "lastModified": 1752993983, - "narHash": "sha256-3YKCySMNhFDdHbFiRS4QbEwk0U5l42NMD1scDtniESY=", - "owner": "nix-community", - "repo": "fenix", - "rev": "62105e0745d7450976b26dbd1497b8cbe15eb9ff", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "main", - "repo": "fenix", - "type": "github" - } - }, "firefoxGnomeTheme": { "flake": false, "locked": { @@ -285,44 +207,6 @@ "type": "github" } }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "grapevine", - "attic", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1751413152, - "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, "flakeCompat": { "locked": { "lastModified": 1747046372, @@ -551,39 +435,6 @@ "url": "https://git.zaphyra.eu/gpx-map" } }, - "grapevine": { - "inputs": { - "attic": "attic", - "crane": "crane_2", - "fenix": "fenix", - "flake-compat": [ - "flakeCompat" - ], - "flake-utils": [ - "flakeUtils" - ], - "nix-filter": "nix-filter", - "nixpkgs": [ - "nixpkgs" - ], - "rocksdb": "rocksdb" - }, - "locked": { - "host": "gitlab.computer.surgery", - "lastModified": 1756571888, - "narHash": "sha256-NnbMYflrTddWEaD2Wm5dpFIaWG1e0KN0322WeyAmyTI=", - "owner": "matrix", - "repo": "grapevine", - "rev": "c4abca1eb554e1a1edb9b6adb8f968db5f9d53c2", - "type": "gitlab" - }, - "original": { - "host": "gitlab.computer.surgery", - "owner": "matrix", - "repo": "grapevine", - "type": "gitlab" - } - }, "haumea": { "inputs": { "nixpkgs": [ @@ -684,7 +535,7 @@ }, "lanzaboote": { "inputs": { - "crane": "crane_3", + "crane": "crane", "flake-compat": [ "flakeCompat" ], @@ -834,44 +685,6 @@ "type": "github" } }, - "nix-filter": { - "locked": { - "lastModified": 1731533336, - "narHash": "sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms=", - "owner": "numtide", - "repo": "nix-filter", - "rev": "f7653272fd234696ae94229839a99b73c9ab7de0", - "type": "github" - }, - "original": { - "owner": "numtide", - "ref": "main", - "repo": "nix-filter", - "type": "github" - } - }, - "nix-github-actions": { - "inputs": { - "nixpkgs": [ - "grapevine", - "attic", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1737420293, - "narHash": "sha256-F1G5ifvqTpJq7fdkT34e/Jy9VCyzd5XfJ9TO8fHhJWE=", - "owner": "nix-community", - "repo": "nix-github-actions", - "rev": "f4158fa080ef4503c8f4c820967d946c2af31ec9", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nix-github-actions", - "type": "github" - } - }, "nixStd": { "locked": { "lastModified": 1710870712, @@ -919,27 +732,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751949589, - "narHash": "sha256-mgFxAPLWw0Kq+C8P3dRrZrOYEQXOtKuYVlo9xvPntt8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9b008d60392981ad674e04016d25619281550a9d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1751741127, - "narHash": "sha256-t75Shs76NgxjZSgvvZZ9qOmz5zuBE8buUaYD28BMTxg=", + "lastModified": 1760139962, + "narHash": "sha256-4xggC56Rub3WInz5eD7EZWXuLXpNvJiUPahGtMkwtuc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "29e290002bfff26af1db6f64d070698019460302", + "rev": "7e297ddff44a3cc93673bb38d0374df8d0ad73e4", "type": "github" }, "original": { @@ -949,7 +746,7 @@ "type": "github" } }, - "nixpkgs-stable_2": { + "nixpkgs-stable": { "locked": { "lastModified": 1730741070, "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", @@ -965,7 +762,7 @@ "type": "github" } }, - "nixpkgs-stable_3": { + "nixpkgs-stable_2": { "locked": { "lastModified": 1751274312, "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", @@ -997,22 +794,6 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1760139962, - "narHash": "sha256-4xggC56Rub3WInz5eD7EZWXuLXpNvJiUPahGtMkwtuc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "7e297ddff44a3cc93673bb38d0374df8d0ad73e4", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-25.05", - "repo": "nixpkgs", - "type": "github" - } - }, "oeffisearch": { "inputs": { "nixpkgs": [ @@ -1044,7 +825,7 @@ "lanzaboote", "nixpkgs" ], - "nixpkgs-stable": "nixpkgs-stable_2" + "nixpkgs-stable": "nixpkgs-stable" }, "locked": { "lastModified": 1731363552, @@ -1060,23 +841,6 @@ "type": "github" } }, - "rocksdb": { - "flake": false, - "locked": { - "lastModified": 1752084860, - "narHash": "sha256-mKh6zsmxsiUix4LX+npiytmKvLbo6WNA9y4Ns/EY+bE=", - "owner": "facebook", - "repo": "rocksdb", - "rev": "410c5623195ecbe4699b9b5a5f622c7325cec6fe", - "type": "github" - }, - "original": { - "owner": "facebook", - "ref": "v10.4.2", - "repo": "rocksdb", - "type": "github" - } - }, "root": { "inputs": { "airpodsctl": "airpodsctl", @@ -1091,7 +855,6 @@ "flakeyProfile": "flakeyProfile", "flauschehornSexy": "flauschehornSexy", "gpxMap": "gpxMap", - "grapevine": "grapevine", "haumea": "haumea", "homeManager": "homeManager", "homeManagerUnstable": "homeManagerUnstable", @@ -1103,7 +866,7 @@ "nixStd": "nixStd", "nixSystemsDefault": "nixSystemsDefault", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "nixpkgsUnstable": "nixpkgsUnstable", "oeffisearch": "oeffisearch", "sherlock": "sherlock", @@ -1116,23 +879,6 @@ "zaphyraWebsite": "zaphyraWebsite" } }, - "rust-analyzer-src": { - "flake": false, - "locked": { - "lastModified": 1752913824, - "narHash": "sha256-kRpDlijAr4p5VmcPSRw2mfhaBZ4cE3EDWzqLDIbASgA=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "ed193af36937d2fd4bb14a815ec589875c5c7304", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, "rust-overlay": { "inputs": { "nixpkgs": [ @@ -1177,7 +923,7 @@ }, "sherlock": { "inputs": { - "crane": "crane_4", + "crane": "crane_2", "flake-parts": [ "flakeParts" ],
diff --git a/flake.nix b/flake.nix @@ -117,7 +117,6 @@ inputs.lixModule.nixosModules.default inputs.lanzaboote.nixosModules.lanzaboote inputs.sopsNix.nixosModules.sops - inputs.grapevine.nixosModules.default inputs.tgcNUR.nixosModules.default inputs.things.nixosModules.default @@ -283,13 +282,6 @@ deploy-rs.inputs.utils.follows = "flakeUtils"; deploy-rs.inputs.flake-compat.follows = "flakeCompat"; - grapevine.url = "gitlab:matrix/grapevine?host=gitlab.computer.surgery"; - grapevine.inputs = { - nixpkgs.follows = "nixpkgs"; - flake-compat.follows = "flakeCompat"; - flake-utils.follows = "flakeUtils"; - }; - niriFlake.url = "github:sodiboo/niri-flake"; niriFlake.inputs = { nixpkgs.follows = "nixpkgsUnstable";
diff --git a/hosts/morio/default.nix b/hosts/morio/default.nix @@ -108,7 +108,7 @@ "bikemap.zaphyra.eu".enable = true; "dav.zaphyra.eu".enable = true; "gts.zaphyra.eu".enable = true; - "grapevine.zaphyra.eu".enable = true; + "continuwuity.zaphyra.eu".enable = true; "gomuks.zaphyra.eu".enable = true; "vault.zaphyra.eu".enable = true; "oeffi.zaphyra.eu".enable = true;
diff --git a/hosts/pratorum/default.nix b/hosts/pratorum/default.nix @@ -170,6 +170,7 @@ websites = { "music.zaphyra.dn42".enable = true; + "continuwuity-migration.zaphyra.eu".enable = true; }; users.zaphyra.enable = true;
diff --git a/secrets/morio.yaml b/secrets/morio.yaml @@ -20,9 +20,9 @@ gotosocialEnv: ENC[AES256_GCM,data:5hvURqX+EqN8zpjirBmh5TIWWgaCga9QxnAfyW1rwOXEL environments: vaultwarden: ENC[AES256_GCM,data:uKc/1bnfXcxcUyBrvi5eYXpikmJna6hav0P0x4mopMY4VE6vGp/pSyqWXDzdjBYgV69/O2vqbfS4o61B+OjAS/ssYVyLvVHR3CJ+FCZmgA0zjO52C+TcVFYggxKUtcCVgBuNIzIqZ4lRE5T4I8V8WO6czQtmnBqvu27GY94sjyRUdG7hIySRVRbyhyCPFEYh9PKWUBEcdQf3P9dk9O3KKEG7TrngSm6yJtG0H7hc2M+4/xu8r7+j05AI5y2gs1oFN7QZqqSZ4Es4bUUn/SUXaeHnNCG/fr718fBKmvQuwrHjIfHwnxADA6HfklASKwRYm5EfWSW4RcCLKekFFfdR5O3mhQJR/mis46MdFUlhXvMJWQk=,iv:LnxnMS+xqlQuUQ88h9Etzk5IfpZenW/nOfWLYzABl0E=,tag:t10UUaatvmvZD/WEB0eL6g==,type:str] mautrixBridges: - signal: ENC[AES256_GCM,data:PuyUzSf4Xl3eJDDoDSX3gz6B1oXXiMWeECtOs3pmd2n6rJYRWRD7Ve6iz6a9/VdIFNomNSyGVBPJ6y+YZlD3Gq4g+U3a6hsAsBbIU4REVP/9igwLmP+fB3FMNzE9gcN0MSZx5dxSEFuVGgktvGH9Vb7SSHfjhPxfhRd67SS+MFrxwYCpfxlh9PxKBT3EqA8hWgPB7bxBcaW/khf996xdMfHeaxxQAXDyanOgIn5iDtrM9PbHsEpS8xlN1fSVQKYbQgz+WnL+7hudvj/rXeGNVxMXd//7JTsopzslGQ1JtgwN9fJ8uDKytWux54dmSvdUL35cDgmn/4AUSL/hQvOm4i12+9MbOj9/9l6clp+BSS2fI1XhDWEWOqG7/Cb85ABRmQzDlE3EfMPQF4HY4PKh1F+Xy1BgbbWSDoeQEs3jWqO6Qgq3fW8RO06/DU/11IFb0BhSAyUrlB9FnD4mvMY2Sf9Sdw5hUsuJ2psPSLCrjiYoPnOyIuELCctW3SkBeNn1,iv:Min6Y4qEZQAxQ2gTQR5+vZuSeY0YY3Wa6ixr6NnHhPY=,tag:3qB8BHmPCyFLYR7j2HxgVA==,type:str] - whatsapp: ENC[AES256_GCM,data:7vGIEBWX2Pu8y3pb69cOAMRTG37F5Yg82OkJDzpxk86+q5JLYCSjPEUR90OdyguKb8Ru4TMbqRw87pWkV2AA8YUMY6RUKzgeRghXNZQjhLo6eFTYxGILkjw+7CeuwJlzlmvbunvO1iuV8TduGSQSN+9rCyugHeqoMldRIcgHLkTBJ5XwsT/8gGzwlGsGD3GOr3weeAhCCZc4jRKlep3h3oGi3WqabpG8Pjp9FTCpVi7JuFA9cSXbSpiVU7PwG8ACDeZqcGTn3dQhdtYrBvBkiGgMY3Bjn8O73/6m6xJ1TChqPOMiR5xWBA0hdKUQImOo7qEbGqsWew1ucejrP8Skj6BOUDHag1r7eKNtXYxSstAXt3u7UVZbyX641SJ8umezpQtr+A+WiCrZZAOhGf5tgZRh3zCGaMOO8HjpEj0dvpgs73ZPpzPGxvDk7Yvws22Oka7vlBeqLknAFAV7SA7ZqakqPXeFlYt9PMVCPHTZTzDrzwpRyEnTmilPyto0lJX3,iv:7voliAT5vclU+ZPtoYr3+TCOa42eNJ+iEHMn5rwdg4Q=,tag:tDai6Pf1wx6Pt4qGAo7KYw==,type:str] - telegram: ENC[AES256_GCM,data:97fb0qEgYI5wfTshkHkDt28WKh86e7/ymJVE77/D7XUr25g9IGS4vpdZs/UXf6iSPURKQXWFhxfLR4Nbye3EaSF/RWt4J/+21djw5niVFlsH0QSzdSQgnEi630pT8yRYGEAXA4VMQQMseuCJDphbZTusTsRpgZ45hFIvFMXHqKT688N9xTgErca0N6knjDmvELyaeB/IkvNukr1F8Z84MW/9bxcDwLsl/sRgl/vSHTXR9usmT2tJ+p3D7p+DehZaDEhggduCRTvnKIqJBbQwhwNR7/rFCsHz0bMzuwYqpLrGnIoJ5ZigzaZ4j9iaBBgxTKOzJoe8fnQQPeqdemwCTTHndLMzA2ZjlYi2o1a4hYdNUcEd6OAr8j860JWNoTAHI7wq3jLjzvuwV3j4KhPXbGNx2e+Vnasn2TQi6SHsWNK1hW3z3svI7HmMoLB6i4iy7o+YrLISre7spnuISVFquAKR/3GUAoxwLl4abZKxZT9fL1HoTGZC18fDA0jlesCkZSZp7CvuW3LnEjnrWLfhFZMFCVHiKq3crlCVWMxmJ3verWI0fd5XHqg8o+ed47fW1lBd7sewREmN/7u3c/USMOS04kn9604p45IIG00=,iv:MlZa2nMYD9AB/TmY8QDYpArRizyYe732v4CzGB5PB7w=,tag:XijkOhRqrYp+5NlyiHejkg==,type:str] + signal: ENC[AES256_GCM,data:ABrSECh5C3sVmcqE4j/4zwHWfeiym4Iyp2cM6QcxjStF4ZDfs9H5HMssoSLfE2xgUvOiGJvn1LUpBEYoj7vBlVJdjFA43t1fpUzVmtRL/3Nax0tjwkwGBQ0qnL0vPmx4QdG+ioe0Hf9zH2yzPpgzxj4np6t25l1Kgj40eKQ1wiRaX2OBpIO/18WYefFa1Pg+eX9DF4s1q9CKE7bzGMpGJzg2PNOyfMUJT6HET9cGOk0pzk3yJbFtpPVa0ruCuu2i317SbKWkHktwxv06/3BKzSucDXReziQQnvaw3+ap5yM27Ara9Q4MdSTFjZKdcIs2Y5K49FIND9RwS05ps3nZPpuo8/SiephsbM88tLj4Y67lv2XR1G05e55JkfaFOsSCRQMqjgTxUbb1RlN3jXS4MMvGVlaBXtAOAs+o4BBK+XxMp/sdDMa1LP/jrxmafwGotffxpejsoUuwk2p/R9j5NihqAKC87DxYGCnrUfTt73rC9fQZzOtOMJ87IPtY+fue6B5hbNrix+r5DI5VVzeukswlmdD0IYENH05EfpL/JBa5,iv:4WUiRkezdOnsZdVs+FUlQwK4x4JgWXf1e6f/vnZMOGc=,tag:g/9KOX9HrhMsRUUmvS6ZDw==,type:str] + whatsapp: ENC[AES256_GCM,data:BLBI7+Cis6nKrfSwTnOkBY3dk7Urj+add+eYsFsd76T1hX6C8cJ5UI6fgcP5c7LemczQPVBlWf7sF0PBeLNnWDC+yLoK4WBjMHKncdcSsm3wkg55gvJ5Cu6mjt9QS584znwB+q3um+9astRHDw9aF/jaWUWHlOEvGgSlcn0liCWyPhJ2Hrcdqf/dpQlpGKZrwtmiSpwMGFvA0Huvb7iiWL6TqiPzHGWqwaNrFBe8Hw9gxgGolbsKPkid4+zouLbNwrYDwbGzq42BLY2n8Z2Spe0JBQnccIJN6iMU0cdFoIisiyfRA05qUwroQsWEThChlIHxaIzS2WbJ4ULTc0zxc5VEaXTFN+FPNvYUFwYAI+IvmZzOGOyYPtcajC8qm6SjXMV+WbXf0iyiax4ynZ94IxTXJGqoBrioPnl+UECtCWxIgNiz+8mMVdu6XP4RpyvW3dQJ5R+zKZdoaws4gC4D2nT/DCSgPNg9+e8ybxvzvVE1FlU99iHk5FnwqpuFtytOGp7U6kCberrzgvf7wRJAWkxDsUjNyACSgu0+SUXkg1JL,iv:gkHKn+FS9ON4g8PHkvbk51qNKgxgXVqJJtDItMsAAT4=,tag:p9mYd22GMY1ySmcDByM8/Q==,type:str] + telegram: ENC[AES256_GCM,data:iIujpbLEy7rxXiuCJ+T/uylO/obKWq0PCDb0aRkTtrx1wuDhPEg4C7SAm5wTBtHM/aWnHb7dnFah2J+IYMr1xjW0WUkhXRi6hlfDp8vCTKVYFuTp2ewCN7EUdBBO9+gl6d82MbVxGkE05+NVQ8vPw4AMA89lad2hbqPwhXoT+Gs2dITWcoltXwUcInrOyOTqL3P6zWxom4/lQNHEdSMeV8VzGFcaTgrwyAoJqkqf+NF8+EObZiM75xFTQYpUeUhdDC5fXIZ8kAZ6b/gEvv6NdeqtS9GAOWdm6j7+069Xyo1i5swHwD4WfLnAXo1Y9TaLgdEjYoFVsK6DMnBXKwTC7nfcg357uaqSJ3nofyf+ufJX5MhI3jwPJzu5bmonV2EV0GmCMXTfBwqT48gigd2Cqq3w7lTJ69vPEuYaDBFITGGCM3NdAEQLxwjP12DkhvwxBxX5bpVLYqc1cDzdCKr0I+BbaQNiMFgD7ntRUky40oH0okxiwTyIPjAqzBqdF63ptIkUqkXwSBTIz4E02Yp5OB/cQTsyxZl8BcgCQZ5C4NDAKD3ql+JqPovgn0gkC1dSbvf6ZWRM39Yx+XlU7ggv63sxiUMQFtxnzw3jU54f3L1aUShiTwVZK/eOwrvrxrhyG7gZDrj954HlA4q5p+k=,iv:ySsCXIubPZ2fHBuctIOmOPjxnWu8C/MiwcVI0OnKUrg=,tag:2UZw1uro5+1N4zC88AMyCg==,type:str] dn42: wgPrivateKey: ENC[AES256_GCM,data:QunDYyLV85MkkTH8lnT3xdzdEY6WfjfdWwNi3IdqS5Yn7foLWLIZcqryaW0=,iv:hnFZ1yauh9FOkxEfrXBkwgJtAcNRLD9V5K8Ud7b/nHc=,tag:XIdmD9Um+1+KVjfUk+aa7g==,type:str] sops: @@ -36,8 +36,8 @@ sops: Ym5kdER1cTdYM09ydEgwUUlhQ3lXUEEKVjdcjjDXUhmpszI5i3NsjrsF6XRHf1a6 qzqyN7FQTuwy23N9PBdJMTe7aAcw12vbvuY2v7UfmNzxkvggaDXJ0Q== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-09-21T18:06:07Z" - mac: ENC[AES256_GCM,data:zweRo8cjvz3d9af3Wwfkgn79aLxSeyfangKteVCbALjQHlyjtriST0QwlzXz8zQWEBKQzZ2XITR8jyp8Owm2gX/DlRPoY85HpdGMStTkLFXpGgn2xZDxQzccdSRUwue97SfzC1wjwPUcrsg2pnB6aYQgYLkRHDHjqB7xWDG9ixw=,iv:xDgcAWdZNg27cvCTLrBycwD7KjwpvbWni373IGva1Ls=,tag:xPhTNCAj2xcAW3kHx1KXiQ==,type:str] + lastmodified: "2025-10-15T08:58:00Z" + mac: ENC[AES256_GCM,data:A6jC61FAwUQ8pieELbnirhsx8wWrCxnGemnQg6zM98t5ToDZPNoN3T5xmxnUeLw5H5CuY1HII5App8OQ5mDaTUovgrfdxISjjZKzWCswq76+m0I7Yoa3wu4W0yZ+ovNAt7AOsLuFT+ABJ5L0QkQbOhu/f2UudriZErGr0kvdrBQ=,iv:bBbGS3NbR/BvU1rPTEyk7M0UZzCtlz3WYZH1BzAsqRs=,tag:GMgIQvTvadTZWHXMyK7AtA==,type:str] pgp: - created_at: "2025-06-16T13:06:52Z" enc: |-