Let my HOME alone 1/2
This commit is contained in:
parent
2ae37e902e
commit
a83e45df5e
94 changed files with 328 additions and 58 deletions
308
config/scripts/install-prefs
Executable file
308
config/scripts/install-prefs
Executable file
|
@ -0,0 +1,308 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Installs user preferences the way I like it
|
||||
|
||||
# Configuration
|
||||
function prompt { # text
|
||||
while true; do
|
||||
read -p "$1 [yn] " yn
|
||||
case $yn in
|
||||
[Yy]* ) return 1;;
|
||||
[Nn]* ) return 0;;
|
||||
* ) echo "Please answer yes or no.";;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# Don't ask for things that are already there
|
||||
TERMUX=0
|
||||
if [ -d /data/data/com.termux/files ]; then
|
||||
TERMUX=1
|
||||
GUI=0
|
||||
fi
|
||||
|
||||
if which i3 &> /dev/null; then
|
||||
GUI=1
|
||||
fi
|
||||
|
||||
if [ -z $ADMIN ]; then
|
||||
prompt "Are you a superuser on this machine?"
|
||||
ADMIN=$?
|
||||
fi
|
||||
if [ -z $GUI ]; then
|
||||
prompt "Do you want a X environment on this machine?"
|
||||
GUI=$?
|
||||
fi
|
||||
if [ -z $EXTRA ]; then
|
||||
prompt "Do you want not-so-needed software on this machine?"
|
||||
EXTRA=$?
|
||||
fi
|
||||
|
||||
# TODO Verify if the package exists before installing it
|
||||
|
||||
# System detection
|
||||
if which pacman &> /dev/null; then
|
||||
ARCH=1
|
||||
if [ $ADMIN == 1 ]; then
|
||||
sudo pacman -Sy
|
||||
function installOne { # package
|
||||
pacman -Q $1 &> /dev/null
|
||||
if [ $? == 1 ]; then
|
||||
sudo pacman -S $1 --noconfirm --needed
|
||||
fi
|
||||
}
|
||||
function installFileOne { # file
|
||||
sudo pacman -U "$1"
|
||||
}
|
||||
if which aurman &> /dev/null; then
|
||||
function altInstallOne { # package
|
||||
pacman -Q $1 &> /dev/null
|
||||
if [ $? == 1 ]; then
|
||||
aurman -S "$1" --noconfirm --noedit
|
||||
fi
|
||||
}
|
||||
elif which pacaur &> /dev/null; then
|
||||
function altInstallOne { # package
|
||||
pacman -Q $1 &> /dev/null
|
||||
if [ $? == 1 ]; then
|
||||
pacaur -S "$1" --noconfirm --noedit
|
||||
fi
|
||||
}
|
||||
elif which yaourt &> /dev/null; then
|
||||
function altInstallOne { # package
|
||||
pacman -Q $1 &> /dev/null
|
||||
if [ $? == 1 ]; then
|
||||
yaourt -S "$1" --noconfirm
|
||||
fi
|
||||
}
|
||||
else
|
||||
# Install package from PKGBUILD file
|
||||
function installPKGBUILD { # url
|
||||
TMP_DIR="$(mktemp -d /tmp/pkgbuild.XXXXXXXXXX)"
|
||||
cd "$TMP_DIR"
|
||||
wget "$1" -O PKGBUILD
|
||||
makepkg -si
|
||||
cd -
|
||||
rm -rf "$TMP_DIR"
|
||||
}
|
||||
|
||||
function altInstallOne { # package
|
||||
pacman -Q $1 &> /dev/null
|
||||
if [ $? == 1 ]; then
|
||||
installPKGBUILD "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=$1"
|
||||
fi
|
||||
}
|
||||
fi
|
||||
else
|
||||
echo "You're on a Arch System but it's not yours? Did Arch got that popular?"
|
||||
return 42
|
||||
fi
|
||||
|
||||
elif which dpkg &> /dev/null; then
|
||||
DEBIAN=1
|
||||
if [[ $ADMIN == 1 || $TERMUX == 1 ]]; then
|
||||
if [ $TERMUX == 1 ]; then
|
||||
DEBIAN=0
|
||||
apt update -y
|
||||
else
|
||||
sudo apt-get update -y
|
||||
fi
|
||||
function installOne { # package
|
||||
|
||||
# Finding out if it's already installed or not
|
||||
STATUS=$(mktemp)
|
||||
LANG=C dpkg-query --status $1 &> $STATUS
|
||||
installed=0
|
||||
if [ $? == 0 ]; then
|
||||
cat $STATUS | grep '^Status:' | grep ' installed' --quiet
|
||||
if [ $? == 0 ]; then
|
||||
installed=1
|
||||
fi
|
||||
fi
|
||||
rm -f $STATUS > /dev/null
|
||||
|
||||
# Installing if it's not installed
|
||||
if [ $installed == 0 ]; then
|
||||
# TODO noconfirm
|
||||
if [ $TERMUX == 1 ]; then
|
||||
apt install $1 -y
|
||||
else
|
||||
sudo apt-get install $1 -y
|
||||
fi
|
||||
fi
|
||||
}
|
||||
function installFileOne { # file
|
||||
dpkg -i "$1"
|
||||
}
|
||||
else
|
||||
function installOne { # package
|
||||
debloc install $1
|
||||
}
|
||||
function installFileOne { # file
|
||||
debloc deb "$1"
|
||||
}
|
||||
fi
|
||||
function altInstallOne {
|
||||
echo "[ERROR] There's no alternate installer for this distribution. Can't install $1."
|
||||
}
|
||||
else
|
||||
echo "Uuuh, what kind of distribution is this?"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Install package with the standard
|
||||
# package manager for the distribution
|
||||
function inst {
|
||||
for pkg in $*; do
|
||||
installOne $pkg
|
||||
done
|
||||
}
|
||||
|
||||
# Install package FILE with the standard
|
||||
# package manager for the distribution
|
||||
function instFile {
|
||||
for pkg in $*; do
|
||||
installFileOne $pkg
|
||||
done
|
||||
}
|
||||
|
||||
# Install package with the alternate
|
||||
# package manager for the distribution
|
||||
function altInst {
|
||||
for pkg in $*; do
|
||||
altInstallOne $pkg
|
||||
done
|
||||
}
|
||||
|
||||
function systemdUserUnit {
|
||||
systemctl --user enable "$1"
|
||||
systemctl --user start "$1"
|
||||
}
|
||||
|
||||
# Common CLI
|
||||
|
||||
changeColors monokai
|
||||
|
||||
# Utils
|
||||
if [ $TERMUX == 1 ]; then
|
||||
inst coreutils man openssl-tool grep sed sh tar
|
||||
inst termux-api
|
||||
if [ $ADMIN == 1 ]; then
|
||||
inst tsu
|
||||
fi
|
||||
fi
|
||||
inst moreutils screen ncdu lsof htop proxytunnel pv curl wget socat mosh bash-completion rsync pwgen fzf highlight
|
||||
# TODO Test those who are on Debian machines and those who aren't
|
||||
if [ $ARCH == 1 ]; then
|
||||
inst bash-completion
|
||||
altInst gopass
|
||||
else
|
||||
inst pass
|
||||
fi
|
||||
|
||||
# Dev
|
||||
if [ $DEBIAN == 1 ]; then
|
||||
inst build-essential
|
||||
elif [ $ARCH == 1 ]; then
|
||||
inst base-devel
|
||||
else
|
||||
inst make
|
||||
fi
|
||||
inst git
|
||||
|
||||
|
||||
# Text editor
|
||||
inst neovim
|
||||
if [ $DEBIAN == 1]; then
|
||||
inst python-neovim pyhon3-neovim
|
||||
elif [ $ARCH == 1]; then
|
||||
inst python2-neovim python-neovim
|
||||
fi
|
||||
|
||||
if [ $DEBIAN == 1 ]; then
|
||||
inst exuberant-ctags
|
||||
else
|
||||
inst ctags
|
||||
fi
|
||||
vim +PlugUpgrade +PlugUpdate +PlugInstall +qall
|
||||
|
||||
# Common GUI
|
||||
if [ $GUI == 1 ]; then
|
||||
.Xresources.d/configure
|
||||
|
||||
# Desktop manager
|
||||
inst dunst feh i3-wm i3lock numlockx qutebrowser rofi rxvt-unicode scrot trayer unclutter xautolock xclip
|
||||
if [ $ARCH == 1 ]; then
|
||||
inst xorg-xinit xorg-xbacklight ttf-dejavu autorandr
|
||||
altInst lemonbar-xft-git keynav-enhanced pacmixer rofi-pass
|
||||
elif [ $DEBIAN == 1 ]; then
|
||||
# TODO autorandr pacmixer rofi-pass ttf-dejavu
|
||||
inst lemonbar keynav xbacklight
|
||||
fi
|
||||
|
||||
# Screen filter
|
||||
if [ $ARCH == 1 ]; then
|
||||
altInst sct
|
||||
elif [ $TERMUX != 1 ]; then
|
||||
if [ ! -f $HOME/.local/bin/sct ]; then
|
||||
TMP=$(mktemp /tmp/XXXXXXXXXX.c)
|
||||
wget https://gist.githubusercontent.com/ajnirp/208c03d3aa7f02c743d2/raw/55bf3eed25739173d8be57b5179ed5542cf40ed6/sct.c -O $TMP
|
||||
cc $TMP --std=c99 -lX11 -lXrandr -o $HOME/.local/bin/sct
|
||||
rm $TMP
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ $EXTRA == 1 ]; then
|
||||
# Extra dev (not on mobile though ^^)
|
||||
if [ $TERMUX == 0 ]; then
|
||||
inst cmake clang llvm ccache python-pip gdb
|
||||
fi
|
||||
|
||||
# Extra CLI
|
||||
inst ffmpeg optipng syncthing mutt msmtp notmuch mbsync jq lynx strace
|
||||
inst unzip unrar jdupes bedup p7zip
|
||||
inst youtube-dl megatools speedtest-cli
|
||||
systemdUserUnit syncthing
|
||||
if [ $ARCH == 1 ]; then
|
||||
insta pandoc youtube-dl translate-shell imagemagick
|
||||
altInst insect pdftk visidata
|
||||
|
||||
# Orga
|
||||
# TODO For others
|
||||
inst vdirsyncer khard todoman offlineimap khal
|
||||
systemdUserUnit vdirsyncer.timer
|
||||
elif [ $DEBIAN == 1]; then
|
||||
inst pandoc pdftk visidata translate-shell youtube-dl
|
||||
else
|
||||
# translate-shell
|
||||
curl -L git.io/trans > ~/.local/bin/trans
|
||||
chmod +x ~/.local/bin/trans
|
||||
|
||||
# TODO Others
|
||||
fi
|
||||
|
||||
# FPGA goodness
|
||||
if [ $ARCH == 1 ]; then
|
||||
inst iverilog
|
||||
altInst ghdl
|
||||
fi
|
||||
|
||||
# Extra GUI
|
||||
if [ $GUI == 1 ]; then
|
||||
inst vlc gimp inkscape mpd thunar musescore llpp pdfpc texlive-{most,lang}
|
||||
|
||||
if [ $ARCH == 1 ]; then
|
||||
inst simplescreenrecorder mpc
|
||||
altInst vimpc-git ashuffle-git ttf-emojione-color puddletag
|
||||
|
||||
# FPGA goodness
|
||||
inst gtkwave
|
||||
fi
|
||||
|
||||
# TODO Others
|
||||
|
||||
fi
|
||||
fi
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue