X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=distro-begin;h=5752961798f24d169088faac22ea0e5288021646;hb=refs%2Fheads%2Fmaster;hp=e2d1a8713dbef07c58956d681244aa565d86463b;hpb=40dd151ec6ba75633c74568da59e35a45351f194;p=distro-setup diff --git a/distro-begin b/distro-begin index e2d1a87..86e41e6 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. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . -# for setting up a new machine +# 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 && @@ -236,12 +250,13 @@ sudo sed -i --follow-symlinks -f - /etc/hosts </dev/null; then @@ -357,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 @@ -375,7 +361,6 @@ Pin: release a=nabia-backports Pin-Priority: -100 EOF - fi @@ -429,6 +414,7 @@ if isarch; then fi #### update all packages +# shellcheck disable=SC2119 # obvious pup @@ -438,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 @@ -448,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 @@ -494,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 @@ -503,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 @@ -577,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 @@ -590,19 +576,37 @@ 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 - +if bitfolk; then + sudo systemctl disable systemd-networkd +fi ##### setup email primary-setup @@ -638,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 @@ -648,31 +651,19 @@ if has_monitor; then ;; esac - # recommends gets us geoclue (for darkening automatically at night i assume), - # which recommends modemmanager, which is annoying to fix for the model01 keyboard. - # commented because I dont use it much, and in nabia its named changed to redshift-gtk - #pi --no-install-recommends gtk-redshift - ##### setup X autostart - # install for multiple display managers in case we use one - 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/myx $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 -session-setup-script=/a/bin/distro-setup/desktop-20-autostart.sh +# display-setup-script=/a/bin/ds/lightdm-start +session-setup-script=/a/bin/distro-setup/myx EOF @@ -701,8 +692,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