diff options
author | Tomasz Kontusz <tomasz.kontusz@gmail.com> | 2014-02-08 19:47:51 +0100 |
---|---|---|
committer | Bjørn Forsman <bjorn.forsman@gmail.com> | 2014-02-09 15:09:41 +0100 |
commit | fe38031168620d0bc30c0b79f464f3c04c99f9d1 (patch) | |
tree | 6f6b7920d8248864465760eaaa8ef71c977fbf33 /pkgs | |
parent | 48851fa749d634d68eaaa0dcd6c4041615b6c0f0 (diff) |
Upgrade bumblebee and add nixos module
* Bump bumblebee to 3.2.1
* Remove config.patch - options it added can be passed to ./configure now
* Remove the provided xorg.conf
Provided xorg.conf was causing problems for some users,
and Bumblebee provides its own default configuration anyway.
* Make secondary X11 log to /var/log/X.bumblebee.log
* Add a module for bumblebee
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/tools/X11/bumblebee/config.patch | 30 | ||||
-rw-r--r-- | pkgs/tools/X11/bumblebee/default.nix | 59 | ||||
-rw-r--r-- | pkgs/tools/X11/bumblebee/xopts.patch | 2 | ||||
-rw-r--r-- | pkgs/tools/X11/bumblebee/xorg.conf.nvidia | 49 |
4 files changed, 15 insertions, 125 deletions
diff --git a/pkgs/tools/X11/bumblebee/config.patch b/pkgs/tools/X11/bumblebee/config.patch deleted file mode 100644 index 61b671f80c1c..000000000000 --- a/pkgs/tools/X11/bumblebee/config.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- bumblebee-3.0/src/driver.c.orig 2012-02-03 14:51:10.282464426 +0100 -+++ bumblebee-3.0/src/driver.c 2012-02-04 22:26:02.715498536 +0100 -@@ -23,6 +23,7 @@ - #include "module.h" - #include "bblogger.h" - #include "driver.h" -+#include <stdlib.h> - - /** - * Check what drivers are available and autodetect if possible. Driver, module -@@ -30,6 +31,7 @@ - */ - void driver_detect(void) { - /* determine driver to be used */ -+ set_string_value(&bb_config.driver, getenv("BUMBLEBEE_DRIVER")); - if (*bb_config.driver) { - bb_log(LOG_DEBUG, "Skipping auto-detection, using configured driver" - " '%s'\n", bb_config.driver); -@@ -65,8 +67,8 @@ - } - } - -- if (strcmp(bb_config.driver, "nvidia")) { -- set_string_value(&bb_config.ld_path, CONF_LDPATH_NVIDIA); -- set_string_value(&bb_config.mod_path, CONF_MODPATH_NVIDIA); -+ if (!strcmp(bb_config.driver, "nvidia")) { -+ set_string_value(&bb_config.ld_path, getenv("BUMBLEBEE_LDPATH_NVIDIA")); -+ set_string_value(&bb_config.mod_path, getenv("BUMBLEBEE_MODPATH_NVIDIA")); - } - } diff --git a/pkgs/tools/X11/bumblebee/default.nix b/pkgs/tools/X11/bumblebee/default.nix index 74e3e7b1f82d..58db0c13abb2 100644 --- a/pkgs/tools/X11/bumblebee/default.nix +++ b/pkgs/tools/X11/bumblebee/default.nix @@ -8,19 +8,7 @@ # To test: make sure that the 'bbswitch' kernel module is installed, # then run 'bumblebeed' as root and 'optirun glxgears' as user. -# To use at startup, add e.g. to configuration.nix: -# jobs = { -# bumblebeed = { -# name = "bumblebeed"; -# description = "Manages the Optimus video card"; -# startOn = "started udev and started syslogd"; -# stopOn = "starting shutdown"; -# exec = "bumblebeed --use-syslog"; -# path = [ pkgs.bumblebee ]; -# environment = { MODULE_DIR = "${config.system.modulesTree}/lib/modules"; }; -# respawn = true; -# }; -# }; +# To use at startup, see hardware.bumblebee options. # This nix expression supports for now only the native nvidia driver. # It should not be hard to generalize this approach to support the @@ -34,7 +22,7 @@ }: let - version = "3.0"; + version = "3.2.1"; name = "bumblebee-${version}"; # isolated X11 environment with the nvidia module @@ -61,22 +49,15 @@ let ignoreCollisions = true; }; - # Custom X11 configuration for the additional xserver instance. - xorgConf = ./xorg.conf.nvidia; - in stdenv.mkDerivation { inherit name; src = fetchurl { - url = "http://github.com/downloads/Bumblebee-Project/Bumblebee/${name}.tar.gz"; - sha256 = "a27ddb77b282ac8b972857fdb0dc5061cf0a0982b7ac3e1cfa698b4f786e49a1"; + url = "http://bumblebee-project.org/${name}.tar.gz"; + sha256 = "03p3gvx99lwlavznrpg9l7jnl1yfg2adcj8jcjj0gxp20wxp060h"; }; - # 'config.patch' makes bumblebee read the active module and the nvidia configuration - # from the environment variables instead of the config file: - # BUMBLEBEE_DRIVER, BUMBLEBEE_LDPATH_NVIDIA, BUMBLEBEE_MODPATH_NVIDIA - # These variables must be set when bumblebeed and optirun are executed. - patches = [ ./config.patch ./xopts.patch ]; + patches = [ ./xopts.patch ]; preConfigure = '' # Substitute the path to the actual modinfo program in module.c. @@ -88,32 +69,25 @@ in stdenv.mkDerivation { # Don't use a special group, just reuse wheel. substituteInPlace configure \ --replace 'CONF_GID="bumblebee"' 'CONF_GID="wheel"' - - # Ensures that the config file ends up with a nonempty - # name of the nvidia module. This is needed, because the - # configuration handling code otherwise resets the - # data that we obtained from the environment (see config.patch) - export CONF_DRIVER_MODULE_NVIDIA=nvidia ''; # Build-time dependencies of bumblebeed and optirun. # Note that it has several runtime dependencies. buildInputs = [ stdenv makeWrapper pkgconfig help2man libX11 glib libbsd ]; + configureFlags = [ + "--with-udev-rules=$out/lib/udev/rules.d" + "CONF_DRIVER=nvidia" + "CONF_DRIVER_MODULE_NVIDIA=nvidia" + "CONF_LDPATH_NVIDIA=${commonEnv}/lib" + "CONF_MODPATH_NVIDIA=${commonEnv}/lib/xorg/modules" + ]; + # create a wrapper environment for bumblebeed and optirun postInstall = '' - # remove some entries from the configuration file that would otherwise - # cause our environment variables to be ignored. - substituteInPlace "$out/etc/bumblebee/bumblebee.conf" \ - --replace "LibraryPath=" "" \ - --replace "XorgModulePath=" "" - wrapProgram "$out/sbin/bumblebeed" \ --prefix PATH : "${commonEnv}/sbin:${commonEnv}/bin:\$PATH" \ --prefix LD_LIBRARY_PATH : "${commonEnv}/lib:\$LD_LIBRARY_PATH" \ - --set BUMBLEBEE_DRIVER "nvidia" \ - --set BUMBLEBEE_LDPATH_NVIDIA "${commonEnv}/lib" \ - --set BUMBLEBEE_MODPATH_NVIDIA "${commonEnv}/lib/xorg/modules" \ --set FONTCONFIG_FILE "/etc/fonts/fonts.conf" \ --set XKB_BINDIR "${xorg.xkbcomp}/bin" \ --set XKB_DIR "${xkeyboard_config}/etc/X11/xkb" @@ -121,16 +95,11 @@ in stdenv.mkDerivation { wrapProgram "$out/bin/optirun" \ --prefix PATH : "${commonEnv}/sbin:${commonEnv}/bin" \ --prefix LD_LIBRARY_PATH : "${commonEnv}/lib" \ - --set BUMBLEBEE_DRIVER "nvidia" \ - --set BUMBLEBEE_LDPATH_NVIDIA "${commonEnv}/lib" \ - --set BUMBLEBEE_MODPATH_NVIDIA "${commonEnv}/lib/xorg/modules" - - cp ${xorgConf} "$out/etc/bumblebee/xorg.conf.nvidia" ''; meta = { homepage = http://github.com/Bumblebee-Project/Bumblebee; description = "Daemon for managing Optimus videocards (power-on/off, spawns xservers)"; - license = "free"; + license = stdenv.lib.licenses.gpl3; }; } diff --git a/pkgs/tools/X11/bumblebee/xopts.patch b/pkgs/tools/X11/bumblebee/xopts.patch index 9e44a8e9fd1a..f24b2a205627 100644 --- a/pkgs/tools/X11/bumblebee/xopts.patch +++ b/pkgs/tools/X11/bumblebee/xopts.patch @@ -5,7 +5,7 @@ "-nolisten", "tcp", "-noreset", + "-xkbdir", getenv("XKB_DIR"), -+ "-logfile", "/dev/null", ++ "-logfile", "/var/log/X.bumblebee.log", "-verbose", "3", "-isolateDevice", pci_id, "-modulepath", diff --git a/pkgs/tools/X11/bumblebee/xorg.conf.nvidia b/pkgs/tools/X11/bumblebee/xorg.conf.nvidia deleted file mode 100644 index 31c417d6971e..000000000000 --- a/pkgs/tools/X11/bumblebee/xorg.conf.nvidia +++ /dev/null @@ -1,49 +0,0 @@ -Section "DRI" - Mode 0666 -EndSection - -Section "ServerLayout" - Identifier "Layout0" - Screen "Screen1" - Option "AutoAddDevices" "false" -EndSection - -Section "Module" - Load "dbe" - Load "extmod" - Load "glx" - Load "record" - Load "freetype" - Load "type1" -EndSection - -Section "Files" -EndSection - -Section "Device" - Identifier "Device1" - Driver "nvidia" - VendorName "NVIDIA Corporation" - Option "NoLogo" "true" - Option "UseEDID" "false" - Option "ConnectedMonitor" "CRT-0" -EndSection - -Section "Screen" - Identifier "Screen1" - Device "Device1" - Monitor "Monitor0" - DefaultDepth 24 - SubSection "Display" - Depth 24 - EndSubSection -EndSection - -Section "Extensions" - Option "Composite" "Enable" -EndSection - -Section "Monitor" - Identifier "Monitor0" - Option "DPMS" -EndSection |