A Language Server Protocol (LSP) implementation for systemd unit files, providing editing support with syntax highlighting, diagnostics, autocompletion, and documentation made with rust.
This is great! There's way too many arcane text file formats (configs, Dockerfiles, workflow definitions etc) without any sort of fast feedback loop on type-safety, documentation etc.
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.
Thanks for the positive feedback! The documentation needs a bit of revision, but I agree there's a lot of configuration file formats that should be supported with language servers that might not necessarily have rich AST parsing as part of their contents.
I made a Systemd competitor/aternative https://github.com/andrewbaxter/puteron that uses JSON for everything. The advantage to JSON is you can use a `$schema` key at the top and vscode will do autocompletion, error checking, and (I think) documentation from the jsonschema automatically without needing a custom language server. The power of standards at work!
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...
INI format a "custom format"? It dates back to the 80's, maybe before that. It was the configuration file format.
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.
That’s very interesting, but systemd is pretty pervasive I really don’t think it’s going anywhere anytime soon for better or for worse. Language servers aren't just adopted in vscode, other editors use them in fact. I am not a VS Code user myself, but I appreciate their implementation of the language server protocol, they did a fantastic job with that.
This is great, I will definitely try it out in emacs. We use systemd unit files for quite a few things. During holidays I'm planning to uprade my setup to use more lsp and llm! Thanks!
I think a user of _not_ neovim they'd have to implement their own js client. I honestly can't say much but with INI style formatting it's been mostly based on contstants rather than abstract syntax tree parsing which is unique and a bit of a problem in its own right. I haven't implemented a language server before so this was a learning experience, but I was very pleasantly surprised how adding it to my neovim configuration was. I am hoping at some point it's added to "mason" so it's even easier.
I would create a vscode client, but I am not really very familiar with that ecosystem. Welcoming anyone to implement this in any other editors. This is just the language server implementation with no assumption regarding clients.
Splizard|7 months ago
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.
arandomhuman|7 months ago
figmert|7 months ago
[0] https://docs.podman.io/en/latest/markdown/podman-systemd.uni...
arandomhuman|7 months ago
rendaw|7 months ago
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...
self_awareness|7 months ago
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.
hamandcheese|7 months ago
- 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
arandomhuman|7 months ago
dijit|7 months ago
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.
mgartin|7 months ago
purevpnpartners|7 months ago
andy_nguyen|7 months ago
[deleted]
arandomhuman|7 months ago
I would create a vscode client, but I am not really very familiar with that ecosystem. Welcoming anyone to implement this in any other editors. This is just the language server implementation with no assumption regarding clients.