Streamline installation of all further software

This commit is contained in:
Manuel Thalmann 2024-07-17 14:18:27 +02:00
parent f1163a12c8
commit 719a9ab8ff
36 changed files with 679 additions and 9 deletions

View file

@ -12,6 +12,7 @@
software =
let
inherit (cfg.software)
coding
common
desktopExperience
school
@ -42,6 +43,12 @@
default = common && !server;
};
fileSync = mkOption {
type = types.bool;
description = "A value indicating whether file syncs should be installed.";
default = common && !server;
};
school = mkOption {
type = types.bool;
description = "A value indicating whether software for studies should be installed.";
@ -77,6 +84,12 @@
description = "A value indicating whether development apps should be installed.";
default = common;
};
python = mkOption {
type = types.bool;
description = "A value indicating whether apps for coding python should be installed.";
default = coding;
};
};
};
};

View file

@ -109,7 +109,7 @@ yay --noconfirm -Syu jq;
BROWSER_BIN="brave" \
EXTENSION_DIR="/usr/share/chromium-extensions" \
EXTENSION_POLICY_DIR="$braveExtensions" \
source "../../Common/Config/Chromium/install-ytmusic-dl.sh";
source "../../Common/Software/Chromium/ytmdl.sh";
# sudo ln -sf "$braveExtensions" /opt/brave.com/brave-beta/extensions;
# sudo ln -sf "$braveExtensions" /opt/brave.com/brave-nightly/extensions;

View file

@ -25,6 +25,7 @@ begin
if collectionActive essential
yayinst \
bb \
mkinitcpio-firmware \
neofetch \
bash-completion \
@ -41,10 +42,12 @@ begin
rar
sudo pkgfile --update
source "$dir/../../Common/Software/bash/main.fish"
source "$dir/../Software/openssh/main.fish"
source "$dir/../Software/vim/main.fish"
source "$dir/../Software/git/main.fish"
source "$dir/../Software/zoxide/main.fish"
source "$dir/../Software/logo-ls/main.fish"
# GRUB Shenanigans - if that's not an essential I don't know what is!
source "$dir/../Software/minegrub-theme/main.fish";
@ -54,8 +57,6 @@ begin
yayinst \
tldr \
btop \
nvtop \
numbat-bin \
terminal-parrot
source "$dir/../Software/aliae/main.fish"
@ -78,6 +79,50 @@ begin
ttf-ms-win11-auto \
otf-cascadia-code \
ttf-droid
# Password Management
yayinst \
bitwarden \
keepass \
keepassxc
# Tools
yayinst \
android-tools \
blackbox-terminal \
cpu-x \
gnome-calculator \
yubikey-manager-qt
yayinst \
remmina (
# RDP support for Remmina
) freerdp \
wireshark-qt \
linux-wifi-hotspot
# Creativity
yayinst \
gimp \
inkscape
# Office stuff
yayinst \
libreoffice-fresh \
naps2-bin \
pdfarranger \
protonmail-bridge \
thunderbird
# Browser
source "$dir/../Software/firefox/main.fish"
source "$dir/../Software/brave/main.fish"
source "$dir/../Software/Pennywise/main.fish"
# Virtualization
source "$dir/../Software/waydroid/main.fish"
source "$dir/../Software/Virtual Machine Manager/main.fish"
yayinst propertree-git # mac config file editor
end
if collectionActive server
@ -89,7 +134,81 @@ begin
# Networking
yayinst \
networkmanager-openvpn \
networkmanager-openconnect
networkmanager-openconnect \
protonvpn
if collectionActive common
source "$dir/../Software/IcedTea/main.fish"
yayinst \
img2pdf \
numbat-bin \
nvtop \
pdf2svg \
tnef
end
end
if collectionActive media
yayinst \
ytmdesktop-bin \
netflix \
spotube-bin \
stremio \
tidal-dl \
tidal-hifi-bin \
nuclear-player-bin \
audius-client-bin
end
if collectionActive fileSync
yayinst nextcloud-client
source "$dir/../Software/rclone/main.fish"
end
if collectionActive socialMedia
yayinst \
signal-desktop \
threema-desktop \
discord (
# Open Source Discord implementation
) openasar-git
end
if collectionActive productivity
yayinst \
anki-bin
end
if collectionActive coding
yayinst \
tea \
woodpecker-cli
source "$dir/../Software/vscode/main.fish"
source "$dir/../Software/n/main.fish"
end
if collectionActive python
yayinst \
python \
python-pip \
python-pipenv
source "$dir/../Software/pyenv/main.fish"
end
if collectionActive gaming
yayinst \
steam \
chiaki \
osu-lazer-bin \
libretro \
supertux \
gamepad-tool-bin
source "$dir/../Software/Lutris/main.fish"
sudo flatpak install -y flathub com.usebottles.bottles
end
end
end

View file

@ -0,0 +1,13 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/firefox/main.fish"
function installSW
yayinst firefox
configureSW
end
runInstaller $argv
end

View file

@ -0,0 +1,24 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
jdk-temurin
yayinst \
icedtea-web
configureSW
end
function configureSW
# Allow execution of huwaei KVM application (uses out of date security mechanisms)
sudo sed -i \
"/^jdk.jar.disabledAlgorithms=/{ :comment; s/\(.*\)/#\1/; /\\\\\$/{ n; bcomment; }; }" \
/usr/lib/jvm/default-runtime/conf/security/java.security
end
runInstaller $argv
end

View file

@ -0,0 +1,72 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
wine-staging \
giflib \
lib32-giflib \
libpng \
lib32-libpng \
libldap \
lib32-libldap \
gnutls \
lib32-gnutls \
mpg123 \
lib32-mpg123 \
openal \
lib32-openal \
v4l-utils \
lib32-v4l-utils \
libpulse \
lib32-libpulse \
libgpg-error \
lib32-libgpg-error \
alsa-plugins \
lib32-alsa-plugins \
alsa-lib \
lib32-alsa-lib \
libjpeg-turbo \
lib32-libjpeg-turbo \
sqlite \
lib32-sqlite \
libxcomposite \
lib32-libxcomposite \
libxinerama \
lib32-libgcrypt \
libgcrypt \
lib32-libxinerama \
ncurses \
lib32-ncurses \
ocl-icd \
lib32-ocl-icd \
libxslt \
lib32-libxslt \
libva \
lib32-libva \
gtk3 \
lib32-gtk3 \
gst-plugins-base-libs \
lib32-gst-plugins-base-libs \
vulkan-icd-loader \
lib32-vulkan-icd-loader
yayinst (
# Extracting GOG games
) innoextract \
gamemode \
lib32-gamemode \
vkd3d \
lib32-vkd3d \
gamescope \
yad \
protontricks \
protonup-qt-bin
yayinst lutris
end
runInstaller $argv
end

View file

@ -0,0 +1,25 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
pennywise-bin
configureSW
end
function configureSW
set -l patch " --no-sandbox"
set -l pattern "^Exec=.*"
set -l indicator "$pattern$patch"
set -l file /usr/share/applications/pennywise.desktop
if ! grep "$indicator" "$file" > /dev/null
sudo sed -i "/$pattern/s/$pattern/\0 --no-sandbox/" "$file"
end
end
runInstaller $argv
end

View file

@ -0,0 +1,28 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst qemu-full
yayinst \
virtiofsd \
virt-manager \
dnsmasq \
iptables-nft \
swtpm \
lxc \
virt-bootstrap-git
configureSW
end
function configureSW -V dir
sudo systemctl enable --now libvirtd
sudo systemctl enable --now virtlogd
source "$dir/../../../Common/Software/Virtual Machine Manager/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,16 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
yayinst brave-bin (
# brave-beta-bin
# brave-nightly-bin
)
fish "$dir/../../../Common/Software/brave/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,41 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
set -l dirName (realpath "$dir")
set -l contextRoot (mktemp -d)
set -l pkgName logo-ls
set -l patchName workaround.patch
begin
pushd "$contextRoot" > /dev/null
yay -G -f "$pkgName"
cd "$pkgName"
cp "$dirName/$patchName" .
set -i \
-e "/^source=(/s/source=(/\0$patchName /" \
-e "/^md5sums=(/s/^md5sumns=(/\0SKIP /" \
-e "/^build() {/,/}/{" \
-e "/^[[:space:]]*cd/{" \
-e "a cat ../$patchName | patch --strip 1 --forward --merge" \
-e "}" \
-e "}" \
PKGBUILD
makepkg --noconfirm -si --force
popd > /dev/null
end
rm -rf "$contextRoot"
configureSW
end
function configureSW -V dir
source "$dir/../../../Common/Software/logo-ls/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,12 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
yayinst nodejs-n
sudo fish "$dir/../../../Common/Software/n/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,20 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
nix \
nil-git
configureSW
end
function configureSW -V dir
sudo systemctl enable --now nix-daemon
source "$dir/../../../Common/Software/nix/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,12 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst pyenv
source "$dir/../../../Common/Software/pyenv/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,15 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/rclone/main.fish"
function installSW
yayinst \
rclone
configureSW
end
runInstaller $argv
end

View file

@ -0,0 +1,27 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
vscodium-bin \
visual-studio-code-bin
configureSW
end
function configureSW
set -l bins codium code
for bin in $bins
if type -q "$bin"
echo "--touch-events" | sudo tee /etc/skel/.config/$bin-flags.conf > /dev/null
end
end
source "$dir/../../../Common/Software/vscode/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,20 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst (
# Waydroid prerequisite: https://wiki.archlinux.org/title/Waydroid#DKMS_modules
) binder_linux-dkms \
waydroid (
# For installing ARM suppot on waydroid
) waydroid-script-git (
# Clipboard support: https://wiki.archlinux.org/title/Waydroid#Failed_to_start_Clipboard_manager_service
) python-pyclip (
# Wayland clipboard support: https://github.com/spyoungtech/pyclip?tab=readme-ov-file#linux
) wl-clipboard
end
runInstaller $argv
end

View file

@ -1,4 +1,4 @@
#!/bin/bash
pushd "${BASH_SOURCE%/*}" > /dev/null;
sudo cp ./firefox.sh /etc/profile.d/;
sudo cp ../../Software/firefox/firefox.sh /etc/profile.d/;
popd > /dev/null;

View file

@ -1,5 +1,5 @@
#!/bin/bash
pushd "${BASH_SOURCE%/*}" > /dev/null;
pushd "${BASH_SOURCE%/*}/../../Software/rclone" > /dev/null;
sudo cp "rclone.service" "rclone.target" "rclone@.service" /etc/systemd/user;
systemctl enable --user rclone;

View file

@ -2,7 +2,7 @@
BROWSER_BIN="${BROWSER_BIN}";
EXTENSION_NAME="${EXTENSION_NAME}";
UNPACKED_EXTENSION="${UNPACKED_EXTENSION}";
EXTENSION_DIR="${EXTENSION_DIR}";
EXTENSION_DIR="${EXTENSION_DIR:-"/usr/local/share/chromium-extensions"}";
EXTENSION_POLICY_DIR="${EXTENSION_POLICY_DIR}";
# Elevate script

View file

@ -0,0 +1,18 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
end
function configureSW
sudo virsh net-autostart default
if not sudo virsh net-info default | grep "^Active:\s*yes\$" > /dev/null
sudo virsh net-start default || true
end
end
runInstaller $argv
end

View file

@ -14,7 +14,11 @@ begin
sudo install -Dm644 "$dir/aliae.yml" "$file"
begin
echo "export ALIAE_CONFIG=$(string escape "$file")"
printf %s\n "" \
"# aliae" \
"export ALIAE_CONFIG=$(string escape "$file")" \
'eval "$(aliae init bash)"' \
'eval "$(aliae completion bash)"'
end | installBashProfile "aliae" "aliae"
begin

View file

@ -0,0 +1,29 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function configureSW
set -l bin
set -l extensionRoot
set -l bins brave brave-beta brave-nightly
set -l \
extensionRoots \
/opt/brave-bin/extensions \
/opt/brave.com/brave-{beta,nightly}/extensions
for i in (seq (count $bins))
if type -q "$bins[$i]"
set bin "$bins[$i]"
set extensionRoot "$extensionRoots[$i]"
end
end
BROWSER_BIN="$bin" \
EXTENSION_POLICY_DIR="$braveExtensions" \
bash "$dir/../Chromium/ytmdl.sh"
end
runInstaller $argv
end

View file

@ -0,0 +1,12 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/firefox/main.fish"
function configureSW -V dir
sudo cp "$dir/firefox.sh" /etc/profile.d/
end
runInstaller $argv
end

View file

@ -0,0 +1,59 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function configureSW -V dir
source "../bash/profile.fish";
source "../fish/profile.fish";
set -l functionName _PortValhalla_ls_
function dump_header
echo "# logo-ls"
end
function dump_aliases
printf %s\n \
"alias ls='$functionName'" \
"alias ll='ls -al'" \
"alias l='ls'"
end
begin
dump_header
printf %s\n \
"function $functionName() {" \
" if [ -t 1 ]" \
" then" \
' logo-ls -D "$@";' \
" else" \
' ls --color=auto "$@"' \
" fi;" \
"}" \
""
dump_aliases
end | installBashProfile "logo-ls"
if type -q fish
begin
dump_header
printf %s\n \
"function $functionName" \
" if [ -t 1 ]" \
' logo-ls -D $argv' \
" else" \
' command ls --color=auto $argv' \
" end" \
"end" \
""
dump_aliases
end | installFishProfile "logo-ls"
end
end
runInstaller $argv
end

View file

@ -0,0 +1,16 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
npm install --global n
configureSW
end
function configureSW
n install latest
end
runInstaller $argv
end

View file

@ -8,6 +8,9 @@ begin
set -l configFile ~/.config/nix/nix.conf
mkdir -p (dirname "$configFile")
cp "$dir/../../../../archiso/airootfs/root/.config/nix/nix.conf" "$configFile"
else
sudo nix-channel --add https://nixos.org/channels/nixpkgs-unstable
sudo nix-channel --update
end
end

View file

@ -0,0 +1,11 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
sudo install -m 755 "$dir/nuke-usb.sh" /usr/local/bin/nuke-usb
end
runInstaller $argv
end

View file

@ -0,0 +1,29 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/aliae/main.fish"
function installSW
curl https://pyenv.run | bash
configureSW
end
function configureSW
source "$dir/../bash/profile.fish"
source "$dir/../fish/profile.fish"
begin
printf %s\n "" \
'export PYENV_ROOT="$HOME/.pyenv"' \
'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' \
'eval "$(pyenv init -)"'
end | installBashProfile "pyenv" > /dev/null
if type -q fish
addFishProfile "pyenv" "pyenv" "pyenv init - | source"
end
end
runInstaller $argv
end

View file

@ -0,0 +1,11 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function configureSW -V dir
sudo cp "$dir/rclone.service" "$dir/rclone.target" "$dir/rclone@.service" /etc/systemd/user
end
runInstaller $argv
end

View file

@ -0,0 +1,21 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/aliae/main.fish"
function configureSW
set -l bins codium codium-insiders code code-insiders
set -l extensions zokugun.{sync-settings,vsix-manager}
for bin in $bins
if type -q "$bin"
for extension in $extensions
"$bin" --install-extension "$extension"
end
end
end
end
runInstaller $argv
end

View file

@ -11,7 +11,7 @@ source "../../Debian/Software/Brave/install-stable.sh";
BROWSER_BIN="brave-browser" \
EXTENSION_DIR=/usr/share/brave-extensions \
EXTENSION_POLICY_DIR=/opt/brave.com/brave/extensions \
source "../../Common/Config/Chromium/install-ytmusic-dl.sh";
source "../../Common/Software/Chromium/ytmdl.sh";
source "../../Debian/Software/Google Chrome/install.sh";