aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-02-22 18:47:53 +0000
committerAlyssa Ross <hi@alyssa.is>2019-02-22 18:47:53 +0000
commit43c723b3c60350eb72b11e658b2e6a122fda6bfc (patch)
treeafc0f8933110431cfbe7f246720077d0f2a82221
parent6141939d6e0a77c84905efd560c03c3032164ef1 (diff)
downloadnixlib-sixos.tar
nixlib-sixos.tar.gz
nixlib-sixos.tar.bz2
nixlib-sixos.tar.lz
nixlib-sixos.tar.xz
nixlib-sixos.tar.zst
nixlib-sixos.zip
s6 experimentssixos
-rw-r--r--nixos/modules/module-list.nix2
-rw-r--r--nixos/modules/security/pam.nix2
-rw-r--r--nixos/modules/services/hardware/mdevd.nix71
-rw-r--r--nixos/modules/system/activation/top-level.nix38
-rw-r--r--nixos/modules/system/boot/loader/grub/install-grub.pl17
-rw-r--r--nixos/modules/system/boot/s6.nix256
-rw-r--r--pkgs/os-specific/linux/elogind/default.nix49
-rw-r--r--pkgs/os-specific/linux/eudev/default.nix4
-rw-r--r--pkgs/os-specific/linux/mdevd/default.nix26
-rw-r--r--pkgs/os-specific/linux/s6-linux-init/default.nix26
-rw-r--r--pkgs/top-level/all-packages.nix39
-rw-r--r--udhcpd.conf2
12 files changed, 508 insertions, 24 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 37e90232da2..04cc8ff0c1f 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -277,6 +277,7 @@
./services/hardware/irqbalance.nix
./services/hardware/lcd.nix
./services/hardware/lirc.nix
+ ./services/hardware/mdevd.nix
./services/hardware/nvidia-optimus.nix
./services/hardware/pcscd.nix
./services/hardware/pommed.nix
@@ -790,6 +791,7 @@
./system/boot/networkd.nix
./system/boot/plymouth.nix
./system/boot/resolved.nix
+ ./system/boot/s6.nix
./system/boot/shutdown.nix
./system/boot/stage-1.nix
./system/boot/stage-2.nix
diff --git a/nixos/modules/security/pam.nix b/nixos/modules/security/pam.nix
index 926c6d77d3b..8bf132e93b3 100644
--- a/nixos/modules/security/pam.nix
+++ b/nixos/modules/security/pam.nix
@@ -376,7 +376,7 @@ let
${optionalString cfg.otpwAuth
"session optional ${pkgs.otpw}/lib/security/pam_otpw.so"}
${optionalString cfg.startSession
- "session optional ${pkgs.systemd}/lib/security/pam_systemd.so"}
+ "session optional ${pkgs.elogind}/lib/security/pam_elogind.so"}
${optionalString cfg.forwardXAuth
"session optional pam_xauth.so xauthpath=${pkgs.xorg.xauth}/bin/xauth systemuser=99"}
${optionalString (cfg.limits != [])
diff --git a/nixos/modules/services/hardware/mdevd.nix b/nixos/modules/services/hardware/mdevd.nix
new file mode 100644
index 00000000000..b141bfc875e
--- /dev/null
+++ b/nixos/modules/services/hardware/mdevd.nix
@@ -0,0 +1,71 @@
+{ pkgs, lib, config, ... }:
+
+let
+ inherit (lib) mkDefault mkIf mkOption;
+
+in {
+ options = {
+ services.mdevd.enable = mkOption {
+ default = false;
+ description = "Whether to use the mdevd kernel hotplug management daemon";
+ };
+
+ services.mdevd.package = mkOption {
+ default = pkgs.mdevd;
+ description = "Package providing the mdevd command";
+ };
+
+ services.mdevd.verbosity = mkOption {
+ default = 1;
+ description = "Log level between 0 and 3. 3 is the most verbose.";
+ };
+
+ services.mdevd.notif = mkOption {
+ default = 3;
+ description = "File descriptor to use to notify s6 of readiness.";
+ internal = true;
+ };
+
+ services.mdevd.kbufsz = mkOption {
+ default = 500000;
+ description = "Bytes of buffer to reserve for the netlink queue";
+ };
+
+ services.mdevd.slashsys = mkOption {
+ default = "/sys";
+ description = "Location of the sysfs";
+ };
+
+ services.mdevd.slashdev = mkOption {
+ default = "/dev";
+ description = "Location of the device nodes";
+ };
+
+ services.mdevd.fwbase = mkOption {
+ description = "Location of the firmware files, if any";
+ };
+ };
+
+ config = mkIf config.services.mdevd.enable {
+ services.mdevd.fwbase = mkDefault "${config.hardware.firmware}/lib/firmware";
+
+ # s6.rc.services.mdevd = {
+ # type = "longrun";
+ # notification-fd = config.services.mdevd.notif;
+ # run = ''
+ # #!${pkgs.execline}/bin/execlineb -P
+ # ${config.services.mdevd.package}/bin/mdevd
+ # -v ${toString config.services.mdevd.verbosity}
+ # -D ${toString config.services.mdevd.notif}
+ # -b ${toString config.services.mdevd.kbufsz}
+ # -f ${pkgs.writeText "mdev.conf" ''
+ # SUBSYSTEM=net;.* root:root 600 @${pkgs.nettools}/bin/nameif
+ # tun[0-9]* root:root 600 =net/
+ # tap[0-9]* root:root 600 =net/
+ # ''}
+ # -s ${config.services.mdevd.slashdev}
+ # -F ${config.services.mdevd.fwbase}
+ # '';
+ # };
+ };
+}
diff --git a/nixos/modules/system/activation/top-level.nix b/nixos/modules/system/activation/top-level.nix
index a560af5ce96..4bee55d80fb 100644
--- a/nixos/modules/system/activation/top-level.nix
+++ b/nixos/modules/system/activation/top-level.nix
@@ -52,6 +52,20 @@ let
echo -n "$kernelParams" > $out/kernel-params
+ ln -s ${
+
+ pkgs.makeInitrd {
+ contents = [
+ { symlink = "init";
+ object = pkgs.writeScript "init" ''
+ echo hello world
+ '';
+ }
+ ];
+ }
+
+ }/${config.system.boot.loader.initrdFile} $out/s6-initrd
+
ln -s ${initrdPath} $out/initrd
ln -s ${config.system.build.initialRamdiskSecretAppender}/bin/append-initrd-secrets $out
@@ -65,6 +79,30 @@ let
unset activationScript
cp ${config.system.build.bootStage2} $out/init
+
+ ${pkgs.s6-linux-init}/bin/s6-linux-init-maker \
+ -G "${pkgs.utillinux}/bin/agetty --noclear 38400 tty1" \
+ -c $out/s6 \
+ -b ${pkgs.execline.bin}/bin \
+ -p ${lib.makeBinPath (with pkgs; [ execline s6 s6-portable-utils s6-linux-utils s6-linux-init ])} \
+ -s /run/kernel-env \
+ -2 $out/s6/rc.init \
+ -Z ${pkgs.writeScript "shutdown" ''
+ #!${pkgs.execline}/bin/execlineb -P
+ echo alyssa shutting down
+ ''} \
+ $out/s6
+ sed -i '9aif { ${pkgs.coreutils}/bin/mkfifo -m 600 /run/service/s6-svscan-log/fifo }' "$out/s6/init"
+ rm $out/s6/run-image/service/s6-svscan-log/fifo
+
+ cat <<RC >$out/s6/rc.init
+ #!${pkgs.execline}/bin/execlineb -P
+ if { $out/activate }
+ if { ${config.s6.rc.initCommand} }
+ ${config.s6.rc.command}
+ RC
+ chmod +x $out/s6/rc.init
+
substituteInPlace $out/init --subst-var-by systemConfig $out
ln -s ${config.system.build.etc}/etc $out/etc
diff --git a/nixos/modules/system/boot/loader/grub/install-grub.pl b/nixos/modules/system/boot/loader/grub/install-grub.pl
index bda6a313640..9ad86763f06 100644
--- a/nixos/modules/system/boot/loader/grub/install-grub.pl
+++ b/nixos/modules/system/boot/loader/grub/install-grub.pl
@@ -372,6 +372,10 @@ sub addEntry {
"systemConfig=" . Cwd::abs_path($path) . " " .
"init=" . Cwd::abs_path("$path/init") . " " .
readFile("$path/kernel-params");
+ my $kernelParams6 =
+ "systemConfig=" . Cwd::abs_path($path) . " " .
+ "init=" . Cwd::abs_path($path) . "/s6/init " .
+ readFile("$path/kernel-params");
my $xenParams = $xen && -e "$path/xen-params" ? readFile("$path/xen-params") : "";
if ($grubVersion == 1) {
@@ -393,6 +397,19 @@ sub addEntry {
$conf .= " multiboot $xen $xenParams\n" if $xen;
$conf .= " " . ($xen ? "module" : "linux") . " $kernel $kernelParams\n";
$conf .= " " . ($xen ? "module" : "initrd") . " $initrd\n";
+ $conf .= "}\n";
+ $conf .= "menuentry \"$name - s6\" {\n";
+ $conf .= $grubBoot->search . "\n";
+ if ($copyKernels == 0) {
+ $conf .= $grubStore->search . "\n";
+ }
+ if ($extraInitrd) {
+ $conf .= $extraInitrdPath->search . "\n";
+ }
+ $conf .= " $extraPerEntryConfig\n" if $extraPerEntryConfig;
+ $conf .= " multiboot $xen $xenParams\n" if $xen;
+ $conf .= " " . ($xen ? "module" : "linux") . " $kernel $kernelParams6\n";
+ $conf .= " " . ($xen ? "module" : "initrd") . " $initrd\n";
$conf .= "}\n\n";
}
}
diff --git a/nixos/modules/system/boot/s6.nix b/nixos/modules/system/boot/s6.nix
new file mode 100644
index 00000000000..23ccd0f0c8b
--- /dev/null
+++ b/nixos/modules/system/boot/s6.nix
@@ -0,0 +1,256 @@
+{ pkgs, lib, config, ... }:
+
+let
+ inherit (builtins) typeOf;
+ inherit (pkgs) linkFarm writeScript runCommand;
+ inherit (lib) concatStringsSep mapAttrsToList mkOption mkDefault types filterAttrsRecursive foldr;
+
+ s6EntryTypes = {
+ int = v: s6Entry (toString v);
+ bool = v: s6Entry "";
+ string = writeScript "s6-file";
+ set = v: linkFarm "s6-dir"
+ (mapAttrsToList (name: value: { inherit name; path = s6Entry value; }) v);
+ list = v: s6Entry (concatStringsSep "\n" v);
+ };
+
+ s6Entry = v: s6EntryTypes.${typeOf v} v;
+
+ s6RcCompile = { uids ? null, gids ? null, fdhuser ? null }: source:
+ runCommand "s6-rc-compile" {} ''
+ ${config.s6.rc.package}/bin/s6-rc-compile \
+ ${if (uids != null) then "-u ${concatStringsSep "," uids}" else ""} \
+ ${if (gids != null) then "-g ${concatStringsSep "," gids}" else ""} \
+ ${if (fdhuser != null) then "-h ${fdhuser}" else ""} \
+ $out \
+ ${lib.traceVal (toString (s6Entry (filterAttrsRecursive (n: v: v != null) source)))}
+ '';
+
+in {
+ options = {
+ s6.rc.package = mkOption {
+ default = pkgs.s6-rc;
+ description = ''
+ The package to look for the s6-rc, s6-rc-compile, and s6-rc-init
+ commands in.
+ '';
+ };
+
+ s6.rc.initTimeout = mkOption {
+ default = null;
+ description = ''
+ Milliseconds to wait for all s6-supervise processes to start up before
+ giving up.
+ '';
+ };
+
+ s6.rc.timeout = mkOption {
+ default = null;
+ description = ''
+ Milliseconds to wait for s6-rc to transition to the up state.
+ '';
+ };
+
+ s6.rc.services = mkOption {
+ description = ''
+ Attribute set of available services. Names correspond to service
+ directory names on disk. Values are attribute sets of service
+ properties, which are then transformed into the directory structure
+ expected by s6-rc-compile.
+ '';
+ example = {
+ foo = {
+ type = "oneshot";
+ up = "echo hello world";
+ dependencies = [ "bar" "baz" ];
+ env = { a = "b"; };
+ };
+ };
+
+ type = with types; attrsOf
+ (submodule {
+ options = {
+ type = mkOption {
+ description = "type";
+ type = enum [ "bundle" "oneshot" "longrun" ];
+ };
+ contents = mkOption {
+ description = "contents";
+ type = nullOr (listOf str);
+ default = null;
+ };
+ timeout-up = mkOption {
+ description = "timeout-up";
+ type = nullOr ints.unsigned;
+ default = null;
+ };
+ timeout-down = mkOption {
+ description = "timeout-down";
+ type = nullOr ints.unsigned;
+ default = null;
+ };
+ dependencies = mkOption {
+ description = "dependencies";
+ type = nullOr (listOf str);
+ default = null;
+ };
+ up = mkOption {
+ description = "up";
+ type = nullOr str;
+ default = null;
+ };
+ down = mkOption {
+ description = "down";
+ type = nullOr str;
+ default = null;
+ };
+ run = mkOption {
+ description = "run";
+ type = nullOr str;
+ default = null;
+ };
+ finish = mkOption {
+ description = "finish";
+ type = nullOr str;
+ default = null;
+ };
+ notification-fd = mkOption {
+ description = "notification-fd";
+ type = nullOr ints.unsigned;
+ default = null;
+ };
+ timeout-kill = mkOption {
+ description = "timeout-kill";
+ type = nullOr ints.unsigned;
+ default = null;
+ };
+ timeout-finish = mkOption {
+ description = "timeout-finish";
+ type = nullOr ints.unsigned;
+ default = null;
+ };
+ nosetsid = mkOption {
+ description = "nosetsid";
+ type = nullOr bool;
+ default = null;
+ };
+ data = mkOption {
+ description = "data";
+ type = nullOr (attrsOf str);
+ default = null;
+ };
+ env = mkOption {
+ description = "env";
+ type = nullOr (attrsOf str);
+ default = null;
+ };
+ producer-for = mkOption {
+ description = "producer-for";
+ type = nullOr str;
+ default = null;
+ };
+ consumer-for = mkOption {
+ description = "consumer-for";
+ type = nullOr (listOf str);
+ default = null;
+ };
+ pipeline-name = mkOption {
+ description = "pipeline-name";
+ type = nullOr str;
+ default = null;
+ };
+ };
+ });
+ };
+
+ s6.rc.live = mkOption {
+ default = "/run/s6-rc";
+ description = ''
+ Where to store the s6-rc live state.
+ '';
+ };
+
+ s6.rc.prefix = mkOption {
+ default = "";
+ description = ''
+ Unique prefix to apply to all service names when they are added to the
+ supervisor, for disambiguation.
+ '';
+ };
+
+ s6.rc.uids = mkOption {
+ default = null;
+ description = ''
+ IDs of users who should be allowed to start and stop services controlled
+ by this instance of s6-rc. Default: only root.
+ '';
+ };
+
+ s6.rc.gids = mkOption {
+ default = null;
+ description = ''
+ IDs of groups who should be allowed to start and stop services controlled
+ by this instance of s6-rc. Default: only root.
+ '';
+ };
+
+ s6.rc.fdhuser = mkOption {
+ default = null;
+ description = ''
+ User for the s6-fileholder-daemon process to run as. Defaults to root,
+ the owner of the supervision tree.
+ '';
+ };
+
+ s6.rc.initBundle = mkOption {
+ default = "ok-all";
+ description = ''
+ Name of the top bundle to be brought up at system startup.
+ '';
+ };
+
+ s6.rc.initCommand = mkOption {
+ description = ''
+ The s6-rc-init command line to be executed by rc.init, prior to running
+ s6-rc.
+ '';
+ };
+
+ s6.rc.command = mkOption {
+ description = ''
+ The s6-rc command line to be executed by rc.init, after running
+ s6-rc-init.
+ '';
+ };
+ };
+
+ config = {
+ s6.rc.services.${config.s6.rc.initBundle} = {
+ type = "bundle";
+ contents = [];
+ };
+
+ s6.rc.initCommand = mkDefault ''
+ ${config.s6.rc.package}/bin/s6-rc-init \
+ -c ${s6RcCompile
+ { inherit (config.s6.rc) uids gids fdhuser; }
+ config.s6.rc.services} \
+ -l ${config.s6.rc.live} \
+ -p "${config.s6.rc.prefix}" \
+ ${if (config.s6.rc.initTimeout != null)
+ then "-t ${toString config.s6.rc.initTimeout}"
+ else ""} \
+ /run/service
+ '';
+
+ s6.rc.command = mkDefault ''
+ ${config.s6.rc.package}/bin/s6-rc \
+ -l ${config.s6.rc.live} \
+ change \
+ ${if (config.s6.rc.timeout != null)
+ then "-t ${toString config.s6.rc.timeout}"
+ else ""} \
+ ${config.s6.rc.initBundle}
+ '';
+ };
+}
diff --git a/pkgs/os-specific/linux/elogind/default.nix b/pkgs/os-specific/linux/elogind/default.nix
new file mode 100644
index 00000000000..c93391a5ff9
--- /dev/null
+++ b/pkgs/os-specific/linux/elogind/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, lib, fetchFromGitHub
+, meson, m4, gperf, gettext, pkgconfig, libxslt, ninja
+, libcap, libudev
+, enablePam ? true, pam
+, docbook_xsl, docbook_xml_dtd_42, docbook_xml_dtd_45 }:
+
+stdenv.mkDerivation rec {
+ name = "elogind-${version}";
+ version = "239.2";
+
+ src = fetchFromGitHub {
+ owner = "elogind";
+ repo = "elogind";
+ rev = "v${version}";
+ sha256 = "17khwbzqmkfd3hcscs51kzdpvq9p2llm08vbpsdhy9yxgwfzlfa6";
+ };
+
+ postPatch = ''
+ for f in man/*.xml; do
+ substituteInPlace $f \
+ --replace http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd ${docbook_xml_dtd_42}/xml/dtd/docbook/docbookx.dtd \
+ --replace http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd ${docbook_xml_dtd_45}/xml/dtd/docbook/docbookx.dtd
+ done
+
+ patchShebangs .
+
+ set -x
+ '';
+
+ preConfigure = ''
+ mesonFlagsArray+=(-Drootprefix=$out)
+ mesonFlagsArray+=(-Dsysconfdir=$out/etc)
+ mesonFlagsArray+=(-Dpamconfdir=$out/etc/pam.d)
+ mesonFlagsArray+=(-Dcgroup-controller=elogind)
+ '';
+
+ buildInputs = [ libcap libudev ] ++ lib.optional enablePam pam;
+ nativeBuildInputs = [ meson m4 gperf gettext pkgconfig libxslt ninja docbook_xsl ];
+
+ strictDeps = true;
+
+ meta = with lib; {
+ homepage = https://github.com/elogind/elogind;
+ description = "logind, extracted to a standalone package";
+ license = licenses.lgpl21Plus;
+ maintainers = with maintainers; [ qyliss ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/pkgs/os-specific/linux/eudev/default.nix b/pkgs/os-specific/linux/eudev/default.nix
index 771f012c2c2..7e8c9e41338 100644
--- a/pkgs/os-specific/linux/eudev/default.nix
+++ b/pkgs/os-specific/linux/eudev/default.nix
@@ -3,10 +3,10 @@ let
s = # Generated upstream information
rec {
baseName="eudev";
- version = "3.2.6";
+ version = "3.2.7";
name="${baseName}-${version}";
url="http://dev.gentoo.org/~blueness/eudev/eudev-${version}.tar.gz";
- sha256 = "1qdpnvsv3qqwy6jl4i4b1dn212y6nvawpaladb7plfping9p2n46";
+ sha256 = "0qphgfw1vh2f73yjggkh5icxfq5gg811a0j6b22zkhaks95n211h";
};
nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/os-specific/linux/mdevd/default.nix b/pkgs/os-specific/linux/mdevd/default.nix
new file mode 100644
index 00000000000..05e1452beb9
--- /dev/null
+++ b/pkgs/os-specific/linux/mdevd/default.nix
@@ -0,0 +1,26 @@
+{ lib, skawarePackages }:
+
+with skawarePackages;
+
+buildPackage {
+ pname = "mdevd";
+ version = "0.1.0.2";
+ sha256 = "1m7n2g499l2chwya1a13ng2nqiwd3zhvpj4vrkd8x2mamsan7rxx";
+
+ description = "Kernel event manager compatible with mdev.conf";
+ platforms = lib.platforms.linux;
+
+ outputs = [ "bin" "dev" "doc" "out" ];
+
+ configureFlags = [
+ "--with-sysdeps=${skalibs.lib}/lib/skalibs/sysdeps"
+ "--with-include=${skalibs.dev}/include"
+ "--with-lib=${skalibs.lib}/lib"
+ ];
+
+ postInstall = ''
+ find . -type f -executable -delete
+ mv examples/ $doc/share/doc/mdevd
+ mv doc $doc/share/doc/mdevd/html
+ '';
+}
diff --git a/pkgs/os-specific/linux/s6-linux-init/default.nix b/pkgs/os-specific/linux/s6-linux-init/default.nix
new file mode 100644
index 00000000000..2fca6aaa8c9
--- /dev/null
+++ b/pkgs/os-specific/linux/s6-linux-init/default.nix
@@ -0,0 +1,26 @@
+{ lib, skawarePackages }:
+
+with skawarePackages;
+
+buildPackage {
+ pname = "s6-linux-init";
+ version = "0.4.0.0";
+ sha256 = "0zpd6n30cf8847240f658gw40sh64lm1mbaxr19q6rryvs5rpb6l";
+
+ description = "Automated /sbin/init creation for s6-based Linux systems";
+ platforms = lib.platforms.linux;
+
+ outputs = [ "bin" "dev" "doc" "out" ];
+
+ configureFlags = [
+ "--includedir=\${dev}/include"
+ "--with-sysdeps=${skalibs.lib}/lib/skalibs/sysdeps"
+ "--with-include=${skalibs.dev}/include"
+ "--with-lib=${skalibs.lib}/lib"
+ ];
+
+ postInstall = ''
+ find . -type f -executable -delete
+ mv doc $doc/share/doc/s6-linux-init/html
+ '';
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 9e9ee8797ff..0285a8a3b78 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2511,8 +2511,6 @@ with pkgs;
stdenv = if stdenv.isi686 then overrideCC stdenv gcc6 else stdenv;
};
- execline = skawarePackages.execline;
-
exif = callPackage ../tools/graphics/exif { };
exiftags = callPackage ../tools/graphics/exiftags { };
@@ -5225,14 +5223,6 @@ with pkgs;
s3gof3r = callPackage ../tools/networking/s3gof3r { };
- s6-dns = skawarePackages.s6-dns;
-
- s6-linux-utils = skawarePackages.s6-linux-utils;
-
- s6-networking = skawarePackages.s6-networking;
-
- s6-portable-utils = skawarePackages.s6-portable-utils;
-
sablotron = callPackage ../tools/text/xml/sablotron { };
safecopy = callPackage ../tools/system/safecopy { };
@@ -11546,8 +11536,6 @@ with pkgs;
nss_wrapper = callPackage ../development/libraries/nss_wrapper { };
- nsss = skawarePackages.nsss;
-
ntbtls = callPackage ../development/libraries/ntbtls { };
ntk = callPackage ../development/libraries/audio/ntk { };
@@ -12242,8 +12230,6 @@ with pkgs;
skaffold = callPackage ../development/tools/skaffold { };
- skalibs = skawarePackages.skalibs;
-
skawarePackages = recurseIntoAttrs {
buildPackage = callPackage ../build-support/skaware/build-skaware-package.nix { };
@@ -12252,16 +12238,31 @@ with pkgs;
s6 = callPackage ../tools/system/s6 { };
s6-dns = callPackage ../tools/networking/s6-dns { };
+ s6-linux-init = callPackage ../os-specific/linux/s6-linux-init { };
s6-linux-utils = callPackage ../os-specific/linux/s6-linux-utils { };
s6-networking = callPackage ../tools/networking/s6-networking { };
s6-portable-utils = callPackage ../tools/misc/s6-portable-utils { };
s6-rc = callPackage ../tools/system/s6-rc { };
+ mdevd = callPackage ../os-specific/linux/mdevd { };
nsss = callPackage ../development/libraries/nsss { };
utmps = callPackage ../development/libraries/utmps { };
-
};
+ inherit (skawarePackages)
+ execline
+ mdevd
+ nsss
+ s6
+ s6-dns
+ s6-linux-init
+ s6-linux-utils
+ s6-networking
+ s6-portable-utils
+ s6-rc
+ skalibs
+ utmps;
+
skydive = callPackage ../tools/networking/skydive { };
slang = callPackage ../development/libraries/slang { };
@@ -12575,8 +12576,6 @@ with pkgs;
uthash = callPackage ../development/libraries/uthash { };
- utmps = skawarePackages.utmps;
-
ucommon = ucommon_openssl;
ucommon_openssl = callPackage ../development/libraries/ucommon {
@@ -13728,10 +13727,6 @@ with pkgs;
boost = boost159;
};
- s6 = skawarePackages.s6;
-
- s6-rc = skawarePackages.s6-rc;
-
supervise = callPackage ../tools/system/supervise { };
spamassassin = callPackage ../servers/mail/spamassassin {
@@ -14067,6 +14062,8 @@ with pkgs;
dstat = callPackage ../os-specific/linux/dstat { };
+ elogind = callPackage ../os-specific/linux/elogind { };
+
# unstable until the first 1.x release
fscrypt-experimental = callPackage ../os-specific/linux/fscrypt {
buildGoPackage = buildGo110Package;
diff --git a/udhcpd.conf b/udhcpd.conf
new file mode 100644
index 00000000000..eb584043964
--- /dev/null
+++ b/udhcpd.conf
@@ -0,0 +1,2 @@
+lease_file /tmp/leases
+