about summary refs log tree commit diff
path: root/pkgs/servers/mail
diff options
context:
space:
mode:
authorMostly Void <7rat13@gmail.com>2023-05-07 03:19:08 +0530
committerMostly Void <7rat13@gmail.com>2023-07-15 10:22:21 +0200
commit9986d2cc90396fbafc154323dc820be9a7bc4ae9 (patch)
tree5be78553b9210f93498a973f04e36b773944aa39 /pkgs/servers/mail
parent212f20a9071aaed1e70084f069b608502ce04651 (diff)
mox: init at 0.0.5
Diffstat (limited to 'pkgs/servers/mail')
-rw-r--r--pkgs/servers/mail/mox/default.nix34
-rw-r--r--pkgs/servers/mail/mox/version.patch45
2 files changed, 79 insertions, 0 deletions
diff --git a/pkgs/servers/mail/mox/default.nix b/pkgs/servers/mail/mox/default.nix
new file mode 100644
index 0000000000000..2dd7712c2c887
--- /dev/null
+++ b/pkgs/servers/mail/mox/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "mox";
+  version = "0.0.5";
+
+  src = fetchFromGitHub {
+    owner = "mjl-";
+    repo = "mox";
+    rev = "v${version}";
+    hash = "sha256-f5/K6cPqJJkbdiVCNGOTd9Fjx2/gvSZCxeR6nnEaeJw=";
+  };
+
+  # set the version during buildtime
+  patches = [ ./version.patch ];
+
+  vendorHash = null;
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/mjl-/mox/moxvar.Version=${version}"
+  ];
+
+  meta = {
+    description = "Modern full-featured open source secure mail server for low-maintenance self-hosted email";
+    homepage = "https://github.com/mjl-/mox";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dit7ya ];
+  };
+}
diff --git a/pkgs/servers/mail/mox/version.patch b/pkgs/servers/mail/mox/version.patch
new file mode 100644
index 0000000000000..c842275ac9e49
--- /dev/null
+++ b/pkgs/servers/mail/mox/version.patch
@@ -0,0 +1,45 @@
+diff --git a/moxvar/version.go b/moxvar/version.go
+index 8c6bac8..69b5f7c 100644
+--- a/moxvar/version.go
++++ b/moxvar/version.go
+@@ -1,38 +1,5 @@
+ // Package moxvar provides the version number of a mox build.
+ package moxvar
+ 
+-import (
+-	"runtime/debug"
+-)
+-
+-// Version is set at runtime based on the Go module used to build.
+-var Version = "(devel)"
+-
+-func init() {
+-	buildInfo, ok := debug.ReadBuildInfo()
+-	if !ok {
+-		return
+-	}
+-	Version = buildInfo.Main.Version
+-	if Version == "(devel)" {
+-		var vcsRev, vcsMod string
+-		for _, setting := range buildInfo.Settings {
+-			if setting.Key == "vcs.revision" {
+-				vcsRev = setting.Value
+-			} else if setting.Key == "vcs.modified" {
+-				vcsMod = setting.Value
+-			}
+-		}
+-		if vcsRev == "" {
+-			return
+-		}
+-		Version = vcsRev
+-		switch vcsMod {
+-		case "false":
+-		case "true":
+-			Version += "+modifications"
+-		default:
+-			Version += "+unknown"
+-		}
+-	}
+-}
++// Version is set via a build flag
++var Version string;