about summary refs log tree commit diff
path: root/pkgs/tools/X11
diff options
context:
space:
mode:
authorTomasz Kontusz <tomasz.kontusz@gmail.com>2014-02-08 19:47:51 +0100
committerBjørn Forsman <bjorn.forsman@gmail.com>2014-02-09 15:09:41 +0100
commitfe38031168620d0bc30c0b79f464f3c04c99f9d1 (patch)
tree6f6b7920d8248864465760eaaa8ef71c977fbf33 /pkgs/tools/X11
parent48851fa749d634d68eaaa0dcd6c4041615b6c0f0 (diff)
downloadnixlib-fe38031168620d0bc30c0b79f464f3c04c99f9d1.tar
nixlib-fe38031168620d0bc30c0b79f464f3c04c99f9d1.tar.gz
nixlib-fe38031168620d0bc30c0b79f464f3c04c99f9d1.tar.bz2
nixlib-fe38031168620d0bc30c0b79f464f3c04c99f9d1.tar.lz
nixlib-fe38031168620d0bc30c0b79f464f3c04c99f9d1.tar.xz
nixlib-fe38031168620d0bc30c0b79f464f3c04c99f9d1.tar.zst
nixlib-fe38031168620d0bc30c0b79f464f3c04c99f9d1.zip
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/tools/X11')
-rw-r--r--pkgs/tools/X11/bumblebee/config.patch30
-rw-r--r--pkgs/tools/X11/bumblebee/default.nix59
-rw-r--r--pkgs/tools/X11/bumblebee/xopts.patch2
-rw-r--r--pkgs/tools/X11/bumblebee/xorg.conf.nvidia49
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