nixpkgs/pkgs/by-name/co/conduwuit/package.nix
Masum Reza a4d711538e
treewide: migrate to the new rust fetcher (#356385)
* alfis: migrate to the new fetcher

* workstyle: migrate to the new fetcher

* mullvad: migrate to the new fetcher

* chiptrack: migrate to the new fetcher

* conduwuit: migrate to the new fetcher

* xdg-desktop-portal-cosmic: migrate to the new rust fetcher

* cloud-hypervisor: migrate to the new fetcher
2024-11-19 21:23:26 +05:30

103 lines
2.7 KiB
Nix

{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
bzip2,
zstd,
stdenv,
apple-sdk_15,
darwinMinVersionHook,
rocksdb,
nix-update-script,
testers,
conduwuit,
# upstream conduwuit enables jemalloc by default, so we follow suit
enableJemalloc ? true,
rust-jemalloc-sys,
enableLiburing ? stdenv.hostPlatform.isLinux,
liburing,
}:
let
rust-jemalloc-sys' = rust-jemalloc-sys.override {
unprefixed = !stdenv.hostPlatform.isDarwin;
};
rocksdb' = rocksdb.override {
inherit enableLiburing;
# rocksdb does not support prefixed jemalloc, which is required on darwin
enableJemalloc = enableJemalloc && !stdenv.hostPlatform.isDarwin;
jemalloc = rust-jemalloc-sys';
};
in
rustPlatform.buildRustPackage rec {
pname = "conduwuit";
version = "0.4.6";
src = fetchFromGitHub {
owner = "girlbossceo";
repo = "conduwuit";
rev = "v${version}";
hash = "sha256-ut3IWEueNR/hT7NyGfuK5IYtppC6ArSoJdEfFuD/0vE=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-L0UvJ5ZyEk/hZobkB21u6cfPCeRwhDl+07aWcQEOgYw=";
nativeBuildInputs = [
pkg-config
rustPlatform.bindgenHook
];
buildInputs =
[
bzip2
zstd
]
++ lib.optional enableJemalloc rust-jemalloc-sys'
++ lib.optional enableLiburing liburing
++ lib.optionals stdenv.hostPlatform.isDarwin [
apple-sdk_15
# aws-lc-sys requires CryptoKit's CommonCrypto, which is available on macOS 10.15+
(darwinMinVersionHook "10.15")
];
env = {
ZSTD_SYS_USE_PKG_CONFIG = true;
ROCKSDB_INCLUDE_DIR = "${rocksdb'}/include";
ROCKSDB_LIB_DIR = "${rocksdb'}/lib";
};
buildNoDefaultFeatures = true;
# See https://github.com/girlbossceo/conduwuit/blob/main/src/main/Cargo.toml
# for available features.
# We enable all default features except jemalloc and io_uring, which
# we guard behind our own (default-enabled) flags.
buildFeatures = [
"brotli_compression"
"element_hacks"
"gzip_compression"
"release_max_log_level"
"sentry_telemetry"
"systemd"
"zstd_compression"
] ++ lib.optional enableJemalloc "jemalloc" ++ lib.optional enableLiburing "io_uring";
passthru = {
updateScript = nix-update-script { };
tests.version = testers.testVersion {
package = conduwuit;
version = "${version}";
};
};
meta = {
description = "Matrix homeserver written in Rust, forked from conduit";
homepage = "https://conduwuit.puppyirl.gay/";
changelog = "https://github.com/girlbossceo/conduwuit/releases/tag/v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ niklaskorz ];
# Not a typo, conduwuit is a drop-in replacement for conduit.
mainProgram = "conduit";
};
}