Tengo un paquete de Nix que me gustaría agrupar en un contenedor docker.
Específicamente, quiero usar Nix como una alternativa más expresiva a un Dockerfile para tener compilaciones de imágenes más rápidas (no lineales).
Encontré documentación endockerTools.buildImage pero me gustaría tener un ejemplo de trabajo mínimo, y también me gustaría saber qué termina en el contenedor docker.
El siguiente ejemplo empaqueta (usando content contents = ) el paquete pkgs.nginx nixpkgs en un contenedor docker:
docker load --input $(nix-build -E 'with import <nixpkgs> {}; pkgs.dockerTools.buildImage { name = "nix-htop"; contents = pkgs.htop; config = { Cmd = [ "/bin/htop" ]; }; }')A continuación, puede ejecutarlo con
docker run -it nix-htopEl contenido del contenedor es bastante mínimo, una sola capa de Docker:
docker save nix-htop | tar x --to-stdout --wildcards '*/layer.tar' | tar t --exclude="*/*/*/*" ./ ./bin/ ./bin/htop ./share/ ./share/applications/ ./share/man/ ./share/pixmaps/ nix/ nix/store/ nix/store/gi5vvbjawzw1bakiksazbd50bvfmpmmc-ncurses-6.0/ nix/store/pa5nkrpd5hg5qp1dc4gmbd2vdhn1y3x2-htop-2.0.2/ nix/store/vn6fkjnfps37wa82ri4mwszwvnnan6sk-glibc-2.25/Solo htop y sus dependencias (glibc, ncurses), 26 MB en mi caso.