{ pkgs ? (import /home/lukas/src/nix/nixpkgs {}) }:
let
lib = pkgs.lib;
nolicense =
lib.filterAttrs
(name: v:
let
val = builtins.tryEval v;
in val.success && (lib.hasAttrByPath [ "meta" "license" ] val.value))
pkgs;
nolicense-names = builtins.attrNames nolicense;
licensee-out = name: pkg:
let pkgSrc = pkg.overrideAttrs (oldAttrs: {
name = "${if oldAttrs ? name then oldAttrs.name else "anonymous"}-src";
phases = [ "unpackPhase" "installPhase" ];
installPhase = ''
cp -R . $out
mkdir -p $out
'';
outputs = [ "out" ];
});
in pkgs.runCommandLocal
"licensee-${name}.txt" {}
''
mkdir lol
(env HOME=lol ${pkgs.licensee}/bin/licensee detect --json ${pkgSrc} || true) > $out
'';
licensee = name: src:
let licenses = map (x: x.key) (builtins.fromJSON (builtins.readFile (licensee-out name src))).licenses;
in if builtins.length licenses == 0
then "no license"
else lib.concatStringsSep ", " licenses;
in
pkgs.writeText
"licenses.txt"
(lib.concatStringsSep "\n"
(map
(name:
let
licenseStr = licensee name pkgs."${name}";
in "${name}, ${licenseStr}")
nolicense-names))