bunch of new stuff, a few fixes
[distro-setup] / distro-end
index e07ab789b46583fdccb294eba1b7f679df651464..f2eef439a8dc74c97e3e3f99aaa4be6754e98f7a 100755 (executable)
@@ -90,7 +90,6 @@ EOF
 ########### begin section including vps ################
 pi ${p2[@]}
 
-
 conflink
 
 sudo rm -fv
@@ -346,6 +345,7 @@ EOF
     # for ziva
     #p install --no-install-recommends minetest/buster libleveldb1d/buster libncursesw6/buster libtinfo6/buster
     doupdate=false
+    # shellcheck disable=SC2043 # in case we want more than 1 in the loop later.
     for n in bullseye; do
       f=/etc/apt/sources.list.d/$n.list
       t=$(mktemp)
@@ -421,7 +421,7 @@ deb http://us.archive.ubuntu.com/ubuntu/ focal-updates main universe
 deb http://us.archive.ubuntu.com/ubuntu/ focal-security main universe
 EOF
     if ! diff -q $t $f; then
-      sudo dd if=$t of=$f 2>/dev/null
+      sudo dd if=$t of=$f status=none
       p update
     fi
 
@@ -450,7 +450,7 @@ deb http://mirror.fsf.org/trisquel/ nabia-backports main
 deb-src http://mirror.fsf.org/trisquel/ nabia-backports main
 EOF
     if ! diff -q $t $f; then
-      sudo dd if=$t of=$f 2>/dev/null
+      sudo dd if=$t of=$f status=none
       p update
     fi
 
@@ -495,7 +495,7 @@ deb http://mirror.fsf.org/trisquel/ aramo-backports main
 deb-src http://mirror.fsf.org/trisquel/ aramo-backports main
 EOF
     if ! diff -q $t $f; then
-      sudo dd if=$t of=$f 2>/dev/null
+      sudo dd if=$t of=$f status=none
       p update
     fi
 
@@ -569,15 +569,27 @@ esac
 ##### begin automatic upgrades (after checkrestart has been installed) ####
 # if apt-config-auto-update is installed,
 # it also has similar config, in a file 10something,
-# but i think his overrides it since its higher number.
+# but i think this overrides it since its higher number.
 # This file was part of the automatic-updates package,
-# and it has a configu option to not get new package lists,
+# and it has a config option to not get new package lists,
 # which seems pretty stupid to me, you cant actually upgrade
 # anything if you dont have the new package list.
 sd /etc/apt/apt.conf.d/20auto-upgrades <<'EOF'
+# note: man apt.conf says
+# /usr/share/doc/apt/examples/configure-index.gz is a configuration file showing
+# example values for all possible options.
+# but that is a incorrect.
+# Periodic and other options are only documented in
+# /usr/lib/apt/apt.systemd.daily
+# That filename can be found through poking around in apt daily cronjob.
 APT::Periodic::Update-Package-Lists "1";
 APT::Periodic::Download-Upgradeable-Packages "1";
-APT::Periodic::AutocleanInterval "7";
+# 0 means disabled. I used to set this to 7, however, trisquel doesn't
+# have an archive of old package versions, so I want to
+# keep around old versions so I can easily downgrade.
+APT::Periodic::AutocleanInterval "0";
+# daily expire old files /var/cache/apt if it gets above this MB
+APT::Periodic::MaxSize "50000";
 APT::Periodic::Unattended-Upgrade "1";
 EOF
 
@@ -619,8 +631,7 @@ case $HOSTNAME in
       dnsb8
     fi
 
-    pi prometheus-node-exporter
-    /a/bin/buildscripts/prom-node-exporter -l
+    s /c/roles/prom_export/files/simple/usr/local/bin/fsf-install-node-exporter -l 127.0.0.1
 
     # ex for exporter
     web-conf -p 9101 -f 9100 - apache2 ${HOSTNAME}ex.b8.nz <<'EOF'
@@ -651,6 +662,22 @@ EOF
     ;;
   li)
 
+    p build-dep eggdrop
+    if [[ ! -L ~/eggdrop/eggdrop ]]; then
+      cd
+      git clone https://github.com/eggheads/eggdrop eggdrop-src
+      cd eggdrop-src
+      ./configure
+      make config
+      make
+      make install
+    fi
+
+    # dunno if this is really needed. it was part of the documented eggdrop systemd install script
+    sudo loginctl enable-linger
+    systemctl --user enable fsysbot
+    systemctl --user start fsysbot
+
     m /a/h/setup.sh iankelling.org
 
     # start mumble only when im going to use it, since i dont use it much
@@ -672,53 +699,36 @@ EOF
 client-to-client
 EOF
 
-    # sullivan d8
-    sd /etc/openvpn/client-config-hole/sd8 <<'EOF'
-ifconfig-push 10.5.5.41 255.255.255.0
-EOF
-    # hsieh d8
-    sd /etc/openvpn/client-config-hole/hd8 <<'EOF'
-ifconfig-push 10.5.5.42 255.255.255.0
-EOF
 
-    sd /etc/openvpn/client-config-hole/onep9 <<'EOF'
-ifconfig-push 10.5.5.14 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/bo <<'EOF'
-ifconfig-push 10.5.5.13 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/sy <<'EOF'
-ifconfig-push 10.5.5.12 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/kw <<'EOF'
-ifconfig-push 10.5.5.9 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/x3 <<'EOF'
-ifconfig-push 10.5.5.8 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/x2 <<'EOF'
-ifconfig-push 10.5.5.7 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/wclient <<'EOF'
-ifconfig-push 10.5.5.6 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/frodo <<'EOF'
-ifconfig-push 10.5.5.5 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/amy <<'EOF'
-ifconfig-push 10.5.5.3 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/kd <<'EOF'
-ifconfig-push 10.5.5.2 255.255.255.0
+    ngset
+    files=(/etc/openvpn/client-config-hole/*)
+    if (( ${#files[@]} >= 1 )); then
+      rm -f ${files[@]}
+    fi
+    ngreset
+    for host in ${!vpn_ips[@]}; do
+      sd /etc/openvpn/client-config-hole/$host <<EOF
+ifconfig-push 10.5.5.${vpn_ips[$host]} 255.255.255.0
 EOF
+    done
+
 
-    # for adding to current system:
-    #vpn-mk-client-cert -s "" -n hole 72.14.176.105
-    # adding to remove system 107,
-    #vpn-mk-client-cert -s "" -n hole -c 10.2.0.107 -b hd8 iankelling.org
+    # for adding cert to system with /p
     #
-    # for wireguard hole vpn
+    # host=frodo
+    #mkc /p/c/machine_specific/$host/filesystem/etc/openvpn/client
+    #vpn-mk-client-cert -b $host -n hole -r  iankelling.org
+    #s chown -R iank:iank .
+    #
+    # example of adding to remote system 107,
+    # vpn-mk-client-cert -n hole -c 10.2.0.107 -b hd8 iankelling.org
+    #
+    # for wireguard hole vpn, use function:
     # wghole
+    # eg:
+    # wghole bo 28
+    # if it is going to want to connect to transmission-daemon on ok
+    # wghole bo 28 10.174.2.2/32
 
     # requested from linode via a support ticket.
     # https://www.linode.com/docs/networking/an-overview-of-ipv6-on-linode/
@@ -887,6 +897,16 @@ EOF
     end
     ;;
 esac
+
+case $HOSTNAME in
+  bk)
+    pi icecast2
+    # todo, save the config
+    /etc/cron.daily/stream-cert
+    web-conf -c /etc/cert-live.fsf.org -p 443 -f 8000 apache2 live.fsf.org
+    ;;
+esac
+
 ###### end website setup
 
 ########### end section including li/lj ###############
@@ -1068,8 +1088,25 @@ esac
 # way to install suggests even if the main package is already
 # installed. reinstall doesn't work, uninstalling can cause removing
 # dependent packages.
+# shellcheck disable=SC2046 # word splitting is intended
 pi ${pall[@]} $(apt-cache search ruby[.0-9]+-doc| awk '{print $1}') $($src/distro-pkgs)
 
+# schroot service will restart schroot sessions after reboot.
+# I dont want that.
+pi-nostart schroot
+
+# fix systemd unit failure. i dont know of any actual impact
+# other than systemd showing in degraded state. So, we dont bother
+# fixing the current state, let it fix on the next reboot.
+# https://gitlab.com/cjwatson/binfmt-support/-/commit/54f0e1af8a
+tmp=$(systemctl cat binfmt-support.service | grep ^After=)
+if [[ $tmp != *systemd-binfmt.service* ]]; then
+  s u /etc/systemd/system/binfmt-support.service.d/override.conf <<EOF
+[Unit]
+$tmp systemd-binfmt.service
+EOF
+fi
+
 
 # commented, not worth the hassle i think.
 #seru enable psd
@@ -1102,45 +1139,6 @@ sudo rm -fv /etc/apt/sources.list.d/iridium-browser.list
 # esac
 
 
-### begin home vpn server setup
-
-
-# # this section done initially to make persistent keys.
-# # Also note, I temporarily set /etc/hosts so my host was
-# # b8.nz when running this, since the vpn client config
-# # generator assumes we need to go to that server to get
-# # server keys.
-# vpn-server-setup -rds
-# s cp -r --parents /etc/openvpn/easy-rsa/keys /p/c/filesystem
-# s chown -R 1000:1000 /p/c/filesystem/etc/openvpn/easy-rsa/keys
-# # kw = kgpe work machine.
-# for host in x2 x3 kw; do
-# vpn-mk-client-cert -b $host -n home b8.nz 1196
-# dir=/p/c/machine_specific/$host/filesystem/etc/openvpn/client
-# mkdir -p $dir
-# s bash -c "cp /etc/openvpn/client/home* $dir"
-#     # note: /etc/update-resolv-conf-home also exists for all systems with /p
-# done
-
-# key already exists, so this won't generate one, just the configs.
-# m vpn-server-setup -rds
-# sudo tee -a /etc/openvpn/server/server.conf <<'EOF'
-# push "dhcp-option DNS 10.0.0.1"
-# push "route 10.0.0.0 255.255.0.0"
-# client-connect /a/bin/distro-setup/vpn-client-connect
-# EOF
-# sudo sed -i --follow-symlinks 's/10.8./10.9./g;s/^\s*port\s.*/port 1196/' /etc/openvpn/server/server.conf
-
-# if [[ $HOSTNAME == tp ]]; then
-#   if [[ -e /lib/systemd/system/openvpn-server@.service ]]; then
-#     vpn_service=openvpn-server@server
-#   else
-#     vpn_service=openvpn@server
-#   fi
-#   sgo $vpn_service
-# fi
-### end vpn server setup
-
 ##### rss2email
 if mountpoint /p &>/dev/null; then
   # note, see bashrc for more documentation.
@@ -1218,10 +1216,6 @@ if [[ -e /p/c/machine_specific/$HOSTNAME/filesystem/etc/openvpn/client/hole.crt
   sgo openvpn-client@hole
 fi
 
-if [[ $HOSTNAME == frodo ]]; then
-  vpn-mk-client-cert -b frodo -n hole iankelling.org
-fi
-
 ############# begin syncthing setup ###########
 case $HOSTNAME in
   kd|frodo)
@@ -1311,6 +1305,24 @@ fi
 
 ####### begin misc packages ###########
 
+# old location, 2023.
+sudo rm -fv /etc/systemd/system/profanity.service
+case $HOSTNAME in
+  kd)
+    ln -sfT /d/p/profanity ~/.local/share/profanity
+    ln -sfT /d/p/profanity-config ~/.config/profanity
+    source /a/bin/bash_unpublished/source-state
+    if [[ $HOSTNAME == "$HOST2" || ! -e /p/profanity-here ]]; then
+      systemctl --user --now enable profanity
+    fi
+    ;;
+  *)
+
+    ln -sfT /p/profanity ~/.local/share/profanity
+    ln -sfT /p/profanity-config ~/.config/profanity
+    ;;
+esac
+
 # template
 case $codename in
   flidas)
@@ -1516,7 +1528,7 @@ case $HOSTNAME in
     ;;
 esac
 
-mkdir -p $tdir
+sudo mkdir -p $tdir
 
 # adapted from /var/lib/dpkg/info/transmission-daemon.postinst
 # 450 seems likely to be unused. we need to specify one or else
@@ -1566,7 +1578,7 @@ ser stop transmission-daemon
 f=$tdir/transmission-daemon
 for d in $tdir/partial-torrents $tdir/torrents $f; do
   if [[ ! -d $d ]]; then
-    mkdir $d
+    sudo mkdir -p $d
   fi
   sudo chown -R debian-transmission:user2 $d
 done
@@ -1585,6 +1597,8 @@ sudo chown -R debian-transmission:debian-transmission /var/lib/transmission-daem
 #
 # Changed the cache-size to 256 mb, reduces disk use.
 # It is a read & write cache.
+#
+# just fyi: default rpc port is 9091
 if ! systemctl is-active transmission-daemon-nn &>/dev/null && \
     ! systemctl is-active transmission-daemon; then
   tmp=$(mktemp)
@@ -1625,6 +1639,9 @@ esac
 
 ######### begin transmission client setup ######
 
+# to connect from a remote client, trans-remote-route in brc2
+
+
 if [[ -e /p/transmission-rpc-pass ]]; then
   # arch had a default config,
   # debian had nothing until you start it.
@@ -1666,7 +1683,7 @@ EOF
   "profiles" : [
       {
       "profile-name" : "Default",
-      "hostname" : "10.173.0.2",
+      "hostname" : "10.174.2.2",
       "rpc-url-path" : "/transmission/rpc",
       "username" : "",
       "password" : "$rpc_pass",
@@ -1717,6 +1734,7 @@ sudo gpasswd -a $USER lpadmin # based on ubuntu wiki
 # general known for debian/ubuntu, not for fedora
 
 m /a/bin/buildscripts/go
+# only needed for rg. cargo takes up 11 gigs, filled up the disk on je.
 m /a/bin/buildscripts/rust
 m /a/bin/buildscripts/misc
 m /a/bin/buildscripts/pithosfly
@@ -1815,14 +1833,18 @@ DEVICESCAN -a -o on -S on -n standby,q $sched \
 
 ########### misc stuff
 
-rm -fv /home/iank/.mpv/watch_later
-rm -rf /home/iank/.mpv
 
+xdg-settings set default-web-browser abrowser.desktop
+# see current with:
+# xdg-settings get default-web-browser
 
-if [[ $HOSTNAME != frodo ]]; then
-  # remove. i moved this into dns
-  echo | s cedit hole /etc/hosts ||:
-fi
+# pressing tab after sdf here:
+# scp sdfbash: set +o noglob: command not found
+# in t11, bash 5.1.16. this fixes it.
+sudo sed -ri 's/([[:space:]]*)(\$reset)$/\1set +o noglob #$reset/' /usr/share/bash-completion/bash_completion
+
+rm -fv /home/iank/.mpv/watch_later
+rm -rf /home/iank/.mpv
 
 if [[ ! -e ~/.local/bin/pip ]]; then
   tmp=$(mktemp)
@@ -1831,6 +1853,61 @@ if [[ ! -e ~/.local/bin/pip ]]; then
   hash -r
 fi
 
+## begin beets
+# soo, apt install beets fails due to wanting a pip package,
+# we find out why it wants this through
+# apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances beets | less
+# python-mediafile requires tox, which requires virtualenv, which requires pip.
+# but, python-mediafile doesn't really require tox, it is specified in
+# ./usr/lib/python3/dist-packages/mediafile-0.9.0.dist-info/METADATA
+# as being required only for testing, but the debian package
+# included it anyways, due to a mistake or bad tooling or something.
+# I don't plan to use tox, so, according to https://serverfault.com/a/251091,
+# we can create and install a dummy package by:
+#
+# "equivs-control <name>, edit the file produced to provide the right
+# dependency and have a nice name, then run equivs-build <name> and
+# finally dpkg -i the resulting .deb file"
+# as of 2023-02, the tox dependency was removed in debian unstable, so
+# this hack will probably go away in t12.
+
+if pcheck beets; then
+  tmpdir="$(mktemp -d)"
+  cd "$tmpdir"
+  # edited from output of equivs-control tox
+  cat >tox <<'EOF'
+Section: python
+Priority: optional
+Standards-Version: 3.9.2
+Package: tox
+Description: tox-dummy
+EOF
+  equivs-build tox
+  sudo dpkg -i tox_1.0_all.deb
+  rm -rf ./tox*
+  pi beets python3-discogs-client
+  cd
+  rm -r "$tmpdir"
+fi
+
+# get rid of annoying message
+s sed -ri "s/^([[:space:]]*ui.print_\('Playing)/#\1/" /usr/share/beets/beetsplug/play.py
+
+
+# notes about barrier
+# run barrier, do the gui config,
+# setup the 2 screens, using hostnames for the new screen.
+# save the server config
+# $HOME/.local/share/barrier/.barrier.conf
+# per the man page.
+#
+# ssl errors, resolved via advice here: https://github.com/debauchee/barrier/issues/231
+# BARRIER_SSL_PATH=~/.local/share/barrier/SSL/
+# mkdir -p "${BARRIER_SSL_PATH}"
+# openssl req -x509 -nodes -days 365 -subj /CN=Barrier -newkey rsa:4096 -keyout ${BARRIER_SSL_PATH}/Barrier.pem -out ${BARRIER_SSL_PATH}/Barrier.pem
+# ran on both machines.
+# When pressing start in the gui, the cli options used are printed to the console,
+# they are useful. So on server, just run barriers, client run barrierc SERVER_IP
 
 ### begin timetrap setup
 if mountpoint /p &>/dev/null; then
@@ -1893,13 +1970,13 @@ sudo fc-cache
 pi desktop-file-utils
 m /a/bin/distro-setup/mymimes
 
-
-# stop autopoping windows when i plug in an android phone.
-# dbus-launch makes this work within an ssh connection, otherwise you get this message,
-# with still 0 exit code.
-# dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY
-m dbus-launch gsettings set org.gnome.desktop.media-handling automount-open false
-
+if type -p dbus-launch >/dev/null; then
+  # stop autopoping windows when i plug in an android phone.
+  # dbus-launch makes this work within an ssh connection, otherwise you get this message,
+  # with still 0 exit code.
+  # dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY
+  m dbus-launch gsettings set org.gnome.desktop.media-handling automount-open false
+fi
 
 # on grub upgrade, we get prompts unless we do this
 devs=()
@@ -1924,22 +2001,20 @@ sgo dynamicipupdate
 if grep -xFq $HOSTNAME /a/bin/ds/machine_specific/btrbk.hosts; then
   sgo btrbk.timer
 fi
-# note: to see when it was last run,
+
+# note: to see when a timer was last run,
 # ser list-timers
 
-case $HOSTNAME in
-  kd)
-    sgo btrbkrust.timer
-    ;;
-esac
 
 ### begin prometheus ###
 
 case $HOSTNAME in
   kd)
     # Font awesome is needed for the alertmanager ui.
-    pi prometheus-alertmanager prometheus prometheus-node-exporter fonts-font-awesome
-    /a/bin/buildscripts/prometheus
+    pi prometheus-alertmanager prometheus fonts-font-awesome
+    /c/roles/prom/files/simple/usr/local/bin/fsf-install-prometheus
+    # make it available for other machines
+    rsync -a /usr/local/bin/amtool /a/opt/bin
     web-conf -p 9091 -f 9090 - apache2 i.b8.nz <<'EOF'
 <Location "/">
 AuthType Basic
@@ -1975,19 +2050,26 @@ EOF
       ser restart prometheus-alertmanager
     fi
 
+    s /c/roles/prom_export/files/simple/usr/local/bin/fsf-install-node-exporter -l 127.0.0.1
+
     for ser in prometheus-node-exporter prometheus-alertmanager prometheus; do
       sysd-prom-fail-install $ser
     done
 
     ;;
   *)
-    pi prometheus-node-exporter
+    s /c/roles/prom_export/files/simple/usr/local/bin/fsf-install-node-exporter
     ;;
 esac
 
+# cleanup old files. 2023-02
+x=(/var/lib/prometheus/node-exporter/*.premerge)
+if [[ -e ${x[0]} ]]; then
+  s rm /var/lib/prometheus/node-exporter/*
+fi
+
+
 case $HOSTNAME in
-  # frodo needs upgrade first.
-  frodo) : ;;
   # todo, for limiting node exporter http,
   # either use iptables or, in
   # /etc/default/prometheus-node-exporter
@@ -2031,16 +2113,21 @@ esac
 
 ### begin nagios ###
 
-pi nagios4
-s rm /etc/apache2/conf-enabled/nagios4-cgi.conf
+pi nagios-nrpe-server
+
+case $HOSTNAME in
+  kd)
+    # the backport is for this bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=800345
+    pi nagios4 nagios-nrpe-plugin monitoring-plugins-basic/bullseye-backports
+    s rm -fv /etc/apache2/conf-enabled/nagios4-cgi.conf
 
-# to add a password for admin:
-# htdigest /etc/nagios4/htdigest.users Nagios4 iank
-# now using the same pass as prometheus
+    # to add a password for admin:
+    # htdigest /etc/nagios4/htdigest.users Nagios4 iank
+    # now using the same pass as prometheus
 
-# nagstamon auth settings, set to digest instead of basic.
+    # nagstamon auth settings, set to digest instead of basic.
 
-web-conf -p 3005 - apache2 i.b8.nz <<'EOF'
+    web-conf -p 3005 - apache2 i.b8.nz <<'EOF'
 # adapted from /etc/apache2/conf-enabled/nagios4-cgi.conf
 
 ScriptAlias /cgi-bin/nagios4 /usr/lib/cgi-bin/nagios4
@@ -2077,7 +2164,7 @@ Alias /nagios4 /usr/share/nagios4/htdocs
     #
        AuthDigestDomain "Nagios4"
        AuthDigestProvider file
-       AuthUserFile    "/etc/nagios4/htdigest.users"
+       AuthUserFile    "/etc/nagios4-htdigest.users"
        AuthGroupFile   "/etc/group"
        AuthName        "Nagios4"
        AuthType        Digest
@@ -2088,7 +2175,8 @@ Alias /nagios4 /usr/share/nagios4/htdocs
     Options    +ExecCGI
 </Directory>
 EOF
-
+    ;;
+esac
 
 # when you alter a service through the web, it changes vars in /var/lib/nagios4/status.dat. for example:
 # notifications_enabled=1
@@ -2096,13 +2184,13 @@ EOF
 
 # in the default config, we have these definitions
 
-     # 11 define command {
-     #  2 define contact {
-     #  1 define contactgroup {
-     #  9 define host {
-     #  4 define hostgroup {
-     # 23 define service {
-     #  5 define timeperiod {
+# 11 define command {
+#  2 define contact {
+#  1 define contactgroup {
+#  9 define host {
+#  4 define hostgroup {
+# 23 define service {
+#  5 define timeperiod {
 
 
 # on klaxon
@@ -2119,8 +2207,42 @@ EOF
 #       6 define timeperiod
 
 
+
+
 ### end nagios ###
 
+### begin bitcoin ###
+
+case $HOSTNAME in
+  sy|kd)
+    sudo install -m 0755 -o root -g root -t /usr/bin /a/opt/bitcoin-24.0.1/bin/*
+    sgo bitcoind
+    # note: the bitcoin user & group are setup in fai
+    sudo usermod -a -G bitcoin iank
+    # todo: make bitcoin have a stable uid/gid
+    if [[ ! $(readlink -f /var/lib/bitcoind/wallets) == /q/wallets ]]; then
+      mkdir -p /var/lib/bitcoind
+      chown bitcoin:bitcoin /var/lib/bitcoind
+      # 710 comes from the upstream bitcoin unit file
+      chmod 710 /var/lib/bitcoind
+      s lnf /q/wallets /var/lib/bitcoind
+      sudo chown -h bitcoin:bitcoin /var/lib/bitcoind/wallets
+    fi
+    # note, there exists
+    # /a/bin/ds/disabled/bitcoin
+    ;;
+esac
+
+### end bitcoin
+
+case $HOSTNAME in
+  kw|x3)
+    sd /etc/cups/client.conf <<'EOF'
+ServerName printserver1.office.fsf.org
+EOF
+    ;;
+esac
+
 
 end_msg <<'EOF'
 In mate settings settings, change scrolling to two-finger,
@@ -2156,7 +2278,7 @@ lnf -T /a/opt ~/src
 pi tor
 m /a/bin/buildscripts/tor-browser
 # one root command needed to install
-s ln -sf /a/opt/tor-browser_en-US/Browser/start-tor-browser /usr/local/bin
+s ln -sf /a/opt/tor-browser/Browser/start-tor-browser /usr/local/bin
 
 
 # nfs server