This commit is contained in:
2026-05-30 19:03:33 +09:00
parent f5ecef894d
commit 5f1cfc5275
155 changed files with 4168 additions and 300 deletions
+43
View File
@@ -0,0 +1,43 @@
{
lib,
config,
...
}:
let
cfg = config.my.applications.ssh;
in
{
imports = [
./system.nix
./home.nix
];
options.my.applications.ssh = {
enable = lib.mkEnableOption "OpenSSH client";
system.enable = lib.mkEnableOption "SSH system configuration";
homeManager.enable = lib.mkEnableOption "SSH home-manager configuration";
defaultIdentityFile = lib.mkOption {
type = lib.types.str;
default = "~/.ssh/id_ed25519";
description = "Default SSH identity file";
};
addKeysToAgent = lib.mkOption {
type = lib.types.str;
default = "yes";
description = "Add keys to SSH agent";
};
matchBlocks = lib.mkOption {
type = lib.types.attrs;
default = { };
description = "SSH match blocks";
};
};
config = lib.mkIf cfg.enable {
my.applications.ssh.system.enable = lib.mkDefault true;
my.applications.ssh.homeManager.enable = lib.mkDefault true;
};
}
+37
View File
@@ -0,0 +1,37 @@
{
pkgs,
lib,
config,
...
}:
let
cfg = config.my.applications.ssh;
hmCfg = config.my.applications.ssh.homeManager;
in
{
options.my.applications.ssh.homeManager = {
enable = lib.mkEnableOption "SSH home-manager configuration";
};
config.home-manager.sharedModules = [
{
config = lib.mkIf hmCfg.enable {
home.packages = [
pkgs.openssh
];
programs.ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = cfg.matchBlocks // {
"*" = {
identityFile = cfg.defaultIdentityFile;
extraOptions.AddKeysToAgent = cfg.addKeysToAgent;
};
};
};
};
}
];
}
+20
View File
@@ -0,0 +1,20 @@
{
pkgs,
lib,
config,
...
}:
let
cfg = config.my.applications.ssh.system;
in
{
options.my.applications.ssh.system = {
enable = lib.mkEnableOption "SSH system configuration";
};
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
openssh # OpenSSH client and server
];
};
}