From edbef36e0e7b78747a6098eebdf2897c91fd9fcf Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Mon, 24 Mar 2025 21:40:42 -0400 Subject: [PATCH] Caldav (wip mail) --- clients/quadraticserver/caddy.nix | 5 +- clients/quadraticserver/caldav.nix | 13 +++ clients/quadraticserver/mail.nix | 24 +++++ .../{conduwuit.nix => matrix.nix} | 0 clients/quadraticserver/vaultwarden.nix | 2 +- flake.lock | 88 +++++++++++++++++- flake.nix | 1 + secrets/caldavUsers.age | Bin 0 -> 551 bytes secrets/mailPassword.age | 5 + 9 files changed, 134 insertions(+), 4 deletions(-) create mode 100644 clients/quadraticserver/caldav.nix create mode 100644 clients/quadraticserver/mail.nix rename clients/quadraticserver/{conduwuit.nix => matrix.nix} (100%) create mode 100644 secrets/caldavUsers.age create mode 100644 secrets/mailPassword.age diff --git a/clients/quadraticserver/caddy.nix b/clients/quadraticserver/caddy.nix index 7cedfca..1c53fc6 100644 --- a/clients/quadraticserver/caddy.nix +++ b/clients/quadraticserver/caddy.nix @@ -1,4 +1,7 @@ { - services.caddy.enable = true; + services.caddy = { + enable = true; + email = "henry@henryhiles.com"; + }; networking.firewall.allowedTCPPorts = [80 443]; } diff --git a/clients/quadraticserver/caldav.nix b/clients/quadraticserver/caldav.nix new file mode 100644 index 0000000..c39692e --- /dev/null +++ b/clients/quadraticserver/caldav.nix @@ -0,0 +1,13 @@ +{config, ...}: { + services = { + radicale = { + enable = true; + settings.auth = { + type = "htpasswd"; + htpasswd_filename = config.age.secrets."caldavUsers.age".path; + htpasswd_encryption = "htpasswd"; + }; + }; + caddy.virtualHosts."dav.henryhiles.com".extraConfig = "reverse_proxy localhost:5232"; + }; +} diff --git a/clients/quadraticserver/mail.nix b/clients/quadraticserver/mail.nix new file mode 100644 index 0000000..46ecb90 --- /dev/null +++ b/clients/quadraticserver/mail.nix @@ -0,0 +1,24 @@ +{ + config, + inputs, + ... +}: { + # imports = [inputs.simple-nixos-mailserver.nixosModule]; + + # mailserver = { + # enable = true; + # fqdn = "mail2.henryhiles.com"; + # domains = ["mail2.henryhiles.com"]; + + # loginAccounts = { + # "henry@henryhiles.com" = { + # hashedPasswordFile = config.age.secrets."mailPassword.age".path; + # aliases = ["contact@henryhiles.com"]; + # }; + # }; + + # certificateScheme = "acme"; + # }; + + # services.caddy.virtualHosts."mail2.henryhiles.com" = {}; # To get Let's Encrypt cert +} diff --git a/clients/quadraticserver/conduwuit.nix b/clients/quadraticserver/matrix.nix similarity index 100% rename from clients/quadraticserver/conduwuit.nix rename to clients/quadraticserver/matrix.nix diff --git a/clients/quadraticserver/vaultwarden.nix b/clients/quadraticserver/vaultwarden.nix index 599c520..be5286f 100644 --- a/clients/quadraticserver/vaultwarden.nix +++ b/clients/quadraticserver/vaultwarden.nix @@ -10,6 +10,6 @@ }; }; - caddy.virtualHosts."vaultwarden.henryhiles.com".extraConfig = "reverse_proxy 127.0.0.1:8000"; + caddy.virtualHosts."vaultwarden.henryhiles.com".extraConfig = "reverse_proxy localhost:8000"; }; } diff --git a/flake.lock b/flake.lock index 05bf315..0c59384 100644 --- a/flake.lock +++ b/flake.lock @@ -90,6 +90,22 @@ "type": "github" } }, + "blobs": { + "flake": false, + "locked": { + "lastModified": 1604995301, + "narHash": "sha256-wcLzgLec6SGJA8fx1OEN1yV/Py5b+U5iyYpksUY/yLw=", + "owner": "simple-nixos-mailserver", + "repo": "blobs", + "rev": "2cccdf1ca48316f2cfd1c9a0017e8de5a7156265", + "type": "gitlab" + }, + "original": { + "owner": "simple-nixos-mailserver", + "repo": "blobs", + "type": "gitlab" + } + }, "darwin": { "inputs": { "nixpkgs": [ @@ -145,6 +161,22 @@ } }, "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { "locked": { "lastModified": 1733328505, "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", @@ -361,7 +393,37 @@ "type": "github" } }, + "nixpkgs-24_11": { + "locked": { + "lastModified": 1734083684, + "narHash": "sha256-5fNndbndxSx5d+C/D0p/VF32xDiJCJzyOqorOYW4JEo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "314e12ba369ccdb9b352a4db26ff419f7c49fa84", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-24.11", + "type": "indirect" + } + }, "nixpkgs_2": { + "locked": { + "lastModified": 1732014248, + "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1741513245, "narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=", @@ -428,10 +490,32 @@ "home-manager": "home-manager_2", "nixpkgs": "nixpkgs", "programsdb": "programsdb", + "simple-nixos-mailserver": "simple-nixos-mailserver", "stylix": "stylix", "wrapper-manager": "wrapper-manager" } }, + "simple-nixos-mailserver": { + "inputs": { + "blobs": "blobs", + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs_2", + "nixpkgs-24_11": "nixpkgs-24_11" + }, + "locked": { + "lastModified": 1742413977, + "narHash": "sha256-NkhM9GVu3HL+MiXtGD0TjuPCQ4GFVJPBZ8KyI2cFDGU=", + "owner": "simple-nixos-mailserver", + "repo": "nixos-mailserver", + "rev": "b4fbffe79c00f19be94b86b4144ff67541613659", + "type": "gitlab" + }, + "original": { + "owner": "simple-nixos-mailserver", + "repo": "nixos-mailserver", + "type": "gitlab" + } + }, "stylix": { "inputs": { "base16": "base16", @@ -439,12 +523,12 @@ "base16-helix": "base16-helix", "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme_2", - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "flake-utils": "flake-utils", "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "nur": "nur", "systems": "systems_2", "tinted-foot": "tinted-foot", diff --git a/flake.nix b/flake.nix index ecdfc8e..c4e15bf 100755 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,7 @@ { inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver"; agenix = { url = "github:Henry-Hiles/agenix"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/secrets/caldavUsers.age b/secrets/caldavUsers.age new file mode 100644 index 0000000000000000000000000000000000000000..c8b7e691de608adbc0cd84bbe635def228d846c6 GIT binary patch literal 551 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCR+^9~G62~;RbGR(;h zE-TE-H!E|=FHMOu@TNAG2rs^HVe?tEH8@m&P@yO zFp0`8t18b4Do*uF^z<_bDE6Zj31XpXt@77*PQJ_AwPfpA zW0`xC=Nj%j{rA_&%KZ+E{*3dJE?zTwc9Y@h^f2YU_q)ukzAyEjXDH{%#}dqRc}tjC z`SXyJhnH4&ySqg!OA0FQPLzqr�Sibub}PLAq+^#K$icoqr@LtaKL9$r5Y#oVS;y zWM|a%6WoOty=PVR8Q%+?%e(qqO|;SJHh=Ngv+f7Hd7E_pnC?sY$WsrC-t<4`@^Ef7 z*S-I>H1|}7pM&{@J%|0})~$#;qMW(m> ssh-ed25519 VKQUdQ HLH8VPiSrQCLCA6jDDNgRwGxmBYx/tp29Ofk+lASR20 +61DZpjUfqtSWg76RqZ4dQZMkLh3Z9/AXIshdnAZL2Os +--- NtZ+33l6WGz+UMzSLxqLVATi2fdk60CDdWm9X71sqm4 +X*=}ź d%gCs2eN3dYЎW7C~ltID_Kp[y|6ɀm`FtR0 \ No newline at end of file