[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: %desktop-services #:select service alsa-service-type - unbound varia

From: Pierre Neidhardt
Subject: Re: %desktop-services #:select service alsa-service-type - unbound variable
Date: Thu, 20 Sep 2018 19:49:58 +0200
User-agent: mu4e 1.0; emacs 26.1

> But I dislike NM cause it stores wifi password as it is, but wpa_supplicant
> saves hash only.

See if
that's an acceptable solution for you.  Also note that the passwords are only
readable with root access.

> But I could not connect to network running `dhclient -v wlp2s0` so I think I 
> do
> not know how get wpa-supplicant service to use my config by default.

Make sure dhclient is not already running.  Check your processes and the

Multiple instances of dhclient / wpa_supplicant will prevent you from

Regarding wpa_supplicent, actually the Guix service does not load a config file
but rather listens to a D-Bus interface (if I'm not mistaken).  I guess you
could pass the configuration via D-Bus but I don't know how to do this.

If you really want to use wpa_supplicant manually, you can also disable the
service wpa-supplicant service and it should work.

> As I can understand guix will compile entire system with such config.scm from
> sources, cause such configuration is not presented in GuixSD servers, am I
> right?

No, it will only compile the outputs (e.g. packages) for which no substitute was
found on the server, assuming you have enabled substitutes.

Running `guix system reconfigure` will only build/install outputs if they are
missing from the store.  A config.scm involves a collection of outputs and if
they are all available already, nothing will be built.

This is why when running `guix system reconfigure` twice in a row, the second
run should not take more than a couple of seconds.

>   (services (cons* (xfce-desktop-service)
>                     (remove (lambda (service)
>                      (eq? (service-kind service) 
> network-manager-service-type))
>                     %desktop-services)

Quick explanation:

- The Lisp syntax boils down to this: `(FUNCTION ARGUMENTS...)`.  The first
  element between the parentheses is the function name, the other elements are
  all the arguments passed to that function.  Everything is an expression and
  expressions can be nested, so `(SQUARE (SQRT 4))` return 4.

- "services" takes a list of services as argument.

- To make things simpler here, you could replace "cons*" with "list".

- The arguments to "cons*" or "list" return a list, so we build a list of
services with `(list SERVICE1 SERVICE2 ...)`.

- `(xfce-desktop-service)` returns just that, the XFCE desktop service.

- The `remove` function takes two arguments: an anonymous function (i.e. a
  "lambda") and a list.  The anonymous function is a predicate: if true, then
  the element of the list is discarded.  You can look at it like a filter.  The
  lambda here is a function that takes a service and if equal to
  network-manager-service-type, then it returns true (the result of the `eq?`
  function), thus the service is discarded.

- `remove` is called on %desktop-services with a predicate that matches
  network-manager-service-type: the result is a list stripped from

Hope that helps, let me know if there is anything else to clarify.

> I tried 2 Scheme compilers: MIT-Scheme and Chicken

Note that Guix uses Guile, so that's probably the Scheme you want to use here! 

If you want to learn Scheme, there are many books out there.
If TSPL is not to your taste, consider:

- The Little Schemer: Haven't read it, but I heard it's a gentle introduction.

- Structure and Interpretation of Computer Programs: a bit more academic, but it
comes with a bunch of videos
( and it's
also available in Texinfo format -- checkout the SICP Guix package.

Hope that helps!

Pierre Neidhardt

Attachment: signature.asc
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]