diff options
| -rw-r--r-- | ci.nix | 1 | ||||
| -rw-r--r-- | examples/hello_world.nix | 3 | ||||
| -rw-r--r-- | examples/simple.nix | 6 | ||||
| -rw-r--r-- | pkgs/default.nix | 17 | 
4 files changed, 27 insertions, 0 deletions
| @@ -18,6 +18,7 @@ in      bash = writeTest "bash features" simples.bash;      dash = writeTest "dash features" simples.dash;      haskell = writeTest "Rolf" simples.haskell; +    js = writeTest "function add(n,d){return n+d}" simples.js;      perl = writeTest "Howdy!" simples.perl;      python2 = writeTest "['some', 'random', 'variables']" simples.python2;      python3 = writeTest "['some', 'random', 'variables']" simples.python3; diff --git a/examples/hello_world.nix b/examples/hello_world.nix index 4944c13..4f9330a 100644 --- a/examples/hello_world.nix +++ b/examples/hello_world.nix @@ -18,6 +18,9 @@ in {      main = do        putStrLn "hello world"    ''; +  js = pkgs.writeJS "hello-world" {} '' +    console.log("hello world") +  '';    perl = pkgs.writePerl "hello-world" {} ''      print "hello world\n";    ''; diff --git a/examples/simple.nix b/examples/simple.nix index 0284bf1..55ccedc 100644 --- a/examples/simple.nix +++ b/examples/simple.nix @@ -14,6 +14,12 @@ in {      main :: IO ()      main = print Rolf    ''; +  js = pkgs.writeJS "example-js" { deps = [ pkgs.nodePackages.uglify-js ]; } '' +    var UglifyJS = require("uglify-js"); +    var code = "function add(first, second) { return first + second; }"; +    var result = UglifyJS.minify(code); +    console.log(result.code); +  '';    perl = pkgs.writePerl "simple.pl" { deps = [ pkgs.perlPackages.boolean ]; } ''      use boolean;      print "Howdy!\n" if true; diff --git a/pkgs/default.nix b/pkgs/default.nix index b7b0dde..10465a6 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -297,6 +297,23 @@ pkgs: oldpkgs: {        };      }; +  writeJS = name: { deps ? [] }: text: +  let +    node-env = pkgs.buildEnv { +      name = "node"; +      paths = deps; +      pathsToLink = [ +        "/lib/node_modules" +      ]; +    }; +  in pkgs.writeDash name '' +    export NODE_PATH=${node-env}/lib/node_modules +    exec ${pkgs.nodejs}/bin/node ${pkgs.writeText "js" text} +  ''; + +  writeJSBin = name: +    pkgs.writeJS "/bin/${name}"; +    writeJSON = name: value: pkgs.runCommand name {      json = toJSON value;      passAsFile = [ "json" ]; | 
