<lfam>awb99_: I don't know about wayland. Hopefully somebody who uses wayland can help
<lfam>You do probably have to install some fonts, however
<mbakke>awb99_: the same font mechanisms are in place for both X11 and Wayland ... probably installing the essential fonts from that manual page will work.
<yewscion>Why might a python package's `site-packages` not be added to GUIX_PYTHONPATH? For some reason, the plugin I'm trying to debug's `site-package` is not being found by the program, and therefore the program cannot find it.
<awb99_>but I cannot see this for Chromium or icecat
***yewscion is now known as Guest4664
***yewscion_ is now known as yewscion
<mbakke>yewscion: right, one workaround is to configure the same (native-search-paths ...) for Beets as for Python, like 'ansible' does. But the best solution would probably be to patch Beets with a GUIX_BEETSPATH as alluded to in the ticket.
<mbakke>yewscion: 'gajim' also configures GUIX_PYTHONPATH, so you are in decent company :)
<lfam>Does anyone know off-hand how much space is required for the gui-installed-desktop-os-encrypted system test?
<mbakke>awb99_: do you have any existing "~/.config/fontconfig" or "/etc/fonts" perhaps carried over from some previous installation? Don't know why IceCat and Chromium behaves different from Alacritty :/
<lfam>It was a bad idea to dedicate ~90% of my memory to tmpfs for that system test
<jonsger>like only the best of the best do, sir :)
<awb99_>thanks mbakke ... I am now going through my .config folder .. great idea
<yewscion>mbakke: Awesome, I'll check out 'gajim' and 'ansible'! Thanks for pointing me in the right direction!
<AIM[m]>How to use packages->manifest in config.scm?
<Kolev>Is this right? (keyboard-layout (keyboard-layout "gb,he" #:options '("grp:alt_shift_toggle") #:options '("compose:caps")))
<opalvaults[m]>what is the syntax for setuid on a program? It falls under the operating system umbrella. Can't seem to get the syntax right. (append (list #~(string-/run/current-system/profile/bin/swaylock) %setuid-programs) right?
<lfam>Shadow is a package that provides authentication-related tools such as passwd, su, and login
<lfam>Sorry, shadow is a mystifying choice for an example if you don't know what it is
<opalvaults[m]>wait are these packages on disk anyways and I'm pulling them in for why exactly? If it's a system configuration shouldn't it know all of its packages to begin with? why not just an (gnu package system) or something that covers all of the operating system variables?
<lfam>It's computer programming. I think it's somewhat normal to have to import modules that contain the code you want to use
<lfam>It's a little weird to have to import (gnu system setuid)
<lfam>The other modules provide optional packages and services
<opalvaults[m]>Well it's one thing when I'm compiling a program. You don't want to pull in the entire package for one module. However I'm describing the state of a system that already has everything it needs to know about passwd, shadow, etc.
<lfam>And, Guix System includes passwd by default, without you having to do anything
<singpolyma>Scheme one variable name always contains only one value
<podiki[m]>perhaps what was being referred to earlier with something like emacs is that you'll see a hint that you are in e.g. a function and what it expects after, like (func <string> <file> :keyword ... etc.
<lfam>podiki[m]: Yes, that sort of assistance seems crucial
<podiki[m]>the confusion (it looks confusing to me) would imply needing better syntatic sugar
<lfam>Well, if you don't like Scheme, Guix is going to be tough
<singpolyma>opalvaults[m]: why? You just prepend your item to the list, looks like
<podiki[m]>the whole setuid thing changed recently too, perhaps that's why it is more confusing too (I know nothing here, much as I would like to help)
<lfam>The good news is that it's fairly easy to get help
<opalvaults[m]>right, I prepend/append the item to %setuid-programs. which shouldn't look like the above example. If %setuid-programs is an array of programs that have setuid on them, then why not just something as easy as (append "/bin/swaylock" %setuid-programs), or even swaylock.append(%setuid-programs)
<podiki[m]>the nesting nature of sexps can be confusing, for sure. you could perhaps unpack that example working from inner most ()s to outer most, thinking of each sexp as a new thing (you could have used let to define each part and put it together as one simple line at the end, for example)
<lfam>opalvaults[m]: That's basically what I gave you in my first example
<lfam>In Guix, there is generally a process of refinement where 1) Plain Scheme is used 2) Guix-specific abstractions are created and then 3) Those abstractions are simplified and refined based on user feedback
<opalvaults[m]>I've been contributing where I can. It's important to know where criticism is needed, and I think that it's not unreasonable to expect a bit of concision from something you can stick in a variable and expand when necessary.
<podiki[m]>perhaps the next thing on my guix learning list, after I clear out my package backlog (taffybar will take a bit, lots of packages involved)
<opalvaults[m]>lfam: I apologize that I made you feel dismissed as a stan. I did not mean to be dismissive. I think that in my field of professional expertise (devops) I see a lot of supposed nerds who want to keep things that are better left refactored or tossed out. That's an attitude that really sucks for those that would like to help out.
<lfam>Well, like I said. The software progresses in phases
<lfam>If you have something to contribute, help is wanted
<lfam>I was trying to help you accomplish your goal and instead you turned it into a rant and then insulted me
<opalvaults[m]>I've been working a little on Nyxt, and I've been attempting to write a sway article. I'm pretty terrible with Lisp despite wanting to be good at it. I contribute where I won't make a mess of things further.
<drakonis>opalvaults[m]: no worries about being terrible with lisp, everyone has to start somewhere
<opalvaults[m]>drakonis: I appreciate the encouraging words. I surround myself with some of the most brilliant craftsman and hackers around so it's a bit frustrating being completely immersed into a Lisp-sphere (Guix, Nyxt, Practical Common Lisp), and still coming up short when it comes to doing more basic configuration.
<drakonis>i finally got around learning common lisp after so long
<opalvaults[m]>By surround myself with some of the most brilliant..etc, I meant a lot of those in here in this room, and in #common-lisp, and many other places. Not that I somehow think myself as brilliant or anything. Don't want to come off that way.
<opalvaults[m]>It's been a really fun experience! I spun my wheels for a while before landing on Common Lisp. I come from Python, Go, and C, so it's a lot like learning a new foreign language where you can't say basic sentences but you know exactly what you'd say if you could.
<drakonis>the most difficult part has been shaking off the bad habits other languages taught me
<opalvaults[m]>Ah! Absolutely! You have to be very sure of that data you're creating, as it's part of the syntax of the language itself. So being haphazard just gets one stuck in interpreter hell.
<opalvaults[m]>In Go, and a lesser extent Python, I know what is data, and what is code, and how those pieces are allowed to mutate. Not that I'm diehard for typing or anything. It's just part of charm of Lisp.
<opalvaults[m]>Guix is a great learning tool however much I get frustrated with its idiosyncrasies.
<drakonis>there was work done but it never made past the initial hump
<opalvaults[m]>drakonis: I was under the impression that Guile Scheme is one of the better, if not the best implementation to extend an operating system with as it wraps around C functions and libraries like it's nothing.
<podiki[m]>yeah, so to break it down, you want to add a specific binary as setuid, so you need to give the full store path to it
<podiki[m]>you'll see something similar in package definitions, to write a full path in a package so it knows where to find something (you'll see it with string-append to construct that path from the package /gnu/store/...)
<podiki[m]>since everything is in /gnu/store and linked, so often in guix you need that full path
<podiki[m]>at least I can say you shouldn't have shadow but the actual package that has the bin you want
<podiki[m]>as for string vs file-append and the internals...only guesses
<opalvaults[m]>yeah I'm gonna do that for sure. I was under the impression that this "bit" aka shadow needed to be somehow appended to "/bin/swaylock" in order to authenticate
<opalvaults[m]>Maybe i'm too used to Selinux, not that it's better. It's just easier to know what to look for ( sometimes ).
<opalvaults[m]>For instance if I need a docker container to mount a volume onto a root directory, SELinux won't allow it until I've set a specific filesystem label to the directory and deemed that "the only thing you're allowed to touch".
<opalvaults[m]>If we're just appending/prepending strings/declarations to predefined arrays/vecs/keywords or whatever, seems like this is a bit out of the way?
<podiki[m]>SELinux is another in the long list I know nothing about :)
<robin>hum, xpra seems to have broken recently, can't start an x server ('xpra start :$N' fails immediately). probably a missing input or something, i'll have to fix it as that's how i magnify non-gtk/qt apps on a 4k screen
<robin>Xephyr + xpra attach --desktop-scaling=... should do the trick for tonight (or xrandr under Xephyr, maybe)
<robin>(given that my goal is just playing a round of wesnoth before bed :p)
<robin>hm, xvfb doesn't cut it (or xpra is quite badly broken), let's see how long it takes to package xephyr
<robin>(bonus: a few packages seem to have check phases disabled because xephyr and xnest are presently unpackaged)
<robin>...of course it turns out xephyr, though not xnest, are packaged as part of xorg-server (just not in my profile or the package description), even easier
<robin>(no, xephyr+xpra doesn't work, why would it?)
<robin>i'm quite puzzled as to what's causing this error, as it should *only* occur if guix were misidentified as macos or windows during the build process, which i expect would cause the build to fail anyway...
<robin>guix time-machine isn't restoring the penultimate or antepenultimate versions to functionality either, somehow, so this should be fun to debug
<robin>(or maybe i'm misusing time-machine somehow, i did only start trying it a few weeks ago investigating a guile-emacs build bug)
<jpoiret>robin: how are you using `guix time-machine`?
<jpoiret>if you want to restore an older guix version, better use `guix pull --commit=<SHA> --allow-downgrades`
<jpoiret>or `guix pull --switch-generation` if you still have an older one
<jpoiret>which is likely since no one remembers to clean up old guix generations (me included, as I've just realized)
<vldn[m]>just sitting there and waiting for the reconfigure
<abrenon>so yes, substitutes are about "how" you build your package, so they're relevant to the daemon, but channels are about "what" you build, from which "book" you take the recipe so they're relevant to the client
<vldn[m]>or maybe just installing it again because it would be faster :D
<abrenon>gnoo: it can always be changed later: the installer image is just a live CD running guix in order to provide access to the guix command-line tool, what it contains has no influence on what will or will not be installed in the process
<gnoo>thanks, i'm putting that on my usb right now, any thing i should expect? i heard there is an installer?
<abrenon>but I think getting dbus rather depends on the desktop environment you use than on the system itself
<jpoiret>ideally, you should *never* set any env variables in bashrc
<abrenon>jpoiret: out of curiosity, how does dbus gets run on the installer ? here I never configured anything but since it runs from user "gdm" I assume that service was responsible for enabling it on my system
<abrenon>I forgot to wonder how the link was enabled
<jpoiret>other example: elogind (or systemd's logind) registers org.freedesktop.login1, to which you can send commands like 'Lock', 'Shutdown', 'Suspend', etc... using dbus
<abrenon>(I only knew connman as a graphical tool, a systray thingy for network alternative to NetworkManager)
<abrenon>ok, but that wouldn't be of much use on the installer where you're root all the time, right ?
<jpoiret>that way a non-privileged user can ask for the system to suspend, as elogind has the permissions to do it. But there's a third thing in the equation there, Polkit, which checks for permissions over DBus
<jpoiret>basically, Polkit is the backend of the sudo-like graphical window that sometimes pops up
<jpoiret>it's quite a complicated beast, but it helps a lot
<jpoiret>I just managed to make it work anyway :) basically Tramp lets you edit remote files in Emacs natively, and one protocol it supports is `sudo`, so that you can edit files as another user without restarting emacs as root
<rekado>when pushing to savannah I now see a remote error: ‘remote: ImportError: No module named git_multimail’
<rekado>guix-commits is probably no longer working
<awb99>herd: exception caught while executing 'load' on service 'root'
<yewscion>jpoiret: I've used TRAMP and sudo on other OSes; What was the process to get it to work right in Guix System?
<awb99>this is the error I get when I reconfigure home.
<podiki[m]>I think python, python-3 should both give you python 3.9 currently
<podiki[m]>(guix edit python will show you the definitions and names)
<yewscion>podiki: I need to set the python version because I didn't think You could pull the version of an input (I need to set the path of the python's site packages at build time, without actually installing python in the profile, because that pathing is honored by the package I'm working on).
<yewscion>If gexps will let me pull the version number, that will avoid a lot of complexity. I'll have to read up on them.
<jpoiret>gnoo_: just saw your message. Are you starting the cow-store service prior to running that?
<podiki[m]>if the version is available, most packages will just have the latest
<podiki[m]>but ones like python have a few (like python-2)
<podiki[m]>so if you need a different version of an input, you'll need to make a package for it or update the current one; this can be very simple with inherit
<jpoiret>yewscion: inputs of a package won't be installed to the profile
<thorwil>hi! hope santa has been nice to everyone.
<thorwil>3 gx lv2 plugins fail to build in the same way. gx-saturator-lv2-0-3, gx-slow-gear-lv2-0-3, gx-vbass-preamp-lv2-0-2
<yewscion>Basically, I need `beets` to point to the plugin package `beets-bandcamp` in the store, but because `beets-bandcamp` is installed after `beets` it isn't being added to the wrapper for `beets`.
<yewscion>podiki: The closest I've found so far are `ansible` and `gajim` , which both define `PYTHONPATH` in a hardcoded way. I wanted to avoid that, because python will update eventually and break the package.
<yewscion>jpoiret: I haven't; Is that better than having `beets` set `PYTHONPATH` ? If it will make it into the wrapper, that's all I really need.
<podiki[m]>yewscion: gotcha. yeah, maybe a new env variable is the cleanest? like I said, will need to tackle this for rofi since I have a plugin package I wanted to submit
<jpoiret>gnoo_: then it's pretty weird that it would re-download everything
<jpoiret>yes, I think a new search-path is the cleanest way to do it
<podiki[m]>beets doesn't have any other options like a configure setting or other places it looks by default? (like share/ or something)
<yewscion>podiki and jpoiret: That makes sense, and sounds like the way forward. Is there documentation, or can You provide an example of a package that does this? Unfortunately, this was the first Guix issue I've tried to solve, and I am still learning the basics.
<jpoiret>unfortunately, search paths aren't really documented. I'm looking for a simple example
<yewscion>podiki: Not that I'm aware of, though I'll check the docs
<podiki[m]>sounds like jpoiret had an example, more generally you can look at wrap-program examples
<podiki[m]>wrap-program for setting that env variable before launching beets, if that is needed
<podiki[m]>search-paths are used sporadically, the one I know a little of is from xdg-desktop-portal packages
<podiki[m]>e.g. guix edit xdg-desktop-portal to see an example of a package setting it
<roptat>compiling a lexer and a parser with flex and bison, I get this error: error: unknown type name 'YYLTYPE' when building the generated lexer. I can see bison defines YYLTYPE, but only in the C file, not in the header file. How can I fix this?
<Kabouik>Also one side question, how do you make bash scripts find bash without editing the top "#!/bin/bash" in each script? I made a symlink from /run/current-system/profile/bin/bash to /bin/bash but I don't know if that's the right way, I'm new to the guix file system paradigm.
<jpoiret>you shouldn't ever have to add symlinks to anywhere else manually, everything should be taken care of by your config.scm file. The best way would be to have `#!/usr/bin/env bash` as the shebang line (i think that's the recommended one anyway in other distros too)
<jpoiret>good old sed can do the trick pretty easily I reckon
<Kabouik>Right, maybe I faced this issue because the first script I used didn't use the recommended shebang. You're right, it should not be #!/bin/bash in the first place
<jpoiret>as to the system.scm file, it looks good to me
<jpoiret>I personally have my system.scm file root-owned and read only, just in case
<jpoiret>since it can do whatever it wants to your system (it is a guile program that'll be run as root)
<Kabouik>Thanks. I'm not sure how to make Guix take the changes in ssytem.scm into account though.
<Kabouik>Mine is in ~/.config/guix/system.scm, but making it owned by root seems like a good idea indeed
<gnoo_>/gnu/.../grub/i386-pc/modinfo.sh doesn't exists. Please specify --target or --directory
<yewscion>If I'm rewrapping an executable with an environment variable, is it correct for the resulting wrapped binary to have multiple definitions for the same variable? It works, but it looks sloppy.
<Kabouik>Seems openssh still doesn't use my custom ssh port after system reconfigure
<gnoo_>Above it is: grub-install --boot directory /mnt/boot --bootloader-id=Guix --efi-directory /mnt/boot/efi exited with status 1;
<Kabouik>I can try but the manual says the default is 22 while it does say 'something for other options
<Kabouik>I'll try. Anyway I realyze I also need to specify other defaults for ssh_config and ont only sshd_config, because I want the machine to use the custom port when it connects to other ssh servers
<gnoo_>I did guix system init and it didn't fix itself so... Anyone know how to install grub manually? Or maybe fix that error?
<jpoiret>does /sys/firmware/efi/ exist on your system?
<jpoiret>if not, you're not booted through the UEFI firmware
<mekeor>Kabouik: i think you should make sure that the reconfiguration procedes successfully and that the service-restart procedes successfully. also you might check the logs of the service and the generated sshd-config file.
<[[>My /var/guix/db/db.sqlite-wal is corrupted. How can I fix it? Is it safe to just delete it?
<Kabouik>They did look like they succeeded and I manually restarted with `sudo herd restart sshd`, but maybe I missed something and I will try again mekeor. From the manual, however, it is not clear to me how to specify ssh default settings (not sshd). Like if I want to connect from my Guix system to a server using port 123, I would do `ssh -p 123`, but if I want to use eternalterminal, I need the port to be set tod efault in ssh since eternalterminal uses
<mekeor>Kabouik: you can edit ~/.ssh/config to specify ssh-config for your user.
<Kabouik>Ok, so that part (client ssh) is not to be set in Guix scm file, I see
<Kabouik>Thanks. I'll redo the system reconfigure and check if I see errors to understand why connecting to my Guix machine is still done through the port 22 though.
<mekeor>Kabouik: i'm not sure if you can use "guix home" to create that file. i think, you can. (but you won't write it in scheme, afaik.)
<gnoo_>If I use grub-bootloader with (target "/dev/sda") then it says cannot build derivation /gnu/.../..-system.drv : 1 dependencies cannot be build
<Kabouik>What do you mean by "guix home" mekeor? In general, but that's because I'm totally new to Guix system, it's not straightforward to me what should or shouldn't (and can or cannot) be set in the scheme file.
<mekeor>Kabouik: guix is a package manager. you can install packages etc. guix is also a system declaration system. you can declare services and an operating system and apply that declaration. and just recently, guix -- as per "guix home" -- gained support for "supports declarative configuration of “home environments”". guix-home can make sure that you, as a user, have specific files (in your home-directory), or that
<mekeor>services are running. (because shepherd also supports user-services.)
<mekeor>Kabouik: personally, i didn't try guix-home yet because guix lacks a compatibility between system- and user-services. i don't like that.
<Kabouik>I installed Guix System. I knew Guix was also the package manager (also available on other distros) but I had never heard of guix-home
<mekeor>Kabouik: i didn't want to mansplain, i just wanted to list all general features of guix, i know of. :D sorry (:
*mekeor sees the beta-warning in the section about guix-home in the guix-manual :D
<Kabouik>No problem at all mekeor, I'm opening tabs for further reads :p
<\a>How can I recover from a missing /var/guix/db/db.sqlite-wal? It got corrupted so I deleted it. guix pull fails with guix pull: error: Git error: object not found - no match for id (9f6532c77d35603f5e5d190616e0c6b1740e82bd)
<mekeor>dayum, you should have moved it away, at least :D
<Kabouik>Client side is fixed using ~/.ssh/config mekeor, but that part was easy because it looks like what I was used to before Guix/Guile/schemes
<\a>cp failed with Input/Output error, but I did do cat /var/guix/db/db.sqlite-wal > ~/db.sqlite-wal to recover part of it first.
<GNUtoo>I've that: "GC Warning: Failed to expand heap by 8388608 bytes" and then "GC Warning: Failed to expand heap by 65536 bytes" and then "GC Warning: Out of Memory! Heap size: 2616 MiB. Returning NULL!" and then "Warning: Unwind-only out of memory exception; skipping pre-unwind handler." and then the build kind of hangs
<GNUtoo>Is there some limit on the amount of memory per process on i686?
<Kabouik>What is the recommended workflow for rust applicaitions distributed through cargo? I tried installing cargo with guix but then `cargo install` seem to fail on the software I tried. Should I use rustup to install cargo?
<Kabouik>Same question with pip3, not sure how to install it on Guix System, I see no relevant package in Guix.
<mekeor>Kabouik: i think you gotta package the crate for guix
<mekeor>Kabouik: there is also `guix import crate …` for this purpose. see manual-chapter 9.5
<opalvaults[m]>or should I just use the emacs-vterm or some such package and that will pull in the necessary packages? I've been using straight.el but I suppose there's no time like the present to switch on over to Guix :P
<lfam>Many Guix packages set the make flag "CC=gcc"
<lfam>That's because GCC doesn't provide a binary named "cc"
<mekeor[m]>lilyp: "guix shell rust-foo" creates a shell where rust-foo seems installed. that's what i want.
<lilyp>yes, but even if rust had an envvar for rust crates (it doesn't as far as Guix is concerned), running that shell would not modify it
<karrq>hey I just made a manifest with some dependencies for a project but when running it seems to lack gcc-subs32 header. I tried searching and it's because I'm lacking some multilib headers (namely gcc-toolchain for i686-linux) but I don't know how to write the manifest to specify that
<mekeor[m]>karrq: i have a very old manifest. so i might not be up-to-date. but i have "gcc-toolchain@6" in there. does that help?
<karrq>that looks like the version of the package, but the system :(
<karrq>hmm I can use `--export-manifest` from an existing profile. maybe I can start with the manifest I have, install the different system version for gcc-toolchain, and export
<podiki[m]>not sure, but you may need to specify a (simple) package variant where you set system so that you get the one you want
<mekeor[m]>i wonder if `guix shell -D -m manifest.scm` does what i think it does
<podiki[m]>or actually use --system (not sure in a manifest how that would work)
<karrq>sorry this is actually my first time using manifest in guix, or really using guix a bit more than reading about it... so "making a simple package variant" I don't know how to start actually
<karrq>I tried `guix shell -m manifest.scm -s i686-linux` but that didn't do anything actually
<mekeor[m]>lilyp: am i wrong that "guix shell rust-foo" creates a shell where rust-foo seems to be installed?
<lilyp>you're not wrong in that it creates a profile containing rust-foo and loads that profile, but for one, said profile does not contain rust or cargo and for another it does not set any environment variables (as far as I'm aware)
<mekeor[m]>lilyp: well, i have rust and cargo installed globally. so that's fine for me in this certain case. but i wonder how cargo/rustc finds the rust-foo package when i run `cargo build` inside a directory which depends on rust-foo (while being inside said shell).
<nckx>Everyone has opinions and (often valid) arguments about whether to prefer url-fetch, git tags, git commits, …, but there should be a clear standard that everyone follows, whether or not they agree.
<jpoiret>alacritty ran fine when i tested it i think, although I just switched to Kitty
<Kolev>jpoiret: Alacritty and Kitty have GPU issues on the Libreboot laptops.
<Kolev>There was an env. var. that let me run it, but I don't remember what I ran, and it's not in my Bash hist.
<nckx>opalvaults[m]: I'm not very familiar with elisp. Are you saying that dynamic scoping means that you're able to refer to a variable (or field, if there's such a thing) before it's defined? I thought it was something different.
<opalvaults[m]>nckx: I ripped that package definition from another package above it, which must have had (home-page.. as an expression above (url home-page). However I tried to consolidate the information so that all arbitrary discriptions were at the bottom
<nckx>opalvaults[m]: I also prefer simply ‘duplicating’ (whether it's really duplication is a matter of taste) both URLs here.
<nckx>It's not super-pleasant if it's just text that could have been multiple ‘real’ lines, and then there are the geniuses that ping you at the end of the text hidden behind the link, but when used as a pastebing substitute it makes sense.
<nckx>Just use 'em the same way. Don't write a prose letter to paste.debian.net and post it here.
<nckx>opalvaults[m]: It's not clear to me what your objection is to the above snippet, but perhaps that's been discussed to death above and we shouldn't rehash it. I'll read the backlog if I have time.
<opalvaults[m]>so guix repl gets me into what I assume is a guile/geiser repl. Why is it that guix can't access something like "describe-function" can in Emacs? Is Guix not as "alive", in that sense?
<opalvaults[m]>nckx: I have no objection to the above snippet. My objections were to the way a user must implement mutation to that in their configuration files. It's very verbose, non-intuitive, etc. However yes, I think it's been discussed to death. Feel free to PM me if you want to talk about it further :)
<jpoiret>sneek, later tell mothacehe: do you think we could add a "Paste to paste.debian.net" link for the backtraces in the installer? I was thinking we could also have the same for syslog
<jpoiret>nckx: I don't think it is, Debian does the same from what I gather
<nckx>Well, it is their pastebin, but point taken 😉 Probably fine.
<opalvaults[m]>nckx: That's quite an interesting take to make a lambda function that allows for easier consing of multiple programs. I was actually trying to make that work this morning. You might add that example along with lfam's example (which they've already done a PR for) to the Setuid manual page. The one that finally worked was https://paste.debian.net/plain/1224961.
<opalvaults[m]>Well to be frank, a lot of the behavior of these configuration declarations can be very unintuitive. I come from Puppet/Ansible and automation. I don't think I ever would have figured out that I'd "need" to modify desktopservices and remove gdm-service, etc.
<opalvaults[m]>Sometimes the cargo cult gets me from point A->B I suppose. ;)
<jpoiret>opalvaults[m]: well, %desktop-services contain a bunch of things, so you want to modify some services that are included in it, hence the modify-services syntax