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! > > I'm pretty sure that the actual bug also exists, just not sure > > whether > > that's on your config or on shepherd. Using TTY1 for graphical > > stuff > > is also somewhat rare in Guix land, I presume. (Or rather, I can't > > think of it as anything but a container for debug output spam :D) > > > > As for getting this to work only on TTY1, you do get the config > > object, > > so you can do stuff like > > (if (is-tty1? config) (inherit+autologin config) config) > > Note of course, that is-tty1? is not a procedure that's ready-made, > > but > > one that you'd need to build from primitives such as record > > accessors. > > > > 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.
Try the following: #+BEGIN_SRC scheme (define (auto-login-to-tty tty user) ;; TODO: you might want to implement this as match-lambda instead (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 > #+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. > (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). > #+END_SRC Regards, Leo