about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/gotify/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/gotify/default.nix')
-rw-r--r--nixpkgs/pkgs/servers/gotify/default.nix69
1 files changed, 69 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/gotify/default.nix b/nixpkgs/pkgs/servers/gotify/default.nix
new file mode 100644
index 000000000000..45311b60232e
--- /dev/null
+++ b/nixpkgs/pkgs/servers/gotify/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, fetchFromGitHub
+, buildGoModule
+, sqlite
+, callPackage
+, nixosTests
+, nix-update-script
+}:
+
+buildGoModule rec {
+  pname = "gotify-server";
+  version = "2.4.0";
+
+  src = fetchFromGitHub {
+    owner = "gotify";
+    repo = "server";
+    rev = "v${version}";
+    hash = "sha256-TZeQcrJCH9TW039r499fxY4xJ27nZm9GdrilsI33Iqc=";
+  };
+
+  # With `allowGoReference = true;`, `buildGoModule` adds the `-trimpath`
+  # argument for Go builds which apparently breaks the UI like this:
+  #
+  #   server[780]: stat /var/lib/private/ui/build/index.html: no such file or directory
+  allowGoReference = true;
+
+  vendorHash = "sha256-TR6YGNhSMQ/1kvX3p3QGlXovuoJdaRH0LOwIPZwQ/xY=";
+
+  doCheck = false;
+
+  buildInputs = [
+    sqlite
+  ];
+
+  ui = callPackage ./ui.nix { };
+
+  preBuild = ''
+    if [ -n "$ui" ] # to make the preBuild a no-op inside the goModules fixed-output derivation, where it would fail
+    then
+      cp -r $ui ui/build
+    fi
+  '';
+
+  passthru = {
+    # For nix-update to detect the location of this attribute from this
+    # derivation.
+    inherit (ui) offlineCache;
+    updateScript = nix-update-script { };
+    tests = {
+      nixos = nixosTests.gotify-server;
+    };
+  };
+
+  # Otherwise, all other subpackages are built as well and from some reason,
+  # produce binaries which panic when executed and are not interesting at all
+  subPackages = [ "." ];
+
+  ldflags = [
+    "-X main.Version=${version}" "-X main.Mode=prod"
+  ];
+
+  meta = with lib; {
+    description = "A simple server for sending and receiving messages in real-time per WebSocket";
+    homepage = "https://gotify.net";
+    license = licenses.mit;
+    maintainers = with maintainers; [ doronbehar ];
+    mainProgram = "server";
+  };
+}