Merge remote-tracking branch 'lass/master'
This commit is contained in:
27
ci.nix
Normal file
27
ci.nix
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
let
|
||||||
|
pkgs = import <nixpkgs> {};
|
||||||
|
|
||||||
|
hello_worlds = import examples/hello_world.nix;
|
||||||
|
simples = import examples/simple.nix;
|
||||||
|
|
||||||
|
writeTest = expectedValue: test: pkgs.writeScript "test" ''
|
||||||
|
#!/bin/sh
|
||||||
|
if test "$(${test})" != "${expectedValue}"; then
|
||||||
|
echo 'test ${test} failed'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
in
|
||||||
|
pkgs.lib.mapAttrs' (n: v: pkgs.lib.nameValuePair "hello_${n}" (writeTest "hello world" v)) hello_worlds //
|
||||||
|
pkgs.lib.mapAttrs' (n: v: pkgs.lib.nameValuePair "simple_${n}" v) {
|
||||||
|
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;
|
||||||
|
sed = writeTest "hello world" simples.sed;
|
||||||
|
}
|
||||||
|
|
||||||
36
examples/hello_world.nix
Normal file
36
examples/hello_world.nix
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
let
|
||||||
|
pkgs = import <nixpkgs> { overlays = [ (import ../pkgs) ]; };
|
||||||
|
in {
|
||||||
|
bash = pkgs.writeBash "hello-world" ''
|
||||||
|
echo 'hello world'
|
||||||
|
'';
|
||||||
|
c = pkgs.writeC "hello-world" {} ''
|
||||||
|
#include <stdio.h>
|
||||||
|
int main() {
|
||||||
|
printf("hello world\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
dash = pkgs.writeDash "hello-world" ''
|
||||||
|
echo 'hello world'
|
||||||
|
'';
|
||||||
|
haskell = pkgs.writeHaskell "hello-world" [] ''
|
||||||
|
main = do
|
||||||
|
putStrLn "hello world"
|
||||||
|
'';
|
||||||
|
js = pkgs.writeJS "hello-world" {} ''
|
||||||
|
console.log("hello world")
|
||||||
|
'';
|
||||||
|
perl = pkgs.writePerl "hello-world" {} ''
|
||||||
|
print "hello world\n";
|
||||||
|
'';
|
||||||
|
python2 = pkgs.writePython2 "hello-world" {} ''
|
||||||
|
print "hello world"
|
||||||
|
'';
|
||||||
|
python3 = pkgs.writePython3 "hello-world" {} ''
|
||||||
|
print("hello world")
|
||||||
|
'';
|
||||||
|
sed = pkgs.writeDash "sed-example" ''
|
||||||
|
echo xxx | ${pkgs.writeSed "hello-world" "s/xxx/hello world/"}
|
||||||
|
'';
|
||||||
|
}
|
||||||
48
examples/simple.nix
Normal file
48
examples/simple.nix
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
let
|
||||||
|
pkgs = import <nixpkgs> { overlays = [ (import ../pkgs) ]; };
|
||||||
|
in {
|
||||||
|
bash = pkgs.writeBash "simple.sh" ''
|
||||||
|
if [[ "test" == "test" ]]; then echo "bash features"; fi
|
||||||
|
'';
|
||||||
|
# cc -L/nix/store/...blah/lib -I/nix/store/...blah/include
|
||||||
|
dash = pkgs.writeDash "simple" ''
|
||||||
|
test '~' = '~' && echo 'dash features'
|
||||||
|
'';
|
||||||
|
haskell = pkgs.writeHaskell "simple" [ "acme-cuteboy" ] ''
|
||||||
|
import Acme.CuteBoy
|
||||||
|
|
||||||
|
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;
|
||||||
|
'';
|
||||||
|
python2 = pkgs.writePython2 "simple.py" { deps = [ pkgs.python2Packages.pyyaml ]; } ''
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
print yaml.load("""
|
||||||
|
- some
|
||||||
|
- random
|
||||||
|
- variables
|
||||||
|
""")
|
||||||
|
'';
|
||||||
|
python3 = pkgs.writePython3 "simple.py" { deps = [ pkgs.python3Packages.pyyaml ]; } ''
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
print(yaml.load("""
|
||||||
|
- some
|
||||||
|
- random
|
||||||
|
- variables
|
||||||
|
"""))
|
||||||
|
'';
|
||||||
|
sed = pkgs.writeDash "sed-example" ''
|
||||||
|
echo hello | ${pkgs.writeSed "hello-world" "s/hello/& world/"}
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -303,6 +303,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 {
|
writeJSON = name: value: pkgs.runCommand name {
|
||||||
json = toJSON value;
|
json = toJSON value;
|
||||||
passAsFile = [ "json" ];
|
passAsFile = [ "json" ];
|
||||||
@@ -319,6 +336,23 @@ pkgs: oldpkgs: {
|
|||||||
${pkgs.cabal2nix}/bin/cabal2nix ${path} > $out
|
${pkgs.cabal2nix}/bin/cabal2nix ${path} > $out
|
||||||
'');
|
'');
|
||||||
|
|
||||||
|
writePerl = name: { deps ? [] }:
|
||||||
|
let
|
||||||
|
perl-env = pkgs.buildEnv {
|
||||||
|
name = "perl-environment";
|
||||||
|
paths = deps;
|
||||||
|
pathsToLink = [
|
||||||
|
"/lib/perl5/site_perl"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
pkgs.makeScriptWriter {
|
||||||
|
interpreter = "${pkgs.perl}/bin/perl -I ${perl-env}/lib/perl5/site_perl";
|
||||||
|
} name;
|
||||||
|
|
||||||
|
writePerlBin = name:
|
||||||
|
pkgs.writePerl "/bin/${name}";
|
||||||
|
|
||||||
writePython2 = name: { deps ? [], flakeIgnore ? [] }:
|
writePython2 = name: { deps ? [], flakeIgnore ? [] }:
|
||||||
let
|
let
|
||||||
py = pkgs.python2.withPackages (ps: deps);
|
py = pkgs.python2.withPackages (ps: deps);
|
||||||
|
|||||||
Reference in New Issue
Block a user