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. > >> #+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! > >> (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? >> #+END_SRC > Regards, > Leo > -- Joshua Branson (joshuaBPMan in #guix) Sent from Emacs and Gnus https://gnucode.me https://video.hardlimit.com/accounts/joshua_branson/video-channels https://propernaming.org "You can have whatever you want, as long as you help enough other people get what they want." - Zig Ziglar