{ user ? throw "user argument is required", home ? throw "home argument is required", }: { config, lib, pkgs, ... }: { virtualisation.docker.rootless = { enable = true; setSocketVariable = true; enableOnBoot = false; storageDriver = "btrfs"; daemon.settings = { experimental = true; ipv6 = true; fixed-cidr-v6 = "fd00::/80"; }; autoPrune = { enable = true; flags = [ "--all" ]; }; }; home-manager.users.${user}.home.packages = with pkgs; [ docker-compose ]; } // lib.mkIf config.virtualisation.docker.rootless.enable { environment.persistence."/persist"."${home}/.local/share/docker" = { }; systemd.user = { services.docker.after = [ config.environment.persistence."/persist"."${home}/.local/share/docker".mount ]; sockets.docker.after = [ config.environment.persistence."/persist"."${home}/.local/share/docker".mount ]; }; } // lib.mkIf (!config.virtualisation.docker.rootless.enable) { users.users.${user}.extraGroups = [ "docker" ]; }