summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/system/activation/activation-script.nix20
1 files changed, 19 insertions, 1 deletions
diff --git a/nixos/modules/system/activation/activation-script.nix b/nixos/modules/system/activation/activation-script.nix
index 95b0c7bbd68..bc0b7266ce9 100644
--- a/nixos/modules/system/activation/activation-script.nix
+++ b/nixos/modules/system/activation/activation-script.nix
@@ -230,7 +230,6 @@ in
 
     system.activationScripts.stdio = ""; # obsolete
     system.activationScripts.var = ""; # obsolete
-    system.activationScripts.specialfs = ""; # obsolete
 
     systemd.tmpfiles.rules = [
       # Prevent the current configuration from being garbage-collected.
@@ -252,6 +251,25 @@ in
         rmdir --ignore-fail-on-non-empty /usr/bin /usr
       '';
 
+    system.activationScripts.specialfs =
+      ''
+        specialMount() {
+          local device="$1"
+          local mountPoint="$2"
+          local options="$3"
+          local fsType="$4"
+
+          if mountpoint -q "$mountPoint"; then
+            local options="remount,$options"
+          else
+            mkdir -p "$mountPoint"
+            chmod 0755 "$mountPoint"
+          fi
+          mount -t "$fsType" -o "$options" "$device" "$mountPoint"
+        }
+        source ${config.system.build.earlyMountScript}
+      '';
+
     systemd.user = {
       services.nixos-activation = {
         description = "Run user-specific NixOS activation";