diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 4416758..3fc05e3 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -5,6 +5,8 @@ on:
"00 06 * * *" # build at 06:00 UTC every day
# (20 minutes after last ublue images start building)
push:
+ branches:
+ - main
paths-ignore: # don't rebuild if only documentation has changed
- "**.md"
diff --git a/README.md b/README.md
index ae83533..0df2065 100644
--- a/README.md
+++ b/README.md
@@ -26,4 +26,9 @@ To rebase an existing atomic Fedora installation to the latest build:
systemctl reboot
```
-The `latest` tag will automatically point to the latest build. That build will still always use the Fedora version specified in `recipe.yml`, so you won't get accidentally updated to the next major version.
\ No newline at end of file
+The `latest` tag will automatically point to the latest build. That build will still always use the Fedora version specified in `recipe.yml`, so you won't get accidentally updated to the next major version.
+
+
+# Attribution
+
+Thanks to [Wayblue](https://github.com/wayblueorg/wayblue) for how to get around some issues with sddm on an atomic distribution and how to create a working distro from the base Fedora image.
\ No newline at end of file
diff --git a/files/scripts/enableautoupdates.sh b/files/scripts/enableautoupdates.sh
new file mode 100644
index 0000000..c7646e9
--- /dev/null
+++ b/files/scripts/enableautoupdates.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+# Tell build process to exit if there are any errors.
+set -oue pipefail
+
+systemctl enable rpm-ostreed-automatic.timer
+systemctl enable podman-auto-update.timer
+systemctl --global enable podman-auto-update.timer
+systemctl --global enable flatpak-user-update.timer
+systemctl enable flatpak-system-update.timer
\ No newline at end of file
diff --git a/files/scripts/example.sh b/files/scripts/example.sh
deleted file mode 100644
index fdb2e04..0000000
--- a/files/scripts/example.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env bash
-
-# Tell this script to exit if there are any errors.
-# You should have this in every custom script, to ensure that your completed
-# builds actually ran successfully without any errors!
-set -oue pipefail
-
-# Your code goes here.
-echo 'This is an example shell script'
-echo 'Scripts here will run during build if specified in recipe.yml'
diff --git a/files/scripts/installproprietarypackages.sh b/files/scripts/installproprietarypackages.sh
new file mode 100644
index 0000000..2600ea0
--- /dev/null
+++ b/files/scripts/installproprietarypackages.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+
+# Tell build process to exit if there are any errors.
+set -oue pipefail
+
+curl -Lo /etc/yum.repos.d/negativo17-fedora-multimedia.repo https://negativo17.org/repos/fedora-multimedia.repo
+sed -i '0,/enabled=1/{s/enabled=1/enabled=1\npriority=90/}' /etc/yum.repos.d/negativo17-fedora-multimedia.repo
+
+rpm-ostree override replace \
+ --experimental \
+ --from repo='fedora-multimedia' \
+ libheif \
+ libva \
+ libva-intel-media-driver \
+ mesa-dri-drivers \
+ mesa-filesystem \
+ mesa-libEGL \
+ mesa-libGL \
+ mesa-libgbm \
+ mesa-libxatracker \
+ mesa-va-drivers \
+ mesa-vulkan-drivers \
+ gstreamer1-plugin-libav \
+ gstreamer1-plugin-vaapi \
+ rar
diff --git a/files/scripts/nvidia/installtoolkitpolicy.sh b/files/scripts/nvidia/installtoolkitpolicy.sh
new file mode 100644
index 0000000..c55ff44
--- /dev/null
+++ b/files/scripts/nvidia/installtoolkitpolicy.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+# Tell build process to exit if there are any errors.
+set -oue pipefail
+
+semodule --verbose --install /usr/share/selinux/packages/nvidia-container.pp
\ No newline at end of file
diff --git a/files/scripts/nvidia/removeunusedrepos.sh b/files/scripts/nvidia/removeunusedrepos.sh
new file mode 100644
index 0000000..7693d6c
--- /dev/null
+++ b/files/scripts/nvidia/removeunusedrepos.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+# Tell build process to exit if there are any errors.
+set -oue pipefail
+
+rm -f /etc/yum.repos.d/negativo17-fedora-nvidia.repo
+rm -f /etc/yum.repos.d/negativo17-fedora-multimedia.repo
+rm -f /etc/yum.repos.d/eyecantcu-supergfxctl.repo
+rm -f /etc/yum.repos.d/_copr_ublue-os-akmods.repo
+rm -f /etc/yum.repos.d/nvidia-container-toolkit.repo
\ No newline at end of file
diff --git a/files/scripts/nvidia/setdrmvariables.sh b/files/scripts/nvidia/setdrmvariables.sh
new file mode 100644
index 0000000..617d940
--- /dev/null
+++ b/files/scripts/nvidia/setdrmvariables.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+# Tell build process to exit if there are any errors.
+set -oue pipefail
+
+
+echo '
+
+# Nvidia modesetting support. Set to 0 or comment to disable kernel modesetting
+# support. This must be disabled in case of SLI Mosaic.
+
+options nvidia-drm modeset=1 fbdev=1
+
+' > /usr/lib/modprobe.d/nvidia-modeset.conf
+
+cp /usr/lib/modprobe.d/nvidia-modeset.conf /etc/modprobe.d/nvidia-modeset.conf
\ No newline at end of file
diff --git a/files/scripts/nvidia/setearlyloading.sh b/files/scripts/nvidia/setearlyloading.sh
new file mode 100644
index 0000000..19ec951
--- /dev/null
+++ b/files/scripts/nvidia/setearlyloading.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+# Tell build process to exit if there are any errors.
+set -oue pipefail
+
+sed -i 's@omit_drivers@force_drivers@g' /usr/lib/dracut/dracut.conf.d/99-nvidia.conf
+sed -i 's@ nvidia @ i915 amdgpu nvidia @g' /usr/lib/dracut/dracut.conf.d/99-nvidia.conf
diff --git a/files/scripts/setsddmtheming.sh b/files/scripts/setsddmtheming.sh
new file mode 100644
index 0000000..d48dc60
--- /dev/null
+++ b/files/scripts/setsddmtheming.sh
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+# Tell build process to exit if there are any errors.
+set -oue pipefail
+
+sed -i 's/color: "black"/color: "white"/' /usr/share/sddm/themes/maldives/Main.qml
+sed -i 's/id: lblPassword/id: lblPassword\ncolor: "white"/' /usr/share/sddm/themes/maldives/Main.qml
+sed -i 's/id: lblName/id: lblName\ncolor: "white"/' /usr/share/sddm/themes/maldives/Main.qml
+sed -i 's/id: lblSession/id: lblSession\ncolor: "white"/' /usr/share/sddm/themes/maldives/Main.qml
+sed -i 's/id: lblLayout/id: lblLayout\ncolor: "white"/' /usr/share/sddm/themes/maldives/Main.qml
+sed -i 's/id: errorMessage/id: errorMessage\ncolor: "white"/' /usr/share/sddm/themes/maldives/Main.qml
diff --git a/files/system/etc/sddm/sddm-useradd b/files/system/etc/sddm/sddm-useradd
new file mode 100644
index 0000000..e44f640
--- /dev/null
+++ b/files/system/etc/sddm/sddm-useradd
@@ -0,0 +1,4 @@
+#!/usr/bin/sh
+
+getent group sddm > /dev/null || groupadd -r sddm
+getent passwd sddm > /dev/null || useradd -r -g sddm -c "SDDM Greeter Account" -d /var/lib/sddm -s /usr/sbin/nologin sddm
diff --git a/files/system/etc/skel/.config/hyprpanel/config.json b/files/system/etc/skel/.config/hyprpanel/config.json
new file mode 100644
index 0000000..47a8ddf
--- /dev/null
+++ b/files/system/etc/skel/.config/hyprpanel/config.json
@@ -0,0 +1,59 @@
+{
+ "scalingPriority": "gdk",
+ "theme.bar.floating": true,
+ "bar.autoHide": "never",
+ "bar.layouts": {
+ "*": {
+ "left": [
+ "cpu",
+ "ram",
+ "workspaces",
+ "windowtitle"
+ ],
+ "middle": [
+ "media"
+ ],
+ "right": [
+ "volume",
+ "network",
+ "bluetooth",
+ "systray",
+ "notifications",
+ "clock",
+ "dashboard"
+ ]
+ }
+ },
+ "theme.notification.enableShadow": false,
+ "theme.bar.border.location": "none",
+ "theme.bar.border_radius": "0.75em",
+ "theme.bar.outer_spacing": ".25em",
+ "theme.bar.buttons.radius": "0.75em",
+ "theme.bar.menus.monochrome": false,
+ "theme.bar.menus.opacity": 100,
+ "theme.bar.buttons.y_margins": "0.1em",
+ "theme.bar.buttons.enableBorders": true,
+ "theme.bar.transparent": true,
+ "theme.bar.enableShadow": false,
+ "menus.clock.time.hideSeconds": false,
+ "menus.dashboard.shortcuts.left.shortcut1.icon": "",
+ "menus.dashboard.shortcuts.left.shortcut1.command": "uwsm app -- one.ablaze.floorp.desktop",
+ "menus.dashboard.shortcuts.left.shortcut1.tooltip": "Floorp",
+ "menus.dashboard.shortcuts.enabled": true,
+ "menus.dashboard.stats.enable_gpu": false,
+ "menus.clock.weather.enabled": false,
+ "bar.workspaces.show_icons": false,
+ "bar.workspaces.show_numbered": true,
+ "theme.bar.buttons.windowtitle.enableBorder": false,
+ "bar.windowtitle.custom_title": true,
+ "bar.windowtitle.truncation": true,
+ "bar.notifications.show_total": true,
+ "bar.notifications.hideCountWhenZero": true,
+ "bar.launcher.icon": "",
+ "bar.launcher.autoDetectIcon": false,
+ "menus.dashboard.shortcuts.left.shortcut3.command": "uwsm app -- com.discordapp.Discord",
+ "menus.dashboard.shortcuts.left.shortcut2.icon": "",
+ "menus.dashboard.shortcuts.left.shortcut2.command": "uwsm app --net.cozic.joplin_desktop",
+ "menus.dashboard.shortcuts.left.shortcut2.tooltip": "Joplin",
+ "menus.dashboard.shortcuts.left.shortcut4.command": "uwsm app -- $(wofi --show drun --define=drun-print_desktop_file=true)"
+}
\ No newline at end of file
diff --git a/files/system/etc/skel/.config/hyprpanel/modules.json b/files/system/etc/skel/.config/hyprpanel/modules.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/files/system/etc/skel/.config/hyprpanel/modules.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/files/system/etc/skel/.config/hyprpanel/modules.scss b/files/system/etc/skel/.config/hyprpanel/modules.scss
new file mode 100644
index 0000000..e69de29
diff --git a/files/system/etc/xdg/waybar/config.jsonc b/files/system/etc/xdg/waybar/config.jsonc
deleted file mode 100644
index 11c477e..0000000
--- a/files/system/etc/xdg/waybar/config.jsonc
+++ /dev/null
@@ -1,100 +0,0 @@
-// -*- mode: jsonc -*-
-{
- "layer": "top", // Waybar at top layer
- // "position": "bottom", // Waybar position (top|bottom|left|right)
- "height": 52, // Waybar height (to be removed for auto height)
- // "width": 1280, // Waybar width
- "spacing": 0, // Gaps between modules (4px)
- // Choose the order of the modules
- "modules-left": [
- "cpu",
- "memory",
- "hyprland/workspaces",
- "hyprland/window"
- ],
- "modules-center": [
- "mpris"
- ],
- "modules-right": [
- "tray",
- "gamemode",
- "wireplumber",
- "custom/notification",
- "clock"
- ],
- //"reload_style_on_change": true,
- "hyprland/window":{
- "separate-outputs": true,
- "hide-empty-text": true,
- },
- "tray": {
- // "icon-size": 21,
- "spacing": 10
- },
- "clock": {
- // "timezone": "America/New_York",
- "format": "{:%I : %M %p %Y-%m-%d}",
- "tooltip-format": "{:%Y %B}\n{calendar}"
- },
- "cpu": {
- "format": "{usage}% ",
- "tooltip": false
- },
- "memory": {
- "format": "{}% "
- },
- "temperature": {
- // "thermal-zone": 2,
- // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
- "critical-threshold": 80,
- // "format-critical": "{temperatureC}°C {icon}",
- "format": "{temperatureC}°C {icon}",
- "format-icons": ["", "", ""]
- },
- "network": {
- // "interface": "wlp2*", // (Optional) To force the use of this interface
- "format-wifi": "{essid} ({signalStrength}%) ",
- "format-ethernet": "{ipaddr}/{cidr} ",
- "tooltip-format": "{ifname} via {gwaddr} ",
- "format-linked": "{ifname} (No IP) ",
- "format-disconnected": "Disconnected ⚠",
- "format-alt": "{ifname}: {ipaddr}/{cidr}"
- },
- "wireplumber": {
- "format": "{node_name} {volume}% {icon}",
- "format-muted": "{node_name} ",
- "on-click": "hyprctl dispatch -- exec flatpak run com.saivert.pwvucontrol",
- "format-icons": ["", "", ""]
- },
- "custom/notification": {
- "tooltip": false,
- "format": "{} {icon}",
- "format-icons": {
- "notification": "",
- "none": "",
- "dnd-notification": "",
- "dnd-none": "",
- "inhibited-notification": "",
- "inhibited-none": "",
- "dnd-inhibited-notification": "",
- "dnd-inhibited-none": ""
- },
- "return-type": "json",
- "exec-if": "which swaync-client",
- "exec": "swaync-client -swb",
- "on-click": "swaync-client -t -sw",
- "on-click-right": "swaync-client -d -sw",
- "escape": true
- },
- "mpris": {
- "format": "{player_icon} {title} - {artist}",
- "format-paused": "{status_icon} {title} - {artist}",
- "player-icons": {
- "default": "▶",
- "mpv": "🎵"
- },
- "status-icons": {
- "paused": "⏸"
- }
- },
-}
diff --git a/files/system/etc/xdg/waybar/style.css b/files/system/etc/xdg/waybar/style.css
deleted file mode 100644
index 3036a72..0000000
--- a/files/system/etc/xdg/waybar/style.css
+++ /dev/null
@@ -1,129 +0,0 @@
-@import "tokyonight.css";
-
-* {
- font-family: JetBrains Mono;
- font-size: 17px;
- min-height: 0;
-}
-
-window#waybar {
- background-color: @transparent;
- color: @theme_text_color;
- margin: 0rem 0rem 0rem 0rem;
-}
-
-#workspaces button {
- color: @lavender;
- border-radius: 1.5rem;
- padding: 0rem 0.5rem;
-}
-
-#workspaces button.active {
- color: @sky;
- border-radius: 1.5rem;
-}
-
-#workspaces button:hover {
- color: @sapphire;
- border-radius: 1.5rem;
-}
-
-#cpu,
-#memory,
-#custom-weather,
-#wireplumber,
-#custom-notification,
-#custom-music,
-#custom-edit-config,
-#tray,
-#backlight,
-#clock,
-#battery,
-#pulseaudio,
-#custom-lock,
-#powermenu,
-#window,
-#workspaces,
-#gamemode,
-#mpris {
- background-color: @theme_bg_color;
- padding: 0.5rem 0.75rem;
- margin: 0.75rem 0.25rem 0rem 0.25rem;
- border-radius: 1.5rem;
- border: 2px solid;
-}
-
-window#waybar.empty #window {
- background-color: transparent;
- border: 0px
-}
-
-/* left side margin */
-#cpu {
- margin-left: 1rem;
-}
-
-/* right side margin */
-#clock {
- margin-right: 1rem;
-}
-
-#cpu {
- color: @green;
-}
-
-#memory {
- color: @magenta;
-}
-
-#clock {
- color: @blue;
-}
-
-#battery {
- color: @green;
-}
-
-#battery.charging {
- color: @green;
-}
-
-#battery.warning:not(.charging) {
- color: @red;
-}
-
-#backlight {
- color: @yellow;
-}
-
-#pulseaudio {
- color: @maroon;
-}
-
-#custom-music {
- color: @mauve;
-}
-
-#custom-lock {
- color: @magenta;
-}
-
-#custom-power {
- color: @red;
-}
-
-#wireplumber {
- color: @red;
-}
-
-#custom-notification {
- color: @rosewater;
-}
-
-#custom-notification.notification {
- color: @red;
-}
-
-#custom-notification.dnd-notification {
- color: @maroon;
-}
diff --git a/files/system/etc/xdg/waybar/tokyonight.css b/files/system/etc/xdg/waybar/tokyonight.css
deleted file mode 100644
index 4a259ee..0000000
--- a/files/system/etc/xdg/waybar/tokyonight.css
+++ /dev/null
@@ -1,15 +0,0 @@
-@define-color foreground #313244;
-@define-color background #1a1b26;
-@define-color text #a9b1d6;
-@define-color black #414868;
-@define-color red #f7768e;
-@define-color green #73daca;
-@define-color yellow #e0af68;
-@define-color blue #7aa2f7;
-@define-color magenta #bb9af7;
-@define-color cyan #7dcfff;
-@define-color white #c0caf5;
-@define-color sky #89dceb;
-@define-color sapphire #74c7ec;
-@define-color rosewater #f5e0dc;
-@define-color flamingo #f2cdcd;
\ No newline at end of file
diff --git a/files/system/sddm.conf.d/theme.conf b/files/system/sddm.conf.d/theme.conf
new file mode 100644
index 0000000..1007848
--- /dev/null
+++ b/files/system/sddm.conf.d/theme.conf
@@ -0,0 +1,2 @@
+[Theme]
+Current=maldives
\ No newline at end of file
diff --git a/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/browser.conf b/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/browser.conf
index 0b860e0..ac65b59 100644
--- a/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/browser.conf
+++ b/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/browser.conf
@@ -1,11 +1,7 @@
# browser.conf
# floorp
-$browser = uwsm app -- one.ablaze.floorp.desktop
$mainMod = SUPER
-## autostart
-exec-once = [workspace 1 silent] $browser
-
## keybind
-bind = $mainMod, F, exec, $browser
+bind = $mainMod, F, exec, uwsm app -- one.ablaze.floorp.desktop
diff --git a/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/discord_workspace.conf b/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/discord_workspace.conf
index e7f9c30..6cd281f 100644
--- a/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/discord_workspace.conf
+++ b/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/discord_workspace.conf
@@ -1,7 +1,5 @@
# discord_workspace.conf
-$discord = uwsm app -- com.discordapp.Discord.desktop
-
$discord_class = class:^(vesktop)$|^(discord)$|^(com.discord.app.Discord)$|^(WebCord)$|^(equibop)$
# workspace
@@ -20,7 +18,4 @@ bind = $mainMod, D, togglespecialworkspace, discord
bind = $mainMod SHIFT, D, movetoworkspace, special:discord
# discord overlay
-#exec-once = discover-overlay
-
-# launch discord
-exec-once = $discord
\ No newline at end of file
+#exec-once = discover-overlay
\ No newline at end of file
diff --git a/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/game_workspace.conf b/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/game_workspace.conf
index 1affe9e..5df2548 100644
--- a/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/game_workspace.conf
+++ b/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/game_workspace.conf
@@ -3,10 +3,8 @@
# workspace number
$game-workspace-number = 5
-exec-once = uwsm app -- steam.desktop
-
# window rules
-windowrule = workspace 9 silent, title:^(Steam)$
+windowrule = workspace 9 silent, class:^(steam)$
# key binds
$mainMod = SUPER
diff --git a/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/keybinds.conf b/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/keybinds.conf
index 87f3aea..1537401 100644
--- a/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/keybinds.conf
+++ b/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/keybinds.conf
@@ -1,18 +1,16 @@
# key_binds.conf
# Set programs that you use
-$fileManager = uwsm app -- org.kde.dolphin.desktop
+$fileManager = xdg-open "$HOME"
$menu = uwsm app -- $(wofi --show drun --define=drun-print_desktop_file=true)
#$menu = ags request -i launcher show
$screenshot = hyprshot -m region --clipboard-only
-$powermenu = /usr/share/hypr-hydro-os/scripts/local-lua /usr/share/hypr-hydro-os/scripts/powermenu.lua
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod SHIFT, C, killactive,
-bind = $mainMod, M, exec, $powermenu
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, $menu
diff --git a/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/terminal.conf b/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/terminal.conf
index 98e28ce..539d57a 100644
--- a/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/terminal.conf
+++ b/files/system/usr/share/hypr-hydro-os/hyprland.conf.d/terminal.conf
@@ -1,12 +1,8 @@
# terminal.conf
-$terminal = uwsm app -- kitty.desktop
# workspace
workspace = special:terminal
-# launch a terminal
-exec-once = [workspace special:terminal silent] $terminal
-
# key binds
$mainMod = SUPER
bind = $mainMod, T, togglespecialworkspace, terminal
diff --git a/files/system/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_close_clients b/files/system/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_close_clients
deleted file mode 100755
index 10a5dca..0000000
--- a/files/system/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_close_clients
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env bash
-
-HYPRCMDS=$(hyprctl -j clients | jq -j '.[] | "dispatch closewindow address:\(.address); "')
-hyprctl --batch "$HYPRCMDS" >>/tmp/hyprexitwithgrace.log 2>&1
-
-notify-send "power controls" "Closing Applications..."
-
-sleep 2
-
-COUNT=$(hyprctl clients | grep "class:" | wc -l)
-
-if [ "$COUNT" -eq "0" ]; then
- notify-send "power controls" "Closed Applications."
- return
-else
- notify-send "power controls" "Some apps didn't close. Not shutting down."
- exit 1
-fi
diff --git a/files/system/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_logout b/files/system/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_logout
deleted file mode 100755
index 3c5fac5..0000000
--- a/files/system/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_logout
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-
-/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_close_clients
-
-hyprctl dispatch exit
diff --git a/files/system/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_reboot b/files/system/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_reboot
deleted file mode 100755
index e3add18..0000000
--- a/files/system/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_reboot
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-
-/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_close_clients
-
-systemctl reboot
diff --git a/files/system/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_shutdown b/files/system/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_shutdown
deleted file mode 100755
index 398d517..0000000
--- a/files/system/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_shutdown
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-
-/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_close_clients
-
-systemctl poweroff
diff --git a/files/system/usr/share/hypr-hydro-os/scripts/load-kwallet-apps.sh b/files/system/usr/share/hypr-hydro-os/scripts/load-kwallet-apps.sh
deleted file mode 100755
index a65b328..0000000
--- a/files/system/usr/share/hypr-hydro-os/scripts/load-kwallet-apps.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env bash
-# nextcloud desktop
-sleep 15 && flatpak run --branch=stable --arch=x86_64 --command=nextcloud --file-forwarding com.nextcloud.desktopclient.nextcloud
diff --git a/files/system/usr/share/hypr-hydro-os/scripts/load-kwallet.sh b/files/system/usr/share/hypr-hydro-os/scripts/load-kwallet.sh
deleted file mode 100755
index b480b05..0000000
--- a/files/system/usr/share/hypr-hydro-os/scripts/load-kwallet.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-kwalletmanager5 &
-sleep 1 && exec --no-startup-id /usr/lib/pam_kwallet_init
-notify-send -e --expire-time=2000 'Kwallet has been loaded. Loading dependent apps...'
-sleep 2 && hyprctl dispatch closewindow class:org.kde.kwalletmanager
diff --git a/files/system/usr/share/hypr-hydro-os/scripts/local-lua b/files/system/usr/share/hypr-hydro-os/scripts/local-lua
deleted file mode 100755
index 7604e5e..0000000
--- a/files/system/usr/share/hypr-hydro-os/scripts/local-lua
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env bash
-BIN_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
-
-LUA_PATH="${BIN_DIR}/?.lua;;" lua $1
diff --git a/files/system/usr/share/hypr-hydro-os/scripts/menu.lua b/files/system/usr/share/hypr-hydro-os/scripts/menu.lua
deleted file mode 100644
index 1e658ba..0000000
--- a/files/system/usr/share/hypr-hydro-os/scripts/menu.lua
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env lua
-local menu = {}
-
-function menu:clean_string(str)
- str = string.gsub(str, "^%s+", "")
- str = string.gsub(str, "%s+$", "")
- return string.gsub(str, "[\n]+", " ")
-end
-
-function menu:bring_menu(prompt, options)
- local options_string = ""
- local length = 1
- for _, value in pairs(options) do
- options_string = options_string .. value .. "\n"
- length = length + 1
- end
-
- options_string = options_string:sub(1, -2)
-
- local command = "echo -e '" .. options_string .. "' | wofi -dmenu -i -p '" .. prompt .. "'"
- local f = assert(io.popen(command, "r"))
- local s = menu:clean_string(assert(f:read("*a")))
- f:close()
- return s
-end
-
-return menu
diff --git a/files/system/usr/share/hypr-hydro-os/scripts/powermenu.lua b/files/system/usr/share/hypr-hydro-os/scripts/powermenu.lua
deleted file mode 100644
index c5ac902..0000000
--- a/files/system/usr/share/hypr-hydro-os/scripts/powermenu.lua
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env lua
-local menu = require("menu")
-local executable = {
- ["Shutdown"] = "/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_shutdown",
- ["Reboot"] = "/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_reboot",
- ["Log out"] = "/usr/share/hypr-hydro-os/scripts/hypr_power/hypr_logout",
- ["Cancel"] = "",
-}
-
-local options = { "Shutdown", "Reboot", "Log out", "Cancel" }
-
-local s = menu:bring_menu("Power menu", options)
-
-os.execute(executable[s])
diff --git a/files/system/usr/share/wayland-sessions/steam-big-picture.desktop b/files/system/usr/share/wayland-sessions/steam-big-picture.desktop
index c04d302..f167201 100644
--- a/files/system/usr/share/wayland-sessions/steam-big-picture.desktop
+++ b/files/system/usr/share/wayland-sessions/steam-big-picture.desktop
@@ -1,5 +1,5 @@
[Desktop Entry]
Name=Steam Big Picture Mode
Comment=Start Steam in Big Picture Mode
-Exec=/usr/bin/gamescope -H 1080 -r 60 --force-composition -fe -- /usr/bin/steam -tenfoot
+Exec=/usr/bin/gamescope -H 1080 -r 60 --force-composition --mangoapp -fe -- /usr/bin/steam -tenfoot %U
Type=Application
\ No newline at end of file
diff --git a/files/systemd/system/sddm-boot-patch.service b/files/systemd/system/sddm-boot-patch.service
new file mode 100644
index 0000000..8f6699b
--- /dev/null
+++ b/files/systemd/system/sddm-boot-patch.service
@@ -0,0 +1,18 @@
+# Taken from Wayblue's repo, https://github.com/wayblueorg/wayblue
+# This is to resolve issue on boot for sddm login
+# Creates an SDDM user before SDDM runs.
+# See:
+# - https://github.com/ublue-os/cinnamon/blob/bf44562ddbed670cdd0d03a45ea08bdb8a6e96a7/system_files/usr/lib/systemd/system/ublue-lightdm-workaround.service#L4
+# - https://github.com/ublue-os/main/issues/224#issuecomment-1987851271
+
+[Unit]
+Description=Create SDDM user on system boot
+Before=sddm.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/etc/sddm/sddm-useradd
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/files/systemd/user/discord.service b/files/systemd/user/discord.service
new file mode 100644
index 0000000..aba6024
--- /dev/null
+++ b/files/systemd/user/discord.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=The pc gaming platform
+# order startup after WM
+After=graphical-session.target
+
+[Service]
+Type=exec
+# Repurpose XDG Autostart filtering
+ExecCondition=/lib/systemd/systemd-xdg-autostart-condition "wlroots:sway:Wayfire:labwc:Hyprland" ""
+ExecStart=/usr/bin/flatpak run com.discordapp.Discord
+Slice=app-graphical.slice
+
+[Install]
+WantedBy=graphical-session.target
+# Alternatively can be wanted by specific WMs' targets
+# Should also be duplicated in 'After=' to avoid ordering loop
+#WantedBy=wayland-session@hyprland.desktop.target
\ No newline at end of file
diff --git a/files/systemd/user/floorp.service b/files/systemd/user/floorp.service
new file mode 100644
index 0000000..1fc9b5b
--- /dev/null
+++ b/files/systemd/user/floorp.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=The pc gaming platform
+# order startup after WM
+After=graphical-session.target
+
+[Service]
+Type=exec
+# Repurpose XDG Autostart filtering
+ExecCondition=/lib/systemd/systemd-xdg-autostart-condition "wlroots:sway:Wayfire:labwc:Hyprland" ""
+ExecStart=/usr/bin/flatpak run one.ablaze.floorp
+Slice=app-graphical.slice
+
+[Install]
+WantedBy=graphical-session.target
+# Alternatively can be wanted by specific WMs' targets
+# Should also be duplicated in 'After=' to avoid ordering loop
+#WantedBy=wayland-session@hyprland.desktop.target
\ No newline at end of file
diff --git a/files/systemd/user/waybar.service b/files/systemd/user/hyprpanel.service
similarity index 70%
rename from files/systemd/user/waybar.service
rename to files/systemd/user/hyprpanel.service
index a991743..0b419e0 100644
--- a/files/systemd/user/waybar.service
+++ b/files/systemd/user/hyprpanel.service
@@ -1,5 +1,5 @@
[Unit]
-Description=Highly customizable Wayland bar for Sway and Wlroots based compositors.
+Description=A panel bar branched from AGS maintained by Hyprland devs.
Documentation=man:waybar(5)
# order startup after WM
After=graphical-session.target
@@ -8,8 +8,7 @@ After=graphical-session.target
Type=exec
# Repurpose XDG Autostart filtering
ExecCondition=/lib/systemd/systemd-xdg-autostart-condition "wlroots:sway:Wayfire:labwc:Hyprland" ""
-ExecStart=/usr/bin/waybar
-ExecReload=kill -SIGUSR2 $MAINPID
+ExecStart=/usr/bin/hyprpanel
Restart=on-failure
Slice=app-graphical.slice
diff --git a/files/systemd/user/steam.service b/files/systemd/user/steam.service
new file mode 100644
index 0000000..84ea60e
--- /dev/null
+++ b/files/systemd/user/steam.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=The pc gaming platform
+# order startup after WM
+After=graphical-session.target
+
+[Service]
+Type=exec
+# Repurpose XDG Autostart filtering
+ExecCondition=/lib/systemd/systemd-xdg-autostart-condition "wlroots:sway:Wayfire:labwc:Hyprland" ""
+ExecStart=/usr/bin/steam %U
+Slice=app-graphical.slice
+
+[Install]
+WantedBy=graphical-session.target
+# Alternatively can be wanted by specific WMs' targets
+# Should also be duplicated in 'After=' to avoid ordering loop
+#WantedBy=wayland-session@hyprland.desktop.target
\ No newline at end of file
diff --git a/files/systemd/user/sway-notification-center.service b/files/systemd/user/sway-notification-center.service
deleted file mode 100644
index 9fa6d5d..0000000
--- a/files/systemd/user/sway-notification-center.service
+++ /dev/null
@@ -1,16 +0,0 @@
-[Unit]
-Description=A simple notification daemon with a GTK gui for notifications and the control center.
-Documentation=man:swaync(1)
-# order startup after WM
-After=graphical-session.target
-
-[Service]
-Type=exec
-# Repurpose XDG Autostart filtering
-ExecCondition=/lib/systemd/systemd-xdg-autostart-condition "wlroots:sway:Wayfire:labwc:Hyprland" ""
-ExecStart=/usr/bin/swaync
-Restart=on-failure
-Slice=app-graphical.slice
-
-[Install]
-WantedBy=graphical-session.target
\ No newline at end of file
diff --git a/files/systemd/user/terminal.service b/files/systemd/user/terminal.service
new file mode 100644
index 0000000..da56249
--- /dev/null
+++ b/files/systemd/user/terminal.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=The pc gaming platform
+# order startup after WM
+After=graphical-session.target
+
+[Service]
+Type=exec
+# Repurpose XDG Autostart filtering
+ExecCondition=/lib/systemd/systemd-xdg-autostart-condition "wlroots:sway:Wayfire:labwc:Hyprland" ""
+ExecStart=/usr/bin/kitty
+Slice=app-graphical.slice
+
+[Install]
+WantedBy=graphical-session.target
+# Alternatively can be wanted by specific WMs' targets
+# Should also be duplicated in 'After=' to avoid ordering loop
+#WantedBy=wayland-session@hyprland.desktop.target
\ No newline at end of file
diff --git a/recipes/components/autostart-module.yml b/recipes/components/autostart-module.yml
new file mode 100644
index 0000000..e66b83c
--- /dev/null
+++ b/recipes/components/autostart-module.yml
@@ -0,0 +1,10 @@
+modules:
+ - type: systemd
+ user:
+ enabled:
+ - hyprpanel.service
+ - hyprpolkitagent.service
+ - discord.service
+ - floorp.service
+ - steam.service
+ - terminal.service
\ No newline at end of file
diff --git a/recipes/components/base-module.yml b/recipes/components/base-module.yml
new file mode 100644
index 0000000..90ff4c9
--- /dev/null
+++ b/recipes/components/base-module.yml
@@ -0,0 +1,96 @@
+modules:
+ - type: containerfile
+ snippets:
+ - COPY --from=ghcr.io/ublue-os/config:latest /rpms/ublue-os-udev-rules.noarch.rpm /
+ - COPY --from=ghcr.io/ublue-os/config:latest /rpms/ublue-os-update-services.noarch.rpm /
+ - COPY --from=ghcr.io/ublue-os/config:latest /rpms/ublue-os-signing.noarch.rpm /
+ - RUN rpm -ivh /ublue-os-udev-rules.noarch.rpm
+ - RUN rpm -ivh /ublue-os-update-services.noarch.rpm
+ - RUN rpm -ivh /ublue-os-signing.noarch.rpm
+
+ - type: script
+ scripts:
+ - enableautoupdates.sh # using systemd did not work, so using this script instead
+
+ - type: dnf
+ repos:
+ copr:
+ - erikreider/SwayNotificationCenter
+ install:
+ packages:
+ # environment
+ # fuzzy finder
+ - fzf
+ # power profiles like
+ - tuned-ppd
+ # xwayland
+ - xorg-x11-server-Xwayland
+ # headset control
+ - headsetcontrol
+ # media related
+ - mediainfo
+ - playerctl
+ - alsa-firmware
+ # nofitications
+ - SwayNotificationCenter
+ # text editor
+ - neovim
+ # tools for evocation
+ - just
+ # zip utilities
+ - p7zip
+ # qt libraries
+ - qt5-qtwayland
+ - qt6-qtwayland
+ # emoji fonts
+ - google-noto-emoji-fonts
+ # vulkan
+ - vulkan-tools
+ - vulkan-validation-layers
+
+ # polkit
+ - polkit
+
+ # sound
+ - wireplumber
+ - pipewire
+ - pamixer
+ - pulseaudio-utils
+
+ # networking
+ - bluez
+ - bluez-tools
+ - firewall-config
+
+ # file manager
+ - nautilus
+ - file-roller
+ - file-roller-nautilus
+ - nextcloud-client
+ - nextcloud-client-nautilus
+
+ # theme and GUI
+ - fontawesome-fonts-all
+ - gnome-themes-extra
+ - gnome-icon-theme
+ - paper-icon-theme
+ - breeze-icon-theme
+ - papirus-icon-theme
+
+ # software
+ - gnome-software
+ - gnome-software-rpm-ostree
+
+ # power
+ - powerstat
+
+ remove:
+ packages:
+ # remove firefox
+ - firefox
+ - firefox-langpacks
+
+ - type: script
+ scripts:
+ - installproprietarypackages.sh
+
diff --git a/recipes/components/default-flatpak.yml b/recipes/components/default-flatpak.yml
new file mode 100644
index 0000000..6737ad6
--- /dev/null
+++ b/recipes/components/default-flatpak.yml
@@ -0,0 +1,9 @@
+modules:
+ - type: default-flatpaks
+ notify: true
+ system:
+ install:
+ - one.ablaze.floorp
+ user:
+ install:
+ - com.discordapp.Discord
\ No newline at end of file
diff --git a/recipes/components/hyprland-module.yml b/recipes/components/hyprland-module.yml
new file mode 100644
index 0000000..6ab195d
--- /dev/null
+++ b/recipes/components/hyprland-module.yml
@@ -0,0 +1,11 @@
+modules:
+ - type: dnf
+ repos:
+ copr:
+ - solopasha/hyprland
+ install:
+ packages:
+ - hyprland-git
+ - hyprpanel
+ - hyprpolkitagent
+ - hyprshot
\ No newline at end of file
diff --git a/recipes/components/nvidia-module.yml b/recipes/components/nvidia-module.yml
new file mode 100644
index 0000000..0ba6275
--- /dev/null
+++ b/recipes/components/nvidia-module.yml
@@ -0,0 +1,15 @@
+modules:
+ - type: containerfile
+ snippets:
+ - COPY --from=ghcr.io/ublue-os/akmods-nvidia:main-42 /rpms/ /tmp/rpms
+ - RUN find /tmp/rpms
+ - RUN rpm-ostree install /tmp/rpms/ublue-os/ublue-os-nvidia*.rpm
+ - RUN sed -i '0,/enabled=0/{s/enabled=0/enabled=1/}' /etc/yum.repos.d/nvidia-container-toolkit.repo
+ - RUN sed -i '0,/enabled=0/{s/enabled=0/enabled=1\npriority=90/}' /etc/yum.repos.d/negativo17-fedora-nvidia.repo
+ - RUN rpm-ostree install /tmp/rpms/kmods/kmod-nvidia*.rpm libnvidia-fbc libva-nvidia-driver nvidia-driver nvidia-driver-cuda nvidia-modprobe nvidia-persistenced nvidia-settings nvidia-container-toolkit
+ - type: script
+ scripts:
+ - nvidia/installtoolkitpolicy.sh
+ - nvidia/removeunusedrepos.sh
+ - nvidia/setearlyloading.sh
+ - nvidia/setdrmvariables.sh
diff --git a/recipes/components/sddm-module.yml b/recipes/components/sddm-module.yml
new file mode 100644
index 0000000..ae1913d
--- /dev/null
+++ b/recipes/components/sddm-module.yml
@@ -0,0 +1,20 @@
+modules:
+ - type: dnf
+ install:
+ packages:
+ - sddm
+ - sddm-themes
+ - qt5-qtgraphicaleffects
+ - qt5-qtquickcontrols2
+ - qt5-qtsvg
+ - kwallet
+ - pam-kwallet
+
+ - type: script
+ scripts:
+ - setsddmtheming.sh
+
+ - type: systemd
+ system:
+ enabled:
+ - sddm-boot-patch.service
\ No newline at end of file
diff --git a/recipes/components/steam-module.yml b/recipes/components/steam-module.yml
new file mode 100644
index 0000000..ebbfd7c
--- /dev/null
+++ b/recipes/components/steam-module.yml
@@ -0,0 +1,16 @@
+modules:
+ - type: dnf
+ repos:
+ nonfree: rpmfusion
+ install:
+ packages:
+ - steam
+ # for game mode and big picture mode
+ - gamescope
+ # for performance view
+ - mangohud
+
+ - type: default-flatpaks
+ system:
+ install:
+ - net.davidotek.pupgui2
\ No newline at end of file
diff --git a/recipes/components/sys-files-module.yml b/recipes/components/sys-files-module.yml
new file mode 100644
index 0000000..41df104
--- /dev/null
+++ b/recipes/components/sys-files-module.yml
@@ -0,0 +1,5 @@
+modules:
+ - type: files
+ files:
+ - source: system
+ destination: / # copies files/system/* (* means everything inside it) into your image's root folder /
\ No newline at end of file
diff --git a/recipes/recipe.yml b/recipes/recipe.yml
index 8a82169..18942fd 100644
--- a/recipes/recipe.yml
+++ b/recipes/recipe.yml
@@ -6,43 +6,19 @@ name: hydro-os
description: This is my personal OS image.
# the base image to build on top of (FROM) and the version tag to use
-base-image: ghcr.io/ublue-os/bazzite-asus-nvidia
-image-version: latest # latest is also supported if you want new updates ASAP
+base-image: quay.io/fedora-ostree-desktops/base-atomic
+image-version: 42 # latest is also supported if you want new updates ASAP
# module configuration, executed in order
# you can include multiple instances of the same module
modules:
- - type: files
- files:
- - source: system
- destination: / # copies files/system/* (* means everything inside it) into your image's root folder /
-
- - type: rpm-ostree
- repos:
- - https://copr.fedorainfracloud.org/coprs/solopasha/hyprland/repo/fedora-%OS_VERSION%/solopasha-hyprland-fedora-%OS_VERSION%.repo
- - https://copr.fedorainfracloud.org/coprs/erikreider/SwayNotificationCenter/repo/fedora-%OS_VERSION%/erikreider-SwayNotificationCenter-fedora-%OS_VERSION%.repo
- install:
- - hyprland-git
- - waybar
- - neovim
- - SwayNotificationCenter
- - hyprpolkitagent
- - hyprshot
-
- - type: default-flatpaks
- notify: true # Send notification after install/uninstall is finished (true/false)
- system:
- # If no repo information is specified, Flathub will be used by default
- install:
- - one.ablaze.floorp
- - com.discordapp.Discord
- user: {} # Also add Flathub user repo, but no user packages
-
- - type: systemd
- user:
- enabled:
- - waybar.service
- - hyprpolkitagent.service
+ - from-file: components/sddm-module.yml
+ - from-file: components/base-module.yml
+ - from-file: components/nvidia-module.yml
+ - from-file: components/sys-files-module.yml
+ - from-file: components/hyprland-module.yml
+ - from-file: components/steam-module.yml
+ - from-file: components/default-flatpak.yml
- type: signing # this sets up the proper policy & signing files for signed images to work fully