Skip to content

onlyati/quadlet-lsp

Repository files navigation

Podman Quadlet language server

Caution

The main branch may unstable. Use version tagged code to get stable code.

This is an implementation of language server for Podman Quadlet files.

Following features are currently available:

  • Code completion
    • Provide static completion based on Podman Quadlet documentation
    • Query images, volumes, networks, pods, and so on, and provide completion based on real configuration
  • Hover menu
  • Implemented "go definition" and "go references" functions
  • Provide syntax checking
  • Execute built-in commands

For a more details overview, with visual examples see the document.

Usage with Neovim

There is a plugin made for this language server:

Usage with VS Code

There is a simple VS Code extension to use it:

Usage with Zed

There is a third-party Zed extension that makes use of quadlet-lsp:

Alternate usage

This binary can be used as a CLI syntax checker for Quadlet files. This can be useful, for example in CI/CD pipeline to verify Quadlets before packaging and later deploying.

Same rule applied for CLI that is also applied for editor syntax checking. The .quadletrc.json file is also used on same way.

Example for usage, that monitor the current working directory:

$ quadlet-lsp check .
nc-db.container     , quadlet-lsp.qsr003, 09.000-09.010, Invalid property is found: Container.Memory
nc-app.container    , quadlet-lsp.qsr003, 08.000-08.010, Invalid property is found: Container.Memory
$ echo $?
4

Binary return with non-zero return code if it find any non information finding.

Get the executable

Use with mise

You can easily download, update and use with mise.

mise use -g ubi:onlyati/quadlet-lsp

Install from Fedora copr

This is supported on Fedora 42/43, RHEL 10, Alma Linux 10, Rocky Linux 10.

sudo dnf copr enable onlyati/quadlet-lsp
sudo dnf install quadlet-lsp

Install from Debian registry

This method is supported for Debian 13. Add the following registry, then update:

$ sudo curl \
    https://git.thinkaboutit.tech/api/packages/pandora/debian/repository.key \
    -o /etc/apt/keyrings/gitea-pandora.asc
$ sudo tee /etc/apt/sources.list.d/onlyati.sources > /dev/null <<'EOF'
Types: deb
URIs: https://git.thinkaboutit.tech/api/packages/pandora/debian
Suites: trixie
Components: main
Signed-By: /etc/apt/keyrings/gitea-pandora.asc
EOF
$ sudo apt update

Then simply install:

sudo apt install quadlet-lsp

Install from .deb and .rpm package

Check GitHub release page and download the version you need, then install it manually.

Install from Nix flake

Add this repo to your flake's inputs.

inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
    quadlet-lsp.url = "github:onlyati/quadlet-lsp";
};

Add the default package to your packages list.

environment.systemPackages = [
    inputs.quadlet-lsp.packages.${system}.default
];

# Home Manager
home.packages = [
    inputs.quadlet-lsp.packages.${system}.default
];

Download the compiled version

Check GitHub release page and download the version you need. The archive contains only the binary of language server.

On Linux, you can get it quicker from terminal. See example commands.

ARCH="amd64"
OS="linux"
LATEST_VERSION=$(curl -s -H "Accept: application/vnd.github+json" \
    https://api.github.com/repos/onlyati/quadlet-lsp/releases/latest \
    | jq -r .tag_name)
rm quadlet-lsp-${LATEST_VERSION}-${OS}-${ARCH}.tar.gz
wget "https://github.com/onlyati/quadlet-lsp/releases/download/${LATEST_VERSION}/quadlet-lsp-${LATEST_VERSION}-${OS}-${ARCH}.tar.gz"
sudo tar -xvf "quadlet-lsp-${LATEST_VERSION}-${OS}-${ARCH}.tar.gz" \
    -C /usr/local/bin/

Compile with Go

You can also install the binary using Go.

go install github.com/onlyati/quadlet-lsp@latest

About

Podman Quadlet language server for Neovim, VS Code and Zed editors.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 6