1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 kernel,
6 kmod,
7 kernelModuleMakeFlags,
8}:
9
10let
11 version = "0.15.1";
12
13in
14stdenv.mkDerivation {
15 pname = "v4l2loopback";
16 version = "${version}-${kernel.version}";
17
18 src = fetchFromGitHub {
19 owner = "umlaeute";
20 repo = "v4l2loopback";
21 tag = "v${version}";
22 hash = "sha256-uokj0MB6bw4I8q5dVmSO9XMDvh4T7YODBoCCHvEf4v4=";
23 };
24
25 hardeningDisable = [
26 "format"
27 "pic"
28 ];
29
30 preBuild = ''
31 substituteInPlace Makefile --replace "modules_install" "INSTALL_MOD_PATH=$out modules_install"
32 sed -i '/depmod/d' Makefile
33 '';
34
35 # Don't use makeFlags for this
36 postBuild = ''
37 make utils
38 '';
39
40 nativeBuildInputs = [ kmod ] ++ kernel.moduleBuildDependencies;
41
42 postInstall = ''
43 make install-utils PREFIX=$bin
44 '';
45
46 outputs = [
47 "out"
48 "bin"
49 ];
50
51 makeFlags = kernelModuleMakeFlags ++ [
52 "KERNELRELEASE=${kernel.modDirVersion}"
53 "KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
54 "v4l2loopback.ko"
55 ];
56
57 meta = {
58 description = "Kernel module to create V4L2 loopback devices";
59 mainProgram = "v4l2loopback-ctl";
60 homepage = "https://github.com/umlaeute/v4l2loopback";
61 license = lib.licenses.gpl2Only;
62 maintainers = with lib.maintainers; [
63 moni
64 bot-wxt1221
65 ];
66 platforms = lib.platforms.linux;
67 outputsToInstall = [ "out" ];
68 };
69}