22 Commits

Author SHA1 Message Date
Ramses
16663cb138 ssh: add settings.<name>.header option
The RFC 42 settings option derives the Host/Match line from the
attribute name. That makes it impossible to express headers that carry
Nix string context (e.g. Match exec referring to a store path), and
forces long computed patterns into attribute names where a stable
logical name would be nicer for dag ordering.

Add an explicit `header` option on each block that defaults to the
attribute name (with the existing Host/Match prefix detection), and
have the legacy matchBlocks shim populate it instead of the
__hmSshBlockHeader internal.
2026-05-19 09:50:05 -05:00
Austin Horstman
936ae1b1eb ssh: add RFC 42 settings option
Add programs.ssh.settings as a freeform DAG for OpenSSH client configuration blocks. Render Host and Match blocks directly from the new settings option while preserving ordering support.

Render known ssh_config comma-list directives from Nix lists as single comma-separated lines and known space-list directives as single whitespace-separated lines. This keeps directives like KexAlgorithms, Ciphers, MACs, HostKeyAlgorithms, ProxyJump, SendEnv, GlobalKnownHostsFile, and PermitRemoteOpen from being emitted as duplicate directives where OpenSSH may only use the first value.

Migrate legacy matchBlocks into settings, keep root SSH option redirects pointed at the new option names, and hide the deprecated matchBlocks option from generated docs.

Update SSH tests, docs references, and news coverage for the new option.
2026-05-18 12:25:51 -05:00
Benedikt Rips
a93d80bcec treewide: remove unused attrs patterns 2026-04-13 22:02:40 -05:00
Oliver Geneser
2d36a6de2f ssh: add kexAlgorithms to matchBlocks
This commit adds the option to add kexAlgorithms as an matchBlock
option with updated test case.
2025-12-27 16:54:14 +01:00
Bruno BELANYI
28741978a3 programs/ssh: use 'toKeyValue' for 'extraOptions'
A first step towards refactoring the module.

Unfortunately the config is not consistent in using comma-separated
values or repeated keys for lists, since the user can always add commas
by themselves, we should default to repeated keys in the generator.
2025-12-03 09:44:29 -06:00
Aguirre Matteo
3882f88691 ssh: remove top level options 2025-08-26 17:12:13 -05:00
awwpotato
5da6eafceb treewide: remove unused code (#6985) 2025-05-07 10:03:21 -05:00
Austin Horstman
cba2f9ce95 treewide: reformat nixfmt-rfc-style
Reformat repository using new nixfmt-rfc-style.
2025-04-08 08:50:05 -07:00
Austin Horstman
439a125afe tests: remove with lib (#6511) 2025-02-21 23:20:07 -06:00
Jan Schmitt
7a69b3e738 ssh: add addKeysToAgent option 2023-12-14 00:11:45 +01:00
Naïm Favier
2d963854ae ssh: don't install a client by default (#4016)
Make use of the recently added nullable `mkPackageOption` feature
to disable installing an SSH client by default: most people should use
the client provided by their system.
2023-05-27 14:11:50 +02:00
George Macon
6702b22b98 ssh: install an ssh client
Fixes #3667
2023-05-13 16:50:10 +02:00
Gaétan Lepage
6be873663e ssh: add setEnv option (#3935) 2023-05-11 14:22:40 +02:00
Jakub Fišer
1bdbebc3f8 ssh: add generic Match support for matchBlocks (#2992)
* ssh: add generic Match support for matchBlocks

Introduce conservative support for actual `Match`
blocks in ssh config.

"Conservative" means this PR doesn'tt try to process
the `match` expression and simply uses it as a string
provided by the user.

If set, `match` has precedence over `host` meaning
if both are set, `match` is used and `host` is ignored.

* Add news entry
2022-11-27 16:15:32 +01:00
Tobias Happ
5559ef0023 ssh: add includes option (#2453) 2021-11-16 11:51:10 -07:00
Robert Helgesson
ef4370bedc tests: allow testing assertions
By default tests are expected to produce no assertion.

This also updates the existing tests to match.
2021-02-07 22:48:22 +01:00
Damien Cassou
a21c97d011 ssh: add support for ServerAliveCountMax
PR #1299
2020-06-03 23:16:43 +02:00
Robert Helgesson
022228e0aa ssh: switch type of matchBlocks to listOrDagOf
This switches the type of `matchBlocks` from `loaOf` to `listOrDagOf`.
The former has been deprecated in Nixpkgs. The latter allows
dependencies between entries to be expressed using the DAG functions.
2020-04-13 23:24:40 +02:00
Robert Helgesson
45abf3d38a Apply nixfmt on many files 2020-02-02 01:07:28 +01:00
David Wood
e8dbc35613 ssh: sockets forwards; remote and dynamic forwards
This commit adds support for forwarding paths rather than just
addresses/ports. It also adds options for specifying remote and
dynamic forwards.
2019-10-02 20:42:29 +02:00
Tobias Happ
0e871b490e ssh: add localForwards option for matchBlocks 2019-08-20 12:11:00 +02:00
Robert Helgesson
989e636d98 ssh: add some basic tests 2019-03-19 23:00:17 +01:00