aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--default.nix11
-rw-r--r--tools/fastp-check.nix54
2 files changed, 35 insertions, 30 deletions
diff --git a/default.nix b/default.nix
index 43a2332..54d0215 100644
--- a/default.nix
+++ b/default.nix
@@ -78,8 +78,8 @@ let
lib = nixpkgs.lib // { types = types; shard = callBionix ./lib/shard.nix {};};
stage = x@{ name, stripStorePaths ? true, multicore ? false, ... }:
(if stripStorePaths then strip else x: x) (nixpkgs.stdenvNoCC.mkDerivation (x // {name = "bionix-" + name; inherit multicore;}));
- strip = drv: drv.overrideAttrs (attrs: {
- buildCommand = attrs.buildCommand + ''
+ strip = drv: let
+ stripCommand = ''
function rewrite {
sed -i 's|/nix/store/[^-]*|/nix/store/00000000000000000000000000000000|g' $1
@@ -97,7 +97,12 @@ let
rewriteOutput $o
done
'';
- });
+ in drv.overrideAttrs (attrs:
+ if attrs ? buildCommand then
+ {buildCommand = attrs.buildCommand + stripCommand;}
+ else
+ { fixupPhase = (if attrs ? fixupPhase then attrs.fixupPhase else "") + stripCommand; }
+ );
# splitting/joining
splitFile = file: drv: stage {
diff --git a/tools/fastp-check.nix b/tools/fastp-check.nix
index c7cbb3c..bd522d8 100644
--- a/tools/fastp-check.nix
+++ b/tools/fastp-check.nix
@@ -7,34 +7,34 @@
} :
with bionix;
-with pkgs.lib;
+with lib;
+with types;
-# Match input file type—how to do .fq and .fq.gz? Does bz2 work?
+let
+ fq = f: matchFiletype "fastp-input" { fq = _: f; gz = matchFiletype' "fastp-input" { fq = _: f; }; } f;
-stage {
- name = "fastp";
- buildInputs = [ fastp.app ];
- outputs = [ "out" "fastq1" "fastq2" "html" "json" ];
- buildCommand = ''
- mkdir -p $out
- fastp \
- ${optionalString (flags != null) flags} \
- -i ${input1} \
- -o fastq1.fq.gz \
- ${optionalString (input2 != null) ''
- -I ${input2} \
- -O fastq2.fq.gz \
+ out =
+ stage {
+ name = "fastp";
+ buildInputs = [ fastp.app ];
+ outputs = [ "out" "fastq1" "json" ] ++ (if input2 != null then [ "fastq2" ] else []);
+ buildCommand = ''
+ mkdir -p $out
+ fastp \
+ ${optionalString (flags != null) flags} \
+ -i ${fq input1} \
+ -o fastq1.fq.gz \
+ ${optionalString (input2 != null) ''
+ -I ${fq input2} \
+ -O fastq2.fq.gz \
- cp fastq2.fq.gz $fastq2
- ln -s $fastq2 $out/fastq2.fq.gz
- ''}
+ cp fastq2.fq.gz $fastq2
+ ''}
- cp fastq1.fq.gz $fastq1
- cp fastp.html $html
- cp fastp.json $json
-
- ln -s $fastq1 $out/fastq1.fq.gz
- ln -s $html $out/fastp.html
- ln -s $json $out/fastp.json
- '';
-} \ No newline at end of file
+ cp fastq1.fq.gz $fastq1
+ cp fastp.html $out
+ cp fastp.json $json
+ '';
+ };
+ fqgz = { filetype = filetype.gz (filetype.fastq {}); };
+in out // { fastq1 = out.fastq1 // fqgz; } // (if input2 != null then {fastq2 = out.fastq2 // fqgz; } else {})