Compare commits

...

14 commits

31 changed files with 347 additions and 385 deletions

View file

@ -2,254 +2,25 @@
begin
set -l dir (status dirname)
function getDeploymentScript -V dir
echo "$dir/../Scripts/deploy.fish";
end
function initialize -V dir
source "$dir/../../Common/Scripts/wait-network.fish"
waitNetwork
or exit
sudo systemctl enable --now nix-daemon
source "$dir/../Scripts/software.fish"
source "$dir/../Software/base-devel/main.fish"
source "$dir/../Software/pacman/main.fish"
source "$dir/../Software/yay/main.fish"
and source "$dir/../Scripts/software.fish"
and source "$dir/../Software/base-devel/main.fish"
and source "$dir/../Software/pacman/main.fish"
and source "$dir/../Software/yay/main.fish"
yayinst \
and yayinst \
pacman-contrib \
powershell-bin
end
if not type -q installSoftware
function installSoftware -V dir
source "$dir/../../Common/Scripts/config.fish"
source "$dir/../Scripts/software.fish"
if collectionActive essential
yayinst \
mkinitcpio-firmware \
neofetch \
bash-completion \
wget \
oh-my-posh-bin \
screen \
tmux \
htop \
lsof \
zsh \
fish \
pkgfile \
sl \
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";
end
if collectionActive common
yayinst \
tldr \
btop \
terminal-parrot
source "$dir/../Software/aliae/main.fish"
end
if collectionActive desktopExperience
yayinst \
maliit-keyboard \
dconf-editor \
flatpak (
# Fixes: https://www.reddit.com/r/flatpak/comments/168tav2/how_to_fix_blurry_flatpaks_on_high_resolution/
) xdg-desktop-portal-gtk
source "$dir/../Software/KDE/main.fish"
source "$dir/../Software/sddm/main.fish"
# Fonts
yayinst \
ttf-cascadia-code-nerd \
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 \
wireshark-qt \
linux-wifi-hotspot
# Remote Access
yayinst \
remmina (
# RDP support for Remmina
) freerdp
# Creativity
yayinst \
gimp \
inkscape
# Office stuff
yayinst \
libreoffice-fresh \
naps2-bin \
pdfarranger \
protonmail-bridge \
thunderbird
yayinst \
texlive \
texlive-langgerman
# 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 .plist config file editor
if collectionActive coding
yayinst \
devdocs-desktop \
godot-mono-bin
source "$dir/../Software/vscode/main.fish"
end
if collectionActive school
yayinst \
teams-for-linux \
xournalpp-git \
rnote
end
end
if collectionActive server
else
# Energy Saving
yayinst power-profiles-daemon
sudo systemctl enable --now power-profiles-daemon
# Networking
yayinst \
networkmanager-openvpn \
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 \
vesktop-bin
end
if collectionActive productivity
yayinst \
anki-bin
end
if collectionActive school
yayinst \
jdk17-temurin \
gradle \
jetbrains-toolbox
source "$dir/../../Common/Software/udev/ct-board.fish"
end
if collectionActive coding
yayinst \
archiso \
wimlib (
# ISO support for wimlib
) cdrkit \
tea \
woodpecker-cli (
# AsciiDocs
) python-docutils (
# reStructuredText
) esbonio
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"
flatpak install -y flathub com.usebottles.bottles
end
if collectionActive essential
yayinst \
bb
end
end
end
source "$dir/../../Common/OS/install.fish"
end

View file

@ -0,0 +1,273 @@
function deploySoftware -d "Deploys a the specified software action" -a action
set -l dir (status dirname)
. "$dir/software.fish"
if [ -z "$action" ]
set action "install"
end
set -l isInstall (
if [ "$action" = "install" ]
echo true
else
echo false
end
)
if collectionActive essential
if $isInstall
yayinst \
mkinitcpio-firmware \
neofetch \
bash-completion \
wget \
oh-my-posh-bin \
screen \
tmux \
htop \
lsof \
zsh \
fish \
pkgfile \
sl \
rar
and sudo pkgfile --update
end
and source "$dir/../../Common/Software/bash/main.fish" $action
and source "$dir/../Software/openssh/main.fish" $action
and source "$dir/../Software/vim/main.fish" $action
and source "$dir/../Software/git/main.fish" $action
and source "$dir/../Software/zoxide/main.fish" $action
and source "$dir/../Software/logo-ls/main.fish" $action
# GRUB Shenanigans - if that's not essential I don't know what is!
and source "$dir/../Software/minegrub-theme/main.fish" $action
end
and if collectionActive common
if $isInstall
yayinst \
tldr \
btop \
terminal-parrot
end
and source "$dir/../Software/aliae/main.fish" $action
end
and if collectionActive desktopExperience
source "$dir/../Software/KDE/main.fish" $action
and source "$dir/../Software/sddm/main.fish" $action
and if $isInstall
yayinst \
maliit-keyboard \
dconf-editor \
flatpak (
# Fixes: https://www.reddit.com/r/flatpak/comments/168tav2/how_to_fix_blurry_flatpaks_on_high_resolution/
) xdg-desktop-portal-gtk
# Fonts
and yayinst \
ttf-cascadia-code-nerd \
ttf-ms-win11-auto \
otf-cascadia-code \
ttf-droid
# Password Management
and yayinst \
bitwarden \
keepass \
keepassxc
# Tools
and yayinst \
android-tools \
blackbox-terminal \
cpu-x \
gnome-calculator \
yubikey-manager-qt \
wireshark-qt \
linux-wifi-hotspot
# Remote Access
and yayinst \
remmina (
# RDP support for Remmina
) freerdp
# Creativity
and yayinst \
gimp \
inkscape
# Office stuff
and yayinst \
libreoffice-fresh \
naps2-bin \
pdfarranger \
protonmail-bridge \
thunderbird
and yayinst \
texlive \
texlive-langgerman
# Virtualization
and yayinst propertree-git # mac .plist config file editor
and if collectionActive school
yayinst \
teams-for-linux \
xournalpp-git \
rnote
end
end
# Internet Access
and source "$dir/../Software/Firefox/main.fish" $action
and source "$dir/../Software/brave/main.fish" $action
and source "$dir/../Software/Pennywise/main.fish" $action
# Virtualization
and source "$dir/../Software/waydroid/main.fish" $action
and source "$dir/../Software/Virtual Machine Manager/main.fish" $action
and if collectionActive coding
if $isInstall
yayinst \
devdocs-desktop \
godot-mono
end
and source "$dir/../Software/vscode/main.fish" $action
end
end
and if collectionActive server
else
if $isInstall
# Energy Saving
yayinst power-profiles-daemon
and sudo systemctl enable --now power-profiles-daemon
# Networking
and yayinst \
networkmanager-openvpn \
networkmanager-openconnect \
proton-vpn-gtk-app \
protonvpn-cli-community
end
and if collectionActive common
if $isInstall
and yayinst \
img2pdf \
numbat-bin \
nvtop \
pdf2svg \
tnef
end
and source "$dir/../Software/IcedTea/main.fish" $action
end
end
and if collectionActive media && $isInstall
yayinst \
ytmdesktop-bin \
netflix \
spotube-bin \
stremio \
tidal-hifi-bin \
nuclear-player-bin \
audius-client-bin
and yayinst tidal-dl || true
end
and if collectionActive fileSync
if $isInstall
yayinst nextcloud-client
end
and source "$dir/../Software/rclone/main.fish" $action
end
and if collectionActive socialMedia && $isInstall
yayinst \
signal-desktop \
vesktop-bin
yes y | yayinst threema-desktop
yes y | yayinst nodejs
end
and if collectionActive productivity && $isInstall
yayinst \
anki-bin
end
and if collectionActive school && $isInstall
yayinst \
jdk17-temurin \
gradle \
jetbrains-toolbox
and source "$dir/../../Common/Software/udev/ct-board.fish"
end
and if collectionActive coding
if $isInstall
yayinst \
archiso \
wimlib (
# ISO support for wimlib
) cdrkit \
tea \
woodpecker-cli (
# AsciiDocs
) python-docutils (
# reStructuredText
) esbonio
end
and source "$dir/../Software/n/main.fish" $action
end
and if collectionActive python
if $isInstall
yayinst \
python \
python-pip \
python-pipenv
end
and source "$dir/../Software/pyenv/main.fish" $action
end
and if collectionActive gaming
if $isInstall
yayinst \
steam \
chiaki \
osu-lazer-bin \
libretro \
supertux \
gamepad-tool-bin
and flatpak install -y flathub com.usebottels.bottles
end
and source "$dir/../Software/Lutris/main.fish" $action
end
and if collectionActive essential && $isInstall
yayinst bb
end
end
deploySoftware $argv

View file

@ -5,6 +5,9 @@ begin
function installSW -V dir
yayinst firefox
end
function configureSW -V dir
fish "$dir/../../../Common/Software/Firefox/main.fish" configure
end

View file

@ -9,8 +9,6 @@ begin
yayinst \
icedtea-web
configureSW
end
function configureSW

View file

@ -19,8 +19,6 @@ begin
# File Exchange Support for KDE Connect: https://wiki.archlinux.org/title/KDE#KDE_Connect
) sshfs \
fwupd
configureSW
end
function configureSW

View file

@ -6,8 +6,6 @@ begin
function installSW
yayinst \
pennywise-bin
configureSW
end
function configureSW

View file

@ -14,8 +14,6 @@ begin
swtpm \
lxc \
virt-bootstrap-git
configureSW
end
function configureSW -V dir

View file

@ -3,10 +3,12 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
function installSW
yayinst \
aliae-bin
end
function configureSW -V dir
fish "$dir/../../../Common/Software/aliae/main.fish" configure
end

View file

@ -3,12 +3,14 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
function installSW
yayinst brave-bin (
# brave-beta-bin
# brave-nightly-bin
)
end
function configureSW -V dir
fish "$dir/../../../Common/Software/brave/main.fish" configure
end

View file

@ -3,7 +3,7 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
function installSW
yayinst \
git \
git-lfs \
@ -11,8 +11,10 @@ begin
gitflow-bashcompletion-avh \
gitflow-fishcompletion-avh \
gitflow-zshcompletion-avh
end
and fish "$dir/../../../Common/Software/git/main.fish" configure
function configureSW -V dir
fish "$dir/../../../Common/Software/git/main.fish" configure
end
runInstaller $argv

View file

@ -32,8 +32,6 @@ begin
rm -rf "$contextRoot"
end
configureSW
end
function configureSW -V dir

View file

@ -3,8 +3,11 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
function installSW
yayinst grub-theme-minegrub-git
end
function configureSW -V dir
fish "$dir/../../../Common/Software/minegrub-theme/main.fish" configure
end

View file

@ -3,8 +3,11 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
function installSW
yayinst nodejs-n
end
function configureSW -V dir
sudo --preserve-env --set-home fish "$dir/../../../Common/Software/n/main.fish" configure
end

View file

@ -7,8 +7,6 @@ begin
yayinst \
openssh \
libfido2
source (status filename) configure
end
function configureSW

View file

@ -3,8 +3,11 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
function installSW
yayinst pyenv
end
function configureSW -V dir
fish "$dir/../../../Common/Software/pyenv/main.fish" configure
end

View file

@ -4,10 +4,12 @@ begin
source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/rclone/main.fish"
function installSW -V dir
function installSW
yayinst \
rclone
end
function configureSW -V dir
fish "$dir/../../../Common/Software/rclone/main.fish" configure
end

View file

@ -8,7 +8,6 @@ begin
# yes | yayinst sddm-git
# stable version
yayinst sddm
configureSW
end
function configureSW -V dir

View file

@ -4,7 +4,7 @@ begin
source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/vim/main.fish"
function installSW -V dir
function installSW
yayinst (
# Necessary for accessing clipboard in terminal: https://wiki.archlinux.org/title/Vim
) gvim \
@ -12,8 +12,11 @@ begin
# Add clipboard support for wayland: https://www.reddit.com/r/Fedora/comments/ax9p9t/comment/jjb4p7b/
) vim-wayland-clipboard-git \
wl-clipboard
end
and fish "$dir/../../../Common/Software/vim/main.fish" configure
function configureSW -V dir
fish "$dir/../../../Common/Software/vim/main.fish" configure
end
runInstaller $argv

View file

@ -9,8 +9,6 @@ begin
visual-studio-code-bin (
# Trash functionality
) gvfs
configureSW
end
function configureSW -V dir

View file

@ -3,10 +3,12 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
function installSW
yayinst \
zoxide
end
function configureSW -V dir
fish "$dir/../../../Common/Software/zoxide/main.fish" configure
end

View file

@ -26,18 +26,30 @@ if [ (id -u) -eq 0 ]
and sudo --preserve-env="CONFIG_NAME" --user "$name" "$INSTALLER_SCRIPT"
rm "$sudoConfig"
userdel -r "$name"
userdel -rf "$name"
else
source "$dir/../Software/bash/main.fish"
runHook initialize || true
runHook installDrivers || true
runHook installOS || true
if not type -q getDeploymentScript
function getDeploymentScript
echo "No deployment script specified! No software will be installed." 1>&2
false
end
end
runHook addUsers || begin
runHook initialize || true
and runHook installOS || true
and runHook addUsers || begin
source "$dir/users.fish"
end
runHook installSoftware || true
runHook installSoftware || begin
set -l script (getDeploymentScript)
if [ -n "$script" ]
source $script
end
end
runHook initializeConfig || true
runHook postInstall || true

View file

@ -248,13 +248,11 @@ $null = New-Module {
}
if ($module[1]) {
$parameters = @{
allowPrerelease = $true;
};
$parameters = @("-AllowPrerelease");
}
if (-not (Test-PSModule $module[0])) {
Install-Module -Scope AllUsers -AcceptLicense -Force -AllowClobber $module[0] @parameters;
sudo pwsh -Command Install-Module -Scope AllUsers -AcceptLicense -Force -AllowClobber $module[0] @parameters;
Import-Module $module[0];
}
}

View file

@ -15,7 +15,7 @@ function evalFlake --argument-names config property
if [ -n "$config" ]
set config ".$config"
set _flag_apply "_: ($_flag_apply) ((import $(status dirname)/../../../lib/eval-attribute.nix) _)"
set _flag_apply "_: ($_flag_apply) ((import $(realpath --relative-to (pwd) "$(status dirname)/../../../lib/eval-attribute.nix")) _)"
end
PROPERTY="$property" \

View file

@ -12,23 +12,17 @@ begin
end
function runInstaller -V dir -a action
source "$dir/config.fish"
if [ -z "$action" ] || [ "$action" = "install" ]
installSW $argv[2..]
else if [ "$action" = "configure" ]
configureSW $argv[2..]
source "$dir/config.fish"
set -l users (getUsers)
runInstaller "configure"
if not isConfigured || [ "$USER" != (getConfig "valhalla.setupUser.name") ]
runInstaller userConfig
end
for name in (echo "$users" | jq '.[]' --raw-output0 | string split0)
if [ "$name" != "$USER" ]
runInstaller userConfig "$name"
end
end
else if [ "$action" = "configure" ]
configureSW $argv[2..]
else if [ "$action" = "userConfig" ]
set -l name $argv[2]

View file

@ -3,9 +3,6 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
end
function configureSW
sudo virsh net-autostart default

View file

@ -3,10 +3,6 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
configureSW
end
function configureSW -V dir
source "$dir/../bash/profile.fish"
source "$dir/../fish/profile.fish"

View file

@ -3,10 +3,6 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
configureSW
end
function configureSW -V dir
begin
printf %s\n \
@ -16,7 +12,7 @@ begin
"do" \
'source "$file";' \
'done < <(find {/etc,~/.config}/bash/conf.d/* -print0 2> /dev/null);'
end | sudo tee -a /etc/skel/.bashrc &> /dev/null
end | sudo tee -a /etc/bash.bashrc &> /dev/null
end
runInstaller $argv

View file

@ -3,84 +3,8 @@ begin
set -l dir (status dirname)
source "$(status dirname)/../../Scripts/software.fish"
function configureGit -S -V dir -a name
source "$dir/../../Scripts/config.fish"
set -l root "valhalla"
set -l user
set -l configArgs
function setConfig -S
sudo -u "$user" git config $configArgs $argv
end
if [ -z "$name" ]
set user "root"
set configArgs "--system"
else
set root "$root.users.$name"
set user "$name"
set configArgs "--global"
set -l displayName "$root.displayName"
set -l mailAddress "$root.mailAddress"
if isSet "$displayName"
setConfig user.name (getConfig "$displayName")
end
if isSet "$mailAddress"
setConfig user.email (getConfig "$mailAddress")
end
end
set -l branch "$root.git.defaultBranch"
if isSet "$branch"
setConfig init.defaultBranch (getConfig "$branch")
end
begin # Git Flow
set -l dir (mktemp -d)
begin
set -l key "$root.git.flow"
set -l mainKey "$key.mainBranch"
set -l devKey "$key.devBranch"
git -C "$dir" init
git -C "$dir" commit --allow-empty -m "Initial commit" > /dev/null
git -C "$dir" branch master || true &> /dev/null
git -C "$dir" branch main || true &> /dev/null
git -C "$dir" branch dev || true &> /dev/null
yes "" | git -C "$dir" flow init &> /dev/null
if isSet "$mainKey"
sudo git -C "$dir" flow config set $configArgs master (getConfig "$mainKey") > /dev/null
else
true
end
if isSet "$devKey"
sudo git -C "$dir" flow config set $configArgs develop (getConfig "$devKey") > /dev/null
else
true
end
end
rm -rf "$dir"
end
begin # Aliases
set -l key "$root.git.aliases"
set -l aliases (getConfig "$key" --json)
for name in (echo "$aliases" | jq 'keys[]' --raw-output0 | string split0)
setConfig "alias.$name" (getConfig "$key.$name")
end
end
end
function configureSW -S -V dir
configureGit
pwsh "$dir/Manage.ps1" Configure
end
function userConfig -S -V dir -a name

View file

@ -5,7 +5,6 @@ begin
function installSW
npm install --global n
configureSW
end
function configureSW

View file

@ -3,10 +3,6 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
configureSW
end
function configureSW
set -l configFile /etc/vimrc
set -l indicator "set clipboard"

View file

@ -3,10 +3,6 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
configureSW
end
function configureSW -V dir
source "$dir/../bash/profile.fish"
source "$dir/../fish/profile.fish"