base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12 (#356361)
[NixPkgs.git] / pkgs / tools / system / zram-generator / default.nix
blob3d55d7c19613ecd5efca996bd89a9e8ca4c78d43
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , rustPlatform
5 , pkg-config
6 , ronn
7 , systemd
8 , kmod
9 , nixosTests
12 rustPlatform.buildRustPackage rec {
13   pname = "zram-generator";
14   version = "1.1.2";
16   src = fetchFromGitHub {
17     owner = "systemd";
18     repo = pname;
19     rev = "v${version}";
20     hash = "sha256-n+ZOWU+sPq9DcHgzQWTxxfMmiz239qdetXypqdy33cM=";
21   };
23   # RFE: Include Cargo.lock in sources
24   # https://github.com/systemd/zram-generator/issues/65
25   cargoLock.lockFile = ./Cargo.lock;
27   postPatch = ''
28     cp ${./Cargo.lock} Cargo.lock
29     substituteInPlace Makefile \
30       --replace 'target/$(BUILDTYPE)' 'target/${stdenv.hostPlatform.rust.rustcTargetSpec}/$(BUILDTYPE)'
31     substituteInPlace src/generator.rs \
32       --replace 'Command::new("systemd-detect-virt")' 'Command::new("${systemd}/bin/systemd-detect-virt")' \
33       --replace 'Command::new("modprobe")' 'Command::new("${kmod}/bin/modprobe")'
34   '';
36   nativeBuildInputs = [
37     pkg-config
38     ronn
39   ];
41   buildInputs = [
42     systemd
43   ];
45   preBuild = ''
46     # embedded into the binary at build time
47     # https://github.com/systemd/zram-generator/blob/v1.1.2/Makefile#LL11-L11C56
48     export SYSTEMD_UTIL_DIR=$($PKG_CONFIG --variable=systemdutildir systemd)
49   '';
51   dontCargoInstall = true;
53   installFlags = [
54     "-o program" # already built by cargoBuildHook
55     "PREFIX=$(out)"
56     "SYSTEMD_SYSTEM_UNIT_DIR=$(out)/lib/systemd/system"
57     "SYSTEMD_SYSTEM_GENERATOR_DIR=$(out)/lib/systemd/system-generators"
58   ];
60   passthru = {
61     tests = {
62       inherit (nixosTests) zram-generator;
63     };
64     updateScript = ./update.sh;
65   };
67   meta = with lib; {
68     homepage = "https://github.com/systemd/zram-generator";
69     license = licenses.mit;
70     description = "Systemd unit generator for zram devices";
71     maintainers = with maintainers; [ nickcao ];
72   };