Ich möchte dieses Repository nicht mehr beibehalten, also werde ich es archivieren.
nix-desktop können Sie die Linux-Desktop-Integration von NIX-Projekten definieren. Mit diesem Skript können Sie XDG -Desktop -Menüeinträge und systemd -Einheiten deklarativ mit NIX definieren und auf idempotente Weise anwenden.
Ich bin ein Benutzer von Home-Manager. Sie können eine gesamte Benutzerkonfiguration (Home) verwalten, einschließlich Programme ausführbare Dateien, Konfigurationsdateien, Systemdienste und andere Dateien. Die Konfigurationsmethode ist jedoch zentralisiert. Es ermöglicht (anscheinend) nur eine Konfiguration pro Home -Verzeichnis. Manchmal wollte ich etwas etwas dezentrales. Zum Beispiel habe ich einige private Git -Repositories, die Daten enthalten, und ich möchte Anwendungen in Bezug auf die Repositorys auf Maschinen installieren, die nur relevant sind. Ich möchte ihre Existenz vor der Öffentlichkeit verbergen, und daher sollten sie in meiner öffentlichen Konfiguration nicht erwähnt werden.
Mit Nix Flakes können Sie Pakete und Apps in Projektrepositories definieren, die bequem aussehen. Ich habe jedoch keinen Weg gefunden, solche Apps in den Linux -Desktop zu integrieren. Um sie zu starten, ohne ein Terminal zu öffnen, wollte ich Menüeinträge für diese Apps installieren, die in Projekten definiert sind. Dies ist ein Versuch, es konsequent zu implementieren. Hinweis: Dies hängt nicht von Nix -Flocken ab.
Im Gegensatz zur naiven Ad-hoc-Installation von Konfigurationsdateien mit nix-env aktualisiert nix-desktop den Systemstatus. Es benachrichtigt Updates zu Desktop -Menüeinträgen und startet das REGOAD/Aktivieren/(RE) Starten installierte Systemeinheiten (und stoppt und deaktiviert Deinstallation der Einheiten). Dies ist eine bequeme und zuverlässige Lösung für eine Reihe von Desktop -Anwendungen und -diensten.
Installieren Sie dieses Repository mit NIX:
nix-env -if .Alternativ können Sie das Programm verwenden, ohne es zu installieren, wenn Sie Nix Floaks bereits aktiviert haben:
nix run ' github:akirak/nix-desktop ' Sie können die Konfiguration definieren, indem Sie eine Datei namens desktop.nix in einem Repository erstellen. Das Folgende ist ein Beispiel:
let
pkgs = import <nixpkgs> { } ;
thisDir = builtins . toString ./. ;
in
{
name = "my-config" ;
# Run Doom Emacs inside a sandboxed nix-shell session.
xdg . menu . applications . doom-emacs = {
Name = "Doom Emacs" ;
Icon = "emacs" ;
TryExec = " ${ builtins . getEnv "HOME" } /.config/doom-runner/emacs/bin/doom" ;
Exec = " ${ pkgs . nix } /bin/nix-shell ${ builtins . toString ./. } /doom/shell.nix --command emacs" ;
StartupWMClass = "Emacs" ;
} ;
# Automatically set up an overlayfs directory in the repository.
systemd . services . overlayfs-repos = {
enable = true ;
start = true ;
restart = false ;
text = ''
[Unit]
Description=Example overlayfs service
ConditionPathIsDirectory= ${ thisDir } /repos-src
ConditionPathIsDirectory= ${ thisDir } /repos-overlay
ConditionPathIsDirectory= ${ thisDir } /.repos-work
ConditionPathIsDirectory= ${ thisDir } /repos
[Service]
Type=oneshot
ExecStart= ${ pkgs . fuse-overlayfs } /bin/fuse-overlayfs -o lowerdir= ${ thisDir } /repos-src,upperdir= ${ thisDir } /repos-overlay,workdir= ${ thisDir } /.repos-work ${ thisDir } /repos
RemainAfterExit=yes
ExecStop= ${ pkgs . fuse } /bin/fusermount -u ${ thisDir } /repos
[Install]
WantedBy=default.target
'' ;
} ;
} Die Datei exportiert ein Attributsatz und muss ein obligatorisches name enthalten, mit dem Projekte eindeutig identifiziert werden. Es wird Teil der zu erstellenden NIX -Ableitung, sodass es sich sicher sein sollte.
xdg.menu.applications.* XDG -Menüeinträge definieren. Einige Felder haben vernünftige Standardeinstellungen, aber Sie müssen Name , Icon , Exec und StartupWMClass angeben.
systemd.TYPE.* Definieren Sie Benutzer systemd Services. TYPE können services , timers und andere Plurals für die Darstellung von Einheitstypen sein, die von systemd unterstützt werden.
Es muss text enthalten, das zum Inhalt der Einheitsdatei wird.
Es unterstützt auch die folgenden optionalen Felder:
enable (bool): Aktivieren Sie das Gerät nach der Installation.start (BOOL): Starten Sie das Gerät nach der Installation, wenn es keine Installation ist.restart (bool): Wenn ein Gerät geändert wird, starten Sie das Gerät neu. Unveränderte Einheiten werden auch mit dieser Option nicht neu gestartet. Der Befehl nix-desktop enthält die folgende Zusammenfassung:
nix-desktop [install | uninstall | build] DIRoder mit Nix -Flocken:
nix run ' github:akirak/nix-desktop ' [install | uninstall | build] DIR DIR ist ein erforderliches Argument und sollte auf ein Verzeichnis eingestellt werden, das desktop.nix enthält.
Der Befehl unterstützt die folgenden Operationsmodi, die durch das optionale erste Argument bezeichnet werden sollten, das dem Verzeichnis vorbereitet wird:
install werden im Verzeichnis definierte Anwendungen installiert. Dieser Modus ist die Standardeinstellung, sodass Sie den Subcomand install und das Verzeichnis als einziges Argument angeben können.uninstall deinstallieren die Anwendungen.build ist wie install , erstellt jedoch nur die Konfiguration und installiert weder Konfigurationsdateien noch Aktualisierung des Systems.Es erkennt Konflikte mit Anwendungen, die in anderen Projekten definiert sind. Überprüfen Sie daher Fehlermeldungen.
Sie können eine Liste installierter Projekte durchsuchen:
nix-desktop list Mit --verify Flag überprüft der Befehl Listen, ob die Quellverzeichnisse vorhanden sind.
nix-desktop list --verifySie können auch alle installierten Projekte mit einem einzigen Befehl aktualisieren:
nix-desktop update