X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=distro-begin;h=6f7031de476cd0b0cb58921376ef8aeba6fc2aa5;hb=55b37c2dbe292fa1023c0c5376c2104fbe568011;hp=84900fe1de71587a385f4e65a8ed774ddaffcd78;hpb=802e885e3e7fa3857f8bc4f54c261d5ca76f2454;p=distro-setup
diff --git a/distro-begin b/distro-begin
index 84900fe..6f7031d 100755
--- a/distro-begin
+++ b/distro-begin
@@ -1,22 +1,35 @@
#!/bin/bash
-# Copyright (C) 2016 Ian Kelling
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# Setup Ian's computers
+# Copyright (C) 2024 Ian Kelling
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
-# for setting up a new machine
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+#### for setting up a new machine
# usage: $0 [-r] [HOSTNAME]
# HOSTNAME changes the machine's hostname
+# Update target_down alerts in
+# /a/bin/ds/filesystem/etc/prometheus/rules/iank.yml
+#
+# Update hostnames in /b/ds/check-remote-mailqs
+# Update hostnames in /b/ds/machine_specific/*.hosts /p/c/machine_specific/*.hosts
+# Update hostnames in this file
+
+### end new machine setup
+
# tips:
# run any sudo command first so your pass is cached
# set the scrollback to unlimited in case something goes wrong
@@ -42,9 +55,10 @@
####### begin setup environment #######
+# shellcheck disable=SC2317 # false positive
### make ssh interactive shell run better. for when running line interactively line by line
-sudo bash -c '/a/exe/ssh-emacs-setup'
+sudo bash -c '/a/exe/ssh-emacs-setup' || exit $?
##### setup error handling
interactive=true # set this to false to force set -x
@@ -52,7 +66,7 @@ interactive=true # set this to false to force set -x
if ! $interactive; then
set -x
fi
-source /a/bin/errhandle/err
+source /a/bin/bash-bear-trap/bash-bear
mkdir -p ~/.local
err-cleanup() {
@@ -100,7 +114,7 @@ source $script_dir/pkgs
set +x
source /a/bin/distro-functions/src/identify-distros
$interactive || set -x
-for f in kd x2 x3 frodo tp li bk je demohost kw sy bo; do
+for f in kd x2 x3 x8 frodo tp li bk je demohost kw sy bo so; do
eval "$f() { [[ $HOSTNAME == $f ]]; }"
done
codename=$(debian-codename)
@@ -213,7 +227,7 @@ fi
distro=$(distro-name)
case $distro in
ubuntu|debian|trisquel)
- sudo bash -c ". /a/bin/fai/fai-wrapper && /a/bin/fai/fai/config/scripts/GRUB_PC/11-iank"
+ sudo bash -c ". /a/bin/fai/fai-wrapper && /a/bin/fai/fai/config/scripts/IANK/11-iank"
;;
*)
sudo bash -c ". /a/bin/fai/fai-wrapper &&
@@ -280,6 +294,9 @@ sudo /a/exe/lnf /a/c/.vim /a/c/.vimrc /a/c/.gvimrc /root
if vps; then
pi-nostart bind9
fi
+if bitfolk; then
+ pi-nostart unbound
+fi
# this needs to be before installing pacserve so we have gpg conf.
conflink
rootsshsync
@@ -294,57 +311,11 @@ set +x
err-allow
source /etc/profile.d/environment.sh
export LC_USEBASHRC=t
-# shellcheck source=./.bashrc
-source ~/.bashrc
+# shellcheck source=./brc
+source ~/brc
err-catch
$interactive || set -x
-##### use systemd-resolved for glibc resolutions
-
-pi libnss-resolve
-
-if [[ ! -L /etc/nsswitch.conf ]]; then
- sudo mkdir -p /etc/resolved-nsswitch
- sudo mv /etc/nsswitch.conf /etc/resolved-nsswitch
- sudo ln -sf /etc/resolved-nsswitch/nsswitch.conf /etc
-fi
-
-f=/etc/basic-nsswitch/nsswitch.conf
-if [[ ! -e $f ]]; then
- sudo mkdir -p ${f%/*}
- sudo cp /etc/nsswitch.conf $f
- sudo sed -i --follow-symlinks 's/^ *hosts:.*/hosts: files dns myhostname/' $f
-fi
-case $HOSTNAME in
- bk)
- sudo sed -i --follow-symlinks 's/^ *hosts:.*/hosts: files dns myhostname/' /etc/nsswitch.conf
- soff systemd-resolved
- ln -sf 127.0.0.1-resolv/stub-resolv.conf /etc/resolv.conf
- sgo bind9
- # cautious measure to make sure bind is up
- sleep 1
- ;;
- *)
- # default is
- # files mdns4_minimal [NOTFOUND=return] dns myhostname
- # mdns4 is needed for my printer and for bbb webrtc, not sure exactly why.
- # https://www.freedesktop.org/software/systemd/man/nss-resolve.html#
- # seems more important than some potential use case.
- # Interestingly, t9/t10 man page says use files before resolve, debian 10 says the opposite.
- # removing files makes hostname -f not actually give the fully qualified domain name.
- sudo sed -i --follow-symlinks 's/^ *hosts:.*/hosts: files resolve [!UNAVAIL=return] mdns4_minimal [NOTFOUND=return] myhostname/' /etc/resolved-nsswitch/nsswitch.conf
- ;;
-esac
-
-f=/etc/apparmor.d/abstractions/nameservice
-if [[ -e $f ]] && ! grep -q /etc/resolved-nsswitch/nsswitch.conf $f; then
- sudo sed -i '/\/etc\/nsswitch.conf/a /etc/resolved-nsswitch/nsswitch.conf r,' $f
- sudo sed -i '/\/etc\/nsswitch.conf/a /etc/basic-nsswitch/nsswitch.conf r,' $f
- if sytemctl is-enabled apparmor; then
- m ser reload apparmor
- fi
-fi
-
if dpkg -s -- nscd &>/dev/null; then
@@ -363,10 +334,19 @@ if bitfolk; then
sudo sed -ri "/^127\./n;/[[:space:]]$HOSTNAME\$/d" /etc/hosts
fi
-# firefox exists but is 2 versions outdated
+if isdeb && [[ $(debian-codename) == aramo ]]; then
+ sudo dd of=/etc/apt/preferences.d/aramo-jammy-missing <<'EOF'
+Package: linux-libc-dev libmysqlclient21
+Pin: release n=jammy,o=Ubuntu
+Pin-Priority: 500
+EOF
+fi
+
+# libfdk just has some patent worries.
+# https://www.gnu.org/licenses/license-list.en.html#fdk
if isdeb && [[ $(debian-codename) == nabia ]]; then
sudo dd of=/etc/apt/preferences.d/nabia-focal-missing <<'EOF'
-Package: unrar-free firefox libfdk-aac1 ansible
+Package: libfdk-aac1
Pin: release n=focal,o=Ubuntu
Pin-Priority: 500
EOF
@@ -381,7 +361,6 @@ Pin: release a=nabia-backports
Pin-Priority: -100
EOF
-
fi
@@ -435,6 +414,7 @@ if isarch; then
fi
#### update all packages
+# shellcheck disable=SC2119 # obvious
pup
@@ -444,7 +424,7 @@ pi ${p1[@]}
######## fix evbug bug ######
case $(debian-codename-compat) in
- xenial|bionic|focal)
+ xenial|bionic|focal|jammy|noble)
# noticed in flidas. dunno if it affects any others
#https://bugs.launchpad.net/ubuntu/+source/module-init-tools/+bug/240553
#https://wiki.debian.org/KernelModuleBlacklisting
@@ -454,7 +434,7 @@ case $(debian-codename-compat) in
file=/etc/modprobe.d/evbug.conf
line="blacklist evbug"
if [[ $(cat $file) != "$line" ]]; then
- sudo dd of=$file 2>/dev/null <<<"$line"
+ sudo dd of=$file status=none <<<"$line"
sudo depmod -a
sudo update-initramfs -u
fi
@@ -500,7 +480,7 @@ fi
# disabled temporarily
###### setup /i
# if home_network; then
-# tu /etc/fstab <<'EOF'
+# sudo /a/exe/teeu /etc/fstab <<'EOF'
# /i/w /w none bind,noauto 0 0
# /i/k /k none bind,noauto 0 0
# EOF
@@ -509,11 +489,11 @@ fi
# sudo chown $USER:user2 /kr
# fi
# if [[ $HOSTNAME == frodo ]]; then
-# tu /etc/fstab <<'EOF'
+# sudo /a/exe/teeu /etc/fstab <<'EOF'
# /k /kr none bind,noauto 0 0
# EOF
# else
-# tu /etc/fstab <<'EOF'
+# sudo /a/exe/teeu /etc/fstab <<'EOF'
# frodo:/k /kr nfs noauto 0 0
# EOF
# fi
@@ -583,8 +563,8 @@ if has_btrfs; then
fi
first_root_crypt=$(awk '$2 == "/" {print $1}' /etc/mtab)
- tu /etc/fstab < 2)) && echo ,compress=zstd ) 0 0
+ sudo /a/exe/teeu /etc/fstab < 2)) && echo ,compress=zstd ) 0 0
EOF
sudo mkdir -p $dir
sudo chown $USER:$USER $dir
@@ -596,15 +576,31 @@ fi
case $HOSTNAME in
kd)
- tu /etc/fstab <<'EOF'
+ sudo /a/exe/teeu /etc/fstab <<'EOF'
/dev/mapper/crypt_dev_ata-Samsung_SSD_870_QVO_8TB_S5VUNG0N900656V-part7 /d btrfs nofail,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s,noatime,compress=zstd,subvol=d 0 0
+/d/m /i none bind,compress=zstd 0 0
EOF
if ! mountpoint /d &>/dev/null; then
- sudo mkdir /d
+ sudo mkdir -p /d
if [[ -d /mnt/r7/d ]]; then
sudo mount /d
fi
fi
+ if ! mountpoint /i &>/dev/null; then
+ sudo mkdir -p /i
+ sudo mount /i
+ fi
+ ;;
+ frodo)
+ sudo /a/exe/teeu /etc/fstab <<'EOF'
+/dev/mapper/crypt_dev_ata-ata-Hitachi_HDS722020ALA330_JK1121YAG7SXWS-part1 /i btrfs nofail,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s,noatime,subvol=i 0 0
+EOF
+ if ! mountpoint /i &>/dev/null; then
+ sudo mkdir -p /i
+ if [[ -d /mnt/i/i ]]; then
+ sudo mount /i
+ fi
+ fi
;;
esac
@@ -646,8 +642,7 @@ if has_monitor; then
###### install X
- # no recommends due to this bug: https://trisquel.info/en/issues/26525
- pi --no-install-recommends i3
+ pi i3
##### install xinput
case $(distro-name) in
@@ -666,20 +661,17 @@ if has_monitor; then
dir=/etc/X11/xinit/xinitrc.d/
sudo mkdir -p $dir
sudo cp /a/bin/distro-setup/desktop-20-autostart.sh $dir
- s teeu /etc/systemd/logind.conf <<'EOF'
-HandleLidSwitch=
-EOF
- # this works on
- dir=/etc/gdm3
- sudo mkdir -p $dir/PostLogin
- sudo cp /a/bin/distro-setup/desktop-20-autostart.sh $dir/PostLogin/Default
+ ## disabled since i'm not using gdm atm
+ # dir=/etc/gdm3
+ # sudo mkdir -p $dir/PostLogin
+ # sudo cp /a/bin/distro-setup/desktop-20-autostart.sh $dir/PostLogin/Default
sudo mkdir -p /etc/lightdm/lightdm.conf.d
# etiona lightdm.log:
# [SeatDefaults] is now called [Seat:*], please update this configuration
sudo dd of=/etc/lightdm/lightdm.conf.d/12-iank.conf <<'EOF'
[Seat:*]
-display-setup-script=/a/bin/ds/lightdm-start
+# display-setup-script=/a/bin/ds/lightdm-start
session-setup-script=/a/bin/distro-setup/desktop-20-autostart.sh
EOF
@@ -709,8 +701,10 @@ if $emacs; then
else
if $recompile; then
/a/bin/buildscripts/emacs
+ /a/bin/buildscripts/mu4e
else
/a/bin/buildscripts/emacs --no-r
+ /a/bin/buildscripts/mu4e --no-r
fi
fi
# the first pup command can kill off our /etc/ mod, so rerun this