Am Freitag, den 25.06.2021, 14:06 -0400 schrieb Joshua Branson: > Leo Prikler <leo.prik...@student.tugraz.at> writes: > > > Hi, > > > > Am Freitag, den 25.06.2021, 05:31 -0400 schrieb Joshua Branson: > > > Leo Prikler <leo.prik...@student.tugraz.at> writes: > > > > > > > Hi, > > > > > > > > Am Samstag, den 12.06.2021, 20:09 +0000 schrieb > > > > jbra...@dismail.de: > > > > > June 12, 2021 3:39 PM, "Leo Prikler" < > > > > > leo.prik...@student.tugraz.at> > > > > > wrote: > > > > > > > > > > > Am Samstag, den 12.06.2021, 09:26 -0400 schrieb Joshua > > > > > > Branson: > > > > > > > > > > > > > Hello! > > > > > > > > > > > > I'll tell you what, why don't we leave this "bug" open for a > > > > > week...I'll try to write > > > > > the code that does what I want, and I'll email the answer. > > > > > > > > > > Then I'll edit the manual to provide an example! > > > Well, it's been about a week. Here is my current code that > > > doesn't > > > work. > > > haha. > > > > > > #+BEGIN_SRC scheme > > > (define %my-desktop-services > > > (modify-services %desktop-services ;;end of remove services > > > (mingetty-service-type config => > > > (mingetty-configuration > > > (inherit config) > > > ;; ERROR at the NEXT LINE > > > (auto-login-to-tty-3 config) > > > )))) > > > > > > (define (auto-login-to-tty-3 config) > > > (if (string=? "3" (mingetty-configuration-tty config)) > > > '(auto-login "joshua") > > > '(auto-login #f))) > > > #+END_SRC > > > > > > It obviously doesn't work because I am treating modify-services > > > as if > > > it were a procedure. In fact, it is a macro. :) > > That's not the issue here, the issue is that you're treating > > mingetty- > > configuration as… I'm not really sure what exactly, when it is in > > fact > > a record constructor. > > Oh!!!! Light bulb! I knew that! I've made quite a few record > constructors for endlessh and my almost complete sway service: > > http://issues.guix.gnu.org/39136 > https://notabug.org/jbranso/guix-config/src/master/sway-service.scm > > > Try the following: > > > > #+BEGIN_SRC scheme > > (define (auto-login-to-tty tty user) > > ;; TODO: you might want to implement this as match-lambda instead > > I will try that! > > > (lambda (config) > > (if (string=? tty (mingetty-configuration-tty mingetty-config)) > > (mingetty-configuration > > (inherit config) > > (auto-login user)) > > config))) > > > > (define %my-desktop-services > > (modify-services %desktop-services > > > > (mingetty-service-type config => > > (auto-login- > > to-tty "3" "joshua")))) > > #+END_SRC > > > > Hmmm. Is that (define (auto-login-to-tty tty user) ...) a > closure? I > wonder why you need that lambda inside of it...Probably to pass the > config variable into the function...hmmm. I still don't understand > why > it is necessary. I'll think about that a bit later on. Yes, I've made it a bit more generic, so that you could also add let's say (auto-login-to-tty "4" "nsa-backdoor") if you wanted ;)
You need a single-argument procedure in the config => proc part. So you generate a closure to do everything else. You could do the same with let-bindings inside the scope of modify-services, but I found it more useful to extract that. > > > #+BEGIN_SRC scheme > > > (define (auto-login-to-tty-3 mingetty-service) > > > (if (string=? "3" (mingetty-configuration-tty config)) > > > '(mingetty-configuration > > > (auto-login "joshua") > > > (tty "3")) > > > mingetty-service)) > > Don't quote mingetty-configuration et al. They're first-class > > syntax, > > not just weird lists. > > Yeah that's true. I do actually like (guix records)! I feel like > that file should be upstreamed into guile! Haha, yes, guixy records are a charm, but they're subject to quicker iteration than guile's. > > > (define (my-modify-%desktop-services-to-auto-login-on-tty-3 > > > %desktop- > > > services) > > > ;; to be written > > > ;; though I think fold, or map, may be useful functions here. > > > > > > ;;somehow I will use this function... > > > (auto-login-to-tty-3 mingetty-service) > > > ) > > > > > > (define %my-desktop-services > > > (my-modify-%desktop-services-to-auto-login-on-tty-3 > > > %desktop- > > > services)) > > I don't think you need to implement modify-services on your own, > > rather > > just use the existing thing in the "correct" way – i.e. adhering to > > the > > expectations given by the already existing procedure (or macro). > > Thanks again! The current code doesn't quite work for me yet. I'll > try using match-lambda to define it. I'll post again when I have a > free moment. When i get it working, I'll send a patch to the manual > via guix-patches and CC you. Is that ok? Or would you rather that > documentation be in the cookbook? Did I make a mistake or does it do the job only in a somewhat inelegant way? I'm perfectly fine with the latter as I'm not the one using the code :P I think the cookbook is a better destination for stuff like this. Regards, Leo