about summary refs log tree commit diff
path: root/modules/server
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-05-10 00:20:30 +0000
committerAlyssa Ross <hi@alyssa.is>2020-05-10 00:20:30 +0000
commitf8ecc25f87667d478d7d138a0a58af861ce0db18 (patch)
treec8c42bb78033ae34e984c5dc76527af3a9571062 /modules/server
parentde301d42b03ea6d8a3a838db0f138f35a181d3cc (diff)
downloadnixlib-f8ecc25f87667d478d7d138a0a58af861ce0db18.tar
nixlib-f8ecc25f87667d478d7d138a0a58af861ce0db18.tar.gz
nixlib-f8ecc25f87667d478d7d138a0a58af861ce0db18.tar.bz2
nixlib-f8ecc25f87667d478d7d138a0a58af861ce0db18.tar.lz
nixlib-f8ecc25f87667d478d7d138a0a58af861ce0db18.tar.xz
nixlib-f8ecc25f87667d478d7d138a0a58af861ce0db18.tar.zst
nixlib-f8ecc25f87667d478d7d138a0a58af861ce0db18.zip
sys/atuin: enable public-inbox
Diffstat (limited to 'modules/server')
-rw-r--r--modules/server/mail/public-inbox/default.nix55
-rw-r--r--modules/server/spectrum/default.nix5
-rw-r--r--modules/server/spectrum/public-inbox/default.nix54
3 files changed, 114 insertions, 0 deletions
diff --git a/modules/server/mail/public-inbox/default.nix b/modules/server/mail/public-inbox/default.nix
new file mode 100644
index 000000000000..10cf46387702
--- /dev/null
+++ b/modules/server/mail/public-inbox/default.nix
@@ -0,0 +1,55 @@
+{ config, pkgs, lib, ... }:
+
+let
+  public-inbox = config.services.public-inbox.package;
+
+  public-inbox-src = pkgs.stdenv.mkDerivation {
+    name = "public-inbox-${public-inbox.version}-qyliss.tar.gz";
+
+    inherit (public-inbox) src patches;
+
+    doBuild = false;
+
+    installPhase = ''
+      cd $NIX_BUILD_TOP
+      mv $sourceRoot public-inbox-${public-inbox.version}-qyliss
+      tar cf $out public-inbox-${public-inbox.version}-qyliss
+    '';
+  };
+
+  hash = with lib;
+    # Safe because we're just using the hash as a file name, and don't
+    # need the file name itself to have a dependency on the src.
+    builtins.unsafeDiscardStringContext
+      (head (splitString "-"
+        (last (splitString "/" public-inbox-src.outPath))));
+
+  tarballName = "public-inbox-${public-inbox.version}-qyliss-${hash}.tar.gz";
+in
+
+{
+  services.public-inbox.enable = true;
+  services.public-inbox.path = with pkgs; [ spamassassin ];
+  services.public-inbox.mda.args = [ "--no-precheck" ];
+  services.public-inbox.mda.spamCheck = "spamc";
+  services.public-inbox.nntp.extraGroups = [ "tls" ];
+  services.public-inbox.wwwListing = "match=domain";
+
+  services.public-inbox.config.publicinbox.css =
+    [ "href=https://spectrum-os.org/lists/archives/public-inbox.css" ];
+
+  services.public-inbox.config.publicinbox.sourceinfo =
+    let
+      url = "https://ftp.qyliss.net/public-inbox/${tarballName}";
+    in (pkgs.writeText "public-inbox-source-info.html" ''
+      <a href="${url}" download>${url}</a>
+    '').outPath;
+
+  ftp.files."public-inbox/${tarballName}" = public-inbox-src;
+
+  services.spamassassin.enable = true;
+  environment.etc."mail/spamassassin/public-inbox.pre".source =
+    "${public-inbox.sa_config}/root/etc/spamassassin/public-inbox.pre";
+
+  networking.firewall.allowedTCPPorts = [ 119 563 ];
+}
diff --git a/modules/server/spectrum/default.nix b/modules/server/spectrum/default.nix
new file mode 100644
index 000000000000..a6d8e88cd6a7
--- /dev/null
+++ b/modules/server/spectrum/default.nix
@@ -0,0 +1,5 @@
+{ ... }:
+
+{
+  imports = [ ./public-inbox ];
+}
diff --git a/modules/server/spectrum/public-inbox/default.nix b/modules/server/spectrum/public-inbox/default.nix
new file mode 100644
index 000000000000..c6d92bfac57f
--- /dev/null
+++ b/modules/server/spectrum/public-inbox/default.nix
@@ -0,0 +1,54 @@
+{ ... }:
+
+{
+  imports = [ ../../mail/public-inbox ];
+
+  services.public-inbox.http.mounts =
+    [ "https://spectrum-os.org/lists/archives" ];
+  services.public-inbox.nntp.cert =
+    "/var/lib/acme/spectrum-os.org/fullchain.pem";
+  services.public-inbox.nntp.key = "/var/lib/acme/spectrum-os.org/key.pem";
+  services.public-inbox.nntpServer =
+    [ "nntps://spectrum-os.org" "nntp://spectrum-os.org" ];
+
+  services.public-inbox.config.coderepo.nixpkgs-spectrum = {
+    dir = "/home/spectrum/git/nixpkgs.git";
+    cgitUrl = "https://spectrum-os.org/git/nixpkgs";
+  };
+
+  services.public-inbox.config.coderepo.www = {
+    dir = "/home/spectrum/git/www.git";
+    cgitUrl = "https://spectrum-os.org/git/www";
+  };
+
+  services.public-inbox.inboxes.spectrum-announce = {
+    address = [
+      "public-inbox+spectrum-announce@spectrum-os.org"
+      "announce@spectrum-os.org"
+    ];
+    description = "announcements from the spectrum developers";
+    url = "https://spectrum-os.org/lists/archives/spectrum-announce";
+    newsgroup = "inbox.comp.spectrum.announce";
+  };
+
+  services.public-inbox.inboxes.spectrum-discuss = {
+    address = [
+      "public-inbox+spectrum-discuss@spectrum-os.org"
+      "discuss@spectrum-os.org"
+    ];
+    description = "general high-level discussion about spectrum";
+    url = "https://spectrum-os.org/lists/archives/spectrum-discuss";
+    newsgroup = "inbox.comp.spectrum.discuss";
+  };
+
+  services.public-inbox.inboxes.spectrum-devel = {
+    address = [
+      "public-inbox+spectrum-devel@spectrum-os.org"
+      "devel@spectrum-os.org"
+    ];
+    description = "patches and low-level development discussion";
+    url = "https://spectrum-os.org/lists/archives/spectrum-devel";
+    newsgroup = "inbox.comp.spectrum.devel";
+    config.coderepo = [ "nixpkgs-spectrum" "www" ];
+  };
+}