NTFS: Difference between revisions

m Fix grammar and spelling
34j (talk | contribs)
Remove unnecessary use of ntfs-3g and recommend generating the configuration using `nixos-generate-config`.
Line 1: Line 1:
New Technology File System (NTFS) is a proprietary journaling [[Filesystems|file system]] developed by Microsoft. It is still in use by modern Windows systems, although NTFS has not evolved since the release of version 3.1 in 2001.
New Technology File System (NTFS) is a proprietary journaling [[Filesystems|file system]] developed by Microsoft. It is still in use by modern Windows systems, although NTFS has not evolved since the release of version 3.1 in 2001.
== Enable NTFS support at boot ==
<syntaxHighlight lang=nix>
boot.supportedFilesystems = [ "ntfs" ];
</syntaxHighlight>
NixOS uses NTFS-3G for NTFS support.
=== Enable write mode ===
<syntaxhighlight lang="nixos">
  fileSystems."/path/to/mount/to" =
    { device = "/path/to/the/device";
      fsType = "ntfs-3g";
      options = [ "rw" "uid=theUidOfYourUser"];
    };
</syntaxhighlight>
== Mount NTFS filesystem ==
<syntaxhighlight lang="sh">
# mount /dev/sdeX /mnt -t ntfs-3g
</syntaxhighlight>


== Mount NTFS filesystem on boot ==
== Mount NTFS filesystem on boot ==


# Add NTFS support to ''/etc/nixos/configuration.nix'' (see [[#Enable NTFS support at boot]] above)
Using [[nixos-generate-config]] to automatically generate Nix config is the recommended way to setup filesystems.
#Run the following commands<syntaxhighlight lang="bash">
# Apply new config on next boot
sudo nixos-rebuild boot
# Reboot your system
reboot
 
# Mount the hard drive. Replace X & /mnt/folder as needed
mount /dev/sdX /mnt/folder -t ntfs3


# Generate /etc/nixos/hardware-configuration.nix
1. Run {{ic|lsblk}} to list device names
nixos-generate-config
2. Mount the device using {{ic|mount}}, where {{ic|/dev/sdX}} replaced with your device name and {{ic|/mnt/sdX}} replaced with an existing folder path to mount your drive.
</syntaxhighlight>
{{code|<nowiki>mount /dev/sdX /mnt/sdX -t ntfs3</nowiki>}}
# Edit ''/etc/nixos/hardware-configuration.nix''<syntaxhighlight lang="diff">
3. Run {{ic|nixos-generate-config --dir .}} to generate hardware configuration. This will automatically add all currently mounted devices to {{ic|hardware-configuration.nix}}.
  # /etc/nixos/hardware-configuration.nix
{{file|/etc/nixos/hardware-configuration.nix|diff|3=
+  boot.supportedFilesystems = [ "ntfs" ];
+  fileSystems."/mnt/sdX" = {
+    device = "/dev/disk/by-uuid/F258FB9E58FB5FB1";
+    fsType = "ntfs3";
+  };
}}
4. Add {{ic|<nowiki>"uid=$UID"</nowiki>}} to {{nixos:option|fileSystems.*.options|fileSystems.<name>.options}} to get write access, where {{ic|<nowiki>$UID</nowiki>}} replaced with your UID:
{{file|/etc/nixos/configuration.nix|diff|3=
fileSystems =
  let
    ntfs-drives = [
      "/mnt/sdX"
    ];
  in
  lib.genAttrs ntfs-drives (path: {
    options = [
      "uid=$UID"
      # "nofail"
    ];
  });
}}


  # Your /dev/disk/by/uuid/... and /mnt/folder will have different names!
{{note|You may find your UID by running {{ic|echo $UID}}.}}
  fileSystems."/mnt/folder" =
{{aside|It is not recommended to manually edit {{ic|hardware-configuration.nix}}.}}
      { device = "/dev/disk/by-uuid/7997ef90-6333-4c60-b137-d5cf2423e91b";
-      fsType = "ntfs3";
+      fsType = "ntfs-3g";
+      options = [ "rw" "uid=UID"];
      };
</syntaxhighlight>''Note: you can quickly find your UID by running '''echo $UID'''''
#Run '''nixos-rebuild switch'''
#Done!


== Troubleshooting ==
== Troubleshooting ==