{ pkgs, ... }: let privKey = '' -----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW QyNTUxOQAAACBIpmLtcHhECei1ls6s0kKUehjpRCP9yel/c5YCIb5DpQAAAIgAYtkzAGLZ MwAAAAtzc2gtZWQyNTUxOQAAACBIpmLtcHhECei1ls6s0kKUehjpRCP9yel/c5YCIb5DpQ AAAEDFY3M69VfnFbyE67r3l4lDcf5eht5qgNemE9xtMhRkBkimYu1weEQJ6LWWzqzSQpR6 GOlEI/3J6X9zlgIhvkOlAAAAAAECAwQF -----END OPENSSH PRIVATE KEY-----''; pubKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEimYu1weEQJ6LWWzqzSQpR6GOlEI/3J6X9zlgIhvkOl"; sshConfig = '' Host ugit HostName localhost Port 8448 User ugit IdentityFile ~/.ssh/vm IdentitiesOnly yes ''; in { imports = [ ./module.nix ]; environment.systemPackages = with pkgs; [ git ]; services.getty.autologinUser = "root"; services.openssh.enable = true; services.ugit.vm = { enable = true; authorizedKeys = [ pubKey ]; hooks = [ { name = "pre-receive"; content = '' echo "Pre-receive hook executed" ''; } ]; }; systemd.services."setup-vm" = { wantedBy = [ "multi-user.target" ]; path = with pkgs; [ git ]; serviceConfig = { Type = "oneshot"; RemainAfterExit = true; User = "root"; Group = "root"; ExecStart = let privSSH = pkgs.writeText "vm-privkey" privKey; sshConfigFile = pkgs.writeText "vm-sshconfig" sshConfig; in pkgs.writeShellScript "setup-vm-script" '' git config --global user.name "NixUser" git config --global user.email "nixuser@example.com" mkdir ~/.ssh ln -sf ${sshConfigFile} ~/.ssh/config cp ${privSSH} ~/.ssh/vm chmod 600 ~/.ssh/vm mkdir ~/repo cd ~/repo ''; }; }; }