diff --git a/home-manager.nix b/home-manager.nix index d59ec1f..40ec702 100644 --- a/home-manager.nix +++ b/home-manager.nix @@ -1,6 +1,8 @@ { config, pkgs, lib, ... }: let profile = import ./profile.nix; + home-directory = "/home/${profile.username}"; + ssh-filename = "${home-directory}/.ssh/id_ed25519"; in { @@ -37,4 +39,22 @@ in }; }; }; + + systemd.services.generate-ssh-key = { + description = "Generate SSH key if missing"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + serviceConfig = { + Type = "oneshot"; + User = user; + }; + + script = '' + if [ ! -f ${ssh-filename} ]; then + mkdir -p ${home-directory}/.ssh + chmod 700 ${home-directory}/.ssh + ${pkgs.openssh}/bin/ssh-keygen -t ed25519 -N "" -f ${ssh-filename} + fi + ''; + }; }