summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-01-08 18:11:56 +0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-01-08 18:11:56 +0100
commitcdb2f64a3553ac20824c4fd5b40c1115cbaf06e3 (patch)
tree0ce5dea3202b9363e15b23d89d25795afb2827f7 /pkgs
parent30201193eab7832b05a962743591d5ee8bdda503 (diff)
downloadnixpkgs-cdb2f64a3553ac20824c4fd5b40c1115cbaf06e3.tar
nixpkgs-cdb2f64a3553ac20824c4fd5b40c1115cbaf06e3.tar.gz
nixpkgs-cdb2f64a3553ac20824c4fd5b40c1115cbaf06e3.tar.bz2
nixpkgs-cdb2f64a3553ac20824c4fd5b40c1115cbaf06e3.tar.lz
nixpkgs-cdb2f64a3553ac20824c4fd5b40c1115cbaf06e3.tar.xz
nixpkgs-cdb2f64a3553ac20824c4fd5b40c1115cbaf06e3.tar.zst
nixpkgs-cdb2f64a3553ac20824c4fd5b40c1115cbaf06e3.zip
systemd: Get rescue.service and emergency.service to work
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/os-specific/linux/systemd/default.nix9
-rw-r--r--pkgs/os-specific/linux/sysvinit/default.nix11
2 files changed, 12 insertions, 8 deletions
diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix
index 975a37fffce..e605b998c4a 100644
--- a/pkgs/os-specific/linux/systemd/default.nix
+++ b/pkgs/os-specific/linux/systemd/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, pkgconfig, intltool, gperf, libcap, dbus, kmod
 , xz, pam, acl, cryptsetup, libuuid, m4, utillinux
-, glib, kbd, libxslt, coreutils, libgcrypt
+, glib, kbd, libxslt, coreutils, libgcrypt, sysvtools
 }:
 
 assert stdenv.gcc.libc or null != null;
@@ -42,14 +42,17 @@ stdenv.mkDerivation rec {
   preConfigure =
     ''
       # FIXME: patch this in systemd properly (and send upstream).
-      for i in src/remount-fs/remount-fs.c src/core/mount.c src/core/swap.c src/fsck/fsck.c; do
+      # FIXME: use sulogin from util-linux once updated.
+      for i in src/remount-fs/remount-fs.c src/core/mount.c src/core/swap.c src/fsck/fsck.c units/emergency.service.in units/rescue.service.m4.in; do
         test -e $i
         substituteInPlace $i \
           --replace /bin/mount ${utillinux}/bin/mount \
           --replace /bin/umount ${utillinux}/bin/umount \
           --replace /sbin/swapon ${utillinux}/sbin/swapon \
           --replace /sbin/swapoff ${utillinux}/sbin/swapoff \
-          --replace /sbin/fsck ${utillinux}/sbin/fsck
+          --replace /sbin/fsck ${utillinux}/sbin/fsck \
+          --replace /bin/echo ${coreutils}/bin/echo \
+          --replace /sbin/sulogin ${sysvtools}/sbin/sulogin
       done
 
       substituteInPlace src/journal/catalog.c \
diff --git a/pkgs/os-specific/linux/sysvinit/default.nix b/pkgs/os-specific/linux/sysvinit/default.nix
index 7b3ea62ea2d..99aebd11667 100644
--- a/pkgs/os-specific/linux/sysvinit/default.nix
+++ b/pkgs/os-specific/linux/sysvinit/default.nix
@@ -4,12 +4,12 @@ let version = "2.88dsf"; in
 
 stdenv.mkDerivation {
   name = (if withoutInitTools then "sysvtools" else "sysvinit") + "-" + version;
-  
+
   src = fetchurl {
     url = "mirror://savannah/sysvinit/sysvinit-${version}.tar.bz2";
     sha256 = "068mvzaz808a673zigyaqb63xc8bndh2klk16zi5c83rw70wifv0";
   };
-  
+
   prePatch = ''
     # Patch some minimal hard references, so halt/shutdown work
     sed -i -e "s,/sbin/,$out/sbin/," src/halt.c src/init.c src/paths.h
@@ -27,16 +27,17 @@ stdenv.mkDerivation {
     '';
 
   postInstall = stdenv.lib.optionalString withoutInitTools
-    ''  
+    ''
       mv $out/sbin/killall5 $out/bin
       ln -sf killall5 $out/bin/pidof
-      rm -rf $out/sbin
+      shopt -s extglob
+      rm -rf $out/sbin/!(sulogin)
       rm -rf $out/include
       rm -rf $out/share/man/man5
       rm $(for i in $out/share/man/man8/*; do echo $i; done | grep -v 'pidof\|killall5')
       rm $out/bin/{mountpoint,wall} $out/share/man/man1/{mountpoint.1,wall.1}
     '';
-    
+
   meta = {
     homepage = http://www.nongnu.org/sysvinit/;
     description = "Utilities related to booting and shutdown";