85 lines
1.9 KiB
Nix
85 lines
1.9 KiB
Nix
{ ... }: {
|
|
text = ''
|
|
# Attach/create container box in current directory with specified name.
|
|
# By default uses current dir name.
|
|
# Usage: ca [NAME]
|
|
function ca() {
|
|
local name="''${1}"
|
|
|
|
# Set default name.
|
|
# [[ "''${name}" = "" ]] && name="main"
|
|
[[ "''${name}" = "" ]] && name=$(parse_alnum "''${PWD##*/}")
|
|
|
|
# Append box prefix.
|
|
name="box-''${name}"
|
|
|
|
# Create container.
|
|
docker run \
|
|
--privileged \
|
|
-d -it \
|
|
-h "''${HOSTNAME}''${name#box}" --name "''${name}" \
|
|
--workdir /data \
|
|
-e XDG_RUNTIME_DIR=/tmp \
|
|
-e WAYLAND_DISPLAY=''${WAYLAND_DISPLAY} \
|
|
-v ''${XDG_RUNTIME_DIR}/''${WAYLAND_DISPLAY}:/tmp/''${WAYLAND_DISPLAY} \
|
|
-v ''${PWD}:/data \
|
|
-v ''${HOME}:/root \
|
|
debian:latest bash -c bash &> /dev/null
|
|
|
|
# Attempt to start container.
|
|
docker start "''${name}" &> /dev/null
|
|
|
|
# Attach to running container.
|
|
docker attach "''${name}"
|
|
}
|
|
|
|
# Remove container box with specified name.
|
|
# By default uses current dir name.
|
|
# Usage: ck [NAME]
|
|
function ck() {
|
|
local name="''${1}"
|
|
|
|
# Set default name.
|
|
[[ "''${name}" = "" ]] && name=$(parse_alnum "''${PWD##*/}")
|
|
|
|
# Append box prefix.
|
|
name="box-''${name}"
|
|
|
|
# Kill container.
|
|
docker kill "''${name}" &> /dev/null
|
|
docker rm "''${name}" &> /dev/null
|
|
}
|
|
|
|
# Remove all container boxes.
|
|
function cka() {
|
|
local IFS=$'\n'
|
|
local boxes=$(_get_boxes)
|
|
|
|
for box in ''${boxes[@]}; do
|
|
ck "''${box}"
|
|
done
|
|
}
|
|
|
|
# List all container boxes.
|
|
function cl() {
|
|
_get_boxes
|
|
}
|
|
|
|
# Print all boxes.
|
|
function _get_boxes() {
|
|
local IFS=$'\n'
|
|
local boxes=$(docker ps -a | grep "box-" | sed -e "s/.*box-//")
|
|
|
|
[[ "''${boxes[@]}" != "" ]] && echo "''${boxes[@]}" || true
|
|
}
|
|
|
|
# Autocomplete with boxes.
|
|
function _comp_get_boxes() {
|
|
local IFS=$'\n'
|
|
_autocomplete_first $(_get_boxes)
|
|
}
|
|
|
|
complete -F _comp_get_boxes ca ck
|
|
'';
|
|
}
|