vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / virtualisation / podman / network-socket.nix
blob4a6f05e9a2f20bdd106caa7ca60c3cee14c77a31
1 { config, lib, pkg, ... }:
2 let
3   inherit (lib)
4     mkOption
5     types
6     ;
8   cfg = config.virtualisation.podman.networkSocket;
12   imports = [
13     ./network-socket-ghostunnel.nix
14   ];
16   options.virtualisation.podman.networkSocket = {
17     enable = mkOption {
18       type = types.bool;
19       default = false;
20       description = ''
21         Make the Podman and Docker compatibility API available over the network
22         with TLS client certificate authentication.
24         This allows Docker clients to connect with the equivalents of the Docker
25         CLI `-H` and `--tls*` family of options.
27         For certificate setup, see https://docs.docker.com/engine/security/protect-access/
29         This option is independent of [](#opt-virtualisation.podman.dockerSocket.enable).
30       '';
31     };
33     server = mkOption {
34       type = types.enum [ ];
35       description = ''
36         Choice of TLS proxy server.
37       '';
38       example = "ghostunnel";
39     };
41     openFirewall = mkOption {
42       type = types.bool;
43       default = false;
44       description = ''
45         Whether to open the port in the firewall.
46       '';
47     };
49     tls.cacert = mkOption {
50       type = types.path;
51       description = ''
52         Path to CA certificate to use for client authentication.
53       '';
54     };
56     tls.cert = mkOption {
57       type = types.path;
58       description = ''
59         Path to certificate describing the server.
60       '';
61     };
63     tls.key = mkOption {
64       type = types.path;
65       description = ''
66         Path to the private key corresponding to the server certificate.
68         Use a string for this setting. Otherwise it will be copied to the Nix
69         store first, where it is readable by any system process.
70       '';
71     };
73     port = mkOption {
74       type = types.port;
75       default = 2376;
76       description = ''
77         TCP port number for receiving TLS connections.
78       '';
79     };
80     listenAddress = mkOption {
81       type = types.str;
82       default = "0.0.0.0";
83       description = ''
84         Interface address for receiving TLS connections.
85       '';
86     };
87   };
89   config = {
90     networking.firewall.allowedTCPPorts =
91       lib.optional (cfg.enable && cfg.openFirewall) cfg.port;
92   };
94   meta.maintainers = lib.teams.podman.members ++ [ lib.maintainers.roberth ];