Merge remote-tracking branch 'lass/master'

derp
tv 7 years ago
commit cf9ac094e0
  1. 26
      ci.nix
  2. 33
      examples/hello_world.nix
  3. 42
      examples/simple.nix
  4. 17
      pkgs/default.nix

@ -0,0 +1,26 @@
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;
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;
}

@ -0,0 +1,33 @@
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"
'';
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/"}
'';
}

@ -0,0 +1,42 @@
let
pkgs = import <nixpkgs> { overlays = [ (import ../pkgs) ]; };
in {
bash = pkgs.writeBash "hello-world" ''
if [[ "test" == "test" ]]; then echo "bash features"; fi
'';
# cc -L/nix/store/...blah/lib -I/nix/store/...blah/include
dash = pkgs.writeDash "hello-world" ''
test '~' = '~' && echo 'dash features'
'';
haskell = pkgs.writeHaskell "hello-world" [ "acme-cuteboy" ] ''
import Acme.CuteBoy
main :: IO ()
main = print Rolf
'';
perl = pkgs.writePerl "simple.pl" { deps = [ pkgs.perlPackages.boolean ]; } ''
use boolean;
print "Howdy!\n" if true;
'';
python2 = pkgs.writePython2 "hello-world" { deps = [ pkgs.python2Packages.pyyaml ]; } ''
import yaml
print yaml.load("""
- some
- random
- variables
""")
'';
python3 = pkgs.writePython3 "hello-world" { 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/"}
'';
}

@ -319,6 +319,23 @@ pkgs: oldpkgs: {
${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 ? [] }:
let
py = pkgs.python2.withPackages (ps: deps);

Loading…
Cancel
Save