X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=distro-begin;h=1857f61d0c5d1659b71c372e765423d49e191678;hb=d314b216046098f4b520cc14946c5d7c00f2089a;hp=d870fe6af293a4a5929b31f1cf7d85d87325d3c5;hpb=e688da727d2f4620e52a26e77f190c65d6627e7e;p=distro-setup diff --git a/distro-begin b/distro-begin index d870fe6..1857f61 100755 --- a/distro-begin +++ b/distro-begin @@ -5,6 +5,7 @@ # todo. dunno why, but original bootstrap of timezone is not sticking. # fixed manually with: # s dpkg-reconfigure tzdata +# enter 12 then 11. # for bootstrapping a new machine @@ -22,15 +23,17 @@ sudo bash -c 'source /a/c/repos/bash/.bashrc && source /a/bin/ssh-emacs-setup' # set the scrollback to unlimited in case something goes wrong if [[ $EUID == 0 ]]; then - echo "error: do not run as root" - exit + if getent passwd ian; then + echo "$0: error: running as root. unprivileged user exists. use it." + exit 1 + else + echo "$0: warning: running as root. I will setup users then exit" + fi fi -interactive=true # set this to true if running by hand in emacs +interactive=false # set this to true if running by hand in emacs [[ $- == *i* ]] || interactive=false - - if ! $interactive; then set -x set -e -o pipefail @@ -42,27 +45,26 @@ exec &> >(sudo tee -a /var/log/distro-begin) echo "$0: $(date): starting now)" # headless=false # unused atm -recompile=true +recompile=false # for copying to a new data fs bootstrapfs=false # old flag, needs new look before using. while [[ $1 == -* ]]; do case $1 in # avoid some of the longer compilation steps, # when we need to rerun because we had an error - -n) recompile=false; shift ;; + -r) recompile=true; shift ;; esac done if [[ $1 ]]; then - host=$1 -else - host=$HOSTNAME + export HOSTNAME=$1 fi -for f in iank-dev htpc treetowl x2 frodo tp; do - eval "$f() { [[ $host == $f ]]; }" +for f in iank-dev htpc treetowl x2 frodo tp lj lk; do + eval "$f() { [[ $HOSTNAME == $f ]]; }" done has_p() { iank-dev || x2 || frodo; } +has_x() { ! lj && ! lk; } encrypted() { has_p || tp; } shopt -s extglob @@ -116,6 +118,9 @@ EOF sudo systemctl start keyscriptoff.service fi + +/a/bin/install-myqueue + if iank-dev; then desktop=$(ssh root@iankelling.org grep desktop /etc/hosts | grep -o "^.* ") if $bootstrapfs; then @@ -123,7 +128,7 @@ if iank-dev; then cp="scp $desktop:" # for moving to a new hd, change $cp to move between filesystems mkdir -p /a/bin - chown -R ian:ian /a + chown -R ian:ian /a # probably needs to be removed $cp/a/c /a $cp/a/c/bin/{bash-programs-by-ian,distro-begin,distro-functions,input-setup.sh} /a/bin echo -e \\n\\n\\n | ssh-keygen -t rsa @@ -134,8 +139,8 @@ fi # todo, it would be nice to cut down on some of the output -# output is below so shellcheck can verify sources for x in /a/bin/bash-programs-by-ian/repos/{errhandle,tee-unique,lnf}/*-function; do + # output is below so shellcheck can verify sources echo "# shellcheck source=$x"; # shellcheck source=/a/bin/bash-programs-by-ian/repos/errhandle/bash-trace-function # shellcheck source=/a/bin/bash-programs-by-ian/repos/errhandle/errallow-function @@ -149,11 +154,12 @@ done set +e $interactive || errcatch +set +x source /a/bin/distro-functions/src/identify-distros +$interactive || set -x echo path:$PATH - if isfedora; then # comment out line disallowing calling sudo in scripts sudo sed -i 's/^Defaults *requiretty/#\0 # ian commented/' /etc/sudoers @@ -166,16 +172,43 @@ if isfedora; then fi +# already ran for pxe installs, but used for vps & updates +distro=$(distro-name) +case $distro in + ubuntu|debian) + sudo bash -c ". /a/bin/fai/fai-wrapper && /a/bin/fai/fai/config/scripts/GRUB_PC/11-ian" + ;; + *) + sudo bash -c ". /a/bin/fai-wrapper && +/a/bin/fai/fai/config/distro-install-common/end" + ;; +esac + + +if [[ $EUID == 0 ]]; then + echo "$0: running as root. exiting now that users are setup" + exit 0 +fi # link files +lnf-home() { + # $2 and opts are unused so far. + opts=() + while [[ $1 == -* ]]; do + opts+=($1) + shift + done + lnf ${opts[@]} "$1" /home/ian/$2 + sudo -u traci -i <$x + x=$(mktemp); /a/opt/pacman.conf-insert_pacserve >$x sudo dd of=/etc/pacman.conf if=$x; rm $x sudo systemctl enable pacserve.service sudo systemctl start pacserve.service @@ -284,8 +316,6 @@ pi trash-cli ###### link files ########### # convenient to just do all file linking in one place -s lnf /a/sdx{,d} / - # if it wasn't set already, we could set hostname here #echo treetowl | s dd of=/etc/hostname #s hostname -F /etc/hostname @@ -297,12 +327,15 @@ s lnf /a/sdx{,d} / # todo: reconcile ~/.ssh/config work/home s lnf -T /q/p /p +s lnf -T /a/bin /b +/a/bin/conflink + if has_p; then lnf -T /p/offlineimap ~/Maildir lnf -T /p/News ~/News # don't use /* because I don't want to require it to be mounted s lnf /q/root/.editor-backups /q/root/.undo-tree-history \ - /a/opt /a/c/.emacs.d ~/.unison /root + /a/opt /a/c/.emacs.d /root fi /a/bin/rootsshsync @@ -323,7 +356,13 @@ fi # basic needed packages case $(distro-name) in debian) - pi firefox$( isdebian-stable && e /$code-backports ) + if has_x; then + if isdebian-stable; then + pi firefox/$codename-backports + else + pi firefox/unstable # has no unstable dependencies + fi + fi # for hosts which require nonfree drivers case $HOSTNAME in tp|x2) : ;; @@ -333,37 +372,44 @@ case $(distro-name) in esac ;;& ubuntu|debian) - pi xmacro gtk-redshift xinput + if has_x; then + pi xmacro gtk-redshift xinput + fi ;;& fedora) p -y groupinstall development-tools c-development books admin-tools - pi redshift-gtk - # debian has this package patched to work, upstream is dead - # tried using alien, pi alien, alien -r *.deb, rpm -Uhv *.rpm, got this error, so fuck it - # file /usr/bin from install of xmacro-0.3pre_20000911-7.x86_64 conflicts with file from package filesystem-3.2-19.fc20.x86_64 - # http://packages.debian.org/source/sid/xmacro - pi patch libXtst-devel wget man-pages # what is the ubuntu equivalent to man-pages? - cd $(mktemp -d) - wget http://ftp.de.debian.org/debian/pool/main/x/xmacro/xmacro_0.3pre-20000911.orig.tar.gz - wget http://ftp.de.debian.org/debian/pool/main/x/xmacro/xmacro_0.3pre-20000911-6.diff.gz - ex *.gz - patch -p0 < xmacro_0.3pre-20000911-6.diff - cd xmacro-0.3pre-20000911.orig - make - sleep 1 # not sure why the following command couldn\'t find, so trying this - # no make install target - s cp -f xmacroplay xmacrorec xmacrorec2 /usr/local/bin + pi wget man-pages + if has_x; then + pi redshift-gtk + # debian has this package patched to work, upstream is dead + # tried using alien, pi alien, alien -r *.deb, rpm -Uhv *.rpm, got this error, so fuck it + # file /usr/bin from install of xmacro-0.3pre_20000911-7.x86_64 conflicts with file from package filesystem-3.2-19.fc20.x86_64 + # http://packages.debian.org/source/sid/xmacro + pi patch libXtst-devel + cd $(mktemp -d) + wget http://ftp.de.debian.org/debian/pool/main/x/xmacro/xmacro_0.3pre-20000911.orig.tar.gz + wget http://ftp.de.debian.org/debian/pool/main/x/xmacro/xmacro_0.3pre-20000911-6.diff.gz + ex *.gz + patch -p0 < xmacro_0.3pre-20000911-6.diff + cd xmacro-0.3pre-20000911.orig + make + sleep 1 # not sure why the following command couldn\'t find, so trying this + # no make install target + s cp -f xmacroplay xmacrorec xmacrorec2 /usr/local/bin + fi ;;& arch) - # libxtst is missing dep https://aur.archlinux.org/packages/xmacro/#news - pi xorg-server redshift xorg-xinput pkgfile libxtst xmacro # like apt-cache + pi pkgfile s pkgfile --update - - # background: - # https://aur.archlinux.org/packages/xkbset/#comment-545419 - cert=$(mktemp) - cat >$cert <<'EOF' + if has_x; then + # libxtst is missing dep https://aur.archlinux.org/packages/xmacro/#news + pi xorg-server redshift xorg-xinput libxtst xmacro + + # background: + # https://aur.archlinux.org/packages/xkbset/#comment-545419 + cert=$(mktemp) + cat >$cert <<'EOF' -----BEGIN CERTIFICATE----- MIIJADCCB+igAwIBAgIRAIVAhZ0TMbQ5jTm0koI8X6YwDQYJKoZIhvcNAQELBQAw djELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1JMRIwEAYDVQQHEwlBbm4gQXJib3Ix @@ -484,19 +530,22 @@ L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG jjxDah2nGN59PRbxYvnKkKj9 -----END CERTIFICATE----- EOF - cat /etc/ssl/certs/ca-certificates.crt >> $cert - CURL_CA_BUNDLE=$cert pi xkbset + cat /etc/ssl/certs/ca-certificates.crt >> $cert + CURL_CA_BUNDLE=$cert pi xkbset + fi ;;& ubuntu|debian|fedora) - pi xkbset + if has_x; then + pi xkbset + fi ;;& esac - -pi xbindkeys cryptsetup - -pi lvm2 +if has_x; then + pi xbindkeys +fi +pi cryptsetup lvm2 # enables trim for volume delete, other rare commands. sudo sed -ri 's/( *issue_discards\b).*/\1 = 1/' /etc/lvm/lvm.conf @@ -541,6 +590,7 @@ frodo:/k /kfrodo nfs defaults 0 0 EOF fi +s mkdir -p /q/i/{w,k} for dir in /{i,w,k}; do if mountpoint $dir; then continue; fi s mkdir -p $dir @@ -557,11 +607,12 @@ s chown root:ian /q s chmod 755 /q -/a/bin/conflink - +# it comes with stretch and arch, but not jessie. # propogate /etc/udev/hwdb.d -s systemd-hwdb update -ser restart systemd-udev-trigger +if which systemd-hwdb; then + s systemd-hwdb update + ser restart systemd-udev-trigger +fi # work desktop doesnt need gpg stuff, but it doesnt hurt s dd of=/etc/profile.d/environment.sh <<'EOF' @@ -570,7 +621,7 @@ s dd of=/etc/profile.d/environment.sh <<'EOF' if [ -f $HOME/path_add-function ]; then . $HOME/path_add-function path_add /usr/sbin /usr/local/sbin /sbin - path_add /a/bin /a/opt/bin $HOME/.cabal/bin + path_add /a/exe /a/opt/bin $HOME/.cabal/bin if [ -r /etc/alternatives/java_sdk ]; then export JAVA_HOME=/etc/alternatives/java_sdk @@ -629,122 +680,92 @@ EOF -# emacs dependency. -# dunno why debian installed postfix with yum-builddep emacs -# but I will just explicitly install it here since -# I use it for sending mail in emacs. -if private-host; then - relayhost="[mail.messagingengine.com]:587" -else - # ses initially suggests port 25, but I had problems connecting to that. - relayhost="[email-smtp.us-west-2.amazonaws.com]:587" -fi -if isdeb; then - s debconf-set-selections<