Add Ventoy support and refactor wallpaper handling

Introduce a `ventoy.enable` option (default false) and import the new
`modules/core/ventoy.nix` in the core module list. All host
`system-modules.nix` files now disable Ventoy explicitly.

Make the boot wallpaper configurable by importing `stylixImage` from the
host’s `variables.nix` and using it in `modules/core/boot.nix`.

Update each host’s `variables.nix` to set a default wallpaper and keep
many alternatives commented out.

Remove the obsolete `restart.noctalia` and `screenshootin` scripts,
their Nix wrappers, and the related Hyprland keybinding.

Add a collection of new wallpaper files and delete the old, unused
images.
This commit is contained in:
2026-05-14 01:57:29 +02:00
parent 616adf696b
commit b9b932e990
41 changed files with 83 additions and 130 deletions
+6 -1
View File
@@ -36,6 +36,11 @@ _: {
*/ */
affinity.enable = false; # Affinity: professional graphics suite affinity.enable = false; # Affinity: professional graphics suite
/*
Utilities / Misc
*/
ventoy.enable = false; # Ventoy: New Bootable USB Solution with GUI support
packages = { packages = {
/* /*
Container & Packaging Container & Packaging
@@ -70,7 +75,7 @@ _: {
signal.enable = true; # Signal: secure messaging app signal.enable = true; # Signal: secure messaging app
teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux
ferdium.enable = false; # Ferdium: All your services in one place built by the community ferdium.enable = false; # Ferdium: All your services in one place built by the community
notify.enable = true; # notify-client: Ntfy client application to receive everyday's notifications notify.enable = false; # notify-client: Ntfy client application to receive everyday's notifications
/* /*
Productivity / Knowledge Management Productivity / Knowledge Management
+15 -14
View File
@@ -42,20 +42,21 @@
# This will set your color palette # This will set your color palette
# Default background # Default background
# Add new images to ~/garandos/wallpapers # Add new images to ~/garandos/wallpapers
# stylixImage = "attack-on-titan-mikasa-ackerman.jpg"; stylixImage = "Attack-on-Titan-1.jpg";
#stylixImage = "DW_Pacts.jpg"; # stylixImage = "Attack-on-Titan-2.jpg";
#stylixImage = "edward-elric-fullmetal-alchemist.jpg"; # stylixImage = "Attack-on-Titan-3.jpg";
#stylixImage = "fire-nation.jpg"; # stylixImage = "Avatar-1.jpg";
#stylixImage = "four-elements.jpg"; # stylixImage = "Avatar-2.jpg";
#stylixImage = "fullmetal-alchemist-5120x2880-10399.png"; # stylixImage = "Avatar-3.png";
#stylixImage = "Grounded_Wallpaper_4K.jpg"; # stylixImage = "Avatar-4.jpg";
#stylixImage = "jablon.jpg"; # stylixImage = "Edge-of-Tomorrow-1.jpg";
#stylixImage = "rammstein-log-two.jpg"; # stylixImage = "Friren-1.jpg";
#stylixImage = "rammstein-logo-one.jpg"; # stylixImage = "Friren-2.jpg";
#stylixImage = "rammstein-logo-three.jpg"; # stylixImage = "Friren-3.jpg";
#stylixImage = "rammstein-one.jpg"; # stylixImage = "Jablon.png";
#stylixImage = "1346530.jpeg"; # stylixImage = "Song-of-the-Sea-1.jpg";
stylixImage = "The-Southern-Raiders.jpg"; # stylixImage = "Wolfwalkers-1.jpg";
# stylixImage = "Wolfwalkers-2.jpg";
# Set network hostId if required (needed for zfs) # Set network hostId if required (needed for zfs)
# Otherwise leave as-is # Otherwise leave as-is
+5
View File
@@ -36,6 +36,11 @@ _: {
*/ */
affinity.enable = false; # Affinity: professional graphics suite affinity.enable = false; # Affinity: professional graphics suite
/*
Utilities / Misc
*/
ventoy.enable = false; # Ventoy: New Bootable USB Solution with GUI support
packages = { packages = {
/* /*
Container & Packaging Container & Packaging
+15 -14
View File
@@ -39,20 +39,21 @@
# This will set your color palette # This will set your color palette
# Default background # Default background
# Add new images to ~/garandos/wallpapers # Add new images to ~/garandos/wallpapers
# stylixImage = "attack-on-titan-mikasa-ackerman.jpg"; stylixImage = "Attack-on-Titan-1.jpg";
#stylixImage = "DW_Pacts.jpg"; # stylixImage = "Attack-on-Titan-2.jpg";
#stylixImage = "edward-elric-fullmetal-alchemist.jpg"; # stylixImage = "Attack-on-Titan-3.jpg";
#stylixImage = "fire-nation.jpg"; # stylixImage = "Avatar-1.jpg";
#stylixImage = "four-elements.jpg"; # stylixImage = "Avatar-2.jpg";
#stylixImage = "fullmetal-alchemist-5120x2880-10399.png"; # stylixImage = "Avatar-3.png";
#stylixImage = "Grounded_Wallpaper_4K.jpg"; # stylixImage = "Avatar-4.jpg";
#stylixImage = "jablon.jpg"; # stylixImage = "Edge-of-Tomorrow-1.jpg";
#stylixImage = "rammstein-log-two.jpg"; # stylixImage = "Friren-1.jpg";
#stylixImage = "rammstein-logo-one.jpg"; # stylixImage = "Friren-2.jpg";
#stylixImage = "rammstein-logo-three.jpg"; # stylixImage = "Friren-3.jpg";
#stylixImage = "rammstein-one.jpg"; # stylixImage = "Jablon.png";
#stylixImage = "1346530.jpeg"; # stylixImage = "Song-of-the-Sea-1.jpg";
stylixImage = "The-Southern-Raiders.jpg"; # stylixImage = "Wolfwalkers-1.jpg";
# stylixImage = "Wolfwalkers-2.jpg";
# Set network hostId if required (needed for zfs) # Set network hostId if required (needed for zfs)
# Otherwise leave as-is # Otherwise leave as-is
+5
View File
@@ -36,6 +36,11 @@ _: {
*/ */
affinity.enable = false; # Affinity: professional graphics suite affinity.enable = false; # Affinity: professional graphics suite
/*
Utilities / Misc
*/
ventoy.enable = false; # Ventoy: New Bootable USB Solution with GUI support
packages = { packages = {
/* /*
Container & Packaging Container & Packaging
+15 -14
View File
@@ -48,20 +48,21 @@
# This will set your color palette # This will set your color palette
# Default background # Default background
# Add new images to ~/garandos/wallpapers # Add new images to ~/garandos/wallpapers
stylixImage = "attack-on-titan-mikasa-ackerman.jpg"; stylixImage = "Attack-on-Titan-1.jpg";
#stylixImage = "DW_Pacts.jpg"; # stylixImage = "Attack-on-Titan-2.jpg";
#stylixImage = "edward-elric-fullmetal-alchemist.jpg"; # stylixImage = "Attack-on-Titan-3.jpg";
#stylixImage = "fire-nation.jpg"; # stylixImage = "Avatar-1.jpg";
#stylixImage = "four-elements.jpg"; # stylixImage = "Avatar-2.jpg";
#stylixImage = "fullmetal-alchemist-5120x2880-10399.png"; # stylixImage = "Avatar-3.png";
#stylixImage = "Grounded_Wallpaper_4K.jpg"; # stylixImage = "Avatar-4.jpg";
#stylixImage = "jablon.jpg"; # stylixImage = "Edge-of-Tomorrow-1.jpg";
#stylixImage = "rammstein-log-two.jpg"; # stylixImage = "Friren-1.jpg";
#stylixImage = "rammstein-logo-one.jpg"; # stylixImage = "Friren-2.jpg";
#stylixImage = "rammstein-logo-three.jpg"; # stylixImage = "Friren-3.jpg";
#stylixImage = "rammstein-one.jpg"; # stylixImage = "Jablon.png";
#stylixImage = "1346530.jpeg"; # stylixImage = "Song-of-the-Sea-1.jpg";
#stylixImage = "The-Southern-Raiders.jpg"; # stylixImage = "Wolfwalkers-1.jpg";
# stylixImage = "Wolfwalkers-2.jpg";
# Set network hostId if required (needed for zfs) # Set network hostId if required (needed for zfs)
# Otherwise leave as-is # Otherwise leave as-is
+5 -2
View File
@@ -1,9 +1,12 @@
{ {
pkgs, pkgs,
host,
config, config,
lib, lib,
... ...
}: { }: let
inherit (import ../../hosts/${host}/variables.nix) stylixImage;
in {
boot = { boot = {
kernelPackages = pkgs.linuxPackages_zen; kernelPackages = pkgs.linuxPackages_zen;
kernelModules = ["v4l2loopback"]; kernelModules = ["v4l2loopback"];
@@ -17,7 +20,7 @@
enable = true; enable = true;
style = { style = {
wallpapers = [ wallpapers = [
./../../wallpapers/attack-on-titan-mikasa-ackerman.jpg ./../../wallpapers/${stylixImage}
]; ];
wallpaperStyle = lib.mkForce "centered"; wallpaperStyle = lib.mkForce "centered";
backdrop = "${config.stylix.base16Scheme.base00}"; backdrop = "${config.stylix.base16Scheme.base00}";
+1
View File
@@ -23,6 +23,7 @@
./tailscale.nix ./tailscale.nix
./thunar.nix ./thunar.nix
./user.nix ./user.nix
./ventoy.nix
./virtualbox.nix ./virtualbox.nix
./xdg.nix ./xdg.nix
./xserver.nix ./xserver.nix
+15
View File
@@ -0,0 +1,15 @@
{
pkgs,
lib,
config,
...
}: {
options.ventoy.enable = lib.mkEnableOption "Enable Ventoy";
config = lib.mkIf config.ventoy.enable {
environment.systemPackages = with pkgs; [ventoy-full-gtk];
nixpkgs.config.permittedInsecurePackages = [
"ventoy-gtk3-1.1.12"
];
};
}
+1 -1
View File
@@ -42,7 +42,7 @@
"SUPER SHIFT, N, exec, nextcloud #\"Nextcloud desktop sync client\"" "SUPER SHIFT, N, exec, nextcloud #\"Nextcloud desktop sync client\""
"SUPER SHIFT, O, exec, obs #\"Open Broadcaster Software\"" "SUPER SHIFT, O, exec, obs #\"Open Broadcaster Software\""
"SUPER SHIFT, P, exec, noctalia-shell ipc call volume togglePanel #\"Toggle volume control panel\"" "SUPER SHIFT, P, exec, noctalia-shell ipc call volume togglePanel #\"Toggle volume control panel\""
"SUPER SHIFT, R, exec, restart.noctalia #\"Restart Noctalia shell\"" # "SUPER SHIFT, R, exec, restart.noctalia #\"Restart Noctalia shell\""
"SUPER SHIFT, Return, exec, noctalia-shell ipc call launcher toggle #\"Toggle application launcher\"" "SUPER SHIFT, Return, exec, noctalia-shell ipc call launcher toggle #\"Toggle application launcher\""
"SUPER SHIFT, S, exec, screenshootin #\"Take screenshot\"" "SUPER SHIFT, S, exec, screenshootin #\"Take screenshot\""
"SUPER SHIFT, T, exec, tutanota-desktop #\"Tutanota encrypted email client\"" "SUPER SHIFT, T, exec, tutanota-desktop #\"Tutanota encrypted email client\""
-2
View File
@@ -1,7 +1,5 @@
{pkgs, ...}: { {pkgs, ...}: {
home.packages = [ home.packages = [
(import ./nvidia-offload.nix {inherit pkgs;}) (import ./nvidia-offload.nix {inherit pkgs;})
(import ./restart.noctalia.nix {inherit pkgs;})
(import ./screenshootin.nix {inherit pkgs;})
]; ];
} }
-54
View File
@@ -1,54 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
# Restart the Noctalia QuickShell session by terminating only the noctalia-shell
# processes, avoiding any signals to unrelated process groups (e.g. Hyprland).
log() { printf "[restart.noctalia] %s\n" "$*"; }
list_target_pids() {
# Collect only PIDs whose command explicitly runs noctalia-shell
# - direct wrapper: ".../noctalia-shell"
# - quickshell/qs with "-c noctalia-shell"
ps -eo pid=,cmd= \
| ${GREP:-grep} -E "(^|/)(noctalia-shell)( |$)|(^| )((qs|quickshell))( | ).*-c( |=)?noctalia-shell( |$)" \
| awk '{print $1}'
}
terminate_targets() {
local pids left tries
mapfile -t pids < <(list_target_pids || true)
if ((${#pids[@]} > 0)); then
kill -TERM "${pids[@]}" 2>/dev/null || true
fi
# Wait up to ~3s for clean exit
for tries in {1..15}; do
mapfile -t left < <(list_target_pids || true)
((${#left[@]} == 0)) && break
sleep 0.2
done
# Force kill leftovers only (do not touch anything else)
if ((${#left[@]} > 0)); then
kill -KILL "${left[@]}" 2>/dev/null || true
fi
}
start_noctalia() {
# Prefer the noctalia-shell wrapper to ensure proper env and runtime flags
if command -v noctalia-shell >/dev/null 2>&1; then
nohup setsid noctalia-shell >/dev/null 2>&1 &
elif command -v quickshell >/dev/null 2>&1; then
nohup setsid quickshell -c noctalia-shell >/dev/null 2>&1 &
elif command -v qs >/dev/null 2>&1; then
nohup setsid qs -c noctalia-shell >/dev/null 2>&1 &
else
echo "Error: noctalia-shell/quickshell/qs not found in PATH" >&2
exit 1
fi
}
terminate_targets
start_noctalia
-24
View File
@@ -1,24 +0,0 @@
{pkgs, ...}: let
binPath = pkgs.lib.makeBinPath [
pkgs.coreutils
pkgs.procps
pkgs.psmisc
pkgs.gnugrep
pkgs.findutils
pkgs.util-linux
pkgs.bash
];
script = builtins.readFile ./restart.noctalia;
in
pkgs.writeShellScriptBin "restart.noctalia" ''
set -euo pipefail
export PATH=${binPath}:$PATH
tmp_script=$(mktemp)
trap 'rm -f "$tmp_script"' EXIT
cat > "$tmp_script" <<'BASH_EOF'
${script}
BASH_EOF
chmod +x "$tmp_script"
exec ${pkgs.bash}/bin/bash "$tmp_script" "$@"
''
-4
View File
@@ -1,4 +0,0 @@
{pkgs}:
pkgs.writeShellScriptBin "screenshootin" ''
grim -g "$(slurp)" - | swappy -f -
''
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Before

Width:  |  Height:  |  Size: 3.4 MiB

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 832 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 868 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 809 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 430 KiB