parent
fdb5563bcc
commit
9213916ca7
@ -0,0 +1,43 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
|
||||
cfg = config.hardware.facetimehd; |
||||
|
||||
kernelPackages = config.boot.kernelPackages; |
||||
|
||||
in |
||||
|
||||
{ |
||||
|
||||
options.hardware.facetimehd.enable = mkEnableOption "facetimehd kernel module"; |
||||
|
||||
config = mkIf cfg.enable { |
||||
|
||||
assertions = singleton { |
||||
assertion = versionAtLeast kernelPackages.kernel.version "3.19"; |
||||
message = "facetimehd is not supported for kernels older than 3.19"; |
||||
}; |
||||
|
||||
boot.kernelModules = [ "facetimehd" ]; |
||||
|
||||
boot.extraModulePackages = [ kernelPackages.facetimehd ]; |
||||
|
||||
hardware.firmware = [ pkgs.facetimehd-firmware ]; |
||||
|
||||
# unload module during suspend/hibernate as it crashes the whole system |
||||
powerManagement.powerDownCommands = '' |
||||
${pkgs.module_init_tools}/bin/rmmod -f facetimehd |
||||
''; |
||||
|
||||
# and load it back on resume |
||||
powerManagement.resumeCommands = '' |
||||
export MODULE_DIR=/run/current-system/kernel-modules/lib/modules |
||||
${pkgs.module_init_tools}/bin/modprobe -v facetimehd |
||||
''; |
||||
|
||||
}; |
||||
|
||||
} |
@ -0,0 +1,34 @@ |
||||
{ stdenv, fetchFromGitHub, kernel }: |
||||
|
||||
# facetimehd is not supported for kernels older than 3.19"; |
||||
assert stdenv.lib.versionAtLeast kernel.version "3.19"; |
||||
|
||||
stdenv.mkDerivation rec { |
||||
|
||||
name = "facetimehd-${version}-${kernel.version}"; |
||||
version = "git-20160127"; |
||||
|
||||
src = fetchFromGitHub { |
||||
owner = "patjak"; |
||||
repo = "bcwc_pcie"; |
||||
rev = "186e9f9101ed9bbd7cc8d470f840d4a74c585ca7"; |
||||
sha256 = "1frsf6z6v94cz9fww9rbnk926jzl36fp3w2d1aw6djhzwm80a5gs"; |
||||
}; |
||||
|
||||
preConfigure = '' |
||||
export INSTALL_MOD_PATH="$out" |
||||
''; |
||||
|
||||
makeFlags = [ |
||||
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" |
||||
]; |
||||
|
||||
meta = with stdenv.lib; { |
||||
homepage = https://github.com/patjak/bcwc_pcie; |
||||
description = "Linux driver for the Facetime HD (Broadcom 1570) PCIe webcam"; |
||||
license = licenses.gpl2; |
||||
maintainers = [ maintainers.womfoo ]; |
||||
platforms = platforms.linux; |
||||
}; |
||||
|
||||
} |
Loading…
Reference in new issue