roslyn-copilot's postFetch wrote install.Lock with a relative path, so the
marker never reached the output. fetchzip runs a package's postFetch with
cwd = $TMPDIR/unpack, which stripRoot has already emptied by moving the
payload to $out, so the file was created in the build tree and discarded
with it.
The extension's runtime-dependency installer treats a component as
installed only when <installPath>/install.Lock exists. Without it
.roslynCopilot is considered not-installed, so on activation the installer
tries to touch .roslynCopilot/install.Begin. On a read-only store
(mutableExtensionsDir = false) that fails with EROFS and the extension
reports that .NET debugging will not be enabled.
Writing the marker into $out changes the fetch output, hence the new hash.
Assisted-by: Claude Code (Claude Opus 4.8)
Initially the C# extension was fully open source and had the MIT license, however, after changing to the Roslyn language server and adding the vsdbg binary, it has switched to a non-free license. It even has builtin guards against running on non-microsoft VSCode builds now.
Some things in the C# extension can be built from source, but the debugging layer is fully based on vsdbg which is part of Visual Studio which is proprietary, so the extension as a whole is unfree because of it.
In preparation for the deprecation of `stdenv.isX`.
These shorthands are not conducive to cross-compilation because they
hide the platforms.
Darwin might get cross-compilation for which the continued usage of `stdenv.isDarwin` will get in the way
One example of why this is bad and especially affects compiler packages
https://www.github.com/NixOS/nixpkgs/pull/343059
There are too many files to go through manually but a treewide should
get users thinking when they see a `hostPlatform.isX` in a place where it
doesn't make sense.
```
fd --type f "\.nix" | xargs sd --fixed-strings "stdenv.is" "stdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "stdenv'.is" "stdenv'.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "clangStdenv.is" "clangStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "gccStdenv.is" "gccStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "stdenvNoCC.is" "stdenvNoCC.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "inherit (stdenv) is" "inherit (stdenv.hostPlatform) is"
fd --type f "\.nix" | xargs sd --fixed-strings "buildStdenv.is" "buildStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "effectiveStdenv.is" "effectiveStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "originalStdenv.is" "originalStdenv.hostPlatform.is"
```