-let nixpkgs_unstable = import (builtins.fetchTarball {
- # FIXME: upgrade to nixpkgs 19 when stable and stick to stable
- # versions
- name = "nixos-unstable-2018-12-08";
- url = https://github.com/nixos/nixpkgs/archive/61c3169a0e17d789c566d5b241bfe309ce4a6275.tar.gz;
- sha256 = "0qbycg7wkb71v20rchlkafrjfpbk2fnlvvbh3ai9pyfisci5wxvq";
-}) {};
-in
- with nixpkgs_unstable;
-{
- inherit nixpkgs_unstable;
+{ pkgs }:
+with pkgs;
+rec {
+ yarn2nixPackage = let
+ src = fetchFromGitHub {
+ owner = "moretea";
+ repo = "yarn2nix";
+ rev = "780e33a07fd821e09ab5b05223ddb4ca15ac663f";
+ sha256 = "1f83cr9qgk95g3571ps644rvgfzv2i4i7532q8pg405s4q5ada3h";
+ fetchSubmodules = true;
+ };
+ in
+ (callPackage src {}) // { inherit src; };
+
fetchedGithub = path:
let
json = lib.importJSON path;
name = "${json.meta.name}-${version}";
src = fetchgit json.git;
};
+
+ fetchedGitPrivate = path:
+ let
+ json = lib.importJSON path;
+ in rec {
+ version = json.tag;
+ name = "${json.meta.name}-${version}";
+ src = fetchgitPrivate json.git;
+ };
+
+ wrap = { paths ? [], vars ? {}, file ? null, script ? null, name ? "wrap" }:
+ assert file != null || script != null ||
+ abort "wrap needs 'file' or 'script' argument";
+ with rec {
+ set = n: v: "--set ${pkgs.lib.escapeShellArg n} " +
+ "${pkgs.lib.escapeShellArg v}";
+ args = (map (p: "--prefix PATH : ${p}/bin") paths) ++
+ (builtins.attrValues (pkgs.lib.mapAttrs set vars));
+ };
+ runCommand name
+ {
+ f = if file == null then writeScript name script else file;
+ buildInputs = [ makeWrapper ];
+ }
+ ''
+ makeWrapper "$f" "$out" ${toString args}
+ '';
+
+ # This adds header colors to the builds, but it rebuilds the whole
+ # world from scratch, so only use it to debug!
+ # add it as postHook in derivations
+ immaePostHook = ''
+ header() {
+ echo -ne "\033[1;36m"
+ echo -n "$1"
+ echo -e "\033[0m"
+ }
+
+ echoCmd() {
+ printf "\033[1;34m%s:\033[0m" "$1"
+ shift
+ printf ' %q' "$@"
+ echo
+ }
+ '';
+
}