56 lines
1.2 KiB
Nix
56 lines
1.2 KiB
Nix
{
|
|
user ? throw "user argument is required",
|
|
home ? throw "home argument is required",
|
|
rootless ? true,
|
|
}:
|
|
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
lib.mkMerge [
|
|
{
|
|
virtualisation.docker.rootless = {
|
|
enable = rootless;
|
|
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 ];
|
|
|
|
sessionVariables = {
|
|
DOCKER_CONFIG = "${home}/.config/docker";
|
|
};
|
|
};
|
|
}
|
|
(lib.mkIf rootless {
|
|
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 (!rootless) {
|
|
users.users.${user}.extraGroups = [ "docker" ];
|
|
})
|
|
]
|