Conversation
one day, perhaps somebody will sit in the same chair I am sat in at the Societies Fair, questioning what in their life possessed them to do such random... *things*
Member
Author
|
I was originally thinking of potentially ditching the GHA workflow however I'm thinking now of adapting it to allow people to still pull a pre-built image if they want & are cool with the time penalty for logging in. Plus perhaps add flag to build script if people want to build w/o the local reg (ie just dump in |
Ditch failed mime update as well
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Broad Overview
.xsessionwill then "pull" from, rather than spamming GHCR with redundant multi-gigabyte downloads across 50+ PCs every weekunfortunately)Specifics
OS
x86_64-v3variant of CachyOS rather thanx86_64-v4(my understanding is Alder Lake is not rated for AVX-512 since E-cores do not support the instruction set). However, we can still optimise for the v3 instruction setHome directory restructuring
The vast majority of the current pre-supplied
homedirectory is redundant or conflicting. The repository should ideally contain the minimal configuration needed to make changes from the defaults, rather than those changes dumped in with the changesGeneral note on KDE configs
.config/kdedefaultswill be generally be ignored and/or regenerated given that the container is ephemeral and will always be used in the scope of a first-time loginkded5rc, are no longer useful in the target KDE Plasma 6 environmentRemovals
.gtkrc-2.0kde-gtk-configexists.nvidia-settings-rc.config/autostart/[Directory removed]pulseaudio.desktop- Distrobox passes off host'spulseaudioalready, starting our own only causes failuresfng-admin-client.desktop-fng-adminis currently broken (intended to be fixed/rewritten at some point), no point autostarting a redundant client.config/dconf/[Directory removed]user- Shouldn't be tracking a binary state ingit, redundant to keep due to GTK apps pulling fromkde-gtk-configanyway.config/kde.org/[Directory removed]UserFeedback.org.kde.plasmashell.conf- Redundant analytics stuff.config/gtk-3.0/[Directory removed]*- Againkde-gtk-configis used, these will be dynamically generated anyway.config/gtk-4.0/[Directory removed]*- See above.config/kdedefaults/kwinrc- Water is wet. Plasma uses Breeze as its default anywayplasmarc- Not needed for Plasma 6, it'll usedefaultanyway then referencekdeglobalsto pick upBreezeDarkBase
.config/Trolltech.conf- Auto-generated based onkdeglobalsgtkrc- Deprecated configgtkrc-2.0- Deprecated configkactivitymanagerd-statsrc- Used for favourites on Start Menu. Not strictly needed, but may re-add to.config/kdedefaultskconf_updaterc- Already using Plasma 6, no need to track migrations from Plasma 5kded5rc- KDE Daemon 5 config, gets ignored. Host handles mounting anywaykonsolerc- Static Konsole config that gets regenerated on first launch anyway. Also no need to prevent toolbar movingksmserverrc- Ephemeral container. There's no last session to remember anyway. Plasma 6 usesemptySessionby default anyway, should we migrate to a more reusable containerktimezonedrc- Incorrectly set to UTC rather than Europe/London. Seems to be ignored regardless (passing envTZ=Europe/Londonwhen creating the container works)kwinrc- Virtual Desktop and Window Tiling configs that are bound to a specific UUIDs which aren't referenced anywhere else, hence redunantplasma-localerc- Default isC.UTF-8regardless. Preferable locale isen_GB.UTF-8, now currently set throughLANGandHOST_LOCALEat point of container creationplasmarc- Redundant, wallpaper only gets set if configured correctly in its containment viaplasma-org.kde.plasma.desktop-appletsrcpowermanagementprofilesrc- Already on Plasma 6. We don't usepowerdevilrcanyway, power management is handled by the hostuser-dirs.dirs- Ineffective since currently we don't actually have a user created - see Todosuser-dirs.locale- Also ineffective, and incorrectly set toCrather thanen_GB.local/state/[.localdirectory removed]konsolestaterc- Redundant storage of Konsole positioning from a Xephyr sessionplasmashellstaterc- Redundant storage of Konsole search from a Xephyr sessionsystemsettingsstaterc- Redundant storage of System Settings positioning, and opening ofwallpaper.png, from a Xephyr sessionMoved/merged from
.config/to.config/kdedefaultsbaloofilerckactivitymanagerdrckdeglobals[duplicate removed]kglobalshortcutsrckscreenlockerrcksplashrc[duplicate removed]Each moved so they actually get treated as immutable config templates, rather than just being immediately overwritten.
Other home directory changes
.config/kdedefaults/kactivitymanagerdrcActivityID(needed to bind various theme and config correctly) toaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa. This is painful so like, the configs can scream too yano?.config/kdedefaults/kdeglobals[General]/ColorSchemeHashand[KDE]/LookAndFeelPackagepreviously inkdeglobalsbut not present inkdefaults/kdeglobals.config/kdedefaults/kglobalshortcutsrcActivityIDtoaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa.config/plasma-org.kde.plasma.desktop-appletsrcActivityIDtoaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa.config/plasmashellrcpacman.confDockerfilechangesBuild Changes
Dockerfiledocker.io/library/archlinux:latesttodocker.io/cachyos/cachyos-v3(notev3refers tox86_64-v3, rather than an overall CachyOS versioning)pacman.confchanges tohome/pacman.confto copy in, cleaner than trying tosedthe current changes currentlypacman, installcachyos-keyringandcachyos-mirrorlistvulkan-nouveauandlib32-vulkan-nouveau(ships withvulkan-nouveau-gitandlib32-vulkan-nouveau-gitanyway)pkg-config(redundant)yay- probably will remove since now redundantjre17-openjdk(redundant, also keptjre21-openjdk)proton-cachyos- Built on top of Proton'sbleeding-edgebranch, applies various modifications that see more success running various gamesrye(project was abandoned in favour ofuvanyway) (redundant)cargotorustfor ease of removal after compilingdcslauncherand installingdcspkg- no point keeping in image--depth=1when cloningdcslauncherbuildsudoaccess changed from being controlled under/etc/sudoersto global directive under/etc/sudoers.d/acc(required to have mode0440for security reasons)WORKDIRchange to/New file:
home/pacman.confNoExtractdirective forusr/share/man/*,usr/share/doc/*,usr/share/gtk-doc/*,usr/share/help/*- no point extracting redundant stuff we're going to delete anywaymultilibrepository by default, so the previoussedof this intopacman.confis now redundant.xsessionchanges for explanation of Distrobox cursednessNew file:
local-registry.shhttpregistry onlocalhost:5000to be push and pull the container image to/from$HOME/.local/share/container-registryNew file:
host/99-local.confinsecure = trueneeded since it's anhttpregistry$HOME/.config/containers/registries.conf.d(don't use as$HOME/.config/containers/registries.confelse Podman will ignore/etc/containers/registries.conf)builddev.shlocal-registrylocalhost:5000/fng:devrather thanfng:devlocal-registryand stopslocal-registryhost/.xsessionlocal-registryand pullslocalhost:5000/fng:devSpeaking of
.xsession....xsessionchangesmpvto display some login entertainment (hence the loop checking whether the container has finished starting up)--security-opt apparmor=unconfinedsince Rocky doesn't have AppArmor regardless (--security-opt label=disablealso needs removing since--privilegedmakes it redundant, and DCS doesn't (currently) have SELinux enabled)TZ,LANG,HOST_LOCALEto fix timezone and locale issues detailed abovesetup_pacmanindistrobox-init, which forcibly updates packages, installs a hardcoded list of packages we didn't ask for (causingnouveauconflicts on Cachy), overridespacman.confchanges toNoExtractandNoProgressBar, etc... I hate this workaround, but by linkingpacmanto/usr/bin/truetemporarily, we don't have to play a game of whack-a-mole, and we keep Distrobox happy. I believe this was one of the primary causes to things with the container seemingly breaking out of the blue week-to-week, despite having not actually rebuilt the image. Also a contributor to slow login timespodman unshare buildah unmount --all(needs further testing)-it 0onpodman stophome/startsession.shchangesflathubremoteorg.vinegarhq.Sober(already available for installation viadcslauncher)mimemitigation (needs further testing, preferable to remove)__EGL_VENDOR_LIBRARY_FILENAMESto mitigate container occasionally falling back to software rendering/using the iGPU__GL_THREADED_OPTIMIZATIONS=1to get the OpenGL driver to split CPU work across threads__GL_SHADER_DISK_CACHE_SKIP_CLEANUP=1- in theory, no point clearing shader cache in an ephemeral container, preferable to avoid rebuilding shaders where possible (i.e. in the case of re-launching a game)ForceFullCompositionPipeline=Onin connection with Nvidia force composition pipeline #5. Breaks fullscreen apps if window unredirection is enabled in kwindbus-run-sessionwhen runningstartplasma-x11, cleaner to use just use the host's session busTODOs (non-exhaustive)
More home directory clean-up
In(Removed)kglobalshortcutsrc, its regeneration led tokded5,powerdeviletc config creeping in. Needs removing or mapping out tonone,none(Done)plasma-org.kde.plasma.desktop-appletsrc- Redundant applet blocks for stuff likebattery,brightnessetc should be removed(Removed)[ScreenConnectors]bit inplasmashellrcis redundantIn(Removed, also cleaned up other bloat)kdeglobals,[KFileDialog Settings]is redundant(Removed)kcminputrcis redundant - Plasma will use breeze_cursors out of the box anyway(Removed)ksplashrc- not technically necessary(Removed)packageis redundant(Removed)xsettingsd.confis redundant(Removed).bashrcis emptyIndexing
baloofilercto potentially add additional indexing exclusions (e.g. indexing the host is a Bad:tm: idea)Registry
-(done)99-local.confcan likely just be replaced by using--tls-verify=falsewithpodman push/pullQoL
fnguser so e.g.xdg-user-dirs-updatecan actually do its jobcachyos-gaming-metaandcachyos-gaming-applications(the latter would additionally install Gamescope, GOverlay, MangoHud, Heroic and Faugus, which makes me hesitant due to image bloat)NTSYNCout of the box since the host kernel is <6.x, likely sensible to disable thisForceFullCompositionPipeline=Onwith kwin window unredirection disabled is actually worth it, given the target PCs were upgraded since this project last saw significant developmentproton-cachyos-slrto help with some ant-cheat issuesyaypodman system reset -f(slow), and additionally ensure/var/tmpis properly cleaned after we use it, partly since DCS' automated tooling for this seems unreliable based on observation, and because we shouldn't hog the disk space away from others!/proc/sys/user/max_user_namespaces(disabled user namespaces prevents the container running on the target host, overly limited namespaces may cause issues with various applications) and/proc/sys/kernel/yama/ptrace_scope(ptrace_scope < 2needed for e.g.Soberto function, multiple games with some form of anticheat generally seem to have issues directly connected to this)udevrules to send to DCS Tech (also check why e.g. Dolphin Emu picking up input from controllers otherwise seemingly fine, is borked)Connected UWCS Projects
dcslauncherPR, and integrate CI/CD pipeline rather than recompiling locally as part of the container build processdcspkgthencargodependence can be removedfng-admin(lol)Documentation
Remove Distrobox dependence, clean-up
.xsessionandDockerfileSome other stuff I'll probably remember later
To mess around with yourself
$HOME/.xsessionbuildev.shUserscriptselected, or get Xephyr and runrundev.shto test in an X windowHopefully that's everything for now
I spent way too long writing this, will make additional progress on this when I have timeSome early review comments:
:3