Filesystems: Difference between revisions

From NixOS Wiki
imported>Jmarmstrong1207
m Add mount example
m added the "exec" option as it helps to run steam games on another drive
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[category:filesystem]]
[[category:filesystem]]
{{ic|fileSystems}} is a NixOS[[Category:NixOS]] option that allows the user to mount filesystems at specific mount points. The mounted filesystems may also be encrypted. Also see [https://nixos.org/manual/nixos/stable/options.html#opt-fileSystems the fileSystem option documentation].
{{ic|fileSystems}} is a NixOS[[Category:NixOS]] option that allows the user to mount filesystems at specific mount points. The mounted filesystems may also be encrypted. Also see [https://nixos.org/manual/nixos/stable/options.html#opt-fileSystems the fileSystem option documentation].
For boot mount options, [https://manpages.ubuntu.com/manpages/noble/en/man8/mount.8.html#filesystem-independent%20mount%20options check here].


Common example filesystem mount. You can put this in configuration.nix:
Common example filesystem mount. You can put this in configuration.nix:
Line 7: Line 9:
   device = "/dev/disk/by-uuid/4f999afe-6114-4531-ba37-4bf4a00efd9e";
   device = "/dev/disk/by-uuid/4f999afe-6114-4531-ba37-4bf4a00efd9e";
   fsType = "exfat";
   fsType = "exfat";
   options = [  
   options = [ # If you don't have this options attribute, it'll default to "defaults"
     # boot options for fstab. [https://manpages.ubuntu.com/manpages/noble/en/man8/mount 8.html#filesystem-independent%20mount%20options You can check them here]. Search up fstab options for further details
     # boot options for fstab. Search up fstab mount options you can use
     users # Allows any user to mount and unmount
     "users" # Allows any user to mount and unmount
    "nofail" # Prevent system from failing if this drive doesn't mount
    "exec" # Permit execution of binaries and other executable files
   ];
   ];
  };
  };
</syntaxhighlight>
</syntaxhighlight>
== Making disk visible in your file explorer ==
You might not see the disk in your file explorer (ie GNOME Nautilus). Add to the options: <code>x-gvfs-show</code> and it'll show up.


== Porting /etc/fstab ==
== Porting /etc/fstab ==
Line 30: Line 37:


<blockquote>
<blockquote>
Bind mounting allows a filesystem hierarchy or a file to be mounted at a different mount point. Unlike a symbolic link, a bind mount does not exist on the filesystem itself.[3] In the following example, the path {{ic|/olddir}} will be mounted in {{ic|/newdir}}
Bind mounting allows a filesystem hierarchy or a file to be mounted at a different mount point. Unlike a symbolic link, a bind mount does not exist on the filesystem itself. In the following example, the path {{ic|/olddir}} will be mounted in {{ic|/newdir}}
<ref>[https://en.wikipedia.org/wiki/Mount_(Unix)#Bind_mounting Wikipedia - Bind mount]</ref>
<ref>[https://en.wikipedia.org/wiki/Mount_(Unix)#Bind_mounting Wikipedia - Bind mount]</ref>
</blockquote>
</blockquote>

Latest revision as of 21:30, 7 October 2024

fileSystems is a NixOS option that allows the user to mount filesystems at specific mount points. The mounted filesystems may also be encrypted. Also see the fileSystem option documentation.

For boot mount options, check here.

Common example filesystem mount. You can put this in configuration.nix:

 fileSystems."/mnt/exampleDrive" = {
   device = "/dev/disk/by-uuid/4f999afe-6114-4531-ba37-4bf4a00efd9e";
   fsType = "exfat";
   options = [ # If you don't have this options attribute, it'll default to "defaults" 
     # boot options for fstab. Search up fstab mount options you can use
     "users" # Allows any user to mount and unmount
     "nofail" # Prevent system from failing if this drive doesn't mount
     "exec" # Permit execution of binaries and other executable files
   ];
 };

Making disk visible in your file explorer

You might not see the disk in your file explorer (ie GNOME Nautilus). Add to the options: x-gvfs-show and it'll show up.

Porting /etc/fstab

The options specified in /etc/fstab may not be fully compatible with NixOS fileSystems options. For example, here are some options NixOS doesn't recognize that are available on some Linux distributions:

  • iocharset
  • rw (but it seems to not be needed)
  • uid with username rather than actual uid

Mount order

Without any specification, the mount order is up to the implementation (probably alphabetic).

Should the order in which filesystems are mounted is important, users should make use of the fileSystems.<mount>.depends option. This is useful for example in #Bind mounts

Bind mounts

Bind mounting allows a filesystem hierarchy or a file to be mounted at a different mount point. Unlike a symbolic link, a bind mount does not exist on the filesystem itself. In the following example, the path /olddir will be mounted in /newdir [1]

These are used to make files or folders available in other parts of the filesystem hierarchy. In order to do so both source and target filesystems have to be mounted first.

fileSystems."/mnt/datastore".label = "datastore";
fileSystems."/mnt/aggregator".label = "aggregator";

####################
# Bind mounts

# Mount /mnt/datastore/applications/app1 on /mnt/aggregator/app1
# Accessing /mnt/aggregator/app1 will actually access /mnt/datastore/...
fileSystems."/mnt/aggregator/app1" = {
  depends = [
      # The mounts above have to be mounted in this given order
      "/mnt/datastore" 
      "/mnt/aggregator" 
  ];
  device = "/mnt/datastore/applications/app1";
  fsType = "none";
  options = [
    "bind"
    "ro" # The filesystem hierarchy will be read-only when accessed from /mnt/aggregator/app1
  ];
};

References