]> Untitled Git - lemmy.git/blob - default.nix
6c261161c20dd7489628db1959368ce6d1a2267f
[lemmy.git] / default.nix
1 { lib, stdenv, rustPlatform, fetchFromGitHub, openssl, postgresql, libiconv
2 , Security, protobuf, rustfmt, nixosTests }:
3
4 rustPlatform.buildRustPackage rec {
5   version = "0.18.2";
6   pname = "lemmy-server";
7
8   src = ./.;
9
10   preConfigure = ''
11     echo 'pub const VERSION: &str = "${version}";' > crates/utils/src/version.rs
12   '';
13
14   cargoSha256 = "sha256-2HWz6gYRo4YkXQz4V5COY2vpCu/PD8kKxzDG21YjYbo=";
15
16   buildInputs = [ postgresql ]
17     ++ lib.optionals stdenv.isDarwin [ libiconv Security ];
18
19   # Using OPENSSL_NO_VENDOR is not an option on darwin
20   # As of version 0.10.35 rust-openssl looks for openssl on darwin
21   # with a hardcoded path to /usr/lib/libssl.x.x.x.dylib
22   # https://github.com/sfackler/rust-openssl/blob/master/openssl-sys/build/find_normal.rs#L115
23   OPENSSL_LIB_DIR = "${lib.getLib openssl}/lib";
24   OPENSSL_INCLUDE_DIR = "${openssl.dev}/include";
25
26   PROTOC = "${protobuf}/bin/protoc";
27   PROTOC_INCLUDE = "${protobuf}/include";
28   nativeBuildInputs = [ protobuf rustfmt ];
29
30   passthru.tests.lemmy-server = nixosTests.lemmy;
31
32   meta = with lib; {
33     description = "🐀 Building a federated alternative to reddit in rust";
34     homepage = "https://join-lemmy.org/";
35     license = licenses.agpl3Only;
36     maintainers = with maintainers; [ happysalada billewanick ];
37     mainProgram = "lemmy_server";
38   };
39 }