{ argopkgs-src ? let hostPkgs = import {}; pinnedVersion = hostPkgs.lib.importJSON ./pin.json; in hostPkgs.fetchgit { inherit (pinnedVersion) url rev sha256; }, pkgs ? import argopkgs-src {}, nrm-src ? pkgs.nodelevel.nrm.src, containers-src ? pkgs.nodelevel.containers.src, libnrm-src ? pkgs.nodelevel.libnrm.src }: let filterHdevTools = builtins.filterSource (path: type: baseNameOf path != ".hdevtools.sock"); hpkgs = pkgs.haskellPackages.override { overrides = self: super: rec { argo = self.callCabal2nix "argo" (filterHdevTools ./argo) {}; argotk = self.callCabal2nix "argotk" (filterHdevTools ./argotk) {}; }; }; devInputs = with hpkgs; with pkgs; [ sysstat ]; devHPackages = with hpkgs; [ cabal-install apply-refact hdevtools hindent hlint shake brittany ghcid ]; shellHook = '' source ${./completion/argotk.sh} echo "Installed bash completion." ''; in rec { nrm = pkgs.nodelevel.nrm.overrideAttrs (old: { src = nrm-src; }); libnrm = pkgs.nodelevel.libnrm.overrideAttrs (old: { src = libnrm-src; }); containers = pkgs.nodelevel.containers.overrideAttrs (old: { src = containers-src; }); amg = pkgs.applications.nrm.amg; inherit(hpkgs) argo argotk; hack-argo = hpkgs.shellFor { packages = p: with p; [ argo ]; withHoogle = true; buildInputs = devInputs ++ devHPackages; }; hack-argotk = hpkgs.shellFor { packages = p: with p; [ argotk ]; withHoogle = true; buildInputs = devInputs ++ devHPackages; }; manifests = ./manifests; argotkp = pkgs.stdenv.mkDerivation rec { name = "env"; env = pkgs.buildEnv { name = name; paths = buildInputs ++ propagatedBuildInputs; }; src = filterHdevTools ./argotk; installPhase ='' mkdir -p $out/bin mkdir -p $out/share cp argotk.hs $out/bin cp ${manifests}/* $out/share/ ''; buildInputs = [ (hpkgs.ghcWithPackages (p: [p.argo ])) ]; propagatedBuildInputs = [ (hpkgs.ghcWithPackages (p: [p.argo ])) pkgs.coreutils pkgs.utillinux ]; inherit shellHook; }; test = pkgs.stdenv.mkDerivation rec { name = "env"; env = pkgs.buildEnv { name = name; paths = buildInputs; }; buildInputs = [ argotkp pkgs.coreutils pkgs.utillinux containers amg nrm ]; inherit shellHook; MANIFESTS = ./manifests; }; hack = pkgs.stdenv.mkDerivation rec { name = "env"; env = pkgs.buildEnv { name = name; paths = buildInputs; }; buildInputs = [ containers amg nrm (hpkgs.ghcWithPackages (p: devHPackages ++ [ argotk argo (pkgs.haskell.lib.doJailbreak p.panpipe) p.turtle])) ]; inherit shellHook; MANIFESTS = ./manifests; }; test-list = let showSource = s: pkgs.runCommand "source" {} "echo '${builtins.toJSON s}' | ${pkgs.jq}/bin/jq > $out"; tests = import ./tests/default.nix {}; showTest = name: content: '' ##### TEST NAME: ${name} ##### argotest: source with type ${content.argotest.type} pointing to ${content.argotest.rev}". Detailed source info: ${builtins.readFile (showSource content.argotest.args)} nrm: source with type ${content.nrm.type} pointing to ${content.nrm.rev}". Detailed source info: ${builtins.readFile (showSource content.nrm.args)} libnrm: source with type ${content.libnrm.type} pointing to ${content.libnrm.rev}". Detailed source info: ${builtins.readFile (showSource content.libnrm.args)} containers: source with type ${content.containers.type} pointing to ${content.containers.rev}". Detailed source info: ${builtins.readFile (showSource content.containers.args)} ''; in pkgs.writeText "test-list" ('' Available test provenance configurations: ''+(builtins.concatStringsSep "\n" (pkgs.lib.mapAttrsToList showTest tests))); #testsRepresentations = pkgs.lib.mapAttrsToList (name: value: name ) tests; #output = builtins.concatStringsSep "\n" testsRepresentations; }