[archive] Attempts to fix the archive mount being stopped before the system sleeps.

This commit is contained in:
2026-05-26 10:36:47 -07:00
parent 161246c575
commit 6d278d6340

View File

@@ -2,18 +2,9 @@
{
home.packages = with pkgs; [ sshfs ];
systemd.user.services.mcp-archive = {
Unit = {
Description = "SSHFS mount for remote archive";
After = [ "network-online.target" ];
Before = [ "sleep.target" ];
StopPropagatedFrom = [ "sleep.target" ];
};
Service = {
Type = "simple";
ExecStartPre = "/run/current-system/sw/bin/mkdir -p %h/archive";
ExecStart = ''
systemd.user.services =
let
mountArchive = ''
${pkgs.sshfs}/bin/sshfs \
-f \
-o reconnect \
@@ -24,7 +15,27 @@
drew@mcp:/tank/archive/drew \
%h/archive
'';
ExecStop = "/run/wrappers/bin/fusermount -u %h/archive";
unmountArchive = "/run/wrappers/bin/fusermount -u %h/mnt/archive";
in
{
# Mounts the archive when the system is online.
mcp-archive = {
Unit = {
Description = "SSHFS mount for remote archive";
# Start only after the network is online
After = [ "network-online.target" ];
# Stop this service if the network stops
StopPropagatedFrom = [ "network-online.target" ];
};
Service = {
Type = "simple";
ExecStartPre = "/run/current-system/sw/bin/mkdir -p %h/archive";
ExecStart = mountArchive;
ExecStop = unmountArchive;
Restart = "on-failure";
RestartSec = "10s";
};
@@ -34,4 +45,32 @@
};
};
# Unmounts the SSHFS mount whenever the system wants to go to sleep. If I
# don't do this, the service will prevent sleep while it tries to
# reconnect.
mcp-archive-unmount-on-sleep = {
Unit = {
Description = "Unmount SSHFS archive before sleep";
# Run this before the system goes to sleep. It should then be
# shutdown after the system wakes up.
Before = [ "sleep.target" ];
StopWhenUnneeded = true;
};
Service = {
Type = "oneshot";
# The service will remain after it runs so that it stays in the
# service registry as active.
RemainAfterExit = true;
ExecStart = unmountArchive;
ExecStop = mountArchive;
};
Install = {
WantedBy = [ "sleep.target" ];
};
};
};
}