[Nix#9133] Fetching flake input with git+ssh requires the ssh executable #109
Labels
No labels
Area/build-packaging
Area/cli
Area/evaluator
Area/fetching
Area/flakes
Area/language
Area/profiles
Area/protocol
Area/releng
Area/remote-builds
Area/repl
Area/store
bug
crash 💥
Cross Compilation
devx
docs
Downstream Dependents
E/easy
E/hard
E/help wanted
E/reproducible
E/requires rearchitecture
imported
Needs Langver
OS/Linux
OS/macOS
performance
regression
release-blocker
RFD
stability
Status
blocked
Status
invalid
Status
postponed
Status
wontfix
testing
testing/flakey
ux
No milestone
No project
No assignees
4 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lix-project/lix#109
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Upstream-Issue: NixOS/nix#9133
Describe the bug
Specifying a flake input using
git+ssh
seems to require the ssh executable which doesn't appear to be a dependency.Steps To Reproduce
flake.nix:
My CI docker container does not have
ssh
installed but the host does and we're building using the host's daemon.$NIX_REMOTE_OPTS = "--eval-store auto --store $OUR_NIX_STORE"
Expected behavior
I would expect git and ssh to be dependencies of
nix
.nix-env --version
outputAdditional context
Add any other context about the problem here.
Priorities
Add 👍 to issues you find important.
there's two possible solutions: we put a hard dependency on git and ssh into lix (which is silly for stores that don't build things) or equivalently libgit2 or wontfix this. I'm going to wontfix it.
I actually would be fine with pulling Git and SSH into Lix's closure, so long as it's also buildable without too
I think they should be injected via a wrapper in a second derivation if we do that, as it gets us maximal build reuse.
Really the way it should work is that the nix you get as a user is the wrapper and the nix you get as a package is always unwrapped. But tbh I'm not really convinced we should do this: if a system doesn't have ssh on it, it's probably a tiny system that cares deeply about closure size already, which would be worsened by making this change. .
I'm inclined to agree with @qyriad, making it a build option would make it easy to strip out for small systems like that; otherwise those are essential to normal usage of Lix
fair enough, i think we should do it with a wrapper regardless, because having them as build-deps is fine, and it would be least broken to . the way it should probably work is that the installer and nixos gives you
lixFull
, andlix
is the unwrapped one that is used in build dependencies, because they practically universally don't need to have git work or if they do, they would have it as a build input for their integration tests.alternatively maybe it should be a client setting
git-fallback-path
or something, which is then a store path, and is used when you don't have git in PATH. but this would make our install process Very Bad if it were actually in a config file in /etc. we would want to have injectable configs within packaging somehow to do that.