diff --git a/home/core/docker.nix b/home/core/docker.nix index ac15581c..6593836c 100644 --- a/home/core/docker.nix +++ b/home/core/docker.nix @@ -1,8 +1,15 @@ { pkgs, ... }: { + # Dockerクライアント設定(~/.docker/config.jsonとDOCKER_CONFIG)を + # home-managerで宣言的に管理する。 + # このモジュールはパッケージを入れないのでdocker-clientは別途入れる。 + # config.jsonがNixストアへの読み取り専用リンクになるため、 + # docker loginが必要になったらsettings.credsStoreでcredential helperを宣言する。 + programs.docker-cli.enable = true; + home.packages = with pkgs; [ act - docker-client + docker-client # clientOnlyなdockerパッケージ。buildx(BuildKit)とcomposeプラグイン同梱。 docker-compose-language-service dockerfile-language-server hadolint diff --git a/nixos/native-linux/docker.nix b/nixos/native-linux/docker.nix new file mode 100644 index 00000000..bcde660e --- /dev/null +++ b/nixos/native-linux/docker.nix @@ -0,0 +1,15 @@ +{ username, ... }: +{ + # rootless Dockerを使う。 + # 常時rootで動くデーモンを避けるため。 + # podmanではなくDockerなのはBuildKitがそのまま動いてほしいから。 + # nixpkgsのdockerパッケージはbuildx(BuildKit)とcomposeプラグインを同梱している。 + virtualisation.docker.rootless = { + enable = true; + # DOCKER_HOSTをrootlessソケット(unix://$XDG_RUNTIME_DIR/docker.sock)に向ける。 + setSocketVariable = true; + }; + + # rootlessコンテナ内のuid/gidマッピングに必要なsubuid/subgidを自動割り当てする。 + users.users.${username}.autoSubUidGidRange = true; +}