Merge remote-tracking branch 'nixos/master' into feature/add-znc-module

Conflicts:
	nixos/modules/misc/ids.nix
This commit is contained in:
Alex Berg 2014-07-03 11:30:11 -05:00
commit 7b768ba2f5
324 changed files with 4508 additions and 1167 deletions

View file

@ -21,18 +21,18 @@ all: NEWS.html NEWS.txt manual.html manual.pdf
NEWS.html: release-notes.xml NEWS.html: release-notes.xml
$(XSLTPROC) --nonet --xinclude --output $@ $(NEWS_OPTS) \ $(XSLTPROC) --nonet --xinclude --output $@ $(NEWS_OPTS) \
$(docbookxsl)/html/docbook.xsl release-notes.xml $(docbookxsl)/xhtml/docbook.xsl release-notes.xml
NEWS.txt: release-notes.xml NEWS.txt: release-notes.xml
$(XSLTPROC) --nonet --xinclude quote-literals.xsl release-notes.xml | \ $(XSLTPROC) --nonet --xinclude quote-literals.xsl release-notes.xml | \
$(XSLTPROC) --nonet --output $@.tmp.html $(NEWS_OPTS) \ $(XSLTPROC) --nonet --output $@.tmp.html $(NEWS_OPTS) \
$(docbookxsl)/html/docbook.xsl - $(docbookxsl)/xhtml/docbook.xsl -
LANG=en_US w3m -dump $@.tmp.html > $@ LANG=en_US w3m -dump $@.tmp.html > $@
rm $@.tmp.html rm $@.tmp.html
manual.html: *.xml manual.html: *.xml
$(XSLTPROC) --nonet --xinclude --output manual.html \ $(XSLTPROC) --nonet --xinclude --output manual.html \
$(docbookxsl)/html/docbook.xsl manual.xml $(docbookxsl)/xhtml/docbook.xsl manual.xml
manual.pdf: *.xml manual.pdf: *.xml
$(dblatex) \ $(dblatex) \

View file

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

View file

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

View file

@ -194,7 +194,7 @@ rec {
is transformed into is transformed into
[ { boot = set1; } { boot = mkIf cond set2; services mkIf cond set3; } ]. [ { boot = set1; } { boot = mkIf cond set2; services = mkIf cond set3; } ].
This transform is the critical step that allows mkIf conditions This transform is the critical step that allows mkIf conditions
to refer to the full configuration without creating an infinite to refer to the full configuration without creating an infinite

View file

@ -9,8 +9,8 @@
<xsl:template match="logfile"> <xsl:template match="logfile">
<html> <html>
<head> <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="//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/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script type="text/javascript" src="treebits.js" /> <script type="text/javascript" src="treebits.js" />
<link rel="stylesheet" href="logfile.css" type="text/css" /> <link rel="stylesheet" href="logfile.css" type="text/css" />
<title>Log File</title> <title>Log File</title>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -6,8 +6,12 @@ let
sysctlOption = mkOptionType { sysctlOption = mkOptionType {
name = "sysctl option value"; name = "sysctl option value";
check = x: isBool x || isString x || isInt x || isNull x; check = val:
merge = args: defs: (last defs).value; # FIXME: hacky way to allow overriding in configuration.nix. 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 in

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -109,7 +109,7 @@ in
# not be started by default on the installation CD because the # not be started by default on the installation CD because the
# default root password is empty. # default root password is empty.
services.openssh.enable = true; 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. # To be able to use the systemTarball to catch troubles.
boot.crashDump = { boot.crashDump = {

View file

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

View file

@ -97,6 +97,16 @@ if [ -n "$upgrade" -a -z "$_NIXOS_REBUILD_REEXEC" ]; then
nix-channel --update nixos nix-channel --update nixos
fi 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. # Re-execute nixos-rebuild from the Nixpkgs tree.
if [ -z "$_NIXOS_REBUILD_REEXEC" -a -n "$canRun" ]; then if [ -z "$_NIXOS_REBUILD_REEXEC" -a -n "$canRun" ]; then

View file

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

View file

@ -1,19 +1,19 @@
# This module defines the global list of uids and gids. We keep a # This module defines the global list of uids and gids. We keep a
# central list to prevent id collisions. # central list to prevent id collisions.
{ config, pkgs, ... }: { config, pkgs, lib, ... }:
{ {
options = { options = {
ids.uids = pkgs.lib.mkOption { ids.uids = lib.mkOption {
internal = true; internal = true;
description = '' description = ''
The user IDs used in NixOS. The user IDs used in NixOS.
''; '';
}; };
ids.gids = pkgs.lib.mkOption { ids.gids = lib.mkOption {
internal = true; internal = true;
description = '' description = ''
The group IDs used in NixOS. The group IDs used in NixOS.
@ -134,7 +134,8 @@
teamspeak = 124; teamspeak = 124;
influxdb = 125; influxdb = 125;
nsd = 126; nsd = 126;
znc = 127; gitolite = 127;
znc = 128;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
@ -243,7 +244,7 @@
teamspeak = 124; teamspeak = 124;
influxdb = 125; influxdb = 125;
nsd = 126; nsd = 126;
znc = 127; znc = 128;
# When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399! # When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399!

View file

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

View file

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

View file

@ -147,6 +147,7 @@
./services/misc/felix.nix ./services/misc/felix.nix
./services/misc/folding-at-home.nix ./services/misc/folding-at-home.nix
./services/misc/gpsd.nix ./services/misc/gpsd.nix
./services/misc/gitolite.nix
./services/misc/nix-daemon.nix ./services/misc/nix-daemon.nix
./services/misc/nix-gc.nix ./services/misc/nix-gc.nix
./services/misc/nix-ssh-serve.nix ./services/misc/nix-ssh-serve.nix
@ -216,6 +217,7 @@
./services/networking/prayer.nix ./services/networking/prayer.nix
./services/networking/privoxy.nix ./services/networking/privoxy.nix
./services/networking/quassel.nix ./services/networking/quassel.nix
./services/networking/radicale.nix
./services/networking/radvd.nix ./services/networking/radvd.nix
./services/networking/rdnssd.nix ./services/networking/rdnssd.nix
./services/networking/rpcbind.nix ./services/networking/rpcbind.nix

View file

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

View file

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

View file

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

View file

@ -14,6 +14,7 @@ let virtualbox = config.boot.kernelPackages.virtualbox; in
services.udev.extraRules = services.udev.extraRules =
'' ''
KERNEL=="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660", TAG+="systemd" KERNEL=="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660", TAG+="systemd"
KERNEL=="vboxdrvu", OWNER="root", GROUP="root", MODE="0666", TAG+="systemd"
KERNEL=="vboxnetctl", OWNER="root", GROUP="root", MODE="0600", TAG+="systemd" KERNEL=="vboxnetctl", OWNER="root", GROUP="root", MODE="0600", TAG+="systemd"
SUBSYSTEM=="usb_device", ACTION=="add", RUN+="${virtualbox}/libexec/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}" SUBSYSTEM=="usb_device", ACTION=="add", RUN+="${virtualbox}/libexec/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="${virtualbox}/libexec/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}" SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="${virtualbox}/libexec/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"

View file

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

View file

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

View file

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

View file

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

View file

@ -85,7 +85,7 @@ in
Defines how users authenticate themselves to the server. By Defines how users authenticate themselves to the server. By
default, "trust" access to local users will always be granted default, "trust" access to local users will always be granted
along with any other custom options. If you do not want this, 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. behaviour.
''; '';
}; };

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,66 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.gitolite;
pubkeyFile = pkgs.writeText "gitolite-admin.pub" cfg.adminPubkey;
in
{
options = {
services.gitolite = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable gitolite management under the
<literal>gitolite</literal> user. The Gitolite home
directory is <literal>/var/lib/gitolite</literal>. After
switching to a configuration with Gitolite enabled, you can
then run <literal>git clone
gitolite@host:gitolite-admin.git</literal> to manage it further.
'';
};
adminPubkey = mkOption {
type = types.str;
description = ''
Initial administrative public key for Gitolite. This should
be an SSH Public Key. Note that this key will only be used
once, upon the first initialization of the Gitolite user.
'';
};
};
};
config = mkIf cfg.enable {
users.extraUsers.gitolite = {
description = "Gitolite user";
home = "/var/lib/gitolite";
createHome = true;
uid = config.ids.uids.gitolite;
useDefaultShell = true;
};
systemd.services."gitolite-init" = {
description = "Gitolite initialization";
wantedBy = [ "multi-user.target" ];
serviceConfig.User = "gitolite";
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
path = [ pkgs.gitolite pkgs.git pkgs.perl pkgs.bash pkgs.openssh ];
script = ''
cd /var/lib/gitolite
mkdir -p .gitolite/logs
if [ ! -d repositories ]; then
gitolite setup -pk ${pubkeyFile}
fi
gitolite setup # Upgrade if needed
'';
};
environment.systemPackages = [ pkgs.gitolite pkgs.git ];
};
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib;
with pkgs; with pkgs;
with lib;
let let
cfg = config.networking.networkmanager; cfg = config.networking.networkmanager;
@ -151,7 +151,7 @@ in {
{ source = "${networkmanager_pptp}/etc/NetworkManager/VPN/nm-pptp-service.name"; { source = "${networkmanager_pptp}/etc/NetworkManager/VPN/nm-pptp-service.name";
target = "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; { source = overrideNameserversScript;
target = "NetworkManager/dispatcher.d/02overridedns"; target = "NetworkManager/dispatcher.d/02overridedns";
}; };

View file

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

View file

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

View file

@ -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";
};
};
}

View file

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

View file

@ -15,7 +15,7 @@ let
MAILTO="${config.services.cron.mailto}" MAILTO="${config.services.cron.mailto}"
''} ''}
NIX_CONF_DIR=/etc/nix 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. # Vixie cron requires build-time configuration for the sendmail path.

View file

@ -17,7 +17,7 @@ let
MAILTO="${config.services.cron.mailto}" MAILTO="${config.services.cron.mailto}"
''} ''}
NIX_CONF_DIR=/etc/nix 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: allowdeny = target: users:

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
{ config, pkgs, ... }: { config, pkgs, lib, ... }:
let 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)) (map (builtins.getAttr "configLine") config.system.requiredKernelConfig))
); );

View file

@ -11,7 +11,6 @@ let
in in
optionalAttrs (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) # ugly...
{ {
###### interface ###### interface
@ -33,6 +32,10 @@ optionalAttrs (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) # ugly...
###### implementation ###### implementation
config = mkIf cfg.enable { 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 ]; environment.systemPackages = [ kernel.virtualboxGuestAdditions ];

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

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