Merge master into x-updates

Adds the mass-rebuilding python update.
This commit is contained in:
Vladimír Čunát 2014-07-02 22:54:20 +02:00
commit aceb30cd93
292 changed files with 3987 additions and 897 deletions

@ -88,6 +88,8 @@
url = http://www.eclipse.org/legal/epl-v10.html;
};
free = "free";
gpl2 = {
shortName = "GPLv2";
fullName = "GNU General Public License version 2";
@ -130,6 +132,12 @@
url = http://www.opensource.org/licenses/ISC;
};
ipa = {
shortName = "IPA 1.0";
fullName = "IPA Font License v1.0";
url = http://ipafont.ipa.go.jp/ipafont/;
};
ipl10 = {
shortName = "IPL 1.0";
fullName = "IBM Public License Version 1.0";
@ -243,6 +251,12 @@
unfreeRedistributableFirmware = "unfree-redistributable-firmware";
wadalab = {
shortName = "wadalab";
fullName = "Wadalab Font License";
url = https://fedoraproject.org/wiki/Licensing:Wadalab?rd=Licensing/Wadalab;
};
zlib = {
shortName = "zlib";
fullName = "zlib license";

@ -6,6 +6,7 @@
_1126 = "Christian Lask <mail@elfsechsundzwanzig.de>";
aforemny = "Alexander Foremny <alexanderforemny@googlemail.com>";
ak = "Alexander Kjeldaas <ak@formalprivacy.com>";
akc = "Anders Claesson <akc@akc.is>";
algorith = "Dries Van Daele <dries_van_daele@telenet.be>";
all = "Nix Committers <nix-commits@lists.science.uu.nl>";
@ -37,6 +38,7 @@
emery = "Emery Hemingway <emery@vfemail.net>";
ertes = "Ertugrul Söylemez <ertesx@gmx.de>";
falsifian = "James Cook <james.cook@utoronto.ca>";
flosse = "Markus Kohlhase <mail@markus-kohlhase.de>";
fuuzetsu = "Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>";
garbas = "Rok Garbas <rok@garbas.si>";
goibhniu = "Cillian de Róiste <cillian.deroiste@gmail.com>";

@ -9,8 +9,8 @@
<xsl:template match="logfile">
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script type="text/javascript" src="treebits.js" />
<link rel="stylesheet" href="logfile.css" type="text/css" />
<title>Log File</title>

@ -37,7 +37,7 @@ rec {
# `driver' is the script that runs the network.
runTests = driver:
stdenv.mkDerivation {
name = "vm-test-run";
name = "vm-test-run-${driver.testName}";
requiredSystemFeatures = [ "kvm" "nixos-test" ];
@ -68,9 +68,10 @@ rec {
makeTest =
{ testScript, makeCoverageReport ? false, ... } @ t:
{ testScript, makeCoverageReport ? false, name ? "unnamed", ... } @ t:
let
testDriverName = "nixos-test-driver-${name}";
nodes = buildVirtualNetwork (
t.nodes or (if t ? machine then { machine = t.machine; } else { }));
@ -88,10 +89,11 @@ rec {
# Generate onvenience wrappers for running the test driver
# interactively with the specified network, and for starting the
# VMs from the command line.
driver = runCommand "nixos-test-driver"
driver = runCommand testDriverName
{ buildInputs = [ makeWrapper];
testScript = testScript';
preferLocalBuild = true;
testName = name;
}
''
mkdir -p $out/bin

@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }:
with lib;
with pkgs;
with lib;
let

@ -14,7 +14,7 @@ in
options = {
networking.extraHosts = pkgs.lib.mkOption {
networking.extraHosts = lib.mkOption {
type = types.lines;
default = "";
example = "192.168.0.1 lanlocalhost";
@ -23,7 +23,7 @@ in
'';
};
networking.dnsSingleRequest = pkgs.lib.mkOption {
networking.dnsSingleRequest = lib.mkOption {
type = types.bool;
default = false;
description = ''

@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }:
with lib;
with pkgs;
with lib;
let

@ -1,7 +1,7 @@
{ config, lib, pkgs, utils, ... }:
with lib;
with utils;
with lib;
{

@ -6,8 +6,12 @@ let
sysctlOption = mkOptionType {
name = "sysctl option value";
check = x: isBool x || isString x || isInt x || isNull x;
merge = args: defs: (last defs).value; # FIXME: hacky way to allow overriding in configuration.nix.
check = val:
let
checkType = x: isBool x || isString x || isInt x || isNull x;
in
checkType val || (val._type or "" == "override" && checkType val.content);
merge = loc: defs: mergeOneOption loc (filterOverrides defs);
};
in

@ -27,7 +27,7 @@ with lib;
environment.etc."odbcinst.ini".text =
let inis = config.environment.unixODBCDrivers;
in pkgs.lib.concatStringsSep "\n" inis;
in lib.concatStringsSep "\n" inis;
};

@ -1,4 +1,4 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
{
@ -6,9 +6,9 @@
options = {
networking.enableIntel2100BGFirmware = pkgs.lib.mkOption {
networking.enableIntel2100BGFirmware = lib.mkOption {
default = false;
type = pkgs.lib.types.bool;
type = lib.types.bool;
description = ''
Turn on this option if you want firmware for the Intel
PRO/Wireless 2100BG to be loaded automatically. This is
@ -21,7 +21,7 @@
###### implementation
config = pkgs.lib.mkIf config.networking.enableIntel2100BGFirmware {
config = lib.mkIf config.networking.enableIntel2100BGFirmware {
hardware.enableAllFirmware = true;

@ -1,4 +1,4 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
{
@ -6,9 +6,9 @@
options = {
networking.enableIntel2200BGFirmware = pkgs.lib.mkOption {
networking.enableIntel2200BGFirmware = lib.mkOption {
default = false;
type = pkgs.lib.types.bool;
type = lib.types.bool;
description = ''
Turn on this option if you want firmware for the Intel
PRO/Wireless 2200BG to be loaded automatically. This is
@ -21,7 +21,7 @@
###### implementation
config = pkgs.lib.mkIf config.networking.enableIntel2200BGFirmware {
config = lib.mkIf config.networking.enableIntel2200BGFirmware {
hardware.enableAllFirmware = true;

@ -1,4 +1,4 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
{
@ -6,9 +6,9 @@
options = {
networking.enableIntel3945ABGFirmware = pkgs.lib.mkOption {
networking.enableIntel3945ABGFirmware = lib.mkOption {
default = false;
type = pkgs.lib.types.bool;
type = lib.types.bool;
description = ''
This option enables automatic loading of the firmware for the Intel
PRO/Wireless 3945ABG.
@ -20,7 +20,7 @@
###### implementation
config = pkgs.lib.mkIf config.networking.enableIntel3945ABGFirmware {
config = lib.mkIf config.networking.enableIntel3945ABGFirmware {
hardware.enableAllFirmware = true;

@ -1,4 +1,4 @@
{pkgs, config, ...}:
{pkgs, config, lib, ...}:
{
@ -6,9 +6,9 @@
options = {
networking.enableRalinkFirmware = pkgs.lib.mkOption {
networking.enableRalinkFirmware = lib.mkOption {
default = false;
type = pkgs.lib.types.bool;
type = lib.types.bool;
description = ''
Turn on this option if you want firmware for the RT73 NIC.
'';
@ -19,7 +19,7 @@
###### implementation
config = pkgs.lib.mkIf config.networking.enableRalinkFirmware {
config = lib.mkIf config.networking.enableRalinkFirmware {
hardware.enableAllFirmware = true;
};

@ -1,4 +1,4 @@
{pkgs, config, ...}:
{pkgs, config, lib, ...}:
{
@ -6,9 +6,9 @@
options = {
networking.enableRTL8192cFirmware = pkgs.lib.mkOption {
networking.enableRTL8192cFirmware = lib.mkOption {
default = false;
type = pkgs.lib.types.bool;
type = lib.types.bool;
description = ''
Turn on this option if you want firmware for the RTL8192c (and related) NICs.
'';
@ -19,7 +19,7 @@
###### implementation
config = pkgs.lib.mkIf config.networking.enableRTL8192cFirmware {
config = lib.mkIf config.networking.enableRTL8192cFirmware {
hardware.enableAllFirmware = true;
};

@ -1,9 +1,9 @@
{pkgs, config, ...}:
{lib, config, ...}:
{
hardware = {
pcmcia = {
firmware = [ (pkgs.lib.cleanSource ./firmware) ];
firmware = [ (lib.cleanSource ./firmware) ];
};
};
}

@ -84,7 +84,7 @@ in
config = mkIf cfg.enable {
assertions = pkgs.lib.singleton {
assertions = lib.singleton {
assertion = cfg.driSupport32Bit -> pkgs.stdenv.isx86_64;
message = "Option driSupport32Bit only makes sense on a 64-bit system.";
};

@ -152,7 +152,7 @@ in
# default root password is empty.
services.openssh.enable = true;
jobs.openssh.startOn = pkgs.lib.mkOverride 50 "";
jobs.openssh.startOn = lib.mkOverride 50 "";
boot.loader.grub.enable = false;
boot.loader.generationsDir.enable = false;

@ -109,7 +109,7 @@ in
# not be started by default on the installation CD because the
# default root password is empty.
services.openssh.enable = true;
jobs.openssh.startOn = pkgs.lib.mkOverride 50 "";
jobs.openssh.startOn = lib.mkOverride 50 "";
# To be able to use the systemTarball to catch troubles.
boot.crashDump = {

@ -165,7 +165,7 @@ in
# not be started by default on the installation CD because the
# default root password is empty.
services.openssh.enable = true;
jobs.openssh.startOn = pkgs.lib.mkOverride 50 "";
jobs.openssh.startOn = lib.mkOverride 50 "";
# cpufrequtils fails to build on non-pc
powerManagement.enable = false;

@ -97,6 +97,16 @@ if [ -n "$upgrade" -a -z "$_NIXOS_REBUILD_REEXEC" ]; then
nix-channel --update nixos
fi
# Make sure that we use the Nix package we depend on, not something
# else from the PATH for nix-{env,instantiate,build}. This is
# important, because NixOS defaults the architecture of the rebuilt
# system to the architecture of the nix-* binaries used. So if on an
# amd64 system the user has an i686 Nix package in her PATH, then we
# would silently downgrade the whole system to be i686 NixOS on the
# next reboot.
if [ -z "$_NIXOS_REBUILD_REEXEC" ]; then
export PATH=@nix@/bin:$PATH
fi
# Re-execute nixos-rebuild from the Nixpkgs tree.
if [ -z "$_NIXOS_REBUILD_REEXEC" -a -n "$canRun" ]; then

@ -1,7 +1,7 @@
# This module generates nixos-install, nixos-rebuild,
# nixos-generate-config, etc.
{ config, pkgs, modulesPath, ... }:
{ config, pkgs, modulesPath, lib, ... }:
let
@ -32,6 +32,7 @@ let
nixos-rebuild = makeProg {
name = "nixos-rebuild";
src = ./nixos-rebuild.sh;
nix = config.nix.package;
};
nixos-generate-config = makeProg {
@ -64,7 +65,7 @@ let
test -e "$out/chrome/content/jquery-1.5.2.js" ||
cp -f "$jquery" "$out/chrome/content/jquery-1.5.2.js"
'';
gui = pkgs.lib.cleanSource "${modulesPath}/../gui";
gui = lib.cleanSource "${modulesPath}/../gui";
jquery = pkgs.fetchurl {
url = http://code.jquery.com/jquery-1.5.2.min.js;
sha256 = "8f0a19ee8c606b35a10904951e0a27da1896eafe33c6e88cb7bcbe455f05a24a";

@ -1,19 +1,19 @@
# This module defines the global list of uids and gids. We keep a
# central list to prevent id collisions.
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
{
options = {
ids.uids = pkgs.lib.mkOption {
ids.uids = lib.mkOption {
internal = true;
description = ''
The user IDs used in NixOS.
'';
};
ids.gids = pkgs.lib.mkOption {
ids.gids = lib.mkOption {
internal = true;
description = ''
The group IDs used in NixOS.

@ -1,11 +1,11 @@
{ config, pkgs, ... }:
{ config, lib, ... }:
{
options = {
lib = pkgs.lib.mkOption {
lib = lib.mkOption {
default = {};
type = pkgs.lib.types.attrsOf pkgs.lib.types.attrs;
type = lib.types.attrsOf lib.types.attrs;
description = ''
This option allows modules to define helper functions, constants, etc.

@ -1,11 +1,11 @@
# This module allows you to export something from configuration
# Use case: export kernel source expression for ease of configuring
{ config, pkgs, ... }:
{ config, lib, ... }:
{
options = {
passthru = pkgs.lib.mkOption {
passthru = lib.mkOption {
visible = false;
description = ''
This attribute set will be exported as a system attribute.

@ -217,6 +217,7 @@
./services/networking/prayer.nix
./services/networking/privoxy.nix
./services/networking/quassel.nix
./services/networking/radicale.nix
./services/networking/radvd.nix
./services/networking/rdnssd.nix
./services/networking/rpcbind.nix

@ -1,7 +1,7 @@
{ config, pkgs, ... }:
{ config, lib, ... }:
let
inherit (pkgs.lib) mkOption mkIf;
inherit (lib) mkOption mkIf;
cfg = config.environment.blcr;
blcrPkg = config.boot.kernelPackages.blcr;
in

@ -1,7 +1,7 @@
{ config, pkgs, ... }:
{ config, lib, ... }:
let
inherit (pkgs.lib) mkOption mkIf types;
inherit (lib) mkOption mkIf types;
cfg = config.programs.screen;
in

@ -40,7 +40,7 @@ in
options = {
users.defaultUserShell = pkgs.lib.mkOption {
users.defaultUserShell = lib.mkOption {
description = ''
This option defines the default shell assigned to user
accounts. This must not be a store path, since the path is
@ -60,7 +60,7 @@ in
config = {
environment.systemPackages =
pkgs.lib.optional config.users.mutableUsers pkgs.shadow;
lib.optional config.users.mutableUsers pkgs.shadow;
environment.etc =
[ { # /etc/login.defs: global configuration for pwdutils. You

@ -189,7 +189,9 @@ let
session required pam_env.so envfile=${config.system.build.pamEnvironment}
session required pam_unix.so
${optionalString cfg.setLoginUid
"session required pam_loginuid.so"}
"session ${
if config.boot.isContainer then "optional" else "required"
} pam_loginuid.so"}
${optionalString cfg.updateWtmp
"session required ${pkgs.pam}/lib/security/pam_lastlog.so silent"}
${optionalString config.users.ldap.enable

@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }:
with lib;
with pkgs;
with lib;
let

@ -73,7 +73,7 @@ in
touch ${stateDir}/sitecopy.secrets
chown root ${stateDir}/sitecopy.secrets
${pkgs.lib.concatStrings (map ( b: ''
${lib.concatStrings (map ( b: ''
unset secrets
unset secret
secrets=`grep '^${b.server}' ${stateDir}/sitecopy.secrets | head -1`

@ -68,7 +68,7 @@ in
users.extraUsers = optionalAttrs (cfg.user == "openldap") (singleton
{ name = "openldap";
group = "openldap";
group = cfg.group;
uid = config.ids.uids.openldap;
});

@ -85,7 +85,7 @@ in
Defines how users authenticate themselves to the server. By
default, "trust" access to local users will always be granted
along with any other custom options. If you do not want this,
set this option using "pkgs.lib.mkForce" to override this
set this option using "lib.mkForce" to override this
behaviour.
'';
};

@ -1,8 +1,8 @@
# GNOME Documents daemon.
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
with pkgs.lib;
with lib;
let
gnome3 = config.environment.gnome3.packageSet;

@ -1,8 +1,8 @@
# GNOME Keyring daemon.
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
with pkgs.lib;
with lib;
let
gnome3 = config.environment.gnome3.packageSet;

@ -1,8 +1,8 @@
# GNOME Online Accounts daemon.
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
with pkgs.lib;
with lib;
let
gnome3 = config.environment.gnome3.packageSet;

@ -1,8 +1,8 @@
# GNOME Online Miners daemon.
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
with pkgs.lib;
with lib;
let
gnome3 = config.environment.gnome3.packageSet;

@ -1,8 +1,8 @@
# GNOME User Share daemon.
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
with pkgs.lib;
with lib;
let
gnome3 = config.environment.gnome3.packageSet;

@ -1,8 +1,8 @@
# gvfs backends
{ config, pkgs, ... }:
{ config, lib, ... }:
with pkgs.lib;
with lib;
let
gnome3 = config.environment.gnome3.packageSet;

@ -1,8 +1,8 @@
# Seahorse daemon.
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
with pkgs.lib;
with lib;
let
gnome3 = config.environment.gnome3.packageSet;

@ -1,8 +1,8 @@
# Tracker daemon.
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
with pkgs.lib;
with lib;
let
gnome3 = config.environment.gnome3.packageSet;

@ -16,7 +16,7 @@ let
echo "event=${event.event}" > $fn
echo "action=${pkgs.writeScript "${event.name}.sh" event.action}" >> $fn
'';
in pkgs.lib.concatMapStrings f events
in lib.concatMapStrings f events
}
'';

@ -1,4 +1,4 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
{
@ -6,9 +6,9 @@
options = {
hardware.amdHybridGraphics.disable = pkgs.lib.mkOption {
hardware.amdHybridGraphics.disable = lib.mkOption {
default = false;
type = pkgs.lib.types.bool;
type = lib.types.bool;
description = ''
Completely disable the AMD graphics card and use the
integrated graphics processor instead.
@ -20,7 +20,7 @@
###### implementation
config = pkgs.lib.mkIf config.hardware.amdHybridGraphics.disable {
config = lib.mkIf config.hardware.amdHybridGraphics.disable {
systemd.services."amd-hybrid-graphics" = {
path = [ pkgs.bash ];
description = "Disable AMD Card";

@ -1,4 +1,4 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
let kernel = config.boot.kernelPackages; in
@ -8,9 +8,9 @@ let kernel = config.boot.kernelPackages; in
options = {
hardware.nvidiaOptimus.disable = pkgs.lib.mkOption {
hardware.nvidiaOptimus.disable = lib.mkOption {
default = false;
type = pkgs.lib.types.bool;
type = lib.types.bool;
description = ''
Completely disable the NVIDIA graphics card and use the
integrated graphics processor instead.
@ -22,7 +22,7 @@ let kernel = config.boot.kernelPackages; in
###### implementation
config = pkgs.lib.mkIf config.hardware.nvidiaOptimus.disable {
config = lib.mkIf config.hardware.nvidiaOptimus.disable {
boot.blacklistedKernelModules = ["nouveau" "nvidia" "nvidiafb"];
boot.kernelModules = [ "bbswitch" ];
boot.extraModulePackages = [ kernel.bbswitch ];

@ -1,9 +1,9 @@
# Monit system watcher
# http://mmonit.org/monit/
{config, pkgs, ...}:
{config, pkgs, lib, ...}:
let inherit (pkgs.lib) mkOption mkIf;
let inherit (lib) mkOption mkIf;
in
{

@ -1,6 +1,6 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
let
inherit (pkgs.lib) mkOption mkEnableOption mkIf mkMerge types optionalAttrs optional;
inherit (lib) mkOption mkEnableOption mkIf mkMerge types optionalAttrs optional;
cfg = config.services.uptime;

@ -1,7 +1,7 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
let
inherit (pkgs.lib) mkOption mkIf;
inherit (lib) mkOption mkIf;
cfg = config.services.openafsClient;

@ -1,6 +1,6 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
with pkgs.lib;
with lib;
let
@ -136,4 +136,4 @@ in
networking.firewall.allowedTCPPorts = [ cfg.port ];
};
}
}

@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }:
with lib;
with pkgs;
with lib;
let
cfg = config.networking.connman;

@ -1,8 +1,8 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
let
inherit (pkgs.lib) mkOption mkIf singleton;
inherit (lib) mkOption mkIf singleton;
inherit (pkgs) ddclient;

@ -18,7 +18,7 @@ let
${cfg.extraConfig}
${pkgs.lib.concatMapStrings
${lib.concatMapStrings
(machine: ''
host ${machine.hostName} {
hardware ethernet ${machine.ethernetAddress};

@ -1,9 +1,9 @@
# GNU Virtual Private Ethernet
{config, pkgs, ...}:
{config, pkgs, lib, ...}:
let
inherit (pkgs.lib) mkOption mkIf;
inherit (lib) mkOption mkIf;
cfg = config.services.gvpe;

@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }:
with lib;
with pkgs;
with lib;
let
cfg = config.networking.networkmanager;
@ -151,7 +151,7 @@ in {
{ source = "${networkmanager_pptp}/etc/NetworkManager/VPN/nm-pptp-service.name";
target = "NetworkManager/VPN/nm-pptp-service.name";
}
] ++ pkgs.lib.optional (cfg.appendNameservers == [] || cfg.insertNameservers == [])
] ++ optional (cfg.appendNameservers == [] || cfg.insertNameservers == [])
{ source = overrideNameserversScript;
target = "NetworkManager/dispatcher.d/02overridedns";
};

@ -1,6 +1,6 @@
{ config, lib, pkgs, ... }:
with pkgs.lib;
with lib;
let
cfg = config.services.notbit;
varDir = "/var/lib/notbit";

@ -1,6 +1,6 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
with pkgs.lib;
with lib;
let
cfg = config.services.nsd;

@ -0,0 +1,48 @@
{config, lib, pkgs, ...}:
with lib;
let
cfg = config.services.radicale;
confFile = pkgs.writeText "radicale.conf" cfg.config;
in
{
options = {
services.radicale.enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable Radicale CalDAV and CardDAV server
'';
};
services.radicale.config = mkOption {
type = types.string;
default = "";
description = ''
Radicale configuration, this will set the service
configuration file
'';
};
};
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.pythonPackages.radicale ];
jobs.radicale = {
description = "A Simple Calendar and Contact Server";
startOn = "started network-interfaces";
exec = "${pkgs.pythonPackages.radicale}/bin/radicale -C ${confFile} -d";
daemonType = "fork";
};
};
}

@ -1,6 +1,6 @@
{ config, pkgs, ... }:
{ config, lib, pkgs, ... }:
with pkgs.lib;
with lib;
let
ts3 = pkgs.teamspeak_server;

@ -15,7 +15,7 @@ let
MAILTO="${config.services.cron.mailto}"
''}
NIX_CONF_DIR=/etc/nix
${pkgs.lib.concatStrings (map (job: job + "\n") config.services.cron.systemCronJobs)}
${lib.concatStrings (map (job: job + "\n") config.services.cron.systemCronJobs)}
'';
# Vixie cron requires build-time configuration for the sendmail path.

@ -17,7 +17,7 @@ let
MAILTO="${config.services.cron.mailto}"
''}
NIX_CONF_DIR=/etc/nix
${pkgs.lib.concatStrings (map (job: job + "\n") config.services.cron.systemCronJobs)}
${lib.concatStrings (map (job: job + "\n") config.services.cron.systemCronJobs)}
'';
allowdeny = target: users:

@ -1,4 +1,4 @@
{pkgs, config, ...}:
{lib, config, ...}:
let kernel = config.boot.kernelPackages;
in
@ -9,9 +9,9 @@ in
options = {
services.frandom.enable = pkgs.lib.mkOption {
services.frandom.enable = lib.mkOption {
default = false;
type = pkgs.lib.types.bool;
type = lib.types.bool;
description = ''
enable the /dev/frandom device (a very fast random number generator)
'';
@ -22,7 +22,7 @@ in
###### implementation
config = pkgs.lib.mkIf config.services.frandom.enable {
config = lib.mkIf config.services.frandom.enable {
boot.kernelModules = [ "frandom" ];
boot.extraModulePackages = [ kernel.frandom ];
services.udev.packages = [ kernel.frandom ];

@ -1,8 +1,8 @@
{pkgs, config, ...}:
{pkgs, config, lib, ...}:
let
inherit (pkgs.lib) mkOption mkIf singleton;
inherit (lib) mkOption mkIf singleton;
inherit (pkgs) heimdal;
@ -36,7 +36,7 @@ in
environment.systemPackages = [ heimdal ];
services.xinetd.enable = true;
services.xinetd.services = pkgs.lib.singleton
services.xinetd.services = lib.singleton
{ name = "kerberos-adm";
flags = "REUSE NAMEINARGS";
protocol = "tcp";

@ -7,7 +7,7 @@ let
nssModulesPath = config.system.nssModules.path;
cfg = config.services.nscd;
inherit (pkgs.lib) singleton;
inherit (lib) singleton;
cfgFile = pkgs.writeText "nscd.conf" cfg.config;

@ -1,8 +1,8 @@
{pkgs, config, ...}:
{pkgs, config, lib, ...}:
let
inherit (pkgs.lib) mkOption mkIf singleton;
inherit (lib) mkOption mkIf singleton;
inherit (pkgs) uptimed;

@ -1,6 +1,6 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
let
inherit (pkgs.lib) mkOption types mkIf optionalString;
inherit (lib) mkOption types mkIf optionalString;
cfg = config.services.kmscon;

@ -594,17 +594,17 @@ in
message = "SSL is enabled for HTTPD, but sslServerCert and/or sslServerKey haven't been specified."; }
];
users.extraUsers = optional (mainCfg.user == "wwwrun")
users.extraUsers = optionalAttrs (mainCfg.user == "wwwrun") (singleton
{ name = "wwwrun";
group = "wwwrun";
group = mainCfg.group;
description = "Apache httpd user";
uid = config.ids.uids.wwwrun;
};
});
users.extraGroups = optional (mainCfg.group == "wwwrun")
users.extraGroups = optionalAttrs (mainCfg.group == "wwwrun") (singleton
{ name = "wwwrun";
gid = config.ids.gids.wwwrun;
};
});
environment.systemPackages = [httpd] ++ concatMap (svc: svc.extraPath) allSubservices;

@ -1,8 +1,8 @@
{ config, pkgs, serverInfo, ... }:
{ config, pkgs, serverInfo, lib, ... }:
let
inherit (pkgs) mercurial;
inherit (pkgs.lib) mkOption;
inherit (lib) mkOption;
urlPrefix = config.urlPrefix;

@ -1,7 +1,7 @@
{ config, pkgs, serverInfo, ... }:
{ config, pkgs, serverInfo, lib, ... }:
let
extraWorkersProperties = pkgs.lib.optionalString (config ? extraWorkersProperties) config.extraWorkersProperties;
extraWorkersProperties = lib.optionalString (config ? extraWorkersProperties) config.extraWorkersProperties;
workersProperties = pkgs.writeText "workers.properties" ''
# Define list of workers that will be used

@ -1,7 +1,7 @@
{pkgs, config, ...}:
{lib, pkgs, config, ...}:
let
inherit (pkgs.lib) mkOption mkIf;
inherit (lib) mkOption mkIf;
cfg = config.services.xserver.windowManager.openbox;
in

@ -1,7 +1,7 @@
{pkgs, config, ...}:
{pkgs, lib, config, ...}:
let
inherit (pkgs.lib) mkOption mkIf optionals literalExample;
inherit (lib) mkOption mkIf optionals literalExample;
cfg = config.services.xserver.windowManager.xmonad;
xmonadEnv = cfg.haskellPackages.ghcWithPackages(self: [
self.xmonad
@ -48,7 +48,7 @@ in
enableContribAndExtras = mkOption {
default = false;
example = true;
type = pkgs.lib.types.bool;
type = lib.types.bool;
description = "Enable xmonad-{contrib,extras} in Xmonad.";
};
};

@ -1,6 +1,6 @@
{ config, pkgs, modulesPath, ... }:
{ config, lib, ... }:
with pkgs.lib;
with lib;
let
fileSystems = attrValues config.fileSystems ++ config.swapDevices;

@ -1,6 +1,6 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
with pkgs.lib;
with lib;
let
inInitrd = any (fs: fs == "f2fs") config.boot.initrd.supportedFilesystems;

@ -1,8 +1,8 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
{
config = pkgs.lib.mkMerge [
(pkgs.lib.mkIf (pkgs.lib.any (fs: fs == "unionfs-fuse") config.boot.initrd.supportedFilesystems) {
config = lib.mkMerge [
(lib.mkIf (lib.any (fs: fs == "unionfs-fuse") config.boot.initrd.supportedFilesystems) {
boot.initrd.kernelModules = [ "fuse" ];
boot.initrd.extraUtilsCommands = ''
@ -17,7 +17,7 @@
ln -s $(which umount) /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${pkgs.utillinux.name}/bin
'';
})
(pkgs.lib.mkIf (pkgs.lib.any (fs: fs == "unionfs-fuse") config.boot.supportedFilesystems) {
(lib.mkIf (lib.any (fs: fs == "unionfs-fuse") config.boot.supportedFilesystems) {
system.fsPackages = [ pkgs.unionfs-fuse ];
})
];

@ -1,7 +1,7 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
let
configfile = builtins.storePath (builtins.toFile "config" (pkgs.lib.concatStringsSep "\n"
configfile = builtins.storePath (builtins.toFile "config" (lib.concatStringsSep "\n"
(map (builtins.getAttr "configLine") config.system.requiredKernelConfig))
);

@ -11,7 +11,6 @@ let
in
optionalAttrs (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) # ugly...
{
###### interface
@ -33,6 +32,10 @@ optionalAttrs (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) # ugly...
###### implementation
config = mkIf cfg.enable {
assertions = [ {
assertion = pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64;
message = "Virtualbox not currently supported on ${pkgs.stdenv.system}";
} ];
environment.systemPackages = [ kernel.virtualboxGuestAdditions ];

@ -1,6 +1,7 @@
# Test whether `avahi-daemon' and `libnss-mdns' work as expected.
import ./make-test.nix {
name = "avahi";
nodes = {
one =

@ -23,6 +23,7 @@ let
in
{
name = "bittorrent";
nodes =
{ tracker =

@ -6,6 +6,8 @@
with import ../lib/build-vms.nix { inherit nixos nixpkgs system; };
rec {
name = "check-filesystems";
nodes = {
share = {pkgs, config, ...}: {
services.nfs.server.enable = true;

@ -1,6 +1,7 @@
# Test for NixOS' container support.
import ./make-test.nix {
name = "containers";
machine =
{ config, pkgs, ... }:

@ -1,4 +1,5 @@
import ./make-test.nix ({ pkgs, ... }: {
name = "firefox";
machine =
{ config, pkgs, ... }:

@ -1,6 +1,7 @@
# Test the firewall module.
import ./make-test.nix {
name = "firewall";
nodes =
{ walled =

@ -1,4 +1,5 @@
import ./make-test.nix {
name = "gnome3";
machine =
{ config, pkgs, ... }:

@ -1,4 +1,5 @@
import ./make-test.nix {
name = "gnome3_12";
machine =
{ config, pkgs, ... }:

@ -1,6 +1,8 @@
# This test runs influxdb and checks if influxdb is up and running
import ./make-test.nix {
name = "influxdb";
nodes = {
one = { config, pkgs, ... }: {
services.influxdb.enable = true;

@ -215,10 +215,11 @@ let
'';
makeInstallerTest =
makeInstallerTest = name:
{ createPartitions, testChannel ? false, useEFI ? false, grubVersion ? 2, grubDevice ? "/dev/vda" }:
makeTest {
inherit iso;
name = "installer-" + name;
nodes = if testChannel then { inherit webserver; } else { };
testScript = testScriptFun {
inherit createPartitions testChannel useEFI grubVersion grubDevice;
@ -233,7 +234,7 @@ in {
# The (almost) simplest partitioning scheme: a swap partition and
# one big filesystem partition.
simple = makeInstallerTest
simple = makeInstallerTest "simple"
{ createPartitions =
''
$machine->succeed(
@ -251,7 +252,7 @@ in {
};
# Same as the previous, but now with a separate /boot partition.
separateBoot = makeInstallerTest
separateBoot = makeInstallerTest "separateBoot"
{ createPartitions =
''
$machine->succeed(
@ -273,7 +274,7 @@ in {
# Create two physical LVM partitions combined into one volume group
# that contains the logical swap and root partitions.
lvm = makeInstallerTest
lvm = makeInstallerTest "lvm"
{ createPartitions =
''
$machine->succeed(
@ -295,7 +296,7 @@ in {
'';
};
swraid = makeInstallerTest
swraid = makeInstallerTest "swraid"
{ createPartitions =
''
$machine->succeed(
@ -328,7 +329,7 @@ in {
};
# Test a basic install using GRUB 1.
grub1 = makeInstallerTest
grub1 = makeInstallerTest "grub1"
{ createPartitions =
''
$machine->succeed(
@ -348,7 +349,7 @@ in {
};
# Test an EFI install.
efi = makeInstallerTest
efi = makeInstallerTest "efi"
{ createPartitions =
''
$machine->succeed(
@ -369,6 +370,7 @@ in {
# Rebuild the CD configuration with a little modification.
rebuildCD = makeTest
{ inherit iso;
name = "rebuild-cd";
nodes = { };
testScript =
''

@ -2,6 +2,7 @@
# solicication/advertisement using radvd works.
import ./make-test.nix {
name = "ipv6";
nodes =
{ client = { config, pkgs, ... }: { };

@ -4,6 +4,7 @@
# 3. jenkins service not started on slave node
import ./make-test.nix {
name = "jenkins";
nodes = {

@ -1,4 +1,5 @@
import ./make-test.nix ({ pkgs, ... }: {
name = "kde4";
machine =
{ config, pkgs, ... }:

@ -1,6 +1,7 @@
# Test whether fast reboots via kexec work.
import ./make-test.nix {
name = "kexec";
machine = { config, pkgs, ... }:
{ virtualisation.vlans = [ ]; };

@ -1,6 +1,7 @@
import ./make-test.nix ({ pkgs, latestKernel ? false, ... }:
{
name = "login";
machine =
{ config, pkgs, lib, ... }:

@ -2,6 +2,7 @@
# elasticsearch is started.
import ./make-test.nix {
name = "logstash";
nodes = {
one =

@ -1,6 +1,7 @@
# Miscellaneous small tests that don't warrant their own VM run.
import ./make-test.nix {
name = "misc";
machine =
{ config, lib, pkgs, ... }:

@ -1,6 +1,8 @@
# Simple example to showcase distributed tests using NixOS VMs.
import ./make-test.nix {
name = "mpich";
nodes = {
master =
{ config, pkgs, ... }: {

@ -7,6 +7,8 @@ let
};
in
{
name = "mumble";
nodes = {
server = { config, pkgs, ... }: {
services.murmur.enable = true;
@ -28,21 +30,21 @@ in
$client1->execute("mumble mumble://client1\@server/test &");
$client2->execute("mumble mumble://client2\@server/test &");
$client1->waitForWindow(qr/Mumble/);
$client2->waitForWindow(qr/Mumble/);
$server->sleep(3); # Wait some more for the Mumble UI
# cancel client audio configuration
$client1->waitForWindow(qr/Audio Tuning Wizard/);
$client2->waitForWindow(qr/Audio Tuning Wizard/);
$client1->sendKeys("esc");
$client2->sendKeys("esc");
$server->sleep(1);
# cancel client cert configuration
$client1->waitForWindow(qr/Certificate Management/);
$client2->waitForWindow(qr/Certificate Management/);
$client1->sendKeys("esc");
$client2->sendKeys("esc");
$server->sleep(1);
# accept server certificate
$client1->waitForWindow(qr/^Mumble$/);
$client2->waitForWindow(qr/^Mumble$/);
$client1->sendChars("y");
$client2->sendChars("y");

@ -2,6 +2,7 @@
# machine.
import ./make-test.nix {
name = "munin";
nodes = {
one =

@ -6,6 +6,8 @@ let
in
{
name = "mysql-replication";
nodes = {
master =
{ pkgs, config, ... }:

@ -1,4 +1,5 @@
import ./make-test.nix {
name = "mysql";
nodes = {
master =

@ -5,6 +5,7 @@
# for the client.
import ./make-test.nix {
name = "nat";
nodes =
{ client =

@ -17,6 +17,7 @@ let
in
{
name = "nfs";
nodes =
{ client1 = client;

@ -1,4 +1,22 @@
import ./make-test.nix ({ pkgs, ... }: {
import ./make-test.nix ({ pkgs, ... }:
let
snakeOilPrivateKey = pkgs.writeText "privkey.snakeoil" ''
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIHQf/khLvYrQ8IOika5yqtWvI0oquHlpRLTZiJy5dRJmoAoGCCqGSM49
AwEHoUQDQgAEKF0DYGbBwbj06tA3fd/+yP44cvmwmHBWXZCKbS+RQlAKvLXMWkpN
r1lwMyJZoSGgBHoUahoYjTh9/sJL7XLJtA==
-----END EC PRIVATE KEY-----
'';
snakeOilPublicKey = pkgs.lib.concatStrings [
"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHA"
"yNTYAAABBBChdA2BmwcG49OrQN33f/sj+OHL5sJhwVl2Qim0vkUJQCry1zFpKTa"
"9ZcDMiWaEhoAR6FGoaGI04ff7CS+1yybQ= sakeoil"
];
in {
name = "openssh";
nodes = {
@ -9,6 +27,9 @@ import ./make-test.nix ({ pkgs, ... }: {
services.openssh.enable = true;
security.pam.services.sshd.limits =
[ { domain = "*"; item = "memlock"; type = "-"; value = 1024; } ];
users.extraUsers.root.openssh.authorizedKeys.keys = [
snakeOilPublicKey
];
};
client =
@ -23,15 +44,25 @@ import ./make-test.nix ({ pkgs, ... }: {
$server->waitForUnit("sshd");
$server->succeed("mkdir -m 700 /root/.ssh");
$server->copyFileFromHost("key.pub", "/root/.ssh/authorized_keys");
subtest "manual-authkey", sub {
$server->succeed("mkdir -m 700 /root/.ssh");
$server->copyFileFromHost("key.pub", "/root/.ssh/authorized_keys");
$client->succeed("mkdir -m 700 /root/.ssh");
$client->copyFileFromHost("key", "/root/.ssh/id_dsa");
$client->succeed("chmod 600 /root/.ssh/id_dsa");
$client->succeed("mkdir -m 700 /root/.ssh");
$client->copyFileFromHost("key", "/root/.ssh/id_dsa");
$client->succeed("chmod 600 /root/.ssh/id_dsa");
$client->waitForUnit("network.target");
$client->succeed("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'echo hello world' >&2");
$client->succeed("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'ulimit -l' | grep 1024");
$client->waitForUnit("network.target");
$client->succeed("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'echo hello world' >&2");
$client->succeed("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'ulimit -l' | grep 1024");
};
subtest "configured-authkey", sub {
$client->succeed("cat ${snakeOilPrivateKey} > privkey.snakeoil");
$client->succeed("chmod 600 privkey.snakeoil");
$client->succeed("ssh -o UserKnownHostsFile=/dev/null" .
" -o StrictHostKeyChecking=no -i privkey.snakeoil" .
" server true");
};
'';
})

Some files were not shown because too many files have changed in this diff Show More