Skip to content

Instantly share code, notes, and snippets.

@peterwilli
Forked from gtgteq/droidcam.nix
Last active June 23, 2022 07:21
Show Gist options
  • Save peterwilli/b61da8e2ddafe010f7178553135dc3d3 to your computer and use it in GitHub Desktop.
Save peterwilli/b61da8e2ddafe010f7178553135dc3d3 to your computer and use it in GitHub Desktop.
droidcam.nix
{ stdenv, fetchzip, pkgconfig, ffmpeg, gtk3-x11, libjpeg, libusbmuxd, alsaLib, speex }:
stdenv.mkDerivation rec {
pname = "droidcam";
version = "0";
src = fetchzip {
url = "https://github.com/dev47apps/droidcam/archive/refs/tags/v1.7.2.zip";
sha256 = "1iskvs5p71gkiinj78kkl9ygl5il9rdbzm0h85hwyzm2xwkcybrp";
};
sourceRoot = "source";
buildInputs = [ pkgconfig ];
nativeBuildInputs = [ ffmpeg gtk3-x11 libusbmuxd alsaLib libjpeg speex ];
postPatch = ''
cat Makefile
ls ${libusbmuxd.out}/lib
sed -i -e 's:-lusbmuxd:-I ${libusbmuxd.out} ${libusbmuxd.out}/lib/libusbmuxd-2.0.so:' Makefile
sed -i -e 's:/opt/libjpeg-turbo:${libjpeg.out}:' Makefile
sed -i -e 's:$(JPEG_DIR)/lib`getconf LONG_BIT`:${libjpeg.out}/lib:' Makefile
sed -i -e 's:libturbojpeg.a:libturbojpeg.so:' Makefile
cat Makefile
'';
installPhase = ''
mkdir -p $out/bin
cp droidcam droidcam-cli $out/bin/
'';
meta = with stdenv.lib; {
description = "DroidCam Linux client";
homepage = https://github.com/aramg/droidcam;
};
}
{ stdenv, fetchzip, kernel }:
stdenv.mkDerivation rec {
pname = "v4l2loopback-dc";
version = "0";
src = fetchzip {
url = "https://github.com/dev47apps/droidcam/archive/refs/tags/v1.7.2.zip";
sha256 = "1iskvs5p71gkiinj78kkl9ygl5il9rdbzm0h85hwyzm2xwkcybrp";
};
sourceRoot = "source/v4l2loopback";
KVER = "${kernel.modDirVersion}";
KBUILD_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
nativeBuildInputs = kernel.moduleBuildDependencies;
postPatch = ''
sed -i -e 's:/lib/modules/$(KERNELRELEASE)/build:${KBUILD_DIR}:g' Makefile
'';
installPhase = ''
mkdir -p $out/lib/modules/${KVER}/kernels/media/video
cp v4l2loopback-dc.ko $out/lib/modules/${KVER}/kernels/media/video/
'';
meta = with stdenv.lib; {
description = "DroidCam kernel module v4l2loopback-dc";
homepage = https://github.com/aramg/droidcam;
};
}

configuration.nix:

let v4l2loopback-dc = config.boot.kernelPackages.callPackage ./v4l2loopback-dc.nix { };
    droidcam = pkgs.callPackage ./droidcam.nix {};
in {
  boot.extraModulePackages = [ v4l2loopback-dc ];
  environment.systemPackages = [ droidcam ];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment