From 16434502d0f3c32564713185cfeaf9b564198292 Mon Sep 17 00:00:00 2001 From: Illia Chub Date: Fri, 9 Apr 2021 16:46:32 +0300 Subject: [PATCH 1/4] Added Webmail service --- nixos-infect | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/nixos-infect b/nixos-infect index ee6a940..4082940 100755 --- a/nixos-infect +++ b/nixos-infect @@ -42,6 +42,7 @@ makeConf() { $NIXOS_IMPORT ./files.nix ./mailserver/system/mailserver.nix + ./mailserver/system/alps.nix ./vpn/ocserv.nix ./api/api.nix ./api/api-module.nix @@ -1053,6 +1054,57 @@ config :pleroma, :http_security, config :pleroma, configurable_from_database: false +EOF + +cat > /etc/nixos/mailserver/system/alps.nix << EOF +{ pkgs, lib, fetchgit, buildGoModule, ... }: { + nixpkgs.overlays = + [ (self: super: { alps = self.callPackage ./alps-package.nix { }; }) ]; + + systemd.services = { + alps = { + path = [ pkgs.alps pkgs.coreutils ]; + serviceConfig = { + ExecStart = + "\${pkgs.alps}/bin/alps -theme sourcehut imaps://$DOMAIN:993 smtps://$DOMAIN:465"; + WorkingDirectory = "\${pkgs.alps}/bin"; + }; + }; + }; +} +EOF + +cat > /etc/nixos/mailserver/system/alps-package.nix << EOF +{ lib, fetchgit, buildGoModule, ... }: +buildGoModule rec { + pname = "alps"; + version = "v1.0.0"; # latest available tag at the moment + + src = fetchGit { + url = "https://git.selfprivacy.org/ilchub/selfprivacy-alps"; + rev = "dc2109ca2fdabfbda5d924faa4947f5694d5d758"; + }; + + vendorSha256 = "0bqg0qjam4mvh07wfil6l5spz32mk5a7kfxxnwfyva805pzmn6dk"; + + deleteVendor = false; + runVend = true; + + buildPhase = '' + go build ./cmd/alps + ''; + + installPhase = '' + mkdir -p $out/bin + cp -r * $out/bin + ''; + + meta = with lib; { + description = "Webmail application for the dovecot/postfix mailserver"; + homepage = "https://git.selfprivacy.org/ilchub/selfprivacy-alps"; + license = licenses.mit; + }; +} EOF [[ -n "$doNetConf" ]] && makeNetworkingConf || true From 868f506c99c05a6457d8d2a7639c598c49cd80b6 Mon Sep 17 00:00:00 2001 From: Illia Chub Date: Fri, 9 Apr 2021 16:48:30 +0300 Subject: [PATCH 2/4] Fixed special character escaping for webmail package --- nixos-infect | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixos-infect b/nixos-infect index 4082940..f7a54fb 100755 --- a/nixos-infect +++ b/nixos-infect @@ -1095,8 +1095,8 @@ buildGoModule rec { ''; installPhase = '' - mkdir -p $out/bin - cp -r * $out/bin + mkdir -p \$out/bin + cp -r * \$out/bin ''; meta = with lib; { From 3e75d5ef4ae4905590cc8d4c31a2784eff0fe4ae Mon Sep 17 00:00:00 2001 From: Illia Chub Date: Fri, 9 Apr 2021 16:54:35 +0300 Subject: [PATCH 3/4] Unfiltered ports, required for SMTP/IMAP SSL --- nixos-infect | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos-infect b/nixos-infect index f7a54fb..8134782 100755 --- a/nixos-infect +++ b/nixos-infect @@ -64,7 +64,7 @@ makeConf() { networking = { hostName = "$(hostname)"; firewall = { - allowedTCPPorts = lib.mkForce [ 22 25 80 143 443 587 8443 ]; + allowedTCPPorts = lib.mkForce [ 22 25 80 143 443 465 587 993 8443 ]; allowedUDPPorts = lib.mkForce [ 8443 ]; }; }; From 19f2d0117d577e136327cf237a44f4066a0361a7 Mon Sep 17 00:00:00 2001 From: Illia Chub Date: Fri, 16 Apr 2021 01:33:45 +0300 Subject: [PATCH 4/4] Fixed Pleroma deployment error --- nixos-infect | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nixos-infect b/nixos-infect index 8134782..9f3e622 100755 --- a/nixos-infect +++ b/nixos-infect @@ -993,7 +993,7 @@ cat > /etc/nixos/social/pleroma.nix << EOF initialScript = "/etc/setup.psql"; }; }; - environment.etc."pleroma_setup.psql".text = '' + environment.etc."setup.psql".text = '' CREATE USER pleroma WITH ENCRYPTED PASSWORD '$DB_PASSWORD'; CREATE DATABASE pleroma OWNER pleroma; \\c pleroma; @@ -1013,7 +1013,7 @@ import Config config :pleroma, Pleroma.Web.Endpoint, url: [host: "social.$DOMAIN", scheme: "https", port: 443], - http: [ip: {127, 0, 0, 1}, port: 4000], + http: [ip: {127, 0, 0, 1}, port: 4000] #secret_key_base: "", #signing_salt: "" @@ -1038,7 +1038,7 @@ config :pleroma, Pleroma.Repo, hostname: "localhost", pool_size: 10 -config :web_push_encryption, :vapid_details, +#config :web_push_encryption, :vapid_details, #subject: "", #public_key: "", #private_key: ""