Navigation Menu

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

whirlpool-gui: init at 0.10.1 #83851

Closed

Conversation

offlinehacker
Copy link
Contributor

Motivation for this change

Add whirlpool-gui client, chaumian coinjoin bitcoin implementation, which can be used with samurai bitcoin wallet for extra privacy.

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.

@offlinehacker
Copy link
Contributor Author

deps.nix contain quite a lot of dependencies, which results in 300k text file. I could use dynamic generation from mkYarnPackage, but this is not allowed in pure mode, as far as i know. What is alternative to distribute such large dependencies?

@jonringer
Copy link
Contributor

is there a way to use a yarn.lock and just have a vendor hash?

cc @bhipple

@offlinehacker
Copy link
Contributor Author

offlinehacker commented Apr 5, 2020

It is possible with recursive nix, but I am unsure how to do it only using yarn, as cache it produces seems to be non-deterministic. Maybe I can just package binary for now, and later when we find better solution, can build from source.

Copy link
Contributor

@bhipple bhipple left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think Yarn has the vendoring lock approach the way Go/Rust/Bazel do, so packages there tend to generate and check-in thousands of lines of nix :)

That said I haven't actually packaged anything in Yarn myself, so I'm not 100% sure.


meta = {
description = "Desktop GUI for Whirlpool by Samourai-Wallet";
homepage = https://www.samouraiwallet.com/whirlpool;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quote for NixOS/rfcs#45

# install build dependencies and patch shebangs
yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive
patchShebangs node_modules/
'';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Surely there are other yarn packages in Nix that have a well established pattern for this, and we don't need to re-implement it ourselves?

I'd take a look at mkYarnPackage and see if it can do what you need, like this one does:

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have tried and it does not fit this package, as I just need to build statics and install only production dependencies

@offlinehacker
Copy link
Contributor Author

I will close this pull request and package prebuild binary, as I do not think it is possible with current infrastructure to package this, without introducing thousands lines of generated code. If someone else has any idea can replace later.

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

Successfully merging this pull request may close these issues.

None yet

3 participants