diff options
Diffstat (limited to 'custom')
| -rw-r--r-- | custom/notify-user.nix | 12 |
1 files 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 @@ | |||
| 7 | stdenv.mkDerivation { | 7 | stdenv.mkDerivation { |
| 8 | name = ''notify-${user}''; | 8 | name = ''notify-${user}''; |
| 9 | src = writeTextFile { name = ''notify-${user}.hs''; text = '' | 9 | src = writeTextFile { name = ''notify-${user}.hs''; text = '' |
| 10 | {-# LANGUAGE ViewPatterns #-} | ||
| 11 | |||
| 10 | import System.FilePath.Glob (glob) | 12 | import System.FilePath.Glob (glob) |
| 11 | import System.Environment (setEnv, getArgs) | 13 | import System.Environment (setEnv, getArgs) |
| 12 | import System.Process (callProcess) | 14 | import System.Process (callProcess) |
| 15 | import System.Exit (exitWith, ExitSuccess) | ||
| 13 | 16 | ||
| 14 | import Data.List (isPrefixOf, dropWhileEnd) | 17 | import Data.List (isPrefixOf, dropWhile, dropWhileEnd) |
| 15 | import Data.Char (isSpace) | 18 | import Data.Char (isSpace) |
| 16 | 19 | ||
| 17 | import Control.Monad (forM_) | 20 | import Control.Monad (forM_) |
| @@ -21,7 +24,12 @@ stdenv.mkDerivation { | |||
| 21 | forM_ envFiles $ \envFile -> do | 24 | forM_ envFiles $ \envFile -> do |
| 22 | sessionAddr <- tail . snd . break (== '=') . head . filter ("DBUS_SESSION_BUS_ADDRESS=" `isPrefixOf`) . lines <$> readFile envFile | 25 | sessionAddr <- tail . snd . break (== '=') . head . filter ("DBUS_SESSION_BUS_ADDRESS=" `isPrefixOf`) . lines <$> readFile envFile |
| 23 | setEnv "DBUS_SESSION_BUS_ADDRESS" sessionAddr | 26 | setEnv "DBUS_SESSION_BUS_ADDRESS" sessionAddr |
| 24 | callProcess "${libnotify}/bin/notify-send" =<< (++) <$> getArgs <*> (pure . dropWhileEnd isSpace <$> getContents) | 27 | lines <- lines <$> getContents |
| 28 | case lines of | ||
| 29 | [] -> exitWith ExitSuccess | ||
| 30 | ((trim -> summary):(trim . unlines -> contents)) -> callProcess "${libnotify}/bin/notify-send" =<< (++) <$> getArgs <*> [summary, contents] | ||
| 31 | where | ||
| 32 | trim = dropWhileEnd isSpace . dropWhile isSpace | ||
| 25 | ''; }; | 33 | ''; }; |
| 26 | phases = [ "buildPhase" "installPhase" ]; | 34 | phases = [ "buildPhase" "installPhase" ]; |
| 27 | buildPhase = '' | 35 | buildPhase = '' |
