guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Guix UCI comparison (was Re: Guix beyond 1.0: let’s have a roadmap!)


From: Giovanni Biscuolo
Subject: Guix UCI comparison (was Re: Guix beyond 1.0: let’s have a roadmap!)
Date: Fri, 05 Jul 2019 10:35:54 +0200

Hello Alex,

I know and use UCI (and sometimes LuCI, the web interface) so I'm adding
(added) my two cents to clarify the respective ecosystems

I may repeat concepts/info some af you may already well know, please
forgive me :-)

"Alex Griffin" <address@hidden> writes:

>> What does it mean?  (I don’t know UCI.)
>
> UCI is a configuration language and tool layered on top of the
> underlying packages.

UCI [1] short description: «small utility written in C (a shell
script-wrapper is available as well) and is intended to centralize the
whole configuration of a device running OpenWrt.»

How UCI works [2]:
«Applications are made UCI-compatible by simply writing the original
configuration file (which is read by the program) according to the
chosen settings in the corresponding UCI file. This is done upon running
the initialization scripts in /etc/init.d/. See Init scripts for more
information. Thus, when starting a daemon with such a UCI-compatible
initialization script, you should be aware that the program's original
configuration file gets overwritten.»

In Guix we have a full EDSL for service configuration (UCI lacks package
management) and activation; it's Guile based and it's much more powerful
than the custom augeas-like [3] UCI configuration API.

> It gives a single machine-readable configuration format to everything,

To every service for which a custom init file has been written; almost
averything in OpenWRT has a custom init file but not all [4]

In Guix we should go on defining more and more service, some still
really missing (Samba for example, AFAIU)

> and then uses it to generate the real config files used by
> services. It's the thing that lets you change your router settings
> from the OpenWrt web interface or command line.

UCI is for command line, LuCI is UCI web interface written in LUA that
uses UCI for configuration/reconfiguration of services.

> It's a lot like Guix system declarations, except service configuration
> happens at runtime.

Guix service reconfiguration happens at `guix system reconfgigure` time ;-)

It's interesting UCI, like Guix, does not automatically (AFAIU) restarts
services upon reconfiguration :-D

> I guess the thing I really want though is a web interface.

You name it! :-D

HTH. Gio'.



[1] https://openwrt.org/docs/techref/uci

[2] https://openwrt.org/docs/guide-user/base-system/uci

[3] http://augeas.net/

[4] https://openwrt.org/docs/guide-user/base-system/notuci.config


P.S.: I'd really like one day to be able to replace OpenWRT+UCI with a
Guix generated (read-only?) system image deployed on my perimetral
office router the usual way, configured via a (local) web UI :-O


[...]

-- 
Giovanni Biscuolo

Xelera IT Infrastructures

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]