distro specific fixes
[distro-setup] / brc2
diff --git a/brc2 b/brc2
index f9acadade2fb7414038b7efb6fbc797a539992b9..fe5d60fce42c9a8fb1a7b567ed0a2bce0517f77e 100644 (file)
--- a/brc2
+++ b/brc2
@@ -2037,12 +2037,12 @@ apache-strip() {
   for f in $(find . -type f -maxdepth 1); do if head -n1 "$f"| grep -E '^#!/bin/bash\b' &>/dev/null; then { head -n 20 $f | tac | sed '/^# limitations under the License.$/,/^# Copyright.*Ian Kelling$/d' | tac; tail -n+21 $f; } |sponge $f; fi ; done
 }
 
-chrome() {
+chro() {
   if type -p chromium &>/dev/null; then
     cmd=chromium
   else
     cd /
-    cmd="schroot -c bullseye chromium"
+    cmd="schroot -c bookworm chromium"
     CHROMIUM_FLAGS='--enable-remote-extensions' $cmd & r
   fi
 }
@@ -3033,40 +3033,59 @@ EOF
   )
 }
 
+# sudo maybe
+#
+# passes on any initial -* args to sudo.
+sudm() {
+  local arg
+  local -a sudo_opts
+  for arg; do
+    if [[ $arg == -* ]]; then
+      sudo_opts+=("$arg")
+      shift
+    else
+      break
+    fi
+  done
+  if [[ $EUID == 0 ]]; then
+    "$@"
+  else
+    sudo "${sudo_opts[@]}" "$@"
+  fi
+}
 
-mns() { # mount namespace
+mns-setup() {
+  local ns
   ns=$1
-  shift
-  s mkdir -p /root/mount_namespaces
-  if ! sudo mountpoint /root/mount_namespaces >/dev/null; then
-    m sudo mount --bind /root/mount_namespaces /root/mount_namespaces
+  sudm mkdir -p /root/mount_namespaces
+  if ! sudm mountpoint /root/mount_namespaces >/dev/null; then
+    m sudm mount --bind /root/mount_namespaces /root/mount_namespaces
   fi
-  m sudo mount --make-private /root/mount_namespaces
-  if [[ ! -e /root/mount_namespaces/$ns ]]; then
-    m sudo touch /root/mount_namespaces/$ns
+  m sudm mount --make-private /root/mount_namespaces
+  if ! sudm test -e /root/mount_namespaces/$ns; then
+    m sudm touch /root/mount_namespaces/$ns
   fi
-  if ! sudo mountpoint /root/mount_namespaces/$ns >/dev/null; then
-    m sudo unshare --propagation slave --mount=/root/mount_namespaces/$ns /bin/true
+  if ! sudm mountpoint /root/mount_namespaces/$ns >/dev/null; then
+    m sudm unshare --propagation slave --mount=/root/mount_namespaces/$ns /bin/true
   fi
-  m sudo -E /usr/bin/nsenter --mount=/root/mount_namespaces/$ns "$@"
+
+}
+
+mns() { # mount namespace
+  local ns
+  ns=$1
+  shift
+  mns-setup $ns
+  m sudm -E /usr/bin/nsenter --mount=/root/mount_namespaces/$ns "$@"
 }
 
 mnsd() { # mount namespace + systemd namespace
+  local ns unit
   ns=$1
   unit=$2
   shift 2
 
-  s mkdir -p /root/mount_namespaces
-  if ! sudo mountpoint /root/mount_namespaces >/dev/null; then
-    m sudo mount --bind /root/mount_namespaces /root/mount_namespaces
-  fi
-  m sudo mount --make-private /root/mount_namespaces
-  if [[ ! -e /root/mount_namespaces/$ns ]]; then
-    m sudo touch /root/mount_namespaces/$ns
-  fi
-  if ! sudo mountpoint /root/mount_namespaces/$ns >/dev/null; then
-    m sudo unshare --propagation slave --mount=/root/mount_namespaces/$ns /bin/true
-  fi
+  mns-setup $ns
 
   pid=$(servicepid $unit)
   tmpf=$(mktemp --tmpdir $unit.XXXXXXXXXX)
@@ -3272,6 +3291,11 @@ mpvd() {
 mpva() {
   mpv --profile=a "$@";
 }
+# mpv for testing video quality, dont scale.
+mpvt() {
+  mpv --video-unscaled "$@";
+  }
+
 # mpv all media files in . or $1
 mpvm() {
   local -a extensions arg
@@ -4104,6 +4128,25 @@ sdncmdroot() { # systemd namespace root command
 }
 
 
+# systemd network namespace (not mount) cmd
+# usage: UNIT CMD...
+sdnncmd() {
+  local unit pid tmpf
+  if (( $# <= 1 )); then
+    echo $0: error wrong number of args >&2
+    return 1
+  fi
+  unit=$1
+  shift
+  pid=$(servicepid $unit)
+  tmpf=$(mktemp --tmpdir $unit.XXXXXXXXXX)
+  export -p >$tmpf
+  printf "%s " "${@@Q}" >>$tmpf
+  echo >>$tmpf
+  m sudo nsenter -t $pid -n sudo -u $USER -i bash -c ". $tmpf & rm $tmpf"
+}
+
+
 mailnnbash() {
   sdnbash mailnn
 }
@@ -4945,6 +4988,13 @@ ife() {
   fi
 }
 
+# decrease filesize without losing any noticeable quality. inspired from
+# https://gist.github.com/BlueSwordM/86dfcb6ab38a93a524472a0cbe4c4100
+ffsencode() {
+  in="$1"
+  out="$2"
+  ffmpeg -i "$in" -c:v libsvtav1 -crf 60 -preset 6 -g 60 -svtav1-params tune=0:enable-overlays=1:scd=1:scm=1 -pix_fmt yuv420p10le -c:a copy "$out"
+}
 
 export BASEFILE_DIR=/a/bin/fai-basefiles