← Back to context

Comment by relistan

9 days ago

I’ve used various forms of S6 init, you might take a look. It has its own scripting called execline, which is good, but you can also just use any shell. It doesn’t do everything systemd does but it’s quite small and very modular. https://skarnet.org/software/s6-linux-init/why.html

I like the general idea of execline, but I feel like it relies too much on chaining. It's a bit like Lisp, but without any parens - it hurts readability.

It went from "shells have too much syntax, which creates security issues" straight into "forth with blocks". My idea: runit already provides chpst, which folds things like cd, chroot, nice, etc into a single command; so let's put it all into a block with named parameters. Like this:

    run {
        dir: /usr/src/foo
        script: {
            ./configure
            make -j(nproc)
            make install
        }
        nice: 20
        ionice: idle
    }

Maybe it could draw a bit from rc, which has actual lists as a first-class data structure.

I'm not exactly sure about the syntax, but that's the general direction.