Compare commits

...

9 commits

Author SHA1 Message Date
0a51ee40cc Made up my own branding.
This shouldn't be pushed to the registry; if I do so on accident - I'm screwed (I don't wanna become an actual OS maintainer, at least not yet lol).
2026-05-09 04:14:32 +02:00
1c4e6a6bc8 Explaining technical decisions a bit better 2026-05-09 03:29:59 +02:00
555c71f0cb XDG dirs 2026-05-09 03:09:27 +02:00
8da6cfcc74 so I pull my hair out, they're breaking my key, the updates break away 2026-05-09 02:51:14 +02:00
b2e6284563 I'm not messing with standards talk, I value my mental health 2026-05-09 01:56:20 +02:00
bc4fdabc29 Power button module 2026-05-09 01:36:53 +02:00
2c48b47412 This, decisively, does not need sudo. It's ran as sudo by DCli in the 1st place, anyway. 2026-05-09 01:32:03 +02:00
69ed2f5b89 Still-fruitless attempts to get hyprpm to work 2026-05-09 01:17:40 +02:00
f79fc5deb9 figured out prune „bugs” 2026-05-08 18:59:51 +02:00
19 changed files with 129 additions and 11 deletions

View file

@ -15,7 +15,10 @@ enabled_modules:
- system-packages-GuzioPadV4 - system-packages-GuzioPadV4
- waydroid-init - waydroid-init
- hyprland-sddm-autologin - hyprland-sddm-autologin
- hyprpm-update #- hyprpm-update
- forgiving-power-button
- xdg-user-dirs
- atama-branding
# Module processing mode # Module processing mode
# parallel: Collect and install all modules at once (faster, default) # parallel: Collect and install all modules at once (faster, default)
@ -45,7 +48,7 @@ system_backups:
# Settings # Settings
flatpak_scope: system flatpak_scope: system
auto_prune: true auto_prune: true #Note on what --prune (or this YAML option) actually does: It will NOT uninstall packages that are entirely unmanaged by DCli (as I thought it would) AND THAT'S BY DESIGN (not a bug/issue to report)! Instead, it will remove packages that once-were-in-your-DCli-config-but-were since removed. Kinda underwhelming, tbh; I'd be expecting that kind of behavior to be the default on a declarative system (and the the „extra” to be „we remove EVERYTHING that you don't actively track”), but I at least now understand what it does... Yay!(?) See: https://gitlab.com/theblackdon/dcli/-/work_items/6
# AUR helper to use (auto-detects paru or yay if not specified) # AUR helper to use (auto-detects paru or yay if not specified)
aur_helper: yay # Options: paru, yay, or any AUR helper aur_helper: yay # Options: paru, yay, or any AUR helper
@ -84,7 +87,7 @@ default_apps:
browser: app.zen_browser.zen browser: app.zen_browser.zen
text_editor: org.onlyoffice.desktopeditors text_editor: org.onlyoffice.desktopeditors
file_manager: open_folder file_manager: open_folder
terminal: null #apparently, this is related to the xdg-terminal-exec binary, which I don't have - leaving it null for now terminal: null #apparently, this is related to the xdg-terminal-exec binary, which is an in-progress XDG standard - leaving it null for now
video_player: org.videolan.VLC video_player: org.videolan.VLC
audio_player: org.videolan.VLC audio_player: org.videolan.VLC
image_viewer: app.zen_browser.zen image_viewer: app.zen_browser.zen

View file

@ -0,0 +1,14 @@
NAME="ALG"
PRETTY_NAME="ALG"
ID=alg
ID_LIKE=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://arkalinuxgui.org/"
DOCUMENTATION_URL="https://arkalinuxgui.org/docs"
SUPPORT_URL="https://https://arkalinuxgui.org/discuss/"
BUG_REPORT_URL="https://github.com/arch-linux-gui"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=alg
IMAGE_ID=alg-xfce
IMAGE_VERSION=2025.10

View file

@ -0,0 +1,12 @@
NAME="blendOS"
PRETTY_NAME="blendOS"
ID=blendos
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://blendos.co/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL=""
BUG_REPORT_URL=""
LOGO=blendos-logo
IMAGE_ID=blendOS
IMAGE_VERSION=2026.05.01

View file

@ -0,0 +1,3 @@
description: Packages needed to run the module's hook.
packages:
- bash

View file

@ -0,0 +1,3 @@
#!/bin/bash
mkdir -p /etc/
echo -e "NAME=\"Atama\"\nPRETTY_NAME=\"AtamaOS\"\nID=atama\nID_LIKE=\"alg arch blendos\"\nBUILD_ID=rolling\nANSI_COLOR=\"38;2;23;147;209\"\nHOME_URL=\"\"\nDOCUMENTATION_URL=\"\"\nSUPPORT_URL=\"\"\nBUG_REPORT_URL=\"\"\nPRIVACY_POLICY_URL=\"\"\nLOGO=arch\nIMAGE_ID=alg-xfce\nIMAGE_VERSION=2025.10" > /etc/os-release

View file

@ -0,0 +1,12 @@
description: Makes the power button put your device to sleep (instead of shutting it down) when pressed, and poweroff when long-pressed. This is especially useful for mobile devices like 2in1 tablets, Linux phones, the Steam Deck, or the GPD Win 4 because a) they are suspended often and b) Android/iOS devices gotten us used to this click-to-sleep behavior and with this module, you don't have to worry about accidentally shutting down your device when you act on this instinct (hence the name). Note that your OS must be able to understand /etc/systemd/logind.conf.d/ (which may not be that case if you're running a SystemD-free distro - please consult its manual of your init/LoginD system if you're in this situation) for this module to actually do anything, otherwise it's just writing a useless config file.
package-files:
- dependencies.yaml
post_install_hook: "hook.sh"
post_disable_hook: "unhook.sh" #No matter what I tried, I couldn't get this hook to actually trigger, so it seems to be an in-development stub that doesn't work yet (especially given how there was literally 0 documentation on this - I simply spotted it being listed in auto-generated modules). For now, the unhook script has to be run manually if you want to undo the power button setup. Nevertheless, it's listed here, so it should Just Work [TM] when DCli adds support.
hook_behavior: always #...instead of "once" because this lets your config be self-healing (even if you mess something up, next dcli sync will restore it); ...instead of "ask" because I don't like pestering people with RUN THIS HOOK? RUN THIS HOOK? (if anything, that makes it more likely that they will "[S]kip always", thus rendering the „self-healing” non-functional)
author: "Guzio"
version: "1.0.0"
category: "system"
tags: []
license: "MIT"
upstream_url: "https://gitdab.com/Guzio/system/src/branch/main/modules/forgiving-power-button"

View file

@ -0,0 +1,11 @@
#!/bin/bash
echo "========================================================";
echo " HELLO! IT SEEMS YOU REMOVED THE atama-branding MODULE. ";
echo;
echo " Unfortunatley, this will not get rid of the branding";
echo " because we have no way of knowing which OS were you";
echo " using before (our branding literally overwrote that";
echo " data, after all). Please manually look up your OS on";
echo " https://github.com/chef/os_release and restore your";
echo " /etc/os-release file to the contents you find there.";
echo "========================================================";

View file

@ -0,0 +1,3 @@
description: Packages needed to run the module's hook.
packages:
- bash

View file

@ -0,0 +1,3 @@
#!/bin/bash
mkdir -p /etc/systemd/logind.conf.d/
echo -e "[Login]\nHandlePowerKey=suspend\nHandlePowerKeyLongPress=poweroff" > /etc/systemd/logind.conf.d/dcli-forgiving-power-button.conf

View file

@ -0,0 +1,12 @@
description: Makes the power button put your device to sleep (instead of shutting it down) when pressed, and poweroff when long-pressed. This is especially useful for mobile devices like 2in1 tablets, Linux phones, the Steam Deck, or the GPD Win 4 because a) they are suspended often and b) Android/iOS devices gotten us used to this click-to-sleep behavior and with this module, you don't have to worry about accidentally shutting down your device when you act on this instinct (hence the name). Note that your OS must be able to understand /etc/systemd/logind.conf.d/ (which may not be that case if you're running a SystemD-free distro - please consult its manual of your init/LoginD system if you're in this situation) for this module to actually do anything, otherwise it's just writing a useless config file.
package-files:
- dependencies.yaml
post_install_hook: "hook.sh"
post_disable_hook: "unhook.sh" #No matter what I tried, I couldn't get this hook to actually trigger, so it seems to be an in-development stub that doesn't work yet (especially given how there was literally 0 documentation on this - I simply spotted it being listed in auto-generated modules). For now, the unhook script has to be run manually if you want to undo the power button setup. Nevertheless, it's listed here, so it should Just Work [TM] when DCli adds support.
hook_behavior: always #...instead of "once" because this lets your config be self-healing (even if you mess something up, next dcli sync will restore it); ...instead of "ask" because I don't like pestering people with RUN THIS HOOK? RUN THIS HOOK? (if anything, that makes it more likely that they will "[S]kip always", thus rendering the „self-healing” non-functional)
author: "Guzio"
version: "1.0.1"
category: "system"
tags: []
license: "MIT"
upstream_url: "https://gitdab.com/Guzio/system/src/branch/main/modules/forgiving-power-button"

View file

@ -0,0 +1,2 @@
#!/bin/bash
rm -v /etc/systemd/logind.conf.d/dcli-forgiving-power-button.conf

View file

@ -3,10 +3,9 @@ package-files:
- dependencies.yaml - dependencies.yaml
post_install_hook: "hook.sh" post_install_hook: "hook.sh"
post_disable_hook: "unhook.sh" #No matter what I tried, I couldn't get this hook to actually trigger, so it seems to be an in-development stub that doesn't work yet (especially given how there was literally 0 documentation on this - I simply spotted it being listed in auto-generated modules). For now, the unhook script has to be run manually if you want to undo autologin setup. Nevertheless, it's listed here, so it should Just Work [TM] when DCli adds support. post_disable_hook: "unhook.sh" #No matter what I tried, I couldn't get this hook to actually trigger, so it seems to be an in-development stub that doesn't work yet (especially given how there was literally 0 documentation on this - I simply spotted it being listed in auto-generated modules). For now, the unhook script has to be run manually if you want to undo autologin setup. Nevertheless, it's listed here, so it should Just Work [TM] when DCli adds support.
hook_behavior: always hook_behavior: always #...instead of "once" because this lets your config be self-healing (even if you mess something up, next dcli sync will restore it) and also this is needed to ensure the „whoever-ran-dcli-most-recently” behavior (if X runs this and gets marked for autologin, then Y runs this and gets marked, then if X runs this again, we'd want to be sure that X will get marked for autologin again, not leave it on Y); ...instead of "ask" because I don't like pestering people with RUN THIS HOOK? RUN THIS HOOK? (if anything, that makes it more likely that they will "[S]kip always", thus rendering the „self-healing” and „whoever-ran-dcli-most-recently” non-functional)
post_disable_behavior: always
author: "Guzio" author: "Guzio"
version: "1.0.0" version: "1.0.2"
category: "window-managers" category: "window-managers"
tags: [] tags: []
license: "MIT" license: "MIT"

View file

@ -1,2 +1,2 @@
#!/bin/bash #!/bin/bash
sudo rm -v /etc/sddm.conf.d/dcli-hyprland-autologin.conf rm -v /etc/sddm.conf.d/dcli-hyprland-autologin.conf

View file

@ -1,2 +1,6 @@
#!/bin/bash #!/bin/bash
if [ "$EUID" -ne 0 ] || [ -z "$SUDO_USER" ]; then
hyprpm update hyprpm update
exit;
fi
exec su "$SUDO_USER" $0;

View file

@ -3,9 +3,9 @@ package-files:
- dependencies.yaml - dependencies.yaml
post_install_hook: "hook.sh" post_install_hook: "hook.sh"
run_hooks_as_user: true run_hooks_as_user: true
hook_behavior: ask hook_behavior: ask #There is an explicit Call-to-Action in this module's description („Do this if...”), so I'll use "ask" in this case, even though I don't like it that much. But re-running this on every sync would just be too slow...
author: "Guzio" author: "Guzio"
version: "0.0.0" version: "0.0.0" #Still in-dev
category: "window-managers" category: "window-managers"
tags: [] tags: []
license: "MIT" license: "MIT"

View file

@ -18,6 +18,7 @@ The final iteration doesn't break dependencies, but it accidentially nuked `yay`
``` ```
alg-app-store alg-fastfetch-config alg-hooks alg-logo alg-qogir-theme alg-set-once alg-welcome alg-xfce-settings amd-ucode bcachefs-tools blueman broadcom-wl clonezilla darkhttpd ddrescue dhcpcd dmraid edk2-shell ethtool exo file-roller firefox firefox-dark-reader fsarchiver galculator garcon grml-zsh-config iwd jfsutils lftp lightdm lightdm-gtk-greeter lsb-release lsscsi lvm2 mousepad mugshot network-manager-applet nmap nvme-cli openconnect openvpn pacman-contrib parole partclone pavucontrol pulseaudio-alsa pulseaudio-bluetooth qemu-guest-agent reflector ristretto rp-pppoe sdparm sg3_utils system-config-printer systemd-resolvconf tela-circle-icon testdisk thunar thunar-archive-plugin thunar-media-tags-plugin thunar-volman ttf-ms-fonts ttf-roboto tumbler vim virtualbox-guest-utils vlc vpnc wireless_tools xdg-user-dirs xdotool xf86-video-intel xf86-video-vesa xfburn xfce4-appfinder xfce4-artwork xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-dict xfce4-diskperf-plugin xfce4-eyes-plugin xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-mailwatch-plugin xfce4-mount-plugin xfce4-mpc-plugin xfce4-netload-plugin xfce4-notes-plugin xfce4-notifyd xfce4-panel xfce4-places-plugin xfce4-power-manager xfce4-pulseaudio-plugin xfce4-screensaver xfce4-screenshooter xfce4-sensors-plugin xfce4-session xfce4-settings xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-taskmanager xfce4-terminal xfce4-time-out-plugin xfce4-timer-plugin xfce4-verve-plugin xfce4-wavelan-plugin xfce4-weather-plugin xfce4-whiskermenu-plugin xfce4-xkb-plugin xfconf xfdesktop xfwm4 xfwm4-themes xorg-bdftopcf xorg-docs xorg-font-util xorg-fonts-100dpi xorg-fonts-75dpi xorg-iceauth xorg-mkfontscale xorg-server-devel xorg-server-xephyr xorg-server-xnest xorg-server-xvfb xorg-sessreg xorg-smproxy xorg-x11perf xorg-xbacklight xorg-xcmsdb xorg-xcursorgen xorg-xdpyinfo xorg-xdriinfo xorg-xev xorg-xgamma xorg-xhost xorg-xinput xorg-xkbevd xorg-xkbutils xorg-xkill xorg-xlsatoms xorg-xlsclients xorg-xpr xorg-xrandr xorg-xrefresh xorg-xset xorg-xsetroot xorg-xvinfo xorg-xwd xorg-xwininfo xorg-xwud zsh libxfce4ui alg-app-store alg-fastfetch-config alg-hooks alg-logo alg-qogir-theme alg-set-once alg-welcome alg-xfce-settings amd-ucode bcachefs-tools blueman broadcom-wl clonezilla darkhttpd ddrescue dhcpcd dmraid edk2-shell ethtool exo file-roller firefox firefox-dark-reader fsarchiver galculator garcon grml-zsh-config iwd jfsutils lftp lightdm lightdm-gtk-greeter lsb-release lsscsi lvm2 mousepad mugshot network-manager-applet nmap nvme-cli openconnect openvpn pacman-contrib parole partclone pavucontrol pulseaudio-alsa pulseaudio-bluetooth qemu-guest-agent reflector ristretto rp-pppoe sdparm sg3_utils system-config-printer systemd-resolvconf tela-circle-icon testdisk thunar thunar-archive-plugin thunar-media-tags-plugin thunar-volman ttf-ms-fonts ttf-roboto tumbler vim virtualbox-guest-utils vlc vpnc wireless_tools xdg-user-dirs xdotool xf86-video-intel xf86-video-vesa xfburn xfce4-appfinder xfce4-artwork xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-dict xfce4-diskperf-plugin xfce4-eyes-plugin xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-mailwatch-plugin xfce4-mount-plugin xfce4-mpc-plugin xfce4-netload-plugin xfce4-notes-plugin xfce4-notifyd xfce4-panel xfce4-places-plugin xfce4-power-manager xfce4-pulseaudio-plugin xfce4-screensaver xfce4-screenshooter xfce4-sensors-plugin xfce4-session xfce4-settings xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-taskmanager xfce4-terminal xfce4-time-out-plugin xfce4-timer-plugin xfce4-verve-plugin xfce4-wavelan-plugin xfce4-weather-plugin xfce4-whiskermenu-plugin xfce4-xkb-plugin xfconf xfdesktop xfwm4 xfwm4-themes xorg-bdftopcf xorg-docs xorg-font-util xorg-fonts-100dpi xorg-fonts-75dpi xorg-iceauth xorg-mkfontscale xorg-server-devel xorg-server-xephyr xorg-server-xnest xorg-server-xvfb xorg-sessreg xorg-smproxy xorg-x11perf xorg-xbacklight xorg-xcmsdb xorg-xcursorgen xorg-xdpyinfo xorg-xdriinfo xorg-xev xorg-xgamma xorg-xhost xorg-xinput xorg-xkbevd xorg-xkbutils xorg-xkill xorg-xlsatoms xorg-xlsclients xorg-xpr xorg-xrandr xorg-xrefresh xorg-xset xorg-xsetroot xorg-xvinfo xorg-xwd xorg-xwininfo xorg-xwud zsh libxfce4ui
``` ```
### This leads to the following command ### This leads to the following command
```bash ```bash
sudo pacman -R alg-app-store alg-fastfetch-config alg-hooks alg-logo alg-qogir-theme alg-set-once alg-welcome alg-xfce-settings amd-ucode bcachefs-tools blueman broadcom-wl clonezilla darkhttpd ddrescue dhcpcd dmraid edk2-shell ethtool exo file-roller firefox firefox-dark-reader fsarchiver galculator garcon grml-zsh-config iwd jfsutils lftp lightdm lightdm-gtk-greeter lsb-release lsscsi lvm2 mousepad mugshot network-manager-applet nmap nvme-cli openconnect openvpn pacman-contrib parole partclone pavucontrol pulseaudio-alsa pulseaudio-bluetooth qemu-guest-agent reflector ristretto rp-pppoe sdparm sg3_utils system-config-printer systemd-resolvconf tela-circle-icon testdisk thunar thunar-archive-plugin thunar-media-tags-plugin thunar-volman ttf-ms-fonts ttf-roboto tumbler vim virtualbox-guest-utils vlc vpnc wireless_tools xdg-user-dirs xdotool xf86-video-intel xf86-video-vesa xfburn xfce4-appfinder xfce4-artwork xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-dict xfce4-diskperf-plugin xfce4-eyes-plugin xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-mailwatch-plugin xfce4-mount-plugin xfce4-mpc-plugin xfce4-netload-plugin xfce4-notes-plugin xfce4-notifyd xfce4-panel xfce4-places-plugin xfce4-power-manager xfce4-pulseaudio-plugin xfce4-screensaver xfce4-screenshooter xfce4-sensors-plugin xfce4-session xfce4-settings xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-taskmanager xfce4-terminal xfce4-time-out-plugin xfce4-timer-plugin xfce4-verve-plugin xfce4-wavelan-plugin xfce4-weather-plugin xfce4-whiskermenu-plugin xfce4-xkb-plugin xfconf xfdesktop xfwm4 xfwm4-themes xorg-bdftopcf xorg-docs xorg-font-util xorg-fonts-100dpi xorg-fonts-75dpi xorg-iceauth xorg-mkfontscale xorg-server-devel xorg-server-xephyr xorg-server-xnest xorg-server-xvfb xorg-sessreg xorg-smproxy xorg-x11perf xorg-xbacklight xorg-xcmsdb xorg-xcursorgen xorg-xdpyinfo xorg-xdriinfo xorg-xev xorg-xgamma xorg-xhost xorg-xinput xorg-xkbevd xorg-xkbutils xorg-xkill xorg-xlsatoms xorg-xlsclients xorg-xpr xorg-xrandr xorg-xrefresh xorg-xset xorg-xsetroot xorg-xvinfo xorg-xwd xorg-xwininfo xorg-xwud zsh libxfce4ui sudo pacman -R alg-app-store alg-fastfetch-config alg-hooks alg-logo alg-qogir-theme alg-set-once alg-welcome alg-xfce-settings amd-ucode bcachefs-tools blueman broadcom-wl clonezilla darkhttpd ddrescue dhcpcd dmraid edk2-shell ethtool exo file-roller firefox firefox-dark-reader fsarchiver galculator garcon grml-zsh-config iwd jfsutils lftp lightdm lightdm-gtk-greeter lsb-release lsscsi lvm2 mousepad mugshot network-manager-applet nmap nvme-cli openconnect openvpn pacman-contrib parole partclone pavucontrol pulseaudio-alsa pulseaudio-bluetooth qemu-guest-agent reflector ristretto rp-pppoe sdparm sg3_utils system-config-printer systemd-resolvconf tela-circle-icon testdisk thunar thunar-archive-plugin thunar-media-tags-plugin thunar-volman ttf-ms-fonts ttf-roboto tumbler vim virtualbox-guest-utils vlc vpnc wireless_tools xdg-user-dirs xdotool xf86-video-intel xf86-video-vesa xfburn xfce4-appfinder xfce4-artwork xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-dict xfce4-diskperf-plugin xfce4-eyes-plugin xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-mailwatch-plugin xfce4-mount-plugin xfce4-mpc-plugin xfce4-netload-plugin xfce4-notes-plugin xfce4-notifyd xfce4-panel xfce4-places-plugin xfce4-power-manager xfce4-pulseaudio-plugin xfce4-screensaver xfce4-screenshooter xfce4-sensors-plugin xfce4-session xfce4-settings xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-taskmanager xfce4-terminal xfce4-time-out-plugin xfce4-timer-plugin xfce4-verve-plugin xfce4-wavelan-plugin xfce4-weather-plugin xfce4-whiskermenu-plugin xfce4-xkb-plugin xfconf xfdesktop xfwm4 xfwm4-themes xorg-bdftopcf xorg-docs xorg-font-util xorg-fonts-100dpi xorg-fonts-75dpi xorg-iceauth xorg-mkfontscale xorg-server-devel xorg-server-xephyr xorg-server-xnest xorg-server-xvfb xorg-sessreg xorg-smproxy xorg-x11perf xorg-xbacklight xorg-xcmsdb xorg-xcursorgen xorg-xdpyinfo xorg-xdriinfo xorg-xev xorg-xgamma xorg-xhost xorg-xinput xorg-xkbevd xorg-xkbutils xorg-xkill xorg-xlsatoms xorg-xlsclients xorg-xpr xorg-xrandr xorg-xrefresh xorg-xset xorg-xsetroot xorg-xvinfo xorg-xwd xorg-xwininfo xorg-xwud zsh libxfce4ui
@ -66,6 +67,7 @@ These are packages you installed manually:
sudo pacman -D --asdeps bluez-utils diffutils gpm gvfs pulseaudio xorg-fonts-encodings xorg-server xorg-server-common xorg-setxkbmap xorg-xauth xorg-xkbcomp xorg-xmodmap xorg-xprop xorg-xrdb xorg-xwayland sudo pacman -D --asdeps bluez-utils diffutils gpm gvfs pulseaudio xorg-fonts-encodings xorg-server xorg-server-common xorg-setxkbmap xorg-xauth xorg-xkbcomp xorg-xmodmap xorg-xprop xorg-xrdb xorg-xwayland
``` ```
After all of this, run `sudo pacman -Rns $(pacman -Qdtq)` a couple of times (unil it can't find packages anymore), to remove all orphans that came as the result of this debacle, **and then do `dcli sync` to re-add anything that may have gotten wrongfully removed!** After all of this, run `sudo pacman -Rns $(pacman -Qdtq)` a couple of times (unil it can't find packages anymore), to remove all orphans that came as the result of this debacle, **and then do `dcli sync` to re-add anything that may have gotten wrongfully removed!**
## Service cleanup ## Service cleanup
`dcli merge --services` gives the following list: `dcli merge --services` gives the following list:
``` ```
@ -88,5 +90,14 @@ The simplest thing to do is to run:
```bash ```bash
systemctl disable choose-mirror.service hv_kvp_daemon.service hv_vss_daemon.service livecd-alsa-unmuter.service livecd-talk.service ModemManager.service pacman-init.service sshd.service systemd-networkd-wait-online.service systemd-time-wait-sync.service systemctl disable choose-mirror.service hv_kvp_daemon.service hv_vss_daemon.service livecd-alsa-unmuter.service livecd-talk.service ModemManager.service pacman-init.service sshd.service systemd-networkd-wait-online.service systemd-time-wait-sync.service
``` ```
## Defaults cleanup ## Defaults cleanup
Nothing was needed. Yaayy! Nothing was needed. Yaayy!
## Fixing `pacman-keyring`
For some absolutley braindead reason, ALG devs looked at [this forum post](https://bbs.archlinux.org/viewtopic.php?id=294854), saw that making `/etc/pacman.d/gnupg/` immutable-on-disk can lead to problems and thought „My golly, well wouldn't it be a splendid idea if we do that, too?” - and proceeded to ship a broken `/etc/pacman.d/gnupg/` (more specifically, the permissions are broken) that you can't perma-fix yourself (because even if you run `pacman-keyring --init` to fix the perms, any channges done to that file will not be persisted on disk and will vanish after a reboot). To make a fix that will *actually last* the following must be done:
```bash
sudo rm -v /etc/systemd/system/etc-pacman.d-gnupg.mount #To remove the pesky SystemD config file, that tells your OS to re-mount /etc/pacman.d/gnupg/ as a TempFS (which is what makes it immutable-on-disk)
sudo pacman-keyring --init #To fix the broken default permissions.
sudo pacman-keyring --populate #To install valid Arch keys. May no be necessary, but a) I think --init wipes the DB (I'm not sure, tho), and b) after all this mess, I don't trust ALG devs anymore, that they'll be competent enough to ship a valid keyring themselves.
```

View file

@ -0,0 +1,4 @@
description: Packages needed to run the module's hook.
packages:
- bash
- xdg-user-dirs

View file

@ -0,0 +1,10 @@
#!/bin/bash
# extra precautions until run_hooks_as_user: true is fixed
if [ -n "$SUDO_USER" ] && [ "$EUID" == 0 ]; then
exec su "$SUDO_USER" $0;
fi
# An explicit „Does the .config/user-dirs.dirs file already exist” check used to be here, but it is apparently unnecessary, as it turns out that XDG it will only populate paths that weren't configured yet, or were pointing to removed folders. Keeping it for historical reference.
xdg-user-dirs-update

View file

@ -0,0 +1,12 @@
description: Configures XDG directories the xdg-user-dirs package, if not configured already. Otherwise, it just installs the xdg-user-dirs package, which can still be useful for querying said dirs.
package-files:
- dependencies.yaml
post_install_hook: "hook.sh"
run_hooks_as_user: true
hook_behavior: always #...instead of "once" because the XDG spec can change from time to time (eg. the recent Projects dir), and we want to make sure that the user's keeps up.; ...instead of "ask" because I don't like pestering people with RUN THIS HOOK? RUN THIS HOOK? questions; ...because running this command multiple times is safe, anyway - it only fixes/adds broken/missing entires as it encounters them instead of overwriting everything or something like that (arguably, this makes "always" safer than "once"/"ask" because it makes your config self-healing)
author: "Guzio"
version: "1.0.1"
category: "media"
tags: []
license: "MIT"
upstream_url: "https://gitdab.com/Guzio/system/src/branch/main/modules/xdg-user-dirs"