Store path quirks #11555
Labels
feature
Feature request or proposal
localization
Nix should work well in every place
portability
Supporting more platforms
store
Issues and pull requests concerning the Nix store
Is your feature request related to a problem? Please describe.
This is a tracking issue for improving file system support in Nix. This should happen at its own pace. If you're a happy Linux user, please ignore. The purpose of this issue is to start the conversation among those interested.
Context: File systems can have various limitations; some are case insensitive and can not store two nodes that differ only by case. Others may have file name length limits, and Windows is known to reject certain file names characters, and names such as
CON
. Another is unicode normalization (much like case insensitivity) or a requirement for paths to be valid unicode.Nix can employ workarounds to allow any NAR to be stored on such file systems without loss of information, but at the cost of build impurities. This allows certain builds that are tolerant of quirks to pass, and it allows any store to be used reliably as a vehicle for
nix copy
; for instance to reliably perform deployments to systems, including ones whose store does not have the quirk.Currently, users have little awareness of this and little control over it.
Describe the solution you'd like
Let's define a store path quirk to be a derived property of a store path, that tells us which file system quirks will make it impossible to represent the NAR natively without transformation un such a file system.
nix path-info
nix store info
Why do this in Nix?
builder
can not see reliably that a quirk hack has been applied, as artifacts of the quirk hack may be false positivesDescribe alternatives you've considered
I think this is a decent sketch, but surely things can be improved.
Additional context
use-case-hack
is a property of a store, not a global setting (except forlibnixfile
-level commands) #9318Priorities
Add 👍 to issues you find important.
The text was updated successfully, but these errors were encountered: