Nächste: , Nach oben: Persönliche Dienste   [Inhalt][Index]


13.3.1 Essenzielle Persönliche Dienste

Ein paar grundlegende Persönliche Dienste sind auch in (gnu services) definiert; sie sind in erster Linie zur internen Nutzung und für die Erstellung der Persönlichen Umgebung gedacht, aber manche sind auch für Endanwender interessant.

Scheme-Variable: home-environment-variables-service-type

Der Dienst mit diesem Diensttyp wird von jeder Persönlichen Umgebung automatisch instanziiert; so sind die Vorgabeeinstellungen. Sie müssen ihn also nicht definieren, aber vielleicht möchten Sie Ihn erweitern mit einer Liste von Paaren zum Festlegen von Umgebungsvariablen (englisch „Environment Variables“).

(list ("ENV_VAR1" . "Wert1")
      ("ENV_VAR2" . "Wert2"))

Es ist am einfachsten, ihn zu erweitern, ohne einen neuen Dienst zu definieren, nämlich indem Sie das simple-service-Helferlein aus dem Modul (gnu services) einsetzen.

(simple-service 'einige-hilfreiche-umgebungsvariable-service
		home-environment-variables-service-type
		`(("LESSHISTFILE" . "$XDG_CACHE_HOME/.lesshst")
                  ("SHELL" . ,(file-append zsh "/bin/zsh"))
                  ("USELESS_VAR" . #f)
                  ("_JAVA_AWT_WM_NONREPARENTING" . #t)))

Wenn Sie einen solchen Dienst in die Definition Ihrer Persönlichen Umgebung aufnehmen, fügt das folgenden Inhalt in Ihr setup-environment-Skript ein (das von Ihrer Login-Shell gesourcet werden dürfte):

export LESSHISTFILE=$XDG_CACHE_HOME/.lesshst
export SHELL=/gnu/store/2hsg15n644f0glrcbkb1kqknmmqdar03-zsh-5.8/bin/zsh
export _JAVA_AWT_WM_NONREPARENTING

Anmerkung: Achten Sie darauf, dass das Modul (gnu packages shells) mit use-modules oder Ähnlichem importiert wird, denn durch den (gnu packages shells)-Namensraum wird die Definition des zsh-Pakets verfügbar gemacht, auf die obiges Beispiel Bezug nimmt.

Wir verwenden hier eine assoziative Liste (siehe Association Lists in Referenzhandbuch von GNU Guile). Das ist eine Datenstruktur aus Schlüssel-Wert-Paaren und für home-environment-variables-service-type ist der Schlüssel immer eine Zeichenkette und der Wert entweder eine Zeichenkette, ein G-Ausdruck für Zeichenketten (siehe G-Ausdrücke), ein dateiartiges Objekt (siehe dateiartige Objekte) oder ein Boolescher Ausdruck. Im Fall von G-Ausdrücken wird die Variable auf den Wert des G-Ausdrucks festgelegt, bei dateiartigen Objekten auf den Pfad der Datei im Store (siehe Der Store), bei #t wird die Variable ohne Wert exportiert und bei #f wird sie ganz weggelassen.

Scheme-Variable: home-profile-service-type

Der Dienst dieses Typs wird durch jede Persönliche Umgebung automatisch instanziiert. Sie müssen ihn nicht erst definieren. Vielleicht wollen Sie ihn aber um eine Liste von Paketen erweitern, wenn Sie weitere Pakete in Ihr Profil installieren wollen. Wenn andere Dienste Programme für den Nutzer verfügbar machen müssen, erweitern diese dazu auch diesen Diensttyp.

Als Wert der Erweiterung muss eine Liste von Paketen angegeben werden:

(list htop vim emacs)

Hier können Sie den gleichen Ansatz wie bei simple-service (siehe simple-service) für home-environment-variables-service-type fahren. Achten Sie darauf, die Module mit den angegebenen Paketen über etwas wie use-modules zu importieren. Um ein Paket oder Informationen über das es enthaltende Modul zu finden, hilft Ihnen guix search (siehe Aufruf von guix package). Alternativ können Sie specification->package einsetzen, um das Paketverbundsobjekt anhand einer Zeichenkette zu spezifizieren; dann brauchen Sie auch das zugehörige Modul nicht zu laden.

Es gibt noch mehr essenzielle Dienste, von denen wir aber nicht erwarten, dass Nutzer sie erweitern.

Scheme-Variable: home-service-type

Die Wurzel des gerichteten azyklischen Graphen aus Persönlichen Diensten. Damit wird ein Verzeichnis erzeugt, auf das später die symbolische Verknüpfung ~/.guix-home verweist und das Konfigurationsdateien, das Profil mit Binärdateien und Bibliotheken sowie ein paar notwendige Skripte enthält, die die Dinge zusammenhalten.

Scheme-Variable: home-run-on-first-login-service-type

Mit dem Dienst dieses Diensttyps wird ein Guile-Skript erzeugt, das von der Login-Shell ausgeführt werden soll. Es wird dabei nur dann ausgeführt, wenn eine besondere Signaldatei in XDG_RUNTIME_DIR nicht vorgefunden wird, wodurch das Skript nicht unnötig ausgeführt wird, wenn mehrere Login-Shells geöffnet werden.

Man kann den Diensttyp mit einem G-Ausdruck erweitern. Allerdings sollten Nutzer diesen Dienst nicht dazu gebrauchen, Anwendungen automatisch zu starten, denn das macht man besser über Erweiterungen des home-shepherd-service-type durch einen Shepherd-Dienst (siehe Shepherd-Dienste) oder über eine Erweiterung der von der Shell beim Start geladenen Datei um den benötigten Befehl und mittels des für diese Art Shell geeigneten Diensttyps.

Scheme-Variable: home-activation-service-type

Mit dem Dienst dieses Diensttyps wird ein Guile-Skript erzeugt, das bei jedem Aufruf von guix home reconfigure und jeder anderen Aktion ausgeführt wird. Damit wird die Persönliche Umgebung aktiviert.


Nächste: , Nach oben: Persönliche Dienste   [Inhalt][Index]