Age | Commit message (Collapse) | Author |
|
|
|
Escape filename given to nix-shell in shebang mode
|
|
Fixes #4458.
|
|
|
|
|
|
|
|
Prevent some `nix flake` commands to crash by trying to parse a
placeholder output as a store path
|
|
With the `ca-derivation` experimental features, non-ca derivations used
to have their output paths returned as unknown as long as they weren't
built (because of a mistake in the code that systematically erased the
previous value)
|
|
|
|
While interpreting the output is fairly intuitive it would be better to
explicitly specify what a good invocation looks like.
That this isn't completely obvious (or at least causes folks to
second-guess themselves) can be seen in a couple user threads:
- https://discourse.nixos.org/t/nixos-cache-fetching-issue/3575/11
- https://discourse.nixos.org/t/newbie-question-cant-get-trivial-example-of-nixops-to-work-on-my-mac/1125/8
|
|
2259 error message - "auto-call" error
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Set kern.curproc_arch_affinity=0 to escape Rosetta
|
|
Don't let 'preferLocalBuild' override 'max-jobs=0'
|
|
|
|
Replaces 'nix-env --list-generations'. Similar to 'nix profile
diff-closures' but shows only the changes in top-level packages.
|
|
|
|
By default, once you enter x86_64 Rosetta 2, macOS will try to run
everything in x86_64. So an x86_64 Nix will still try to use x86_64
even when system = aarch64-darwin. To avoid this we can set
kern.curproc_arch_affinity sysctl. With kern.curproc_arch_affinity=0,
we ignore this preference.
This is based on how
https://opensource.apple.com/source/system_cmds/system_cmds-880.40.5/arch.tproj/arch.c.auto.html
works. Completely undocumented, but seems to work!
Note, you can verify this works with this impure Nix expression:
```
{
a = derivation {
name = "a";
system = "aarch64-darwin";
builder = "/bin/sh";
args = [ "-e" (builtins.toFile "builder" ''
[ "$(/usr/bin/arch)" = arm64 ]
[ "$(/usr/bin/arch -arch x86_64 /bin/sh -c /usr/bin/arch)" = i386 ]
[ "$(/usr/bin/arch -arch arm64 /bin/sh -c /usr/bin/arch)" = arm64 ]
/usr/bin/touch $out
'') ];
};
b = derivation {
name = "b";
system = "x86_64-darwin";
builder = "/bin/sh";
args = [ "-e" (builtins.toFile "builder" ''
[ "$(/usr/bin/arch)" = i386 ]
[ "$(/usr/bin/arch -arch x86_64 /bin/sh -c /usr/bin/arch)" = i386 ]
[ "$(/usr/bin/arch -arch arm64 /bin/sh -c /usr/bin/arch)" = arm64 ]
/usr/bin/touch $out
'') ];
};
}
```
|
|
This resolves #3810 by changing the behavior of `max-jobs = 0`, so
that specifying the option also avoids local building of derivations
with the attribute `preferLocalBuild = true`.
|
|
|
|
|
|
Allow Flake inputs to accept boolean and integer attributes
|
|
|
|
Co-authored-by: Eelco Dolstra <edolstra@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
I believe that this makes it possible to do things like
Git inputs with submodules, but it also likely applies
to other input types from libfetchers.
|
|
These replace nix-prefetch-url and nix-prefetch-url --unpack,
respectively.
|
|
|
|
|
|
|
|
|
|
Add x86_64-darwin and aarch64 to "extra-platforms" automatically when Rosetta2 is detected
|
|
Fixes #4367.
|
|
It appears as through the fetch attribute, which
is simply a variant with 3 elements, implicitly
converts boolean arguments to integers. One must
use Explicit<bool> to correctly populate it with
a boolean. This was missing from the implementation,
and resulted in clearly boolean JSON fields being
treated as numbers.
|
|
Fix insufficent attribute capacity in user profile
|
|
|
|
Cast variants fully for libc++10
|
|
|
|
References have always been determined only by the hash part, not the
name or the store prefix.
Fixes #4396.
|