Show HN: A Language Server Implementation for SystemD Unit Files
40 arandomhuman 17 7/7/2025, 12:57:25 AM github.com ↗
A Language Server Protocol (LSP) implementation for systemd unit files, providing editing support with syntax highlighting, diagnostics, autocompletion, and documentation made with rust.
We need more projects like this and if a system is running SystemD, this needs to be enabled and integrated with any LSP-supported editors.
[0] https://docs.podman.io/en/latest/markdown/podman-systemd.uni...
I was trying to figure out why Systemd decided on their ini-like syntax instead of something like xml or json or whatever. I thought maybe it was some standard that existed at the time, but it does seem to be a custom format unique to systemd...
- xml is too verbose
- yaml is too complex + suffers some notable ambiguity issues
- json isn't very human friendly (no comments)
- a lot of other linux software uses ini-style configs
Which was a part of the argumentation that systemd is very “windows” in its design (hidden errors, monolithic design).
Definitely an established standard (though not as much on UNIX-likes) before TOML was popularised though.
Launchd uses XML to describe unit files (actually, it uses plists which can be binary, but most of the files are stored in xml).
OTOH, JSON is not a configuration file format. XML might be, but when I see what some people do with XML (ant, maven builds are abysmal, although msbuild xml files are managable), then I want to click unsubscribe.
I'm happy they've chosen INI.
Things like rc files for shells and .mailrc for BSD Mail were simply scripts written in the program's own command language. The .newsrc used by ReadNews was an example of a common colon-separated key+value format, also seen in Xresources and others. The sendmail.cf used by BSD Sendmail was its own very special thing, indistinguishable from modem line noise.
BSD also widely used the "capabilities" file format, which still exists in many parts of FreeBSD, NetBSD, and OpenBSD to this day for various things such /etc/login.conf and /etc/gettytab and termcap. (In many cases nowadays, cap files are compiled into Berkeley DB or other constant database files by tools such as cap_mkdb and tic.)
Many configuration files in the Unix world were simply flat file tables, with colons, whitespace, or TAB as the field separator. phones(5) is one such TAB-separated table that is in FreeBSD to this day.
JSON was popularized by web browsers, yet some people use it for configuration for system desktop apps, which have nothing to do with JavaScript. If usage of JSON is not a problem, then why popularization of INI by DOS+Windows should be a problem?
If you think INI files were a blip on a radar then you might not realise their real popularity. They even have support by the operating system api (WINAPI had support for INI natively, ReadPrivateProfileString). Unless you say that they were a blip on a radar on Unices in the 80s, then I probably would agree.
By the way,
> as the Unix world had plenty of file formats and tooling for such formats before then, and the Linux-based operating system world had been busy cloning them all for years
And that was probably a good motivation to use something established and standard, like an INI format.