docker: fix systemd unit files (#120019)

* docker: fix systemd unit files

Add missing docker.socket file and patch ExecStart in docker.service
so these units are useful on non-nixos systems using systemd.
(issue #70407)

* moved systemd units under: optionalString (stdenv.isLinux)

Changed files
+7
pkgs
applications
virtualization
docker
+7
pkgs/applications/virtualization/docker/default.nix
···
# systemd
install -Dm644 ./contrib/init/systemd/docker.service $out/etc/systemd/system/docker.service
'';
DOCKER_BUILDTAGS = []
···
'' + optionalString (stdenv.isLinux) ''
# symlink docker daemon to docker cli derivation
ln -s ${moby}/bin/dockerd $out/bin/dockerd
'' + ''
# completion (cli)
installShellCompletion --bash ./contrib/completion/bash/docker
···
# systemd
install -Dm644 ./contrib/init/systemd/docker.service $out/etc/systemd/system/docker.service
+
substituteInPlace $out/etc/systemd/system/docker.service --replace /usr/bin/dockerd $out/bin/dockerd
+
install -Dm644 ./contrib/init/systemd/docker.socket $out/etc/systemd/system/docker.socket
'';
DOCKER_BUILDTAGS = []
···
'' + optionalString (stdenv.isLinux) ''
# symlink docker daemon to docker cli derivation
ln -s ${moby}/bin/dockerd $out/bin/dockerd
+
+
# systemd
+
mkdir -p $out/etc/systemd/system
+
ln -s ${moby}/etc/systemd/system/docker.service $out/etc/systemd/system/docker.service
+
ln -s ${moby}/etc/systemd/system/docker.socket $out/etc/systemd/system/docker.socket
'' + ''
# completion (cli)
installShellCompletion --bash ./contrib/completion/bash/docker