nixpkgs/pkgs/servers/web-apps/lemmy/server.nix
K900 87e2e48e4e lemmy-server: allow warnings
Remember kids, don't -Werror in production.
2026-06-28 17:18:23 +03:00

90 lines
2.2 KiB
Nix

{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
openssl,
libpq,
libiconv,
protobuf,
rustfmt,
nixosTests,
}:
let
pinData = lib.importJSON ./pin.json;
version = pinData.serverVersion;
in
rustPlatform.buildRustPackage rec {
inherit version;
pname = "lemmy-server";
src = fetchFromGitHub {
owner = "LemmyNet";
repo = "lemmy";
rev = version;
hash = pinData.serverHash;
fetchSubmodules = true;
};
preConfigure = ''
echo 'pub const VERSION: &str = "${version}";' > crates/utils/src/version.rs
'';
cargoHash = pinData.serverCargoHash;
buildInputs = [
libpq
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
libiconv
];
env = {
# Using OPENSSL_NO_VENDOR is not an option on darwin
# As of version 0.10.35 rust-openssl looks for openssl on darwin
# with a hardcoded path to /usr/lib/libssl.x.x.x.dylib
# https://github.com/sfackler/rust-openssl/blob/master/openssl-sys/build/find_normal.rs#L115
OPENSSL_LIB_DIR = "${lib.getLib openssl}/lib";
OPENSSL_INCLUDE_DIR = "${openssl.dev}/include";
PROTOC = "${protobuf}/bin/protoc";
PROTOC_INCLUDE = "${protobuf}/include";
# #[deny(warnings)] trips on newer rustc
RUSTFLAGS = "--cap-lints warn";
};
nativeBuildInputs = [
protobuf
rustfmt
];
checkFlags = [
# test requires database access
"--skip=session_middleware::tests::test_session_auth"
# tests require network access
"--skip=scheduled_tasks::tests::test_nodeinfo_mastodon_social"
"--skip=scheduled_tasks::tests::test_nodeinfo_lemmy_ml"
];
# This gets installed automatically by cargoInstallHook,
# but we don't actually need it, and it leaks a reference to rustc.
postInstall = lib.optionals (!stdenv.hostPlatform.isDarwin) ''
rm $out/lib/libhtml2md.so
'';
passthru.updateScript = ./update.py;
passthru.tests.lemmy-server = nixosTests.lemmy;
meta = {
description = "🐀 Building a federated alternative to reddit in rust";
homepage = "https://join-lemmy.org/";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [
happysalada
billewanick
georgyo
];
mainProgram = "lemmy_server";
};
}