#compdef nspawn

autoload -U is-at-least

_nspawn() {
    typeset -A opt_args
    typeset -a _arguments_options
    local ret=1

    if is-at-least 5.2; then
        _arguments_options=(-s -S -C)
    else
        _arguments_options=(-s -C)
    fi

    local context curcontext="$curcontext" state line
    _arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'-V[Print version]' \
'--version[Print version]' \
":: :_nspawn_commands" \
"*::: :->nspawn" \
&& ret=0
    case $state in
    (nspawn)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-command-$line[1]:"
        case $line[1] in
            (hub)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
":: :_nspawn__subcmd__hub_commands" \
"*::: :->hub" \
&& ret=0

    case $state in
    (hub)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-hub-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'--no-tags[Do not query the tags of every repository (faster on big hubs)]' \
'-h[Print help]' \
'--help[Print help]' \
'::filter -- Only show repositories whose name contains this text:_default' \
&& ret=0
;;
(tags)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':repository -- Repository name, for example "fedora":_default' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__hub__subcmd__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-hub-help-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(tags)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(search)
_arguments "${_arguments_options[@]}" : \
'--source=[Only one source instead of both]:SOURCE:((hub\:"The configured hub (its catalog)"
dockerhub\:"Docker Hub'\''s search"))' \
'-n+[Results per source]:LIMIT:_default' \
'--limit=[Results per source]:LIMIT:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
':term -- Text to look for in image names:_default' \
&& ret=0
;;
(login)
_arguments "${_arguments_options[@]}" : \
'-u+[User name (asked for when missing)]:USERNAME:_default' \
'--username=[User name (asked for when missing)]:USERNAME:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'--password-stdin[Read the password from standard input instead of the terminal]' \
'-h[Print help]' \
'--help[Print help]' \
'::registry -- Registry host, for example docker.io or hub.nspawn.org (default\: the hub):_default' \
&& ret=0
;;
(logout)
_arguments "${_arguments_options[@]}" : \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'::registry -- Registry host (default\: the hub):_default' \
&& ret=0
;;
(pull)
_arguments "${_arguments_options[@]}" : \
'-n+[Local image name (default\: derived from the reference, e.g. fedora-44)]:NAME:_default' \
'--name=[Local image name (default\: derived from the reference, e.g. fedora-44)]:NAME:_default' \
'--backend=[How to assemble the image on this host\: auto is overlay, or flat without overlayfs; mstack (systemd 261 or newer, managed user namespaces) is experimental]:BACKEND:((auto\:"mstack when the host supports it, otherwise an overlay mount, otherwise a flat copy"
overlay\:"Shared layers plus an overlayfs mount unit per machine (any systemd with overlayfs)"
flat\:"Extract the layers into a plain directory (no sharing, maximum compatibility)"
mstack\:"Native systemd.mstack directory (systemd 261 or newer with nsresourced)"))' \
'--mode=[Whether the image boots an init system or runs a single program]:MODE:((auto\:"Boot when the image has an init system and no other entrypoint, app otherwise"
boot\:"Boot the image'\''s init system (systemd machines)"
app\:"Run the image'\''s entrypoint under nspawn'\''s stub init (docker-style images)"))' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-f[Replace an existing image with the same name]' \
'--force[Replace an existing image with the same name]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
':reference -- Image reference\: \[registry/\]repository\[\:tag|@digest\], for example fedora\:44:_default' \
&& ret=0
;;
(run)
_arguments "${_arguments_options[@]}" : \
'-n+[Name of the machine (default\: derived from the reference, e.g. nginx-1.27)]:NAME:_default' \
'--name=[Name of the machine (default\: derived from the reference, e.g. nginx-1.27)]:NAME:_default' \
'--pull=[When to ask the registry\: missing (a local image with the reference is reused), always or never]:PULL:((missing\:"Only when no local image has the reference"
always\:"Every time, for the image the tag names now"
never\:"Never\: a local image with the reference, or nothing"))' \
'--backend=[How to assemble the machine on this host\: auto is overlay, or flat without overlayfs; mstack (systemd 261 or newer, managed user namespaces) is experimental]:BACKEND:((auto\:"mstack when the host supports it, otherwise an overlay mount, otherwise a flat copy"
overlay\:"Shared layers plus an overlayfs mount unit per machine (any systemd with overlayfs)"
flat\:"Extract the layers into a plain directory (no sharing, maximum compatibility)"
mstack\:"Native systemd.mstack directory (systemd 261 or newer with nsresourced)"))' \
'--mode=[Whether the image boots an init system or runs a single program; a mode other than auto always pulls]:MODE:((auto\:"Boot when the image has an init system and no other entrypoint, app otherwise"
boot\:"Boot the image'\''s init system (systemd machines)"
app\:"Run the image'\''s entrypoint under nspawn'\''s stub init (docker-style images)"))' \
'*--network=[Network of the machine, remembered for the image\: bridge (the default network), veth (systemd-networkd on the host, booted images), host (the host'\''s own network), none (no network), container\:NAME (the network of that running machine, as docker'\''s --network container\:) or the name of a network made with network create; repeatable to join several bridge networks, the first one primary]:NETWORK:_default' \
'*--network-alias=[Another name for the machine on a network, like docker --network-alias\: NAME on its primary network, or NETWORK=NAME. Repeatable and remembered; "none" forgets them]:[NETWORK=]NAME:_default' \
'*-p+[Publish a port on the host, like docker -p\: HOST\:CONTAINER\[/udp\], on one address of the host with IP\:HOST\:CONTAINER, several with a range on both sides (8000-8010\:8000-8010). Repeatable and remembered for the image; "none" forgets them all]:[IP:]HOST:CONTAINER[/udp]:_default' \
'*--publish=[Publish a port on the host, like docker -p\: HOST\:CONTAINER\[/udp\], on one address of the host with IP\:HOST\:CONTAINER, several with a range on both sides (8000-8010\:8000-8010). Repeatable and remembered for the image; "none" forgets them all]:[IP:]HOST:CONTAINER[/udp]:_default' \
'--entrypoint=[Replace the image'\''s entrypoint; an empty string runs the arguments alone]:PROGRAM:_default' \
'*-e+[Environment for the program, VAR=value or VAR (copied from here), like docker -e. Repeatable and remembered; "none" forgets them]:VAR[=VALUE]:_default' \
'*--env=[Environment for the program, VAR=value or VAR (copied from here), like docker -e. Repeatable and remembered; "none" forgets them]:VAR[=VALUE]:_default' \
'*-v+[Mount a host directory or a named volume, SOURCE\:TARGET\[\:ro\], like docker -v. Repeatable and remembered; "none" forgets them]:SOURCE:TARGET[:ro]:_default' \
'*--volume=[Mount a host directory or a named volume, SOURCE\:TARGET\[\:ro\], like docker -v. Repeatable and remembered; "none" forgets them]:SOURCE:TARGET[:ro]:_default' \
'*-l+[Label the machine, KEY=VALUE, like docker --label; the image'\''s own labels stay underneath. Repeatable and remembered; "none" forgets them]:KEY=VALUE:_default' \
'*--label=[Label the machine, KEY=VALUE, like docker --label; the image'\''s own labels stay underneath. Repeatable and remembered; "none" forgets them]:KEY=VALUE:_default' \
'--restart=[Restart policy, like docker --restart\: no, on-failure, always (also starts it at boot) or unless-stopped (like always, until nspawn stop). Remembered; applied at the next start]:POLICY:((no\:"Never restart (the default)"
on-failure\:"Restart when the program or the machine fails"
always\:"Restart whenever it ends, and start it at boot"
unless-stopped\:"Like always, until nspawn stop"))' \
'-m+[Memory limit of the whole machine, like docker -m\: 512m, 2g, and as much swap again; 0 removes it. Remembered; applied at the next start]:SIZE:_default' \
'--memory=[Memory limit of the whole machine, like docker -m\: 512m, 2g, and as much swap again; 0 removes it. Remembered; applied at the next start]:SIZE:_default' \
'--cpus=[CPU limit of the whole machine, like docker --cpus\: 0.5, 2; 0 removes it. Remembered; applied at the next start]:N:_default' \
'--pids-limit=[Most processes and threads the machine may have; 0 removes the limit. Remembered; applied at the next start]:N:_default' \
'--health-cmd=[Command that says whether the machine is healthy, run inside it through /bin/sh -c at every --health-interval, like docker --health-cmd\: exit 0 is healthy]:COMMAND:_default' \
'--health-interval=[Time between probes, like docker\: 10s, 1m30s, 500ms (default 30s)]:DURATION:_default' \
'--health-timeout=[Time a probe may take before it counts as failed (default 30s)]:DURATION:_default' \
'--health-retries=[Consecutive failed probes that make the machine unhealthy (default 3)]:N:_default' \
'--health-start-period=[Time after the start during which failed probes do not count (default 0)]:DURATION:_default' \
'--health-start-interval=[Time between probes during the start period (default 5s)]:DURATION:_default' \
'--hostname=[Hostname inside the machine (default\: its name)]:NAME:_default' \
'-u+[User the program runs as, instead of the image'\''s\: USER or USER\:GROUP, each a name or a number of the image, as docker takes them]:USER[:GROUP]:_default' \
'--user=[User the program runs as, instead of the image'\''s\: USER or USER\:GROUP, each a name or a number of the image, as docker takes them]:USER[:GROUP]:_default' \
'-w+[Working directory of the program, instead of the image'\''s]:DIR:_default' \
'--workdir=[Working directory of the program, instead of the image'\''s]:DIR:_default' \
'*--cap-add=[Capability to keep on top of systemd-nspawn'\''s default set (NET_ADMIN, ALL). Repeatable; "none" forgets them]:CAP:_default' \
'*--cap-drop=[Capability to drop from the default set. Repeatable; "none" forgets them]:CAP:_default' \
'--privileged=[Every capability, like docker --privileged (--privileged=false takes it back)]::BOOL:(true false)' \
'--read-only=[Mount the machine'\''s root read-only (--read-only=false takes it back)]::BOOL:(true false)' \
'*--tmpfs=[An empty tmpfs at a path inside, PATH\[\:OPTIONS\] (size=64m,mode=1777). Repeatable; "none" forgets them]:PATH[:OPTIONS]:_default' \
'--shm-size=[Size of /dev/shm, like docker\: 64m, 1g; 0 for the default]:SIZE:_default' \
'*--device=[A device node of the host for the machine, HOST\[\:CONTAINER\[\:PERMISSIONS\]\], like docker --device. Repeatable; "none" forgets them]:HOST[:CONTAINER[:rwm]]:_default' \
'*--dns=[DNS server for the machine, instead of the host'\''s. Repeatable; "none" forgets them]:IP:_default' \
'*--dns-search=[DNS search domain. Repeatable; "none" forgets them]:DOMAIN:_default' \
'*--add-host=[A line for the machine'\''s /etc/hosts, HOST\:IP; host-gateway is the host'\''s address on the machine'\''s network. Repeatable; "none" forgets them]:HOST:IP:_default' \
'*--ulimit=[A resource limit of the program, NAME=SOFT\[\:HARD\], like docker --ulimit (nofile=1024\:4096). Repeatable; "none" forgets them]:NAME=SOFT[:HARD]:_default' \
'--oom-score-adj=[OOM score adjustment of the machine, -1000 to 1000]:N:_default' \
'--stop-signal=[Signal \`stop\` sends the program, instead of the image'\''s (SIGTERM)]:SIGNAL:_default' \
'--stop-timeout=[Seconds \`stop\` waits after the signal before SIGKILL, unless -t says otherwise]:SECONDS:_default' \
'--init=[Accepted for docker'\''s sake\: nspawn'\''s stub init reaps orphans anyway]::BOOL:(true false)' \
'*--sysctl=[A net.* sysctl for an app machine'\''s network namespace, KEY=VALUE. Repeatable; "none" forgets them]:KEY=VALUE:_default' \
'*--secret=[A secret (nspawn secret create) as a read-only file inside the machine, like docker'\''s --secret\: NAME alone is /run/secrets/NAME with mode 0444, root'\''s. Repeatable; "none" forgets them]:NAME[:TARGET[:MODE[:UID:GID]]]:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-f[Make the machine anew when one of that name exists (it must be stopped)]' \
'--force[Make the machine anew when one of that name exists (it must be stopped)]' \
'-d[Start it in the background and return, like docker run -d; without it the output follows until the machine ends and run exits with its exit code]' \
'--detach[Start it in the background and return, like docker run -d; without it the output follows until the machine ends and run exits with its exit code]' \
'--rm[Remove the machine when it ends (named volumes stay), like docker run --rm]' \
'-i[Give the program of an app this standard input, like docker run -i]' \
'--interactive[Give the program of an app this standard input, like docker run -i]' \
'-t[Give the program of an app a terminal, like docker run -t; -it on a booted image opens a shell once it is up, and leaving it powers the machine off]' \
'--tty[Give the program of an app a terminal, like docker run -t; -it on a booted image opens a shell once it is up, and leaving it powers the machine off]' \
'--no-wait[Do not wait for a booted machine'\''s init to be up before returning (its registration is still awaited so that ports and firewall rules can be applied)]' \
'(--health-cmd --health-interval --health-timeout --health-retries --health-start-period --health-start-interval)--no-healthcheck[No probes, whatever the image says]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
':reference -- Image reference\: \[registry/\]repository\[\:tag|@digest\], for example nginx\:1.27:_default' \
'*::command -- For app images, as with docker run\: what follows the image replaces its cmd and follows its entrypoint (run -it alpine sh); after -- as well. Remembered for later starts:_default' \
&& ret=0
;;
(build)
_arguments "${_arguments_options[@]}" : \
'-t+[Reference for the result, for example myapp\:1 or hub.example/team/app\:2]:TAG:_default' \
'--tag=[Reference for the result, for example myapp\:1 or hub.example/team/app\:2]:TAG:_default' \
'-n+[Local image name (default\: derived from the tag)]:NAME:_default' \
'--name=[Local image name (default\: derived from the tag)]:NAME:_default' \
'-d+[Distribution to build (mkosi --distribution)]:DISTRIBUTION:_default' \
'--distribution=[Distribution to build (mkosi --distribution)]:DISTRIBUTION:_default' \
'-r+[Release to build (mkosi --release)]:RELEASE:_default' \
'--release=[Release to build (mkosi --release)]:RELEASE:_default' \
'*--profile=[mkosi profile to enable (repeatable)]:PROFILE:_default' \
'--backend=[How to assemble the image on this host\: auto is overlay, or flat without overlayfs; mstack (systemd 261 or newer, managed user namespaces) is experimental]:BACKEND:((auto\:"mstack when the host supports it, otherwise an overlay mount, otherwise a flat copy"
overlay\:"Shared layers plus an overlayfs mount unit per machine (any systemd with overlayfs)"
flat\:"Extract the layers into a plain directory (no sharing, maximum compatibility)"
mstack\:"Native systemd.mstack directory (systemd 261 or newer with nsresourced)"))' \
'--mode=[Whether the image boots an init system or runs a single program]:MODE:((auto\:"Boot when the image has an init system and no other entrypoint, app otherwise"
boot\:"Boot the image'\''s init system (systemd machines)"
app\:"Run the image'\''s entrypoint under nspawn'\''s stub init (docker-style images)"))' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-f[Replace an existing image with the same name]' \
'--force[Replace an existing image with the same name]' \
'--keep-output[Keep the mkosi output directory instead of deleting it after the import]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'::directory -- Directory with the mkosi configuration (mkosi.conf, mkosi.conf.d, ...):_files' \
'*::mkosi_args -- Extra arguments passed to mkosi verbatim (after --):_default' \
&& ret=0
;;
(create)
_arguments "${_arguments_options[@]}" : \
'--backend=[How to assemble it (default\: like the source)]:BACKEND:((auto\:"mstack when the host supports it, otherwise an overlay mount, otherwise a flat copy"
overlay\:"Shared layers plus an overlayfs mount unit per machine (any systemd with overlayfs)"
flat\:"Extract the layers into a plain directory (no sharing, maximum compatibility)"
mstack\:"Native systemd.mstack directory (systemd 261 or newer with nsresourced)"))' \
'*--network=[Network of the new machine\: bridge, veth, host, none, container\:NAME (that machine'\''s network, as docker'\''s) or a network made with network create; repeatable to join several bridge networks, the first one primary (default\: the source'\''s kind; a network made with network create is not inherited)]:NETWORK:_default' \
'*--network-alias=[Another name for the machine on a network, like docker --network-alias\: NAME on its primary network, or NETWORK=NAME. Repeatable]:[NETWORK=]NAME:_default' \
'*-p+[Ports to publish on the host, like start -p]:[IP:]HOST:CONTAINER[/udp]:_default' \
'*--publish=[Ports to publish on the host, like start -p]:[IP:]HOST:CONTAINER[/udp]:_default' \
'--entrypoint=[Replace the image'\''s entrypoint; an empty string runs the arguments alone]:PROGRAM:_default' \
'*-e+[Environment for the program, VAR=value or VAR (copied from here), like docker -e]:VAR[=VALUE]:_default' \
'*--env=[Environment for the program, VAR=value or VAR (copied from here), like docker -e]:VAR[=VALUE]:_default' \
'*-v+[Mount a host directory or a named volume, SOURCE\:TARGET\[\:ro\], like docker -v]:SOURCE:TARGET[:ro]:_default' \
'*--volume=[Mount a host directory or a named volume, SOURCE\:TARGET\[\:ro\], like docker -v]:SOURCE:TARGET[:ro]:_default' \
'*-l+[Label the machine, KEY=VALUE, like docker --label; the image'\''s own labels stay underneath. Repeatable and remembered; "none" forgets them]:KEY=VALUE:_default' \
'*--label=[Label the machine, KEY=VALUE, like docker --label; the image'\''s own labels stay underneath. Repeatable and remembered; "none" forgets them]:KEY=VALUE:_default' \
'--restart=[Restart policy, like docker --restart\: no, on-failure, always (also starts it at boot) or unless-stopped (like always, until nspawn stop). Remembered; applied at the next start]:POLICY:((no\:"Never restart (the default)"
on-failure\:"Restart when the program or the machine fails"
always\:"Restart whenever it ends, and start it at boot"
unless-stopped\:"Like always, until nspawn stop"))' \
'-m+[Memory limit of the whole machine, like docker -m\: 512m, 2g, and as much swap again; 0 removes it. Remembered; applied at the next start]:SIZE:_default' \
'--memory=[Memory limit of the whole machine, like docker -m\: 512m, 2g, and as much swap again; 0 removes it. Remembered; applied at the next start]:SIZE:_default' \
'--cpus=[CPU limit of the whole machine, like docker --cpus\: 0.5, 2; 0 removes it. Remembered; applied at the next start]:N:_default' \
'--pids-limit=[Most processes and threads the machine may have; 0 removes the limit. Remembered; applied at the next start]:N:_default' \
'--health-cmd=[Command that says whether the machine is healthy, run inside it through /bin/sh -c at every --health-interval, like docker --health-cmd\: exit 0 is healthy]:COMMAND:_default' \
'--health-interval=[Time between probes, like docker\: 10s, 1m30s, 500ms (default 30s)]:DURATION:_default' \
'--health-timeout=[Time a probe may take before it counts as failed (default 30s)]:DURATION:_default' \
'--health-retries=[Consecutive failed probes that make the machine unhealthy (default 3)]:N:_default' \
'--health-start-period=[Time after the start during which failed probes do not count (default 0)]:DURATION:_default' \
'--health-start-interval=[Time between probes during the start period (default 5s)]:DURATION:_default' \
'--hostname=[Hostname inside the machine (default\: its name)]:NAME:_default' \
'-u+[User the program runs as, instead of the image'\''s\: USER or USER\:GROUP, each a name or a number of the image, as docker takes them]:USER[:GROUP]:_default' \
'--user=[User the program runs as, instead of the image'\''s\: USER or USER\:GROUP, each a name or a number of the image, as docker takes them]:USER[:GROUP]:_default' \
'-w+[Working directory of the program, instead of the image'\''s]:DIR:_default' \
'--workdir=[Working directory of the program, instead of the image'\''s]:DIR:_default' \
'*--cap-add=[Capability to keep on top of systemd-nspawn'\''s default set (NET_ADMIN, ALL). Repeatable; "none" forgets them]:CAP:_default' \
'*--cap-drop=[Capability to drop from the default set. Repeatable; "none" forgets them]:CAP:_default' \
'--privileged=[Every capability, like docker --privileged (--privileged=false takes it back)]::BOOL:(true false)' \
'--read-only=[Mount the machine'\''s root read-only (--read-only=false takes it back)]::BOOL:(true false)' \
'*--tmpfs=[An empty tmpfs at a path inside, PATH\[\:OPTIONS\] (size=64m,mode=1777). Repeatable; "none" forgets them]:PATH[:OPTIONS]:_default' \
'--shm-size=[Size of /dev/shm, like docker\: 64m, 1g; 0 for the default]:SIZE:_default' \
'*--device=[A device node of the host for the machine, HOST\[\:CONTAINER\[\:PERMISSIONS\]\], like docker --device. Repeatable; "none" forgets them]:HOST[:CONTAINER[:rwm]]:_default' \
'*--dns=[DNS server for the machine, instead of the host'\''s. Repeatable; "none" forgets them]:IP:_default' \
'*--dns-search=[DNS search domain. Repeatable; "none" forgets them]:DOMAIN:_default' \
'*--add-host=[A line for the machine'\''s /etc/hosts, HOST\:IP; host-gateway is the host'\''s address on the machine'\''s network. Repeatable; "none" forgets them]:HOST:IP:_default' \
'*--ulimit=[A resource limit of the program, NAME=SOFT\[\:HARD\], like docker --ulimit (nofile=1024\:4096). Repeatable; "none" forgets them]:NAME=SOFT[:HARD]:_default' \
'--oom-score-adj=[OOM score adjustment of the machine, -1000 to 1000]:N:_default' \
'--stop-signal=[Signal \`stop\` sends the program, instead of the image'\''s (SIGTERM)]:SIGNAL:_default' \
'--stop-timeout=[Seconds \`stop\` waits after the signal before SIGKILL, unless -t says otherwise]:SECONDS:_default' \
'--init=[Accepted for docker'\''s sake\: nspawn'\''s stub init reaps orphans anyway]::BOOL:(true false)' \
'*--sysctl=[A net.* sysctl for an app machine'\''s network namespace, KEY=VALUE. Repeatable; "none" forgets them]:KEY=VALUE:_default' \
'*--secret=[A secret (nspawn secret create) as a read-only file inside the machine, like docker'\''s --secret\: NAME alone is /run/secrets/NAME with mode 0444, root'\''s. Repeatable; "none" forgets them]:NAME[:TARGET[:MODE[:UID:GID]]]:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-f[Replace an existing machine with the same name]' \
'--force[Replace an existing machine with the same name]' \
'(--health-cmd --health-interval --health-timeout --health-retries --health-start-period --health-start-interval)--no-healthcheck[No probes, whatever the image says]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
':source -- Image to start from\: a local one by its name or reference, or a reference to pull first (kept under its own name, as run does):_default' \
':name -- Name of the new machine:_default' \
'*::command -- For app images\: the arguments after -- replace the image'\''s cmd and follow its entrypoint, as with docker:_default' \
&& ret=0
;;
(push)
_arguments "${_arguments_options[@]}" : \
'--to=[Push under a different reference than the one recorded for the image]:TO:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':image -- Local image name, or the reference it was pulled from or built as:_default' \
&& ret=0
;;
(images)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
":: :_nspawn__subcmd__images_commands" \
"*::: :->images" \
&& ret=0

    case $state in
    (images)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-images-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'--json[Print the service'\''s answer as JSON instead of a table, for scripts]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Image names:_default' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__images__subcmd__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-images-help-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(machines)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
":: :_nspawn__subcmd__machines_commands" \
"*::: :->machines" \
&& ret=0

    case $state in
    (machines)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-machines-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-a[Also list nspawn images that are not running]' \
'--all[Also list nspawn images that are not running]' \
'--json[Print the service'\''s answer as JSON instead of a table, for scripts]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__machines__subcmd__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-machines-help-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(ps)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-a[Also list nspawn images that are not running]' \
'--all[Also list nspawn images that are not running]' \
'--json[Print the service'\''s answer as JSON instead of a table, for scripts]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(inspect)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Machine or image names:_default' \
&& ret=0
;;
(start)
_arguments "${_arguments_options[@]}" : \
'*--network=[Network of the machine, remembered for the image\: bridge (the default network), veth (systemd-networkd on the host, booted images), host (the host'\''s own network), none (no network), container\:NAME (the network of that running machine, as docker'\''s --network container\:) or the name of a network made with network create; repeatable to join several bridge networks, the first one primary]:NETWORK:_default' \
'*--network-alias=[Another name for the machine on a network, like docker --network-alias\: NAME on its primary network, or NETWORK=NAME. Repeatable and remembered; "none" forgets them]:[NETWORK=]NAME:_default' \
'*-p+[Publish a port on the host, like docker -p\: HOST\:CONTAINER\[/udp\], on one address of the host with IP\:HOST\:CONTAINER, several with a range on both sides (8000-8010\:8000-8010). Repeatable and remembered for the image; "none" forgets them all]:[IP:]HOST:CONTAINER[/udp]:_default' \
'*--publish=[Publish a port on the host, like docker -p\: HOST\:CONTAINER\[/udp\], on one address of the host with IP\:HOST\:CONTAINER, several with a range on both sides (8000-8010\:8000-8010). Repeatable and remembered for the image; "none" forgets them all]:[IP:]HOST:CONTAINER[/udp]:_default' \
'--entrypoint=[Replace the image'\''s entrypoint; an empty string runs the arguments alone]:PROGRAM:_default' \
'*-e+[Environment for the program, VAR=value or VAR (copied from here), like docker -e. Repeatable and remembered; "none" forgets them]:VAR[=VALUE]:_default' \
'*--env=[Environment for the program, VAR=value or VAR (copied from here), like docker -e. Repeatable and remembered; "none" forgets them]:VAR[=VALUE]:_default' \
'*-v+[Mount a host directory or a named volume, SOURCE\:TARGET\[\:ro\], like docker -v. Repeatable and remembered; "none" forgets them]:SOURCE:TARGET[:ro]:_default' \
'*--volume=[Mount a host directory or a named volume, SOURCE\:TARGET\[\:ro\], like docker -v. Repeatable and remembered; "none" forgets them]:SOURCE:TARGET[:ro]:_default' \
'*-l+[Label the machine, KEY=VALUE, like docker --label; the image'\''s own labels stay underneath. Repeatable and remembered; "none" forgets them]:KEY=VALUE:_default' \
'*--label=[Label the machine, KEY=VALUE, like docker --label; the image'\''s own labels stay underneath. Repeatable and remembered; "none" forgets them]:KEY=VALUE:_default' \
'--restart=[Restart policy, like docker --restart\: no, on-failure, always (also starts it at boot) or unless-stopped (like always, until nspawn stop). Remembered; applied at the next start]:POLICY:((no\:"Never restart (the default)"
on-failure\:"Restart when the program or the machine fails"
always\:"Restart whenever it ends, and start it at boot"
unless-stopped\:"Like always, until nspawn stop"))' \
'-m+[Memory limit of the whole machine, like docker -m\: 512m, 2g, and as much swap again; 0 removes it. Remembered; applied at the next start]:SIZE:_default' \
'--memory=[Memory limit of the whole machine, like docker -m\: 512m, 2g, and as much swap again; 0 removes it. Remembered; applied at the next start]:SIZE:_default' \
'--cpus=[CPU limit of the whole machine, like docker --cpus\: 0.5, 2; 0 removes it. Remembered; applied at the next start]:N:_default' \
'--pids-limit=[Most processes and threads the machine may have; 0 removes the limit. Remembered; applied at the next start]:N:_default' \
'--health-cmd=[Command that says whether the machine is healthy, run inside it through /bin/sh -c at every --health-interval, like docker --health-cmd\: exit 0 is healthy]:COMMAND:_default' \
'--health-interval=[Time between probes, like docker\: 10s, 1m30s, 500ms (default 30s)]:DURATION:_default' \
'--health-timeout=[Time a probe may take before it counts as failed (default 30s)]:DURATION:_default' \
'--health-retries=[Consecutive failed probes that make the machine unhealthy (default 3)]:N:_default' \
'--health-start-period=[Time after the start during which failed probes do not count (default 0)]:DURATION:_default' \
'--health-start-interval=[Time between probes during the start period (default 5s)]:DURATION:_default' \
'--hostname=[Hostname inside the machine (default\: its name)]:NAME:_default' \
'-u+[User the program runs as, instead of the image'\''s\: USER or USER\:GROUP, each a name or a number of the image, as docker takes them]:USER[:GROUP]:_default' \
'--user=[User the program runs as, instead of the image'\''s\: USER or USER\:GROUP, each a name or a number of the image, as docker takes them]:USER[:GROUP]:_default' \
'-w+[Working directory of the program, instead of the image'\''s]:DIR:_default' \
'--workdir=[Working directory of the program, instead of the image'\''s]:DIR:_default' \
'*--cap-add=[Capability to keep on top of systemd-nspawn'\''s default set (NET_ADMIN, ALL). Repeatable; "none" forgets them]:CAP:_default' \
'*--cap-drop=[Capability to drop from the default set. Repeatable; "none" forgets them]:CAP:_default' \
'--privileged=[Every capability, like docker --privileged (--privileged=false takes it back)]::BOOL:(true false)' \
'--read-only=[Mount the machine'\''s root read-only (--read-only=false takes it back)]::BOOL:(true false)' \
'*--tmpfs=[An empty tmpfs at a path inside, PATH\[\:OPTIONS\] (size=64m,mode=1777). Repeatable; "none" forgets them]:PATH[:OPTIONS]:_default' \
'--shm-size=[Size of /dev/shm, like docker\: 64m, 1g; 0 for the default]:SIZE:_default' \
'*--device=[A device node of the host for the machine, HOST\[\:CONTAINER\[\:PERMISSIONS\]\], like docker --device. Repeatable; "none" forgets them]:HOST[:CONTAINER[:rwm]]:_default' \
'*--dns=[DNS server for the machine, instead of the host'\''s. Repeatable; "none" forgets them]:IP:_default' \
'*--dns-search=[DNS search domain. Repeatable; "none" forgets them]:DOMAIN:_default' \
'*--add-host=[A line for the machine'\''s /etc/hosts, HOST\:IP; host-gateway is the host'\''s address on the machine'\''s network. Repeatable; "none" forgets them]:HOST:IP:_default' \
'*--ulimit=[A resource limit of the program, NAME=SOFT\[\:HARD\], like docker --ulimit (nofile=1024\:4096). Repeatable; "none" forgets them]:NAME=SOFT[:HARD]:_default' \
'--oom-score-adj=[OOM score adjustment of the machine, -1000 to 1000]:N:_default' \
'--stop-signal=[Signal \`stop\` sends the program, instead of the image'\''s (SIGTERM)]:SIGNAL:_default' \
'--stop-timeout=[Seconds \`stop\` waits after the signal before SIGKILL, unless -t says otherwise]:SECONDS:_default' \
'--init=[Accepted for docker'\''s sake\: nspawn'\''s stub init reaps orphans anyway]::BOOL:(true false)' \
'*--sysctl=[A net.* sysctl for an app machine'\''s network namespace, KEY=VALUE. Repeatable; "none" forgets them]:KEY=VALUE:_default' \
'*--secret=[A secret (nspawn secret create) as a read-only file inside the machine, like docker'\''s --secret\: NAME alone is /run/secrets/NAME with mode 0444, root'\''s. Repeatable; "none" forgets them]:NAME[:TARGET[:MODE[:UID:GID]]]:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'--no-wait[Do not wait for a booted machine'\''s init to be up before returning (its registration is still awaited so that ports and firewall rules can be applied)]' \
'(--health-cmd --health-interval --health-timeout --health-retries --health-start-period --health-start-interval)--no-healthcheck[No probes, whatever the image says]' \
'--image-command[Forget the remembered entrypoint and arguments and run the image'\''s own again]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
':name -- Image name:_default' \
'*::command -- For app images\: the arguments after -- replace the image'\''s cmd and follow its entrypoint, as with docker. Remembered for later starts:_default' \
&& ret=0
;;
(stop)
_arguments "${_arguments_options[@]}" : \
'-t+[App images\: seconds to wait after the stop signal before terminating the machine (default\: the machine'\''s --stop-timeout, else 10)]:SECONDS:_default' \
'--timeout=[App images\: seconds to wait after the stop signal before terminating the machine (default\: the machine'\''s --stop-timeout, else 10)]:SECONDS:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-f[Kill the machine immediately instead of asking it to power off]' \
'--force[Kill the machine immediately instead of asking it to power off]' \
'--no-wait[Return right after the stop request, without waiting for the machine to be gone (no SIGKILL after --timeout; the unit hooks release its network when it ends)]' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Machine names:_default' \
&& ret=0
;;
(restart)
_arguments "${_arguments_options[@]}" : \
'-t+[App images\: seconds to wait after the stop signal before terminating the machine (default\: the machine'\''s --stop-timeout, else 10)]:SECONDS:_default' \
'--timeout=[App images\: seconds to wait after the stop signal before terminating the machine (default\: the machine'\''s --stop-timeout, else 10)]:SECONDS:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Machine names:_default' \
&& ret=0
;;
(kill)
_arguments "${_arguments_options[@]}" : \
'-s+[Signal to send\: a name (KILL, SIGHUP, RTMIN+3) or a number. SIGKILL stops the machine like stop --force; other signals go to an app'\''s program or a booted machine'\''s init, and a machine they end is restarted by its policy, unless the signal was its stop signal]:SIGNAL:_default' \
'--signal=[Signal to send\: a name (KILL, SIGHUP, RTMIN+3) or a number. SIGKILL stops the machine like stop --force; other signals go to an app'\''s program or a booted machine'\''s init, and a machine they end is restarted by its policy, unless the signal was its stop signal]:SIGNAL:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Machine names:_default' \
&& ret=0
;;
(pause)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Machine names:_default' \
&& ret=0
;;
(unpause)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Machine names:_default' \
&& ret=0
;;
(top)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':machine -- Machine name:_default' \
&& ret=0
;;
(update)
_arguments "${_arguments_options[@]}" : \
'--restart=[Restart policy\: no, on-failure, always (also starts it at boot) or unless-stopped]:POLICY:((no\:"Never restart (the default)"
on-failure\:"Restart when the program or the machine fails"
always\:"Restart whenever it ends, and start it at boot"
unless-stopped\:"Like always, until nspawn stop"))' \
'-m+[Memory limit of the whole machine\: 512m, 2g, and as much swap again; 0 removes it]:SIZE:_default' \
'--memory=[Memory limit of the whole machine\: 512m, 2g, and as much swap again; 0 removes it]:SIZE:_default' \
'--cpus=[CPU limit of the whole machine\: 0.5, 2; 0 removes it]:N:_default' \
'--pids-limit=[Most processes and threads the machine may have; 0 removes the limit]:N:_default' \
'--health-cmd=[Command that says whether the machine is healthy, run inside it through /bin/sh -c at every --health-interval, like docker --health-cmd\: exit 0 is healthy]:COMMAND:_default' \
'--health-interval=[Time between probes, like docker\: 10s, 1m30s, 500ms (default 30s)]:DURATION:_default' \
'--health-timeout=[Time a probe may take before it counts as failed (default 30s)]:DURATION:_default' \
'--health-retries=[Consecutive failed probes that make the machine unhealthy (default 3)]:N:_default' \
'--health-start-period=[Time after the start during which failed probes do not count (default 0)]:DURATION:_default' \
'--health-start-interval=[Time between probes during the start period (default 5s)]:DURATION:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'(--health-cmd --health-interval --health-timeout --health-retries --health-start-period --health-start-interval)--no-healthcheck[No probes, whatever the image says]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'*::names -- Machine names:_default' \
&& ret=0
;;
(stats)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'--no-stream[Print one table and return instead of drawing a new one every second]' \
'--json[One JSON object per machine and sample]' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Machine names (every running machine when none is given):_default' \
&& ret=0
;;
(events)
_arguments "${_arguments_options[@]}" : \
'--since=[Show events since this time (journalctl'\''s syntax\: "2026-09-24 10\:00", "-1h", "today"); without it, only new ones]:WHEN:_default' \
'--until=[Stop at this time instead of waiting for new events (with --since)]:WHEN:_default' \
'*-f+[Only matching events\: name=NAME, type=machine|network|volume, event=ACTION, label=KEY or label=KEY=VALUE. Repeatable\: the same key matches either value, different keys must all match]:KEY=VALUE:_default' \
'*--filter=[Only matching events\: name=NAME, type=machine|network|volume, event=ACTION, label=KEY or label=KEY=VALUE. Repeatable\: the same key matches either value, different keys must all match]:KEY=VALUE:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'--json[One JSON object per event]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-f[Stop a running machine first (SIGKILL, like docker rm -f) instead of refusing]' \
'--force[Stop a running machine first (SIGKILL, like docker rm -f) instead of refusing]' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Machine names:_default' \
&& ret=0
;;
(exec)
_arguments "${_arguments_options[@]}" : \
'-u+[User inside the machine]:USER:_default' \
'--user=[User inside the machine]:USER:_default' \
'*-e+[Environment for the command, VAR=value or VAR (copied from here), like docker exec -e. Repeatable]:VAR[=VALUE]:_default' \
'*--env=[Environment for the command, VAR=value or VAR (copied from here), like docker exec -e. Repeatable]:VAR[=VALUE]:_default' \
'-w+[Working directory of the command, instead of the machine'\''s]:DIR:_default' \
'--workdir=[Working directory of the command, instead of the machine'\''s]:DIR:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'(-t --tty)-T[No terminal, even from one\: pipes, as in a script]' \
'(-t --tty)--no-tty[No terminal, even from one\: pipes, as in a script]' \
'-t[A terminal for the command, even without one here]' \
'--tty[A terminal for the command, even without one here]' \
'-i[Accepted for docker'\''s sake\: the command'\''s input is always this one]' \
'--interactive[Accepted for docker'\''s sake\: the command'\''s input is always this one]' \
'(-t --tty -T --no-tty)-d[Leave the command running in the background and return at once]' \
'(-t --tty -T --no-tty)--detach[Leave the command running in the background and return at once]' \
'--nsenter[Accepted and ignored\: exec always enters the machine'\''s namespaces]' \
'-h[Print help]' \
'--help[Print help]' \
':machine -- Machine name:_default' \
'*::command -- Command and arguments:_default' \
&& ret=0
;;
(shell)
_arguments "${_arguments_options[@]}" : \
'-u+[User inside the machine]:USER:_default' \
'--user=[User inside the machine]:USER:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':machine -- Machine name:_default' \
&& ret=0
;;
(logs)
_arguments "${_arguments_options[@]}" : \
'-n+[Only the last N lines]:N:_default' \
'--lines=[Only the last N lines]:N:_default' \
'--since=[Only output newer than this (journalctl --since syntax, e.g. "10 min ago" or -1h)]:WHEN:_default' \
'--until=[Only output older than this (journalctl --until syntax); nothing is followed then]:WHEN:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-f[Keep printing new output (starts from the last 10 lines unless --lines says otherwise)]' \
'--follow[Keep printing new output (starts from the last 10 lines unless --lines says otherwise)]' \
'-t[Prefix every line with its timestamp]' \
'--timestamps[Prefix every line with its timestamp]' \
'--all[Also show what systemd says about the machine'\''s service (start, stop, failures)]' \
'--inside[Boot machines only\: read the machine'\''s own journal instead of its console output]' \
'-h[Print help]' \
'--help[Print help]' \
'*::machines -- Machine names; with several, every line carries its machine'\''s name:_default' \
&& ret=0
;;
(cp)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':source -- What to copy\: a local path, or MACHINE\:PATH (a local path with a colon is written ./a\:b). DIR/. copies the contents of DIR:_default' \
':destination -- Where to\: MACHINE\:PATH, or a local path. An existing directory receives the source under its own name; otherwise the copy takes this name:_default' \
&& ret=0
;;
(network)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
":: :_nspawn__subcmd__network_commands" \
"*::: :->network" \
&& ret=0

    case $state in
    (network)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-network-command-$line[1]:"
        case $line[1] in
            (up)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(ls)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'--json[Print the service'\''s answer as JSON instead of a table, for scripts]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(create)
_arguments "${_arguments_options[@]}" : \
'--subnet=[IPv4 subnet in CIDR notation (default\: the next free /24 of network_pool in nspawn.toml, 10.99.0.0/16 unless set)]:CIDR:_default' \
'*--label=[Label the network, KEY=VALUE, like docker network create --label. Repeatable]:KEY=VALUE:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'--internal[Keep the machines from anything beyond the network\: no way out, no published ports; they reach each other and the host]' \
'-h[Print help]' \
'--help[Print help]' \
':name -- Network name\: letters, digits, '\''_'\'' and '\''-'\'':_default' \
&& ret=0
;;
(inspect)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Network names ("bridge" for the default one):_default' \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Network names:_default' \
&& ret=0
;;
(prune)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-f[Do not ask]' \
'--force[Do not ask]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(prepare)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':name:_default' \
&& ret=0
;;
(publish)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':name:_default' \
&& ret=0
;;
(release)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':name:_default' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__network__subcmd__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-network-help-command-$line[1]:"
        case $line[1] in
            (up)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(ls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(create)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(inspect)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(prune)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(prepare)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(publish)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(release)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(volume)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
":: :_nspawn__subcmd__volume_commands" \
"*::: :->volume" \
&& ret=0

    case $state in
    (volume)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-volume-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'--json[Print the service'\''s answer as JSON instead of a table, for scripts]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(create)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':name -- Volume name\: letters, digits, _ . and -:_default' \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Volume names:_default' \
&& ret=0
;;
(prune)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-f[Do not ask first (without it, nothing is removed when no yes comes)]' \
'--force[Do not ask first (without it, nothing is removed when no yes comes)]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__volume__subcmd__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-volume-help-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(create)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(prune)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(secret)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
":: :_nspawn__subcmd__secret_commands" \
"*::: :->secret" \
&& ret=0

    case $state in
    (secret)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-secret-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'--json[Print the service'\''s answer as JSON instead of a table, for scripts]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(create)
_arguments "${_arguments_options[@]}" : \
'-f+[Read the content from this file instead of standard input]:FILE:_files' \
'--file=[Read the content from this file instead of standard input]:FILE:_files' \
'*-l+[Label the secret, KEY=VALUE, like docker secret create --label. Repeatable]:KEY=VALUE:_default' \
'*--label=[Label the secret, KEY=VALUE, like docker secret create --label. Repeatable]:KEY=VALUE:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':name -- Secret name\: letters, digits, _ . and -:_default' \
&& ret=0
;;
(inspect)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Secret names:_default' \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
'*::names -- Secret names:_default' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__secret__subcmd__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-secret-help-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(create)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(inspect)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(daemon)
_arguments "${_arguments_options[@]}" : \
'--idle-exit=[Exit after this many seconds without a call or a job; 0 keeps serving]:SECONDS:_default' \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'--install[Write the bus policy, the polkit actions, the activation file and the unit that make the bus start this binary on demand, then return]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(remove-after-exit)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':name:_default' \
':invocation:_default' \
&& ret=0
;;
(health-run)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':name:_default' \
&& ret=0
;;
(attach-exec)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':name:_default' \
'*::argv:_default' \
&& ret=0
;;
(completions)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
':shell -- Shell to write the completions for:(bash elvish fish powershell zsh)' \
&& ret=0
;;
(manpage)
_arguments "${_arguments_options[@]}" : \
'--registry=[Registry (hub) to use for image references without a host part]:REGISTRY:_default' \
'--ca-cert=[Extra CA certificate (PEM) to trust when talking to the registry]:FILE:_files' \
'--config=[Configuration file]:FILE:_files' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-help-command-$line[1]:"
        case $line[1] in
            (hub)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__help__subcmd__hub_commands" \
"*::: :->hub" \
&& ret=0

    case $state in
    (hub)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-help-hub-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(tags)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(search)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(login)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(logout)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(pull)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(run)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(build)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(create)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(push)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(images)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__help__subcmd__images_commands" \
"*::: :->images" \
&& ret=0

    case $state in
    (images)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-help-images-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(machines)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__help__subcmd__machines_commands" \
"*::: :->machines" \
&& ret=0

    case $state in
    (machines)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-help-machines-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(ps)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(inspect)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(start)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(stop)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(restart)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(kill)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(pause)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(unpause)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(top)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(update)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(stats)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(events)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(exec)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(shell)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(logs)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(cp)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(network)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__help__subcmd__network_commands" \
"*::: :->network" \
&& ret=0

    case $state in
    (network)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-help-network-command-$line[1]:"
        case $line[1] in
            (up)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(ls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(create)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(inspect)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(prune)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(prepare)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(publish)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(release)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(volume)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__help__subcmd__volume_commands" \
"*::: :->volume" \
&& ret=0

    case $state in
    (volume)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-help-volume-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(create)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(prune)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(secret)
_arguments "${_arguments_options[@]}" : \
":: :_nspawn__subcmd__help__subcmd__secret_commands" \
"*::: :->secret" \
&& ret=0

    case $state in
    (secret)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:nspawn-help-secret-command-$line[1]:"
        case $line[1] in
            (ls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(create)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(inspect)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(rm)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(daemon)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(remove-after-exit)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(health-run)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(attach-exec)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(completions)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(manpage)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
}

(( $+functions[_nspawn_commands] )) ||
_nspawn_commands() {
    local commands; commands=(
'hub:Query the hub (OCI registry)' \
'search:Find images on the hub and on Docker Hub, like docker search' \
'login:Keep credentials for a registry (the hub by default), like docker login' \
'logout:Forget the credentials of a registry' \
'pull:Download an image from the hub and make it available to machinectl' \
'run:Make a machine from an image and start it, like docker run -d\: a local image with that reference is reused, the hub is asked otherwise' \
'build:Build an image with mkosi and make it available locally, ready to push' \
'create:Make another machine from a local image, like docker create (no registry needed)' \
'push:Upload a local image to the hub' \
'images:Manage local images' \
'machines:Manage running machines' \
'ps:List running machines, like docker ps (same as machines ls)' \
'inspect:Everything nspawn knows about machines or images, as JSON, like docker inspect' \
'start:Boot an image as a machine' \
'stop:Power off running machines' \
'restart:Stop machines and start them again, like docker restart' \
'kill:Send a signal to running machines, like docker kill (SIGKILL stops them for good)' \
'pause:Freeze running machines, every process in them, like docker pause' \
'unpause:Let paused machines run again' \
'top:The processes of a running machine, like docker top' \
'update:Change the restart policy and limits of machines, like docker update; a running machine gets the limits at once' \
'stats:What running machines use\: CPU, memory, network, disk, processes, like docker stats' \
'events:What happens to machines, networks and volumes, as it happens, like docker events' \
'rm:Remove machines and what they alone use, like docker rm (same as images rm)' \
'exec:Run a command inside a running machine' \
'shell:Open an interactive shell inside a running machine' \
'logs:Show what a machine printed, like docker logs' \
'cp:Copy files between the host and a machine, like docker cp' \
'network:The bridge network shared by the machines' \
'volume:Manage named volumes (-v NAME\:/path), like docker volume' \
'secret:Manage secrets (--secret NAME), like docker secret\: kept encrypted for this host' \
'daemon:Serve org.nspawn on the system bus (started by the bus; see --install)' \
'remove-after-exit:run --rm\: removes a machine once its unit is down after that run' \
'health-run:From a transient unit\: runs a machine'\''s health probes until it is gone' \
'attach-exec:ExecStart of an app machine\: runs systemd-nspawn with the terminal or input an attached run hands over, or as it is' \
'completions:Print the completions for a shell, which the packages install for you' \
'manpage:Print the manual page in roff, as the packages ship it' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__attach-exec_commands] )) ||
_nspawn__subcmd__attach-exec_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn attach-exec commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__build_commands] )) ||
_nspawn__subcmd__build_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn build commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__completions_commands] )) ||
_nspawn__subcmd__completions_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn completions commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__cp_commands] )) ||
_nspawn__subcmd__cp_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn cp commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__create_commands] )) ||
_nspawn__subcmd__create_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn create commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__daemon_commands] )) ||
_nspawn__subcmd__daemon_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn daemon commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__events_commands] )) ||
_nspawn__subcmd__events_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn events commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__exec_commands] )) ||
_nspawn__subcmd__exec_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn exec commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__health-run_commands] )) ||
_nspawn__subcmd__health-run_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn health-run commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help_commands] )) ||
_nspawn__subcmd__help_commands() {
    local commands; commands=(
'hub:Query the hub (OCI registry)' \
'search:Find images on the hub and on Docker Hub, like docker search' \
'login:Keep credentials for a registry (the hub by default), like docker login' \
'logout:Forget the credentials of a registry' \
'pull:Download an image from the hub and make it available to machinectl' \
'run:Make a machine from an image and start it, like docker run -d\: a local image with that reference is reused, the hub is asked otherwise' \
'build:Build an image with mkosi and make it available locally, ready to push' \
'create:Make another machine from a local image, like docker create (no registry needed)' \
'push:Upload a local image to the hub' \
'images:Manage local images' \
'machines:Manage running machines' \
'ps:List running machines, like docker ps (same as machines ls)' \
'inspect:Everything nspawn knows about machines or images, as JSON, like docker inspect' \
'start:Boot an image as a machine' \
'stop:Power off running machines' \
'restart:Stop machines and start them again, like docker restart' \
'kill:Send a signal to running machines, like docker kill (SIGKILL stops them for good)' \
'pause:Freeze running machines, every process in them, like docker pause' \
'unpause:Let paused machines run again' \
'top:The processes of a running machine, like docker top' \
'update:Change the restart policy and limits of machines, like docker update; a running machine gets the limits at once' \
'stats:What running machines use\: CPU, memory, network, disk, processes, like docker stats' \
'events:What happens to machines, networks and volumes, as it happens, like docker events' \
'rm:Remove machines and what they alone use, like docker rm (same as images rm)' \
'exec:Run a command inside a running machine' \
'shell:Open an interactive shell inside a running machine' \
'logs:Show what a machine printed, like docker logs' \
'cp:Copy files between the host and a machine, like docker cp' \
'network:The bridge network shared by the machines' \
'volume:Manage named volumes (-v NAME\:/path), like docker volume' \
'secret:Manage secrets (--secret NAME), like docker secret\: kept encrypted for this host' \
'daemon:Serve org.nspawn on the system bus (started by the bus; see --install)' \
'remove-after-exit:run --rm\: removes a machine once its unit is down after that run' \
'health-run:From a transient unit\: runs a machine'\''s health probes until it is gone' \
'attach-exec:ExecStart of an app machine\: runs systemd-nspawn with the terminal or input an attached run hands over, or as it is' \
'completions:Print the completions for a shell, which the packages install for you' \
'manpage:Print the manual page in roff, as the packages ship it' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__attach-exec_commands] )) ||
_nspawn__subcmd__help__subcmd__attach-exec_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help attach-exec commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__build_commands] )) ||
_nspawn__subcmd__help__subcmd__build_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help build commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__completions_commands] )) ||
_nspawn__subcmd__help__subcmd__completions_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help completions commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__cp_commands] )) ||
_nspawn__subcmd__help__subcmd__cp_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help cp commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__create_commands] )) ||
_nspawn__subcmd__help__subcmd__create_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help create commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__daemon_commands] )) ||
_nspawn__subcmd__help__subcmd__daemon_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help daemon commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__events_commands] )) ||
_nspawn__subcmd__help__subcmd__events_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help events commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__exec_commands] )) ||
_nspawn__subcmd__help__subcmd__exec_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help exec commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__health-run_commands] )) ||
_nspawn__subcmd__help__subcmd__health-run_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help health-run commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__help_commands] )) ||
_nspawn__subcmd__help__subcmd__help_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__hub_commands] )) ||
_nspawn__subcmd__help__subcmd__hub_commands() {
    local commands; commands=(
'ls:List the repositories of the hub, with their tags' \
'tags:List the tags of one repository' \
    )
    _describe -t commands 'nspawn help hub commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__hub__subcmd__ls_commands] )) ||
_nspawn__subcmd__help__subcmd__hub__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help hub ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__hub__subcmd__tags_commands] )) ||
_nspawn__subcmd__help__subcmd__hub__subcmd__tags_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help hub tags commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__images_commands] )) ||
_nspawn__subcmd__help__subcmd__images_commands() {
    local commands; commands=(
'ls:List local images' \
'rm:Remove local images (and the layers nobody uses any more)' \
    )
    _describe -t commands 'nspawn help images commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__images__subcmd__ls_commands] )) ||
_nspawn__subcmd__help__subcmd__images__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help images ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__images__subcmd__rm_commands] )) ||
_nspawn__subcmd__help__subcmd__images__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help images rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__inspect_commands] )) ||
_nspawn__subcmd__help__subcmd__inspect_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help inspect commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__kill_commands] )) ||
_nspawn__subcmd__help__subcmd__kill_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help kill commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__login_commands] )) ||
_nspawn__subcmd__help__subcmd__login_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help login commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__logout_commands] )) ||
_nspawn__subcmd__help__subcmd__logout_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help logout commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__logs_commands] )) ||
_nspawn__subcmd__help__subcmd__logs_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help logs commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__machines_commands] )) ||
_nspawn__subcmd__help__subcmd__machines_commands() {
    local commands; commands=(
'ls:List running machines' \
    )
    _describe -t commands 'nspawn help machines commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__machines__subcmd__ls_commands] )) ||
_nspawn__subcmd__help__subcmd__machines__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help machines ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__manpage_commands] )) ||
_nspawn__subcmd__help__subcmd__manpage_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help manpage commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__network_commands] )) ||
_nspawn__subcmd__help__subcmd__network_commands() {
    local commands; commands=(
'up:Bring up every network'\''s bridge with its NAT rules (start does it for its machine'\''s network too; useful at boot)' \
'ls:List the networks\: the default one (bridge) and those made with network create' \
'create:Make a network of its own for some machines, like docker network create\: they reach each other by name, and machines on other networks do not reach them' \
'inspect:The networks with their machines, addresses and published ports, as JSON' \
'rm:Remove networks no machine uses, with their bridges and rules' \
'prune:Remove every network no machine uses' \
'prepare:Unit hook (ExecStartPre)\: prepare a machine'\''s network before it starts' \
'publish:Unit hook (ExecStartPost)\: publish a machine'\''s ports once it runs' \
'release:Unit hook (ExecStopPost)\: drop what a machine'\''s network left behind' \
    )
    _describe -t commands 'nspawn help network commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__network__subcmd__create_commands] )) ||
_nspawn__subcmd__help__subcmd__network__subcmd__create_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help network create commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__network__subcmd__inspect_commands] )) ||
_nspawn__subcmd__help__subcmd__network__subcmd__inspect_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help network inspect commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__network__subcmd__ls_commands] )) ||
_nspawn__subcmd__help__subcmd__network__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help network ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__network__subcmd__prepare_commands] )) ||
_nspawn__subcmd__help__subcmd__network__subcmd__prepare_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help network prepare commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__network__subcmd__prune_commands] )) ||
_nspawn__subcmd__help__subcmd__network__subcmd__prune_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help network prune commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__network__subcmd__publish_commands] )) ||
_nspawn__subcmd__help__subcmd__network__subcmd__publish_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help network publish commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__network__subcmd__release_commands] )) ||
_nspawn__subcmd__help__subcmd__network__subcmd__release_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help network release commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__network__subcmd__rm_commands] )) ||
_nspawn__subcmd__help__subcmd__network__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help network rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__network__subcmd__up_commands] )) ||
_nspawn__subcmd__help__subcmd__network__subcmd__up_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help network up commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__pause_commands] )) ||
_nspawn__subcmd__help__subcmd__pause_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help pause commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__ps_commands] )) ||
_nspawn__subcmd__help__subcmd__ps_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help ps commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__pull_commands] )) ||
_nspawn__subcmd__help__subcmd__pull_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help pull commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__push_commands] )) ||
_nspawn__subcmd__help__subcmd__push_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help push commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__remove-after-exit_commands] )) ||
_nspawn__subcmd__help__subcmd__remove-after-exit_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help remove-after-exit commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__restart_commands] )) ||
_nspawn__subcmd__help__subcmd__restart_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help restart commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__rm_commands] )) ||
_nspawn__subcmd__help__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__run_commands] )) ||
_nspawn__subcmd__help__subcmd__run_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help run commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__search_commands] )) ||
_nspawn__subcmd__help__subcmd__search_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help search commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__secret_commands] )) ||
_nspawn__subcmd__help__subcmd__secret_commands() {
    local commands; commands=(
'ls:List the secrets with the machines that take them; never their content' \
'create:Keep a secret, read from a file or from standard input, encrypted for this host (systemd-creds\: the TPM2 where there is one, the host'\''s key otherwise)' \
'inspect:What nspawn keeps about secrets, as JSON\: never their content' \
'rm:Remove secrets no machine takes' \
    )
    _describe -t commands 'nspawn help secret commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__secret__subcmd__create_commands] )) ||
_nspawn__subcmd__help__subcmd__secret__subcmd__create_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help secret create commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__secret__subcmd__inspect_commands] )) ||
_nspawn__subcmd__help__subcmd__secret__subcmd__inspect_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help secret inspect commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__secret__subcmd__ls_commands] )) ||
_nspawn__subcmd__help__subcmd__secret__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help secret ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__secret__subcmd__rm_commands] )) ||
_nspawn__subcmd__help__subcmd__secret__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help secret rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__shell_commands] )) ||
_nspawn__subcmd__help__subcmd__shell_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help shell commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__start_commands] )) ||
_nspawn__subcmd__help__subcmd__start_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help start commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__stats_commands] )) ||
_nspawn__subcmd__help__subcmd__stats_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help stats commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__stop_commands] )) ||
_nspawn__subcmd__help__subcmd__stop_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help stop commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__top_commands] )) ||
_nspawn__subcmd__help__subcmd__top_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help top commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__unpause_commands] )) ||
_nspawn__subcmd__help__subcmd__unpause_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help unpause commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__update_commands] )) ||
_nspawn__subcmd__help__subcmd__update_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help update commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__volume_commands] )) ||
_nspawn__subcmd__help__subcmd__volume_commands() {
    local commands; commands=(
'ls:List named volumes with the machines that use them' \
'create:Make a named volume ahead of its first use (start makes it otherwise)' \
'rm:Remove named volumes no machine uses' \
'prune:Remove every named volume no machine uses, once a yes comes on standard input' \
    )
    _describe -t commands 'nspawn help volume commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__volume__subcmd__create_commands] )) ||
_nspawn__subcmd__help__subcmd__volume__subcmd__create_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help volume create commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__volume__subcmd__ls_commands] )) ||
_nspawn__subcmd__help__subcmd__volume__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help volume ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__volume__subcmd__prune_commands] )) ||
_nspawn__subcmd__help__subcmd__volume__subcmd__prune_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help volume prune commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__help__subcmd__volume__subcmd__rm_commands] )) ||
_nspawn__subcmd__help__subcmd__volume__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn help volume rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__hub_commands] )) ||
_nspawn__subcmd__hub_commands() {
    local commands; commands=(
'ls:List the repositories of the hub, with their tags' \
'tags:List the tags of one repository' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn hub commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__hub__subcmd__help_commands] )) ||
_nspawn__subcmd__hub__subcmd__help_commands() {
    local commands; commands=(
'ls:List the repositories of the hub, with their tags' \
'tags:List the tags of one repository' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn hub help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__hub__subcmd__help__subcmd__help_commands] )) ||
_nspawn__subcmd__hub__subcmd__help__subcmd__help_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn hub help help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__hub__subcmd__help__subcmd__ls_commands] )) ||
_nspawn__subcmd__hub__subcmd__help__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn hub help ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__hub__subcmd__help__subcmd__tags_commands] )) ||
_nspawn__subcmd__hub__subcmd__help__subcmd__tags_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn hub help tags commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__hub__subcmd__ls_commands] )) ||
_nspawn__subcmd__hub__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn hub ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__hub__subcmd__tags_commands] )) ||
_nspawn__subcmd__hub__subcmd__tags_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn hub tags commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__images_commands] )) ||
_nspawn__subcmd__images_commands() {
    local commands; commands=(
'ls:List local images' \
'rm:Remove local images (and the layers nobody uses any more)' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn images commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__images__subcmd__help_commands] )) ||
_nspawn__subcmd__images__subcmd__help_commands() {
    local commands; commands=(
'ls:List local images' \
'rm:Remove local images (and the layers nobody uses any more)' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn images help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__images__subcmd__help__subcmd__help_commands] )) ||
_nspawn__subcmd__images__subcmd__help__subcmd__help_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn images help help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__images__subcmd__help__subcmd__ls_commands] )) ||
_nspawn__subcmd__images__subcmd__help__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn images help ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__images__subcmd__help__subcmd__rm_commands] )) ||
_nspawn__subcmd__images__subcmd__help__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn images help rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__images__subcmd__ls_commands] )) ||
_nspawn__subcmd__images__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn images ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__images__subcmd__rm_commands] )) ||
_nspawn__subcmd__images__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn images rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__inspect_commands] )) ||
_nspawn__subcmd__inspect_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn inspect commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__kill_commands] )) ||
_nspawn__subcmd__kill_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn kill commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__login_commands] )) ||
_nspawn__subcmd__login_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn login commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__logout_commands] )) ||
_nspawn__subcmd__logout_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn logout commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__logs_commands] )) ||
_nspawn__subcmd__logs_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn logs commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__machines_commands] )) ||
_nspawn__subcmd__machines_commands() {
    local commands; commands=(
'ls:List running machines' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn machines commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__machines__subcmd__help_commands] )) ||
_nspawn__subcmd__machines__subcmd__help_commands() {
    local commands; commands=(
'ls:List running machines' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn machines help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__machines__subcmd__help__subcmd__help_commands] )) ||
_nspawn__subcmd__machines__subcmd__help__subcmd__help_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn machines help help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__machines__subcmd__help__subcmd__ls_commands] )) ||
_nspawn__subcmd__machines__subcmd__help__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn machines help ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__machines__subcmd__ls_commands] )) ||
_nspawn__subcmd__machines__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn machines ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__manpage_commands] )) ||
_nspawn__subcmd__manpage_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn manpage commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network_commands] )) ||
_nspawn__subcmd__network_commands() {
    local commands; commands=(
'up:Bring up every network'\''s bridge with its NAT rules (start does it for its machine'\''s network too; useful at boot)' \
'ls:List the networks\: the default one (bridge) and those made with network create' \
'create:Make a network of its own for some machines, like docker network create\: they reach each other by name, and machines on other networks do not reach them' \
'inspect:The networks with their machines, addresses and published ports, as JSON' \
'rm:Remove networks no machine uses, with their bridges and rules' \
'prune:Remove every network no machine uses' \
'prepare:Unit hook (ExecStartPre)\: prepare a machine'\''s network before it starts' \
'publish:Unit hook (ExecStartPost)\: publish a machine'\''s ports once it runs' \
'release:Unit hook (ExecStopPost)\: drop what a machine'\''s network left behind' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn network commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__create_commands] )) ||
_nspawn__subcmd__network__subcmd__create_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network create commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__help_commands] )) ||
_nspawn__subcmd__network__subcmd__help_commands() {
    local commands; commands=(
'up:Bring up every network'\''s bridge with its NAT rules (start does it for its machine'\''s network too; useful at boot)' \
'ls:List the networks\: the default one (bridge) and those made with network create' \
'create:Make a network of its own for some machines, like docker network create\: they reach each other by name, and machines on other networks do not reach them' \
'inspect:The networks with their machines, addresses and published ports, as JSON' \
'rm:Remove networks no machine uses, with their bridges and rules' \
'prune:Remove every network no machine uses' \
'prepare:Unit hook (ExecStartPre)\: prepare a machine'\''s network before it starts' \
'publish:Unit hook (ExecStartPost)\: publish a machine'\''s ports once it runs' \
'release:Unit hook (ExecStopPost)\: drop what a machine'\''s network left behind' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn network help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__help__subcmd__create_commands] )) ||
_nspawn__subcmd__network__subcmd__help__subcmd__create_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network help create commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__help__subcmd__help_commands] )) ||
_nspawn__subcmd__network__subcmd__help__subcmd__help_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network help help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__help__subcmd__inspect_commands] )) ||
_nspawn__subcmd__network__subcmd__help__subcmd__inspect_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network help inspect commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__help__subcmd__ls_commands] )) ||
_nspawn__subcmd__network__subcmd__help__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network help ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__help__subcmd__prepare_commands] )) ||
_nspawn__subcmd__network__subcmd__help__subcmd__prepare_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network help prepare commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__help__subcmd__prune_commands] )) ||
_nspawn__subcmd__network__subcmd__help__subcmd__prune_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network help prune commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__help__subcmd__publish_commands] )) ||
_nspawn__subcmd__network__subcmd__help__subcmd__publish_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network help publish commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__help__subcmd__release_commands] )) ||
_nspawn__subcmd__network__subcmd__help__subcmd__release_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network help release commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__help__subcmd__rm_commands] )) ||
_nspawn__subcmd__network__subcmd__help__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network help rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__help__subcmd__up_commands] )) ||
_nspawn__subcmd__network__subcmd__help__subcmd__up_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network help up commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__inspect_commands] )) ||
_nspawn__subcmd__network__subcmd__inspect_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network inspect commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__ls_commands] )) ||
_nspawn__subcmd__network__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__prepare_commands] )) ||
_nspawn__subcmd__network__subcmd__prepare_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network prepare commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__prune_commands] )) ||
_nspawn__subcmd__network__subcmd__prune_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network prune commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__publish_commands] )) ||
_nspawn__subcmd__network__subcmd__publish_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network publish commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__release_commands] )) ||
_nspawn__subcmd__network__subcmd__release_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network release commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__rm_commands] )) ||
_nspawn__subcmd__network__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__network__subcmd__up_commands] )) ||
_nspawn__subcmd__network__subcmd__up_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn network up commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__pause_commands] )) ||
_nspawn__subcmd__pause_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn pause commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__ps_commands] )) ||
_nspawn__subcmd__ps_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn ps commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__pull_commands] )) ||
_nspawn__subcmd__pull_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn pull commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__push_commands] )) ||
_nspawn__subcmd__push_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn push commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__remove-after-exit_commands] )) ||
_nspawn__subcmd__remove-after-exit_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn remove-after-exit commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__restart_commands] )) ||
_nspawn__subcmd__restart_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn restart commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__rm_commands] )) ||
_nspawn__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__run_commands] )) ||
_nspawn__subcmd__run_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn run commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__search_commands] )) ||
_nspawn__subcmd__search_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn search commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__secret_commands] )) ||
_nspawn__subcmd__secret_commands() {
    local commands; commands=(
'ls:List the secrets with the machines that take them; never their content' \
'create:Keep a secret, read from a file or from standard input, encrypted for this host (systemd-creds\: the TPM2 where there is one, the host'\''s key otherwise)' \
'inspect:What nspawn keeps about secrets, as JSON\: never their content' \
'rm:Remove secrets no machine takes' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn secret commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__secret__subcmd__create_commands] )) ||
_nspawn__subcmd__secret__subcmd__create_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn secret create commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__secret__subcmd__help_commands] )) ||
_nspawn__subcmd__secret__subcmd__help_commands() {
    local commands; commands=(
'ls:List the secrets with the machines that take them; never their content' \
'create:Keep a secret, read from a file or from standard input, encrypted for this host (systemd-creds\: the TPM2 where there is one, the host'\''s key otherwise)' \
'inspect:What nspawn keeps about secrets, as JSON\: never their content' \
'rm:Remove secrets no machine takes' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn secret help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__secret__subcmd__help__subcmd__create_commands] )) ||
_nspawn__subcmd__secret__subcmd__help__subcmd__create_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn secret help create commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__secret__subcmd__help__subcmd__help_commands] )) ||
_nspawn__subcmd__secret__subcmd__help__subcmd__help_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn secret help help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__secret__subcmd__help__subcmd__inspect_commands] )) ||
_nspawn__subcmd__secret__subcmd__help__subcmd__inspect_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn secret help inspect commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__secret__subcmd__help__subcmd__ls_commands] )) ||
_nspawn__subcmd__secret__subcmd__help__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn secret help ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__secret__subcmd__help__subcmd__rm_commands] )) ||
_nspawn__subcmd__secret__subcmd__help__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn secret help rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__secret__subcmd__inspect_commands] )) ||
_nspawn__subcmd__secret__subcmd__inspect_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn secret inspect commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__secret__subcmd__ls_commands] )) ||
_nspawn__subcmd__secret__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn secret ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__secret__subcmd__rm_commands] )) ||
_nspawn__subcmd__secret__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn secret rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__shell_commands] )) ||
_nspawn__subcmd__shell_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn shell commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__start_commands] )) ||
_nspawn__subcmd__start_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn start commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__stats_commands] )) ||
_nspawn__subcmd__stats_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn stats commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__stop_commands] )) ||
_nspawn__subcmd__stop_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn stop commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__top_commands] )) ||
_nspawn__subcmd__top_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn top commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__unpause_commands] )) ||
_nspawn__subcmd__unpause_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn unpause commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__update_commands] )) ||
_nspawn__subcmd__update_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn update commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__volume_commands] )) ||
_nspawn__subcmd__volume_commands() {
    local commands; commands=(
'ls:List named volumes with the machines that use them' \
'create:Make a named volume ahead of its first use (start makes it otherwise)' \
'rm:Remove named volumes no machine uses' \
'prune:Remove every named volume no machine uses, once a yes comes on standard input' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn volume commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__volume__subcmd__create_commands] )) ||
_nspawn__subcmd__volume__subcmd__create_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn volume create commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__volume__subcmd__help_commands] )) ||
_nspawn__subcmd__volume__subcmd__help_commands() {
    local commands; commands=(
'ls:List named volumes with the machines that use them' \
'create:Make a named volume ahead of its first use (start makes it otherwise)' \
'rm:Remove named volumes no machine uses' \
'prune:Remove every named volume no machine uses, once a yes comes on standard input' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'nspawn volume help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__volume__subcmd__help__subcmd__create_commands] )) ||
_nspawn__subcmd__volume__subcmd__help__subcmd__create_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn volume help create commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__volume__subcmd__help__subcmd__help_commands] )) ||
_nspawn__subcmd__volume__subcmd__help__subcmd__help_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn volume help help commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__volume__subcmd__help__subcmd__ls_commands] )) ||
_nspawn__subcmd__volume__subcmd__help__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn volume help ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__volume__subcmd__help__subcmd__prune_commands] )) ||
_nspawn__subcmd__volume__subcmd__help__subcmd__prune_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn volume help prune commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__volume__subcmd__help__subcmd__rm_commands] )) ||
_nspawn__subcmd__volume__subcmd__help__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn volume help rm commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__volume__subcmd__ls_commands] )) ||
_nspawn__subcmd__volume__subcmd__ls_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn volume ls commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__volume__subcmd__prune_commands] )) ||
_nspawn__subcmd__volume__subcmd__prune_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn volume prune commands' commands "$@"
}
(( $+functions[_nspawn__subcmd__volume__subcmd__rm_commands] )) ||
_nspawn__subcmd__volume__subcmd__rm_commands() {
    local commands; commands=()
    _describe -t commands 'nspawn volume rm commands' commands "$@"
}

if [ "$funcstack[1]" = "_nspawn" ]; then
    _nspawn "$@"
else
    compdef _nspawn nspawn
fi
