Skip to content
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

Handle private inputs #46

Open
mrVanDalo opened this issue Jun 30, 2023 · 5 comments
Open

Handle private inputs #46

mrVanDalo opened this issue Jun 30, 2023 · 5 comments

Comments

@mrVanDalo
Copy link
Contributor

mrVanDalo commented Jun 30, 2023

Just switching to nixinate and run into some minor problem. I use inputs which are private and prefer buildOn = remote.
This results (of course) in an exeption "Permission Denied".
A fix at the moment for me is to run :

nix flake archive --json \
  | jq -r '.inputs.private_assets.path' \
  | xargs nix-copy-closure root@myMachine

But it would be to have a more convenient way right in the flake.nix to do this.
(of course coping every input makes no sense).

Alternatively I'll create a pull request describing this problem an a proper solution in the README.md or something (if wanted of course).

@CRTified
Copy link

Is it really harmful to copy every input? Assuming they're used, they will get pulled by the remote either way. Copying them first just shifts the point in time where the remote receives that input in its store?

@mrVanDalo
Copy link
Contributor Author

No it's not harmful. I'm with copying every flake input.

@MatthewCroughan
Copy link
Owner

Another option is to use ssh-agent, which does not require modifying nixinate

@CRTified
Copy link

That has two disadvantages as opposed to pre-fetching and pushing the inputs:

  • It exposes the keys available. Problematic if the deployment target is less trusted than your machine.
  • It requires that the target has a route to grab the input itself. Might be a problem for isolated machines.

@happysalada
Copy link

I was really glad to find this, here is my nushell adapted version (for those that it might help)

nix flake archive --json | from json | get inputs.private_input.path | xargs nix copy --t
o ssh://not_root@my_machine

or the script for all the inputs

    def nix_copy_inputs [to: string] {
      nix flake archive --json | from json | get inputs | transpose | each { |input| $input.column1.path | xargs nix copy --to $"ssh://($to)" }
    }

I do agree that it would be nice to have this taken care of automatically, but it might be hard to do it for every shells.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants