diff --git a/scripts/Arch/OS/install.fish b/scripts/Arch/OS/install.fish
index dab39210..7669195c 100644
--- a/scripts/Arch/OS/install.fish
+++ b/scripts/Arch/OS/install.fish
@@ -57,6 +57,37 @@ begin
 
                 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
+            end
+
+            if collectionActive server
+            else
+                # Energy Saving
+                yayinst power-profiles-daemon
+                sudo systemctl enable --now power-profiles-daemon
+
+                # Networking
+                yayinst \
+                    networkmanager-openvpn \
+                    networkmanager-openconnect
+            end
         end
     end
 
diff --git a/scripts/Arch/Software/KDE/main.fish b/scripts/Arch/Software/KDE/main.fish
new file mode 100644
index 00000000..7d2e921b
--- /dev/null
+++ b/scripts/Arch/Software/KDE/main.fish
@@ -0,0 +1,31 @@
+#!/bin/env fish
+begin
+    set -l dir (status dirname)
+    source "$dir/../../Scripts/software.fish"
+
+    function installSW
+        yayinst \
+            pipewire-jack \
+            plasma-meta (
+                # As per: https://wiki.archlinux.org/title/KDE#Discover_does_not_show_any_applications
+            ) packagekit-qt6 \
+            tesseract-data-deu \
+            tesseract-data-eng \
+            kde-applications-meta (
+                # Automatic rotation: https://wiki.archlinux.org/title/Tablet_PC#With_a_KDE_module
+            ) iio-sensor-proxy \
+            pipewire-audio \
+            pipewire-pulse (
+                # File Exchange Support for KDE Connect: https://wiki.archlinux.org/title/KDE#KDE_Connect
+            ) sshfs \
+            fwupd
+
+        configureSW
+    end
+
+    function configureSW
+        sudo systemctl enable --now bluetooth
+    end
+
+    runInstaller $argv
+end
diff --git a/scripts/Arch/Software/sddm/main.fish b/scripts/Arch/Software/sddm/main.fish
new file mode 100644
index 00000000..7cb0cd87
--- /dev/null
+++ b/scripts/Arch/Software/sddm/main.fish
@@ -0,0 +1,21 @@
+#!/bin/env fish
+begin
+    set -l dir (status dirname)
+    source "$dir/../../Scripts/software.fish"
+
+    function installSW
+        # `git` version
+        # yes | yayinst sddm-git
+        # stable version
+        yayinst sddm
+        configureSW
+    end
+
+    function configureSW -V dir
+        set -l configDir /etc/sddm.conf.d
+        sudo systemctl enable sddm
+        sudo cp "$dir/wayland.conf" "$configDir/10-wayland.conf"
+    end
+
+    runInstaller $argv
+end
diff --git a/scripts/Arch/Software/sddm/wayland.conf b/scripts/Arch/Software/sddm/wayland.conf
new file mode 100644
index 00000000..726a437f
--- /dev/null
+++ b/scripts/Arch/Software/sddm/wayland.conf
@@ -0,0 +1,6 @@
+[General]
+DisplayServer=wayland
+GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell
+
+[Wayland]
+CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1 --inputmethod maliit-keyboard