• infeeeee@lemm.ee
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    5 days ago

    They have an example service on the website:

    (define sshd
      (service
        '(sshd ssh-daemon)                ;the secure shell daemon
        #:start (make-inetd-constructor   ;start on demand
                 '("/usr/sbin/sshd" "-D" "-i")
                 (list (endpoint
                        (make-socket-address AF_INET INADDR_ANY 22))
                       (endpoint
                        (make-socket-address AF_INET6 IN6ADDR_ANY 22)))
                 #:max-connections 10)
        #:stop (make-inetd-destructor)
        #:respawn? #t))
    
    (register-services (list sshd))
    (start-in-the-background '(sshd))
    

    Let’s see how the same service looks like with systemd:

    [Unit]
    Description=OpenSSH Daemon
    Wants=sshdgenkeys.service
    After=sshdgenkeys.service
    After=network.target
    
    [Service]
    Type=notify-reload
    ExecStart=/usr/bin/sshd -D
    KillMode=process
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    I have some lisp knowledge, so the scheme version doesn’t look frightening to me, but I guess for sysadmins, who should write these kind of files frequently systemd’s TOML like language is much more easier to understand.

    Some differences I see: Shepherd does some firewall management with ports, and I don’t see the services it depends on.

    Why this kind of files should be written in a programming language at all? I guess it’s a remnant from the old times, but I like when tools abstract away the programming parts, and users shouldn’t have to deal with that. I like the same thing in docker-compose: I can configure a program whatever language it’s written, I don’t have to deal with what’s happening under the hood.

    I guess there is some usefulness with defining services as code, if you need more complex situations, but it should the more rare case nowadays.

    • devfuuu@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      5 days ago

      For as much as I want to like and learn guix, guile and all that stuff, it’s very very ugly and confusing. I even have a book around for scheme and the parentheses and ’ and # in a bunch of places scare me too much and make no sense.

      It’s a system and language that doesn’t work well with more basic editors and tooling and unfortunately for how cool it is I don’t guess it will ever catch on for multiple reasons.