1{ lib, kernel, stdenv, fetchFromGitea, libgcrypt, lvm2 }:
2stdenv.mkDerivation (finalAttrs: {
3 name = "shufflecake";
4 version = "0.4.4";
5 src = fetchFromGitea {
6 domain = "codeberg.org";
7 owner = "shufflecake";
8 repo = "shufflecake-c";
9 rev = "v${finalAttrs.version}";
10 hash = "sha256-zvGHM5kajJlROI8vg1yZQ5NvJvuGLV2iKvumdW8aglA=";
11 };
12
13 nativeBuildInputs = kernel.moduleBuildDependencies;
14 buildInputs = [ libgcrypt lvm2 ];
15 makeFlags = kernel.makeFlags ++ [
16 "KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
17 ];
18
19 outputs = [ "out" "bin" ];
20
21 installPhase = ''
22 install -Dm444 dm-sflc.ko $out/lib/modules/${kernel.modDirVersion}/drivers/md/dm-sflc.ko
23 install -Dm555 shufflecake $bin/shufflecake
24 '';
25
26 meta = with lib; {
27 description = "Plausible deniability (hidden storage) layer for Linux";
28 homepage = "https://shufflecake.net";
29 license = licenses.gpl2Only;
30 maintainers = with maintainers; [ oluceps ];
31 outputsToInstall = [ "bin" ];
32 platforms = platforms.linux;
33 broken = kernel.kernelOlder "6.1";
34 };
35})
36