installer: use soft-serve keygen lib
diff --git a/core/installer/keys.go b/core/installer/keys.go
index 695176f..d3dd1d7 100644
--- a/core/installer/keys.go
+++ b/core/installer/keys.go
@@ -1,40 +1,9 @@
 package installer
 
 import (
-	"crypto/ed25519"
-	"crypto/rand"
-	"crypto/x509"
-	"encoding/pem"
-
-	"golang.org/x/crypto/ssh"
+	"github.com/charmbracelet/keygen"
 )
 
-type KeyPair struct {
-	Public  string
-	Private string
-}
-
-func NewSSHKeyPair() (KeyPair, error) {
-	pub, priv, err := ed25519.GenerateKey(rand.Reader)
-	if err != nil {
-		return KeyPair{}, err
-	}
-	privEnc, err := x509.MarshalPKCS8PrivateKey(priv)
-	if err != nil {
-		return KeyPair{}, err
-	}
-	privPem := pem.EncodeToMemory(
-		&pem.Block{
-			Type:  "PRIVATE KEY",
-			Bytes: privEnc,
-		},
-	)
-	pubKey, err := ssh.NewPublicKey(pub)
-	if err != nil {
-		return KeyPair{}, err
-	}
-	return KeyPair{
-		Public:  string(ssh.MarshalAuthorizedKey(pubKey)),
-		Private: string(privPem),
-	}, nil
+func NewSSHKeyPair(path string) (*keygen.KeyPair, error) {
+	return keygen.New(path, keygen.WithKeyType(keygen.Ed25519))
 }