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