Ludovic Courtès writes: > Hi! > > Pierre Neidhardt skribis: > >> * guix/scripts.scm (%disk-space-warning-absolute): New variable. >> (warn-about-disk-space): Test against %disk-space-warning-absolute. >> Fix error in display-hint due to extraneous 'profile' argument. > > [...] > >> +(define %disk-space-warning-absolute >> + ;; The decimal number of GiB of free disk space below which a warning is >> + ;; emitted. >> + (make-parameter (match (and=> (getenv "GUIX_DISK_SPACE_WARNING_ABSOLUTE") >> + string->number) >> + (#f 17.0) >> + (threshold threshold)))) > > Perhaps we should arrange for ‘GUIX_DISK_SPACE_WARNING’ to handle both > cases? > > That is, we’d first try to convert it with ‘size->number’; if that > works, it’s an absolute measure, and if it returns #f, then pass the > string to ‘string->number’ and assume it’s a fraction. I thought of something similar too, but this needs discussion: - If we change the meaning of a value like "1", we are breaking backward compatibility. - GUIX_DISK_SPACE_WARNING is currently undocumented, so I guess it's OK to break backward compatibility. However, it'd be nice to document it :) - Currently (size->number "1.MiB") "leaves" the Guile instance on error. Which I find quite weird, I'd expect it to return #f when it cannot parse the input. - Currently (size->number "0.8") returns 1. If we want to use your suggestion, we would need to change the behaviour so that it returns #f. - Alternatively, since we are breaking backward compatibility anyways, we could parse a trailing percent sign "%" to decide whether the value is relative or absolute. Anyways, the issue was originally about dealing with both small and big partitions, and for this we need both a default absolute threshold and a default relative threshold. Does that make sense? >> + (absolute-threshold-in-bytes (* 1024 1024 1024 absolute-threshold))) > > Always use bytes internally; that is, convert to bytes at the UI border. What do you mean? -- Pierre Neidhardt https://ambrevar.xyz/