-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
flakes: git-crypt is now broken #5260
Comments
why would fetching submodules break git-crypt? Do you have your secrets in a submodule? |
I'm able to reproduce the issue. Somehow this has changed the way the git repo gets moved to the nix store. |
oh I guess I can see that, since it probably copies the repo from the git history (which has the secrets encrypted by default), instead of just a plain copy. For the sake of investigation, is this broken even when your file tree is dirty? I would imagine the behavior would be different in this case since it can't simply rely on the commit history as the dirty changes don't exist there yet. |
I'm currently doing a bit of testing, but it seems to evaluate perfectly fine when the worktree is dirty, as you expected. Using |
Yes, I should also move to sops-nix or age-nix, but having a dirty worktree is indeed a great workaround for the time being, thanks for the tip! |
I also encountered this bug, rolled back the changes that led to an error using this patch: https://github.com/miuirussia/nix-flake-env/blob/master/overlays/nixUnstable/revert-769ca4e.patch |
I was using git-lfs to manage some binaries in my nix config, which this also appears to break. Reverting the commit fixes the issue. |
the commit is reverted in master so we can close this I think. |
Git-crypt should not work, at least not with the way flakes are currently implemented. Nix Flakes will write your secrets unconditionally to the store, which is not a secure place. I would like for git-crypt to work somehow, but it would take special treatment of local flakes, which I think it is too early to consider that at this point. |
This issue has been mentioned on NixOS Discourse. There might be relevant details there: https://discourse.nixos.org/t/using-git-crypt-with-flakes/15372/5 |
Perhaps features like git-crypt, lfs and submodules can get their own top-level attribute in flake.nix (next to When evaluating a local flake, this means parsing the flake.nix file, before the current process of fetching and then evaluating the local flake. This can use restrictions similar to those of When evaluating a remote flake via the a lock file, these attributes can be retrieved from the lock file. When evaluating a remote flake from a mutable flake reference, it can be fetched twice as a general solution, or use the GitHub Contents API to retrieve |
git-crypt no longer works: NixOS/nix#5260
git-crypt no longer works: NixOS/nix#5260
I marked this as stale due to inactivity. → More info |
Something of a workaround for the |
A proper git-crypt integration both allows access to the encrypted file for delayed decryption, and integrates with the string context to avoid adding decrypted files to the store |
Disagreed, adding decrypted files to store is fine for some use cases - i.e. where you're fine with the files being in your locally readable store, but not in your online git repo. |
@chayleaf would you be ok with a function that turns a secret string into a regular string? |
I think the best option is to have the secret files marked as encrypted, but have any processing of the file (e.g. import, fromJSON) lose that context, it would be hard to do otherwise anyway |
Right. #8388 only solves the problem for strings. To connect that up with git-crypt, we'd need something like lazy trees (#6530) to carry this "context" at the file level anyway. |
Describe the bug
I'm using
git-crypt
to manage my config, and since this nixpkgs commit I can't build it anymore using flakes:It fails when trying to load some of the secrets of the repo, because they're still encrypted (it looks like the flake build re-clones my local repo elsewhere, ending up in a state where nothing is decrypted yet)
Steps To Reproduce
git-crypt
to encrypt some secrets in a repo.fileContents
to load one of these secrets in a Nix stringnix build
Expected behavior
building a flake that uses git-crypt should still work?
Additional context
I've bisected the regression up to PR #4922
The text was updated successfully, but these errors were encountered: