diff options
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/doc/manual/configuration/x-windows.xml | 19 | ||||
-rw-r--r-- | nixos/modules/config/users-groups.nix | 4 | ||||
-rw-r--r-- | nixos/modules/hardware/opengl.nix | 20 | ||||
-rw-r--r-- | nixos/modules/hardware/video/ati.nix | 37 | ||||
-rwxr-xr-x | nixos/modules/module-list.nix | 3 | ||||
-rw-r--r-- | nixos/modules/services/audio/mpd.nix | 54 | ||||
-rw-r--r-- | nixos/modules/services/misc/cpuminer-cryptonight.nix | 66 | ||||
-rw-r--r-- | nixos/modules/services/misc/gitolite.nix | 13 | ||||
-rw-r--r-- | nixos/modules/services/networking/btsync.nix | 2 | ||||
-rw-r--r-- | nixos/modules/services/networking/cjdns.nix | 4 | ||||
-rw-r--r-- | nixos/modules/services/x11/window-managers/afterstep.nix | 28 | ||||
-rw-r--r-- | nixos/modules/services/x11/window-managers/ratpoison.nix | 28 | ||||
-rw-r--r-- | nixos/modules/services/x11/window-managers/windowmaker.nix | 28 | ||||
-rw-r--r-- | nixos/modules/services/x11/xserver.nix | 6 | ||||
-rw-r--r-- | nixos/modules/system/boot/loader/grub/install-grub.pl | 5 | ||||
-rw-r--r-- | nixos/release.nix | 2 |
16 files changed, 276 insertions, 43 deletions
diff --git a/nixos/doc/manual/configuration/x-windows.xml b/nixos/doc/manual/configuration/x-windows.xml index 4008e89fceac..95e66f0c70c0 100644 --- a/nixos/doc/manual/configuration/x-windows.xml +++ b/nixos/doc/manual/configuration/x-windows.xml @@ -73,6 +73,25 @@ hardware.opengl.driSupport32Bit = true; </simplesect> +<simplesect><title>AMD Graphics Cards</title> + +<para>AMD provides a proprietary driver for its graphics cards that +has better 3D performance than the X.org drivers. It is not enabled +by default because it’s not free software. You can enable it as follows: +<programlisting> +services.xserver.videoDrivers = [ "ati_unfree" ]; +</programlisting> +You will need to reboot after enabling this driver to prevent a clash +with other kernel modules.</para> + +<para>On 64-bit systems, if you want full acceleration for 32-bit +programs such as Wine, you should also set the following: +<programlisting> +hardware.opengl.driSupport32Bit = true; +</programlisting> +</para> + +</simplesect> <simplesect><title>Touchpads</title> diff --git a/nixos/modules/config/users-groups.nix b/nixos/modules/config/users-groups.nix index 7d0498c10cc5..0d3273fe0539 100644 --- a/nixos/modules/config/users-groups.nix +++ b/nixos/modules/config/users-groups.nix @@ -310,9 +310,9 @@ let }) cfg.extraUsers; groups = mapAttrsToList (n: g: { inherit (g) name gid; - members = mapAttrsToList (n: u: u.name) ( + members = g.members ++ (mapAttrsToList (n: u: u.name) ( filterAttrs (n: u: elem g.name u.extraGroups) cfg.extraUsers - ); + )); }) cfg.extraGroups; }); diff --git a/nixos/modules/hardware/opengl.nix b/nixos/modules/hardware/opengl.nix index f894c830eb6c..1777c200dd11 100644 --- a/nixos/modules/hardware/opengl.nix +++ b/nixos/modules/hardware/opengl.nix @@ -46,7 +46,8 @@ in description = '' On 64-bit systems, whether to support Direct Rendering for 32-bit applications (such as Wine). This is currently only - supported for the <literal>nvidia</literal> driver and for + supported for the <literal>nvidia</literal> and + <literal>ati_unfree</literal> drivers, as well as <literal>Mesa</literal>. ''; }; @@ -104,22 +105,9 @@ in environment.sessionVariables.LD_LIBRARY_PATH = [ "/run/opengl-driver/lib" "/run/opengl-driver-32/lib" ]; - # FIXME: move this into card-specific modules. - hardware.opengl.package = mkDefault - (if elem "ati_unfree" videoDrivers then - kernelPackages.ati_drivers_x11 - else - makePackage pkgs); - + hardware.opengl.package = mkDefault (makePackage pkgs); hardware.opengl.package32 = mkDefault (makePackage pkgs_i686); - boot.extraModulePackages = - optional (elem "virtualbox" videoDrivers) kernelPackages.virtualboxGuestAdditions ++ - optional (elem "ati_unfree" videoDrivers) kernelPackages.ati_drivers_x11; - - environment.etc = - optionalAttrs (elem "ati_unfree" videoDrivers) { - "ati".source = "${kernelPackages.ati_drivers_x11}/etc/ati"; - }; + boot.extraModulePackages = optional (elem "virtualbox" videoDrivers) kernelPackages.virtualboxGuestAdditions; }; } diff --git a/nixos/modules/hardware/video/ati.nix b/nixos/modules/hardware/video/ati.nix new file mode 100644 index 000000000000..033e49d2233e --- /dev/null +++ b/nixos/modules/hardware/video/ati.nix @@ -0,0 +1,37 @@ +# This module provides the proprietary ATI X11 / OpenGL drivers. + +{ config, lib, pkgs, pkgs_i686, ... }: + +with lib; + +let + + drivers = config.services.xserver.videoDrivers; + + enabled = elem "ati_unfree" drivers; + + ati_x11 = config.boot.kernelPackages.ati_drivers_x11; + +in + +{ + + config = mkIf enabled { + + services.xserver.drivers = singleton + { name = "fglrx"; modules = [ ati_x11 ]; libPath = [ "${ati_x11}/lib" ]; }; + + hardware.opengl.package = ati_x11; + hardware.opengl.package32 = pkgs_i686.linuxPackages.ati_drivers_x11.override { libsOnly = true; kernel = null; }; + + environment.systemPackages = [ ati_x11 ]; + + boot.extraModulePackages = [ ati_x11 ]; + + boot.blacklistedKernelModules = [ "radeon" ]; + + environment.etc."ati".source = "${ati_x11}/etc/ati"; + + }; + +} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 25827656608d..deec9fd1bb77 100755 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -38,6 +38,7 @@ ./hardware/pcmcia.nix ./hardware/video/bumblebee.nix ./hardware/video/nvidia.nix + ./hardware/video/ati.nix ./installer/tools/nixos-checkout.nix ./installer/tools/tools.nix ./misc/assertions.nix @@ -142,6 +143,7 @@ ./services/hardware/udev.nix ./services/hardware/udisks2.nix ./services/hardware/upower.nix + ./services/hardware/thermald.nix ./services/logging/klogd.nix ./services/logging/logcheck.nix ./services/logging/logrotate.nix @@ -157,6 +159,7 @@ ./services/mail/postfix.nix ./services/mail/spamassassin.nix #./services/misc/autofs.nix + ./services/misc/cpuminer-cryptonight.nix ./services/misc/cgminer.nix ./services/misc/dictd.nix ./services/misc/disnix.nix diff --git a/nixos/modules/services/audio/mpd.nix b/nixos/modules/services/audio/mpd.nix index 53542e34b14b..e6b525c4b1ba 100644 --- a/nixos/modules/services/audio/mpd.nix +++ b/nixos/modules/services/audio/mpd.nix @@ -16,52 +16,76 @@ let sticker_file "${cfg.dataDir}/sticker.sql" log_file "syslog" user "mpd" + ${if cfg.network.host != "any" then + "bind_to_address ${cfg.network.host}" else ""} + ${if cfg.network.port != 6600 then + "port ${toString cfg.network.port}" else ""} ${cfg.extraConfig} - ''; + ''; in { ###### interface - options = { + options = { - services.mpd = { + services.mpd = { enable = mkOption { default = false; description = '' Whether to enable MPD, the music player daemon. - ''; - }; + ''; + }; musicDirectory = mkOption { default = "${cfg.dataDir}/music"; description = '' Extra configuration added to the end of MPD's configuration file, mpd.conf. - ''; - }; + ''; + }; extraConfig = mkOption { - default = ""; + default = ""; description = '' Extra directives added to to the end of MPD's configuration file, mpd.conf. Basic configuration like file location and uid/gid is added automatically to the beginning of the file. - ''; - }; + ''; + }; dataDir = mkOption { default = "/var/lib/mpd"; description = '' The directory where MPD stores its state, tag cache, playlists etc. - ''; - }; - - }; + ''; + }; + + network = { + + host = mkOption { + default = "any"; + description = '' + This setting sets the address for the daemon to listen on. Careful attention + should be paid if this is assigned to anything other then the default, any. + This setting can deny access to control of the daemon. + ''; + }; + + port = mkOption { + default = 6600; + description = '' + This setting is the TCP port that is desired for the daemon to get assigned + to. + ''; + }; + + }; + }; - }; + }; ###### implementation diff --git a/nixos/modules/services/misc/cpuminer-cryptonight.nix b/nixos/modules/services/misc/cpuminer-cryptonight.nix new file mode 100644 index 000000000000..f31526f8d107 --- /dev/null +++ b/nixos/modules/services/misc/cpuminer-cryptonight.nix @@ -0,0 +1,66 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.cpuminer-cryptonight; + + json = builtins.toJSON ( + cfg // { + enable = null; + threads = + if cfg.threads == 0 then null else toString cfg.threads; + } + ); + + confFile = builtins.toFile "cpuminer.json" json; +in +{ + + options = { + + services.cpuminer-cryptonight = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable the cpuminer cryptonight miner. + ''; + }; + url = mkOption { + type = types.string; + description = "URL of mining server"; + }; + user = mkOption { + type = types.string; + description = "Username for mining server"; + }; + pass = mkOption { + type = types.string; + default = "x"; + description = "Password for mining server"; + }; + threads = mkOption { + type = types.int; + default = 0; + description = "Number of miner threads, defaults to available processors"; + }; + }; + + }; + + config = mkIf config.services.cpuminer-cryptonight.enable { + + systemd.services.cpuminer-cryptonight = { + description = "Cryptonight cpuminer"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + serviceConfig = { + ExecStart = "${pkgs.cpuminer-multi}/bin/minerd --syslog --config=${confFile}"; + User = "nobody"; + }; + }; + + }; + +} \ No newline at end of file diff --git a/nixos/modules/services/misc/gitolite.nix b/nixos/modules/services/misc/gitolite.nix index 84435f92c11d..961af48e0f86 100644 --- a/nixos/modules/services/misc/gitolite.nix +++ b/nixos/modules/services/misc/gitolite.nix @@ -5,6 +5,7 @@ with lib; let cfg = config.services.gitolite; pubkeyFile = pkgs.writeText "gitolite-admin.pub" cfg.adminPubkey; + hooks = lib.concatMapStrings (hook: "${hook} ") cfg.commonHooks; in { options = { @@ -30,6 +31,14 @@ in once, upon the first initialization of the Gitolite user. ''; }; + + commonHooks = mkOption { + type = types.listOf types.path; + default = []; + description = '' + A list of custom git hooks that get copied to <literal>~/.gitolite/hooks/common</literal>. + ''; + }; }; }; @@ -57,6 +66,10 @@ in if [ ! -d repositories ]; then gitolite setup -pk ${pubkeyFile} fi + if [ -n "${hooks}" ]; then + cp ${hooks} .gitolite/hooks/common/ + chmod +x .gitolite/hooks/common/* + fi gitolite setup # Upgrade if needed ''; }; diff --git a/nixos/modules/services/networking/btsync.nix b/nixos/modules/services/networking/btsync.nix index 5d0e17c293e3..7ddc9e1045e4 100644 --- a/nixos/modules/services/networking/btsync.nix +++ b/nixos/modules/services/networking/btsync.nix @@ -57,7 +57,7 @@ let '' { "device_name": "${cfg.deviceName}", - "storage_path": "/var/lib/btsync", + "storage_path": "/var/lib/btsync/", "listening_port": ${toString cfg.listeningPort}, "use_gui": false, diff --git a/nixos/modules/services/networking/cjdns.nix b/nixos/modules/services/networking/cjdns.nix index 0519172db914..7192b8b7a0e0 100644 --- a/nixos/modules/services/networking/cjdns.nix +++ b/nixos/modules/services/networking/cjdns.nix @@ -190,7 +190,7 @@ in echo '${cjdrouteConf}' | sed \ -e "s/@CJDNS_ADMIN_PASSWORD@/$CJDNS_ADMIN_PASSWORD/g" \ -e "s/@CJDNS_PRIVATE_KEY@/$CJDNS_PRIVATE_KEY/g" \ - | ${pkgs.cjdns}/sbin/cjdroute + | ${pkgs.cjdns}/bin/cjdroute ''; serviceConfig = { @@ -201,7 +201,7 @@ in system.activationScripts.cjdns = '' grep -q "CJDNS_PRIVATE_KEY=" /etc/cjdns.keys || \ - echo "CJDNS_PRIVATE_KEY=$(${pkgs.cjdns}/sbin/makekey)" \ + echo "CJDNS_PRIVATE_KEY=$(${pkgs.cjdns}/bin/makekey)" \ >> /etc/cjdns.keys grep -q "CJDNS_ADMIN_PASSWORD=" /etc/cjdns.keys || \ diff --git a/nixos/modules/services/x11/window-managers/afterstep.nix b/nixos/modules/services/x11/window-managers/afterstep.nix new file mode 100644 index 000000000000..395dabb86b5e --- /dev/null +++ b/nixos/modules/services/x11/window-managers/afterstep.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.xserver.windowManager.afterstep; +in +{ + ###### interface + options = { + services.xserver.windowManager.afterstep.enable = mkOption { + default = false; + description = "Enable the Afterstep window manager."; + }; + }; + + ###### implementation + config = mkIf cfg.enable { + services.xserver.windowManager.session = singleton { + name = "afterstep"; + start = '' + ${pkgs.afterstep}/bin/afterstep & + waitPID=$! + ''; + }; + environment.systemPackages = [ pkgs.afterstep ]; + }; +} diff --git a/nixos/modules/services/x11/window-managers/ratpoison.nix b/nixos/modules/services/x11/window-managers/ratpoison.nix new file mode 100644 index 000000000000..c203c35cd1b7 --- /dev/null +++ b/nixos/modules/services/x11/window-managers/ratpoison.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.xserver.windowManager.ratpoison; +in +{ + ###### interface + options = { + services.xserver.windowManager.ratpoison.enable = mkOption { + default = false; + description = "Enable the Ratpoison window manager."; + }; + }; + + ###### implementation + config = mkIf cfg.enable { + services.xserver.windowManager.session = singleton { + name = "ratpoison"; + start = '' + ${pkgs.ratpoison}/bin/ratpoison & + waitPID=$! + ''; + }; + environment.systemPackages = [ pkgs.ratpoison ]; + }; +} diff --git a/nixos/modules/services/x11/window-managers/windowmaker.nix b/nixos/modules/services/x11/window-managers/windowmaker.nix new file mode 100644 index 000000000000..27cedb7da0ca --- /dev/null +++ b/nixos/modules/services/x11/window-managers/windowmaker.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.xserver.windowManager.windowmaker; +in +{ + ###### interface + options = { + services.xserver.windowManager.windowmaker.enable = mkOption { + default = false; + description = "Enable the Windowmaker window manager."; + }; + }; + + ###### implementation + config = mkIf cfg.enable { + services.xserver.windowManager.session = singleton { + name = "windowmaker"; + start = '' + ${pkgs.windowmaker}/bin/wmaker & + waitPID=$! + ''; + }; + environment.systemPackages = [ pkgs.windowmaker ]; + }; +} diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index 21eaf6bb6b76..c08afe2041f4 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -13,7 +13,6 @@ let # Map video driver names to driver packages. FIXME: move into card-specific modules. knownVideoDrivers = { - ati_unfree = { modules = [ kernelPackages.ati_drivers_x11 ]; driverName = "fglrx"; }; nouveau = { modules = [ pkgs.xf86_video_nouveau ]; }; unichrome = { modules = [ pkgs.xorgVideoUnichrome ]; }; virtualbox = { modules = [ kernelPackages.virtualboxGuestAdditions ]; driverName = "vboxvideo"; }; @@ -444,8 +443,7 @@ in pkgs.xterm pkgs.xdg_utils ] - ++ optional (elem "virtualbox" cfg.videoDrivers) xorg.xrefresh - ++ optional (elem "ati_unfree" cfg.videoDrivers) kernelPackages.ati_drivers_x11; + ++ optional (elem "virtualbox" cfg.videoDrivers) xorg.xrefresh; environment.pathsToLink = [ "/etc/xdg" "/share/xdg" "/share/applications" "/share/icons" "/share/pixmaps" ]; @@ -465,8 +463,6 @@ in XORG_DRI_DRIVER_PATH = "/run/opengl-driver/lib/dri"; # !!! Depends on the driver selected at runtime. LD_LIBRARY_PATH = concatStringsSep ":" ( [ "${xorg.libX11}/lib" "${xorg.libXext}/lib" ] - ++ optionals (elem "ati_unfree" cfg.videoDrivers) - [ "${kernelPackages.ati_drivers_x11}/lib" "${kernelPackages.ati_drivers_x11}/X11R6/lib64/modules/linux" ] ++ concatLists (catAttrs "libPath" cfg.drivers)); } // cfg.displayManager.job.environment; diff --git a/nixos/modules/system/boot/loader/grub/install-grub.pl b/nixos/modules/system/boot/loader/grub/install-grub.pl index eef81d81484e..981b60c004c2 100644 --- a/nixos/modules/system/boot/loader/grub/install-grub.pl +++ b/nixos/modules/system/boot/loader/grub/install-grub.pl @@ -199,7 +199,10 @@ sub GrubFs { return Grub->new(path => $path, search => $search); } my $grubBoot = GrubFs("/boot"); -my $grubStore = GrubFs("/nix/store"); +my $grubStore; +if ($copyKernels == 0) { + $grubStore = GrubFs("/nix/store"); +} # Generate the header. my $conf .= "# Automatically generated. DO NOT EDIT THIS FILE!\n"; diff --git a/nixos/release.nix b/nixos/release.nix index 14e8549de5e4..0a12aa765be9 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -11,7 +11,7 @@ let forAllSystems = pkgs.lib.genAttrs supportedSystems; - scrubDrv = drv: let res = { inherit (drv) drvPath outPath type name; outputName = "out"; out = res; }; in res; + scrubDrv = drv: let res = { inherit (drv) drvPath outPath type name system meta; outputName = "out"; out = res; }; in res; callTest = fn: args: forAllSystems (system: scrubDrv (import fn ({ inherit system; } // args))); |