diff --git a/pkgs/os-specific/linux/bbswitch/default.nix b/pkgs/os-specific/linux/bbswitch/default.nix new file mode 100644 index 00000000000..d64701a1d07 --- /dev/null +++ b/pkgs/os-specific/linux/bbswitch/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchurl, kernel }: + +let + + version = "0.4.1"; + name = "bbswitch-${version}"; + +in stdenv.mkDerivation { + inherit name; + + src = fetchurl { + url = "http://github.com/downloads/Bumblebee-Project/bbswitch/${name}.tar.gz"; + sha256 = "d579c6efc5f6482f0cf0b2c1b1f1a127413218cdffdc8f2d5a946c11909bda23"; + }; + + preBuild = '' + kernelVersion=$(cd ${kernel}/lib/modules && ls) + substituteInPlace Makefile \ + --replace "\$(shell uname -r)" "$kernelVersion" \ + --replace "/lib/modules" "${kernel}/lib/modules" + ''; + + installPhase = '' + kernelVersion=$(cd ${kernel}/lib/modules && ls) + ensureDir $out/lib/modules/$kernelVersion/misc + cp bbswitch.ko $out/lib/modules/$kernelVersion/misc + + ensureDir $out/bin + tee $out/bin/discrete_vga_poweroff << EOF + #!/bin/sh + + echo -n OFF > /proc/acpi/bbswitch + EOF + tee $out/bin/discrete_vga_poweron << EOF + #!/bin/sh + + echo -n ON > /proc/acpi/bbswitch + EOF + chmod +x $out/bin/discrete_vga_poweroff $out/bin/discrete_vga_poweron + ''; + + meta = { + platforms = stdenv.lib.platforms.linux; + description = "A module for powering off hybrid GPUs"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2f3f25a7471..f563a0bded4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5814,6 +5814,8 @@ let acpi_call = callPackage ../os-specific/linux/acpi-call {}; + bbswitch = callPackage ../os-specific/linux/bbswitch {}; + ati_drivers_x11 = callPackage ../os-specific/linux/ati-drivers { }; aufs =