Merge branch 'master' into systemd-219

Conflicts:
	nixos/modules/system/boot/systemd.nix
	pkgs/applications/networking/p2p/transmission/default.nix
	pkgs/development/libraries/libseccomp/default.nix
	pkgs/os-specific/linux/systemd/default.nix
	pkgs/top-level/all-packages.nix
This commit is contained in:
Eelco Dolstra
2015-09-07 21:28:33 +02:00
1488 changed files with 63828 additions and 38513 deletions
@@ -97,7 +97,7 @@ sub parseFstab {
sub parseUnit {
my ($filename) = @_;
my $info = {};
parseKeyValues($info, read_file($filename));
parseKeyValues($info, read_file($filename)) if -f $filename;
parseKeyValues($info, read_file("${filename}.d/overrides.conf")) if -f "${filename}.d/overrides.conf";
return $info;
}
@@ -157,7 +157,8 @@ while (my ($unit, $state) = each %{$activePrev}) {
if (-e $prevUnitFile && ($state->{state} eq "active" || $state->{state} eq "activating")) {
if (! -e $newUnitFile || abs_path($newUnitFile) eq "/dev/null") {
$unitsToStop{$unit} = 1;
my $unitInfo = parseUnit($prevUnitFile);
$unitsToStop{$unit} = 1 if boolIsTrue($unitInfo->{'X-StopOnRemoval'} // "yes");
}
elsif ($unit =~ /\.target$/) {
@@ -50,7 +50,7 @@ let
ln -s ${config.system.build.initialRamdisk}/initrd $out/initrd
ln -s ${config.hardware.firmware} $out/firmware
ln -s ${config.hardware.firmware}/lib/firmware $out/firmware
''}
echo "$activationScript" > $out/activate
+3 -4
View File
@@ -49,9 +49,8 @@ in
type = types.int;
default = 4;
description = ''
The kernel console log level. Only log messages with a
priority numerically less than this will appear on the
console.
The kernel console log level. Log messages with a priority
numerically less than this will not appear on the console.
'';
};
@@ -217,7 +216,7 @@ in
];
# The Linux kernel >= 2.6.27 provides firmware.
hardware.firmware = [ "${kernel}/lib/firmware" ];
hardware.firmware = [ kernel ];
# Create /etc/modules-load.d/nixos.conf, which is read by
# systemd-modules-load.service to load required kernel modules.
@@ -3,6 +3,7 @@
pkgs.substituteAll {
src = ./extlinux-conf-builder.sh;
isExecutable = true;
inherit (pkgs) bash;
path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
inherit (pkgs) bash;
kernelDTB = pkgs.stdenv.platform.kernelDTB or false;
}
@@ -75,8 +75,10 @@ addEntry() {
copyToKernelsDir "$path/kernel"; kernel=$result
copyToKernelsDir "$path/initrd"; initrd=$result
# XXX UGLY: maybe the system config should have a top-level "dtbs" entry?
copyToKernelsDir $(readlink -m "$path/kernel/../dtbs"); dtbs=$result
if [ -n "@kernelDTB@" ]; then
# XXX UGLY: maybe the system config should have a top-level "dtbs" entry?
copyToKernelsDir $(readlink -m "$path/kernel/../dtbs"); dtbs=$result
fi
timestampEpoch=$(stat -L -c '%Z' $path)
@@ -93,7 +95,9 @@ addEntry() {
fi
echo " LINUX ../nixos/$(basename $kernel)"
echo " INITRD ../nixos/$(basename $initrd)"
echo " FDTDIR ../nixos/$(basename $dtbs)"
if [ -n "@kernelDTB@" ]; then
echo " FDTDIR ../nixos/$(basename $dtbs)"
fi
echo " APPEND systemConfig=$path init=$path/init $extraParams"
}
@@ -105,20 +109,24 @@ cat > $tmpFile <<EOF
# Change this to e.g. nixos-42 to temporarily boot to an older configuration.
DEFAULT nixos-default
MENU TITLE ------------------------------------------------------------
TIMEOUT $timeout
$(addEntry $default default)
EOF
# Add up to $numGenerations generations of the system profile to the menu,
# in reverse (most recent to least recent) order.
for generation in $(
(cd /nix/var/nix/profiles && ls -d system-*-link) \
| sed 's/system-\([0-9]\+\)-link/\1/' \
| sort -n -r \
| head -n $numGenerations); do
link=/nix/var/nix/profiles/system-$generation-link
addEntry $link $generation
done >> $tmpFile
addEntry $default default >> $tmpFile
if [ "$numGenerations" -gt 0 ]; then
# Add up to $numGenerations generations of the system profile to the menu,
# in reverse (most recent to least recent) order.
for generation in $(
(cd /nix/var/nix/profiles && ls -d system-*-link) \
| sed 's/system-\([0-9]\+\)-link/\1/' \
| sort -n -r \
| head -n $numGenerations); do
link=/nix/var/nix/profiles/system-$generation-link
addEntry $link $generation
done >> $tmpFile
fi
mv -f $tmpFile $target/extlinux/extlinux.conf
+21 -21
View File
@@ -10,7 +10,7 @@ let
realGrub = if cfg.version == 1 then pkgs.grub
else if cfg.zfsSupport then pkgs.grub2.override { zfsSupport = true; }
else if cfg.enableTrustedboot then pkgs.trustedGrub
else if cfg.enableTrustedBoot then pkgs.trustedGrub
else pkgs.grub2;
grub =
@@ -112,7 +112,7 @@ in
description = ''
The devices on which the boot loader, GRUB, will be
installed. Can be used instead of <literal>device</literal> to
install grub into multiple devices (e.g., if as softraid arrays holding /boot).
install GRUB onto multiple devices.
'';
};
@@ -135,8 +135,8 @@ in
example = "/boot1";
type = types.str;
description = ''
The path to the boot directory where grub will be written. Generally
this boot parth should double as an efi path.
The path to the boot directory where GRUB will be written. Generally
this boot path should double as an EFI path.
'';
};
@@ -166,7 +166,7 @@ in
example = [ "/dev/sda" "/dev/sdb" ];
type = types.listOf types.str;
description = ''
The path to the devices which will have the grub mbr written.
The path to the devices which will have the GRUB MBR written.
Note these are typically device paths and not paths to partitions.
'';
};
@@ -197,7 +197,7 @@ in
type = types.lines;
description = ''
Additional bash commands to be run at the script that
prepares the grub menu entries.
prepares the GRUB menu entries.
'';
};
@@ -276,7 +276,7 @@ in
example = "1024x768";
type = types.str;
description = ''
The gfxmode to pass to grub when loading a graphical boot interface under efi.
The gfxmode to pass to GRUB when loading a graphical boot interface under EFI.
'';
};
@@ -285,7 +285,7 @@ in
example = "auto";
type = types.str;
description = ''
The gfxmode to pass to grub when loading a graphical boot interface under bios.
The gfxmode to pass to GRUB when loading a graphical boot interface under BIOS.
'';
};
@@ -330,10 +330,10 @@ in
type = types.addCheck types.str
(type: type == "uuid" || type == "label" || type == "provided");
description = ''
Determines how grub will identify devices when generating the
Determines how GRUB will identify devices when generating the
configuration file. A value of uuid / label signifies that grub
will always resolve the uuid or label of the device before using
it in the configuration. A value of provided means that grub will
it in the configuration. A value of provided means that GRUB will
use the device name as show in <command>df</command> or
<command>mount</command>. Note, zfs zpools / datasets are ignored
and will always be mounted using their labels.
@@ -344,7 +344,7 @@ in
default = false;
type = types.bool;
description = ''
Whether grub should be build against libzfs.
Whether GRUB should be build against libzfs.
ZFS support is only available for GRUB v2.
This option is ignored for GRUB v1.
'';
@@ -354,7 +354,7 @@ in
default = false;
type = types.bool;
description = ''
Whether grub should be build with EFI support.
Whether GRUB should be build with EFI support.
EFI support is only available for GRUB v2.
This option is ignored for GRUB v1.
'';
@@ -364,16 +364,16 @@ in
default = false;
type = types.bool;
description = ''
Enable support for encrypted partitions. Grub should automatically
Enable support for encrypted partitions. GRUB should automatically
unlock the correct encrypted partition and look for filesystems.
'';
};
enableTrustedboot = mkOption {
enableTrustedBoot = mkOption {
default = false;
type = types.bool;
description = ''
Enable trusted boot. Grub will measure all critical components during
Enable trusted boot. GRUB will measure all critical components during
the boot process to offer TCG (TPM) support.
'';
};
@@ -429,7 +429,7 @@ in
assertions = [
{
assertion = !cfg.zfsSupport || cfg.version == 2;
message = "Only grub version 2 provides zfs support";
message = "Only GRUB version 2 provides ZFS support";
}
{
assertion = cfg.mirroredBoots != [ ];
@@ -441,19 +441,19 @@ in
message = "You cannot have duplicated devices in mirroredBoots";
}
{
assertion = !cfg.enableTrustedboot || cfg.version == 2;
assertion = !cfg.enableTrustedBoot || cfg.version == 2;
message = "Trusted GRUB is only available for GRUB 2";
}
{
assertion = !cfg.efiSupport || !cfg.enableTrustedboot;
assertion = !cfg.efiSupport || !cfg.enableTrustedBoot;
message = "Trusted GRUB does not have EFI support";
}
{
assertion = !cfg.zfsSupport || !cfg.enableTrustedboot;
assertion = !cfg.zfsSupport || !cfg.enableTrustedBoot;
message = "Trusted GRUB does not have ZFS support";
}
{
assertion = !cfg.enableTrustedboot;
assertion = !cfg.enableTrustedBoot;
message = "Trusted GRUB can break your system. Remove assertion if you want to test trustedGRUB nevertheless.";
}
] ++ flip concatMap cfg.mirroredBoots (args: [
@@ -471,7 +471,7 @@ in
}
] ++ flip map args.devices (device: {
assertion = device == "nodev" || hasPrefix "/" device;
message = "Grub devices must be absolute paths, not ${dev} in ${args.path}";
message = "GRUB devices must be absolute paths, not ${dev} in ${args.path}";
}));
})
@@ -237,6 +237,7 @@ else {
$conf .= "
" . $grubStore->search;
}
# FIXME: should use grub-mkconfig.
$conf .= "
" . $grubBoot->search . "
if [ -s \$prefix/grubenv ]; then
@@ -245,14 +246,12 @@ else {
# grub-reboot sets a one-time saved entry, which we process here and
# then delete.
if [ \"\${saved_entry}\" ]; then
# The next line *has* to look exactly like this, otherwise KDM's
# reboot feature won't work properly with GRUB 2.
if [ \"\${next_entry}\" ]; then
# FIXME: KDM expects the next line to be present.
set default=\"\${saved_entry}\"
set saved_entry=
set prev_saved_entry=
save_env saved_entry
save_env prev_saved_entry
set default=\"\${next_entry}\"
set next_entry=
save_env next_entry
set timeout=1
else
set default=$defaultEntry
+1
View File
@@ -35,6 +35,7 @@ with lib;
fi
'';
meta.priority = 4;
};
description = ''
Wrapper around modprobe that sets the path to the modules
+12
View File
@@ -642,6 +642,10 @@ in
if ! [ -e /etc/machine-id ]; then
${systemd}/bin/systemd-machine-id-setup
fi
# Keep a persistent journal. Note that systemd-tmpfiles will
# set proper ownership/permissions.
mkdir -m 0700 -p /var/log/journal
'';
users.extraUsers.systemd-network.uid = config.ids.uids.systemd-network;
@@ -712,6 +716,14 @@ in
})
(filterAttrs (name: service: service.startAt != "") cfg.services);
# Generate timer units for all services that have a startAt value.
systemd.user.timers =
mapAttrs (name: service:
{ wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = service.startAt;
})
(filterAttrs (name: service: service.startAt != "") cfg.user.services);
systemd.sockets.systemd-journal-gatewayd.wantedBy =
optional config.services.journald.enableHttpGateway "sockets.target";