dotfiles/config/scripts/softwareList

328 lines
7.9 KiB
Plaintext
Raw Normal View History

2019-10-24 19:35:00 +02:00
#!/usr/bin/env sh
# List of the software I use divided by categories.
# Oh and it asks the category you want to install on
# the running machine too.
# TODO Not really tested in conditions
# TODO Not tested with Debian derivate
# TODO Not tested on home folder
CONFIG_FILE="${XDG_CONFIG_DIR:=$HOME/.config}/softwareList"
mkdir -p $XDG_CONFIG_DIR
touch $CONFIG_FILE
. $CONFIG_FILE
prompt() { # text
res="none"
while [ "$res" = "none" ]
do
printf "%s [yn] " "$1"
read -r yn
case $yn in
[Yy]* ) return 0;;
[Nn]* ) return 1;;
* ) echo "Please answer y or n.";;
esac
done
}
uservar() { # var text
if [ -z "${!1}" ]
then
prompt "${2}" && res=true || res=false
export "$1"="$res"
echo "$1"="$res" >> "$CONFIG_FILE"
fi
}
echo "Please answer some questions about this machine and what you want to do on it:"
# Setting variables
[ -d /data/data/com.termux/files ] && TERMUX=true || TERMUX=false
$TERMUX && INSTALL_GUI=false
[ "$USER" = "root" ] && SUPERUSER=true
uservar SUPERUSER "Have root permissions?"
uservar INSTALL_GUI "Install a GUI environment?"
$INSTALL_GUI && INSTALL_X=true
INSTALL_WAYLAND=false
uservar INSTALL_PASSWORD "Handle password?"
uservar INSTALL_MAIL "Read/send mail?"
uservar INSTALL_ORGANISATION "Handle agenda/contacts?"
uservar INSTALL_HOUSEKEEPING "Do some housekeeping?"
uservar INSTALL_FPGA "Handle FPGAs?"
uservar INSTALL_UTILITIES "Extra utilities?"
uservar INSTALL_DOCUMENT "Create documents?"
uservar INSTALL_IMAGE "Do image editing?"
uservar INSTALL_MUSIC "Play/edit music?"
uservar INSTALL_VIDEO "Play/edit videos?"
echo "(you can change those answers later in $CONFIG_FILE)"
# Preparing installers
. ./installSoftware
resetInstallers
$SUPERUSER && addSystemInstallers
addUserInstallers
echo "Installers that will be used:"
listInstallers | sed 's/^/- /'
echo "Updating databases & packages"
# updateInstallers # DEBUG put back
echo "Finding packages to install"
# Note: i A B: will try A then B for each installer
# i A || i B: will try A for each installer, then B for each installer
# Package managers (install first)
i yay
i python-pip python3-pip pip3
# TODO Install first and recharge installers
# Utils used by those scripts
i base coreutils # Basic shell commands (ls, rm, cp...)
i bash # Shell
i grep # Text finder
i sed # Text replacer
i tar # Archive tool
i openssl openssl-tools # machines script verification
# Various utilities
$SUPERUSER && i sudo tsu
$TERMUX && termux-api
# Shell utilities
i moreutils # Advanced shell commands (ts, sponge...)
i tmux # Terminal multiplexer
i bash-completion # Shell completions
i fzf # Fancy file finder
i highlight # Syntax highlighter
i zsh # Shell
i zsh-autosuggestions # Shell suggestions
i zsh-completions # Shell completions
i zsh-history-substring-search # Shell config
i zsh-syntax-highlighting # Shell highlighting
# Text edition
(i neovim nvim && i python-neovim python3-neovim) || i vim || i vi # Text editor
# Monitoring utilities
i ncdu # Explore directories by weight on disk
i lsof # Find who/what uses the files
i htop # List process by resources
i pv # Allow to show progress in pipe
i progress # Show progress of functions
# Network utilities
i proxytunnel # Proxy connections through HTTPS
i curl # Transfer URL
i wget # Download URL
i gnu-netcat # Network piping
i socat # Multi-purpose relay
i rsync # Remote file-copying tool
i speedtest-cli # Network speed benchmarker
# Archives utilities
i unzip # Unarchive ZIP files
i unrar # Unarchive RAR files
i p7zip # Unarchive 7z files
# Password handling
if $INSTALL_PASSWORD
then
i pwgen # Password generator
i gopass || i pass # Password manager
if $INSTALL_GUI
then
i rofi-pass # Password selector
fi
fi
if $INSTALL_MAIL
then
# i offlineimap # Synchronize IMAP (legacy)
i isync mbsync # Synchronize IMAP
i msmtp # Send mail via SMTP
i notmuch # Index mail
i neomutt || i mutt # CLI mail client
i lynx # CLI web browser (for HTML mail)
2019-11-01 18:34:45 +01:00
i tiv # CLI image viewer
2019-10-24 19:35:00 +02:00
if $INSTALL_GUI
then
i thunderbird # GUI mail client (just in case)
fi
fi
if $INSTALL_ORGANISATION
then
i vdirsyncer # Synchronize DAV
i khard # Contacts editor
i khal # Calendar editor
i task # Todo-list
i timew # Time-tracker
fi
if $INSTALL_HOUSEKEEPING
then
i syncthing # Synchronize files amongst devices
i jdupes # Find duplicates
i duperemove # Find and merge dupplicates on BTRFS partitions
i optipng # Optimize PNG files
i jpegtran libjpeg-turbo # Compress JPEG files
2019-11-01 18:34:45 +01:00
i reflac # Recompress FLAC files
2019-10-24 19:35:00 +02:00
fi
# Dev utilities
i base-devel build-essential || (i make; i gcc)
i git
[ -z "$INSTALL_DEV" ] && $TERMUX && INSTALL_DEV=false
if $INSTALL_DEV
then
# Misc/Reusable
i strace # Tracer
i ctags universal-ctags exuberant-ctags # Tags generator
# C/C++
i cmake # C++ Build system
i clang # C/C++ Compiler
i ccache # Build cache
i gdb # Debugger
# JS
i jq # CLI JSON file handler
# Python
i python-language-server # Python language server
i mypy && i pyls-mypy # Static typing checker for Python
# Bash
i bash-language-server # Bash / SH language server
fi
if $INSTALL_FPGA
then
i yosys # Verilog processor
i iverilog # Verilog simulator
i ghdl # VHDL simulator
i gtkwave # Simulation file viewer
fi
if $INSTALL_UTILITIES
then
i visidata # CSV file reader
i insect # Unit calculator
fi
if $INSTALL_DOCUMENT
then
i pandoc # Document converter
i texlive-most && i texlive-lang # LaTeX renderer
i pdftk # PDF manipulator
i translate-shell # Translator
i inkscape # Vector image converter
i optipng # Optimize PNG files
i jpegtran libjpeg-turbo # Compress JPEG files
fi
if $INSTALL_IMAGE
then
i imagemagick # CLI Image manipulator
i gimp # Photo editor
i darktable # Raw photo editor
i inkscape # Vectorial image editor
i optipng # Optimize PNG files
i jpegtran libjpeg-turbo # Compress JPEG files
fi
if $INSTALL_MUSIC
then
i mpv # Audio/Video player
i puddletag # Musig tag editor
i mpd # Music player daemon
i mpc # CLI MPD client
i vimpc-git # CLI UI MPD client
i musescore # Music sheet editor
i ashuffle # Auto-fill MPD playlist
fi
if $INSTALL_VIDEO
then
i vlc # Video player
i mpv # Audio/Video player
i ffmpeg # Video/Audio file handler
i youtube-dl # Downloader for videos
i megatools # Downloader for mega.nz
if $INSTALL_X
then
i simplescreenrecorder # Screen recorder
fi
fi
# Desktop environment
if $INSTALL_GUI
then
i firefox # Web browser
i thunar # Directory browser (just in case)
i feh # Background / Image viewer
i zathura && i zathura-pdf-mupdf # PDF viewer
i ttf-twemoji # Emoji fonts
if $INSTALL_X
then
i i3-wm # WM
i dunst # Notifications
i i3lock # Locker
i numlockx # Numlock auto-unlock
i rofi # HUD selector
i rxvt-unicode # Terminal emulator
i scrot # Screenshot taker
i trayer # Tray icons (just in case)
i unclutter # Auto mask mouse
i xautolock # Auto lock screen
i xclip # Copy/paste
i lemonbar-xft-git lemonbar # Bottom bar
i autorandr # Multiple screen configurations
i ttf-dejavu # Font
i keynav-enhanced keynav # Use mouse with keyboard
i pacmixer # To change PA volumes
i sct # Red filter # TODO Autocompile
i xorg-xinit # To launch X
i xorg-xbacklight xbacklight # For laptop brightness
i pulseaudio # To get ausdio
# TODO Bluetooth headset stuff
fi
if $INSTALL_WAYLAND
then
i sway
fi
fi
echo "Listing software to install"
listInstallers | while read -r installerName
do
echo " Installer $installerName will install:"
listPackagesForInstaller "$installerName" | sed 's/^/ - /'
done
prompt "Okay with those?" || exit 0
echo "Installing packages"
installPackages