From 8cf4ef7ab747b3e3d0b1319de538257281355b33 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>
Date: Tue, 30 Dec 2014 04:36:14 +0100
Subject: [PATCH] merge #5505: use /run/current-system/sw/bin/*

A working /sbin/shutdown (usually provided by systemd) is required by
"rtcwake -m off". Creating a circular dependency on systemd for this
just isn't worth the trouble, so take the straightforward way out.

One could easily make the argument that rtcwake wants to shut down the
*currently running system*, and that the correct API for that *is* in
fact /run/current-system. And it makes a very tempting sort of sense.

@vcunat moved to postPatch and added #FIXME.
---
 pkgs/os-specific/linux/util-linux/default.nix | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/pkgs/os-specific/linux/util-linux/default.nix b/pkgs/os-specific/linux/util-linux/default.nix
index 3b76eb63ea5f..3715a93d9328 100644
--- a/pkgs/os-specific/linux/util-linux/default.nix
+++ b/pkgs/os-specific/linux/util-linux/default.nix
@@ -8,6 +8,14 @@ stdenv.mkDerivation rec {
     sha256 = "e0457f715b73f4a349e1acb08cb410bf0edc9a74a3f75c357070f31f70e33cd6";
   };
 
+  #FIXME: make it also work on non-nixos?
+  postPatch = ''
+    # Substituting store paths would create a circular dependency on systemd
+    substituteInPlace include/pathnames.h \
+      --replace "/bin/login" "/run/current-system/sw/bin/login" \
+      --replace "/sbin/shutdown" "/run/current-system/sw/bin/shutdown"
+  '';
+
   crossAttrs = {
     # Work around use of `AC_RUN_IFELSE'.
     preConfigure = "export scanf_cv_type_modifier=ms";