Skip to content

Generate nix expressions from a yarn.lock file

License

Notifications You must be signed in to change notification settings

nixcloud/yarn2nix

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yarn2nix

Converts yarn.lock files into nix expression.

  1. Make yarn and yarn2nix available in your shell.
      cd $GIT_REPO
      nix-env -i yarn2nix -f .
      nix-env -i yarn -f .
    
  2. Go to your project dir
  3. If you have not generated a yarn.lock file before, run
      yarn install
    
  4. Create a yarn.nix via:
  yarn2nix > yarn.nix
  1. Create a default.nix to build your application (see the example below)

Example default.nix

For example, for the front-end of weave's microservice reference application:

  with (import <nixpkgs> {});
  with (import /home/maarten/code/nixos/yarn2nix { inherit pkgs; });
  rec {
    weave-front-end = buildYarnPackage {
      name = "weave-front-end";
      src = ./.;
      packageJson = ./package.json;
      yarnLock = ./yarn.lock;
      # NOTE: this is optional and generated dynamically if omitted
      yarnNix = ./yarn.nix;
    };
  }

note: you must modify /home/maarten/code/nixos/yarn2nix

To make this work nicely, I exposed the express server in server.js as a binary:

  1. Add a bin entry to packages.json with the value server.js
  2. Add #!/usr/bin/env node at the top of the file
  3. chmod +x server.js

Testing the example

  1. Run nix-build In the front-end directory. Copy the result path.
  2. Create an isolated environment cd /tmp; nix-shell --pure -p bash.
  3. /nix/store/some-path-to-frontend/bin/weave-demo-frontend

License

yarn2nix is released under the terms of the GPL-3.0 license.

About

Generate nix expressions from a yarn.lock file

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Nix 95.0%
  • JavaScript 5.0%