mirror of
https://github.com/LnL7/nix-darwin.git
synced 2025-03-06 16:57:08 +00:00
33 lines
1,018 B
Nix
33 lines
1,018 B
Nix
{ config, lib, ... }:
|
|
|
|
let
|
|
cfg = config.services.openssh;
|
|
in
|
|
{
|
|
options = {
|
|
services.openssh.enable = lib.mkOption {
|
|
type = lib.types.nullOr lib.types.bool;
|
|
default = null;
|
|
description = ''
|
|
Whether to enable Apple's built-in OpenSSH server.
|
|
|
|
The default is null which means let macOS manage the OpenSSH server.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = {
|
|
# We don't use `systemsetup -setremotelogin` as it requires Full Disk Access
|
|
system.activationScripts.launchd.text = lib.mkIf (cfg.enable != null) (if cfg.enable then ''
|
|
if [[ "$(systemsetup -getremotelogin | sed 's/Remote Login: //')" == "Off" ]]; then
|
|
launchctl enable system/com.openssh.sshd
|
|
launchctl bootstrap system /System/Library/LaunchDaemons/ssh.plist
|
|
fi
|
|
'' else ''
|
|
if [[ "$(systemsetup -getremotelogin | sed 's/Remote Login: //')" == "On" ]]; then
|
|
launchctl bootout system/com.openssh.sshd
|
|
launchctl disable system/com.openssh.sshd
|
|
fi
|
|
'');
|
|
};
|
|
}
|