From fca62a1a38a1ae94501d7b70d7fde8fc4d58f84a Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Fri, 22 Jul 2016 14:10:37 +0200 Subject: better notify-user --- custom/notify-user.nix | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/custom/notify-user.nix b/custom/notify-user.nix index e5f001f3..6345f142 100644 --- a/custom/notify-user.nix +++ b/custom/notify-user.nix @@ -7,11 +7,14 @@ stdenv.mkDerivation { name = ''notify-${user}''; src = writeTextFile { name = ''notify-${user}.hs''; text = '' + {-# LANGUAGE ViewPatterns #-} + import System.FilePath.Glob (glob) import System.Environment (setEnv, getArgs) import System.Process (callProcess) + import System.Exit (exitWith, ExitSuccess) - import Data.List (isPrefixOf, dropWhileEnd) + import Data.List (isPrefixOf, dropWhile, dropWhileEnd) import Data.Char (isSpace) import Control.Monad (forM_) @@ -21,7 +24,12 @@ stdenv.mkDerivation { forM_ envFiles $ \envFile -> do sessionAddr <- tail . snd . break (== '=') . head . filter ("DBUS_SESSION_BUS_ADDRESS=" `isPrefixOf`) . lines <$> readFile envFile setEnv "DBUS_SESSION_BUS_ADDRESS" sessionAddr - callProcess "${libnotify}/bin/notify-send" =<< (++) <$> getArgs <*> (pure . dropWhileEnd isSpace <$> getContents) + lines <- lines <$> getContents + case lines of + [] -> exitWith ExitSuccess + ((trim -> summary):(trim . unlines -> contents)) -> callProcess "${libnotify}/bin/notify-send" =<< (++) <$> getArgs <*> [summary, contents] + where + trim = dropWhileEnd isSpace . dropWhile isSpace ''; }; phases = [ "buildPhase" "installPhase" ]; buildPhase = '' -- cgit v1.2.3