From e844679c6a0413dae78476268e191f0b4844c164 Mon Sep 17 00:00:00 2001 From: nzbr Date: Thu, 3 Feb 2022 07:49:49 +0100 Subject: [PATCH] add a module for docker-desktop support --- .envrc | 7 +++++++ configuration.nix | 4 ++++ flake.nix | 1 + modules/docker-desktop.nix | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+) create mode 100644 .envrc create mode 100644 modules/docker-desktop.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..c4f5ea4 --- /dev/null +++ b/.envrc @@ -0,0 +1,7 @@ +use_flake() { + watch_file flake.nix + watch_file flake.lock + eval "$(nix print-dev-env)" +} + +use flake diff --git a/configuration.nix b/configuration.nix index 59a962f..7fe5c53 100644 --- a/configuration.nix +++ b/configuration.nix @@ -12,6 +12,7 @@ in "${modulesPath}/profiles/minimal.nix" build-tarball + docker-desktop wsl-distro ]; @@ -20,6 +21,9 @@ in automountPath = "/mnt"; defaultUser = "nixos"; startMenuLaunchers = true; + + # Enable integration with Docker Desktop (needs to be installed) + # docker.enable = true; }; # Enable nix-flakes by default diff --git a/flake.nix b/flake.nix index 22be5b2..5638ffa 100644 --- a/flake.nix +++ b/flake.nix @@ -16,6 +16,7 @@ nixosModules = { build-tarball = import ./modules/build-tarball.nix; wsl-distro = import ./modules/wsl-distro.nix; + docker-desktop = import ./modules/docker-desktop.nix; }; nixosConfigurations.mysystem = nixpkgs.lib.nixosSystem { diff --git a/modules/docker-desktop.nix b/modules/docker-desktop.nix new file mode 100644 index 0000000..a97e4ce --- /dev/null +++ b/modules/docker-desktop.nix @@ -0,0 +1,33 @@ +{ config, lib, pkgs, ... }: +with builtins; with lib; { + + options.wsl.docker = with types; { + enable = mkEnableOption "Docker Desktop integration"; + }; + + config = + let + cfg = config.wsl.docker; + in + mkIf (config.wsl.enable && cfg.enable) { + + environment.systemPackages = with pkgs; [ + docker + docker-compose + ]; + + systemd.services.docker-desktop-proxy = { + description = "Docker Desktop proxy"; + script = '' + ${config.wsl.automountPath}/wsl/docker-desktop/docker-desktop-proxy -docker-desktop-root ${config.wsl.automountPath}/wsl/docker-desktop + ''; + wantedBy = [ "multi-user.target" ]; + }; + + users.groups.docker.members = [ + config.wsl.defaultUser + ]; + + }; + +}