From 8264c7ccb1f9566c3e17b45747dd35736c766be1 Mon Sep 17 00:00:00 2001 From: Valentin Date: Tue, 14 Oct 2025 14:34:11 +0200 Subject: Einrichtung des ersten Servers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Das System kann mit einem Befehl beim Hosting-Provider aufgesetzt werden. Es bietet zunächst nur einem SSH-Zugang für Administratoren. --- keys.nix | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 keys.nix (limited to 'keys.nix') diff --git a/keys.nix b/keys.nix new file mode 100644 index 0000000..0076788 --- /dev/null +++ b/keys.nix @@ -0,0 +1,39 @@ +{ lib, ... }: +let + inherit (lib) mkOption types; +in +{ + options.flake.keys = mkOption { + description = '' + Dateisystempfade zu öffentlichen SSH-Schlüsseln für alle Administratoren + + Kann benutzt werden um entsprechende Systemnutzer in `users.users` automatisch zu erstellen. + ''; + type = with types; attrsOf (listOf path); + default = + let + /* + Dateinamen mit öffentlichen SSH-Schlüsseln aus einem Verzeichnis mit Nutzernamen auslesen. + Format der Verzeichniseinträrge muss eines der Folgenden sein: + - Datei mit genau einem Eintrag für den jeweiligen Nutzer + - Verzeichnis mit Dateien die jeweils einen Eintrag enthalten + */ + get-key-files = + dir: + let + key-files = + username: type: + with builtins; + if type == "regular" then + [ "${dir}/${username}" ] + else + map (keyfile: "${dir}/${username}/${keyfile}") ( + attrValues (lib.filterAttrs (_: keytype: keytype == "regular") subdir) + ); + in + with builtins; + lib.mapAttrs key-files (builtins.readDir dir); + in + get-key-files ./keys; + }; +} -- cgit v1.2.3