summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2015-09-16 22:18:48 +0200
committerMatthias Beyer <mail@beyermatthias.de>2015-09-16 22:18:48 +0200
commita38d9d1ca8a11a10b73a1034730248355787025d (patch)
treea5a9da1c088db3c3e76c6f151dd91e9539408402 /nixos
parent937741c9f3e5bbfddb751a39a19344995af3629e (diff)
downloadnixlib-a38d9d1ca8a11a10b73a1034730248355787025d.tar
nixlib-a38d9d1ca8a11a10b73a1034730248355787025d.tar.gz
nixlib-a38d9d1ca8a11a10b73a1034730248355787025d.tar.bz2
nixlib-a38d9d1ca8a11a10b73a1034730248355787025d.tar.lz
nixlib-a38d9d1ca8a11a10b73a1034730248355787025d.tar.xz
nixlib-a38d9d1ca8a11a10b73a1034730248355787025d.tar.zst
nixlib-a38d9d1ca8a11a10b73a1034730248355787025d.zip
nixos-container: Add bash completion for "nixos-container" command
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/virtualisation/containers.nix6
-rw-r--r--nixos/modules/virtualisation/nixos-container-completion.sh33
2 files changed, 39 insertions, 0 deletions
diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix
index 8f881d760706..8d12c5a57fd9 100644
--- a/nixos/modules/virtualisation/containers.nix
+++ b/nixos/modules/virtualisation/containers.nix
@@ -12,6 +12,12 @@ let
     perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl";
     su = "${pkgs.shadow.su}/bin/su";
     inherit (pkgs) utillinux;
+
+    postInstall = ''
+      t=$out/etc/bash_completion.d
+      mkdir -p $t
+      cp ${./nixos-container-completion.sh} $t/nixos-container
+    '';
   };
 
   # The container's init script, a small wrapper around the regular
diff --git a/nixos/modules/virtualisation/nixos-container-completion.sh b/nixos/modules/virtualisation/nixos-container-completion.sh
new file mode 100644
index 000000000000..0fe8ab811a17
--- /dev/null
+++ b/nixos/modules/virtualisation/nixos-container-completion.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+
+_nixos-container() {
+    local cur prev opts
+    COMPREPLY=()
+    cur="${COMP_WORDS[COMP_CWORD]}"
+    prev="${COMP_WORDS[COMP_CWORD-1]}"
+    opts="list create destroy start stop status update login root-login run show-ip show-host-key"
+    startstop_opts=$(nixos-container list)
+    update_opts="--config"
+
+    if [[ "$prev" == "nixos-container" ]]
+    then
+        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+        return 0
+    fi
+
+    if [[ $(echo "$opts" | grep "$prev") ]]
+    then
+        if [[ "$prev" == "start" || "$prev" == "stop" ]]
+        then
+            COMPREPLY=( $(compgen -W "${startstop_opts}" -- ${cur}) )
+            return 0
+        elif [[ "$prev" == "update" ]]
+        then
+            COMPREPLY=( $(compgen -W "${update_opts}" -- ${cur}) )
+            return 0
+        fi
+    fi
+}
+
+complete -F _nixos-container nixos-container
+