[archive] Attempts to fix the archive mount being stopped before the system sleeps.
This commit is contained in:
@@ -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" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user