From c6a01e54af81b381695db796a43360bf6db5702f Mon Sep 17 00:00:00 2001 From: Friedrich Altheide <11352905+FriedrichAltheide@users.noreply.github.com> Date: Thu, 10 Jul 2025 22:36:53 +0200 Subject: [PATCH] docker-cli: add module (#7411) (cherry picked from commit 729c5e5465a0585b2c492a40d9308ec3ad78a296) Signed-off-by: Austin Horstman --- .github/labeler.yml | 1 + modules/programs/docker-cli.nix | 65 +++++++++++++++++++ tests/modules/programs/docker-cli/default.nix | 4 ++ .../programs/docker-cli/empty-config.nix | 18 +++++ .../programs/docker-cli/example-config.json | 9 +++ .../programs/docker-cli/example-config.nix | 37 +++++++++++ 6 files changed, 134 insertions(+) create mode 100644 modules/programs/docker-cli.nix create mode 100644 tests/modules/programs/docker-cli/default.nix create mode 100644 tests/modules/programs/docker-cli/empty-config.nix create mode 100644 tests/modules/programs/docker-cli/example-config.json create mode 100644 tests/modules/programs/docker-cli/example-config.nix diff --git a/.github/labeler.yml b/.github/labeler.yml index f25a8c52d..9791f0be5 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -163,6 +163,7 @@ - any-glob-to-any-file: - modules/services/podman-linux/**/* - modules/programs/distrobox.nix + - modules/programs/docker-cli.nix "desktop-ui": - changed-files: - any-glob-to-any-file: diff --git a/modules/programs/docker-cli.nix b/modules/programs/docker-cli.nix new file mode 100644 index 000000000..57d91fd58 --- /dev/null +++ b/modules/programs/docker-cli.nix @@ -0,0 +1,65 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + mkIf + mkEnableOption + mkOption + ; + + cfg = config.programs.docker-cli; + + jsonFormat = pkgs.formats.json { }; +in +{ + meta.maintainers = [ lib.maintainers.friedrichaltheide ]; + + options.programs.docker-cli = { + enable = mkEnableOption "management of docker client config"; + + configPath = mkOption { + type = lib.types.str; + default = ".docker/config.json"; + description = '' + Relative path to the user's home directory where the Docker CLI settings should be stored. + ''; + }; + + settings = mkOption { + type = jsonFormat.type; + default = { }; + example = '' + { + "proxies" = { + "default" = { + "httpProxy" = "http://proxy.example.org:3128"; + "httpsProxy" = "http://proxy.example.org:3128"; + "noProxy" = "localhost"; + }; + }; + ''; + description = '' + Available configuration options for the Docker CLI see: +