42 lines
995 B
Nix
42 lines
995 B
Nix
|
{ config, lib, pkgs, ... }:
|
||
|
with builtins; with lib; {
|
||
|
|
||
|
imports = [
|
||
|
(mkRenamedOptionModule [ "wsl" "docker" ] [ "wsl" "docker-desktop" ])
|
||
|
];
|
||
|
|
||
|
options.wsl.docker-desktop = with types; {
|
||
|
enable = mkEnableOption "Docker Desktop integration";
|
||
|
};
|
||
|
|
||
|
config =
|
||
|
let
|
||
|
cfg = config.wsl.docker-desktop;
|
||
|
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-user-distro proxy --docker-desktop-root ${config.wsl.automountPath}/wsl/docker-desktop
|
||
|
'';
|
||
|
wantedBy = [ "multi-user.target" ];
|
||
|
serviceConfig = {
|
||
|
Restart = "on-failure";
|
||
|
RestartSec = "30s";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
users.groups.docker.members = [
|
||
|
config.wsl.defaultUser
|
||
|
];
|
||
|
|
||
|
};
|
||
|
|
||
|
}
|