From 892ac475cc2b88d609a97897bf0915477183d512 Mon Sep 17 00:00:00 2001 From: Anders Rytter Hansen Date: Sat, 16 Dec 2023 20:37:26 +0100 Subject: [PATCH] add /nix mount service --- Dockerfile | 3 +++ etc/systemd/system/mount-nix-prepare.service | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 etc/systemd/system/mount-nix-prepare.service diff --git a/Dockerfile b/Dockerfile index cddeb94..8df0d55 100644 --- a/Dockerfile +++ b/Dockerfile @@ -48,6 +48,9 @@ COPY etc /etc # Copy /usr COPY usr /usr +# Enable /nix mount service +RUN systemctl enable mount-nix-prepare.service + # Clear cache, /var and /tmp and commit ostree RUN rm -rf /tmp/* /var/* && mkdir -p /var/tmp && chmod -R 1777 /var/tmp && \ ostree container commit diff --git a/etc/systemd/system/mount-nix-prepare.service b/etc/systemd/system/mount-nix-prepare.service new file mode 100644 index 0000000..745576b --- /dev/null +++ b/etc/systemd/system/mount-nix-prepare.service @@ -0,0 +1,20 @@ +[Unit] +Description=Prepare nix mount points + +[Service] +Type=oneshot +ExecStartPre=chattr -i / +ExecStart=/bin/sh -c "mkdir -p /nix" +ExecStart=/bin/sh -c "mkdir -p /var/lib/nix" +ExecStart=/bin/sh -c "mount --bind /var/lib/nix /nix" +# We need to restart systemd and load the nix-daemon again +# as the nix-daemon files are actually inside the /nix folder +# which hasn't been mounted until now +ExecStart=/bin/sh -c "systemctl daemon-reload" +# This will fail the first time as we haven't installed nix yet +ExecStart=-/bin/sh -c "systemctl start nix-daemon.socket" +ExecStopPost=chattr +i / + +[Install] +WantedBy=local-fs.target +