1. Cedric Staub
  2. libsystemd-daemon

Overview

HTTPS SSH

Haskell bindings for libsystemd-daemon

This package provides (incomplete) Haskell bindings for the libsystemd-daemon library, see sd-daemon(3) for more information.

Example

Implementation of a simple new-style daemon in Haskell:

import System.IO
import System.SD.Daemon
import Control.Concurrent

main :: IO ()
main = do
    log sD_INFO "Initialized."
    sdNotify False [readyVar, statusVar "Startup completed."]
    loop 1
  where
    log lvl msg = hPutStrLn stderr (lvl ++ msg)

    loop count = do
      log sD_INFO $ "Looped " ++ show count ++ " times."
      sdNotify False [statusVar $ "Looped " ++ show count ++ " times."]
      threadDelay 10000000
      loop (count + 1)

Corresponding systemd unit file:

[Unit]
Description=Simple new-style daemon in Haskell

[Service]
ExecStart=/path/to/executable
Type=notify
StandardError=syslog