summaryrefslogtreecommitdiff
path: root/publications/default.nix
blob: 2c85dffc90f9dc0a5668449e65745bb5a4f69e5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{ pkgs, lib, ... }:

let
  csl = lib.importJSON ./publications.json;
  export = id: publication: format:
    let
      publicationJSON =
        builtins.toFile "${id}.json" (builtins.toJSON [ publication ]);
      publicationOut = pkgs.runCommand "${id}.${format}" { } ''
        "${pkgs.pandoc}/bin/pandoc" "${publicationJSON}" --from csljson --to "${format}" --output "$out"
      '';
    in builtins.readFile publicationOut;
  tryInherit = inheritFrom: attrs:
    with lib;
    foldl' (tmp: next:
      tmp ++ optional (hasAttr next inheritFrom) (getAttr next inheritFrom)) [ ]
    attrs;
in builtins.map (publication:
  with publication;
  let exportThisTo = export id publication;
  in publication // {
    year = with builtins; toString (head (head issued.date-parts));
    url = URL;
    cite = {
      bibtex = exportThisTo "bibtex";
      biblatex = exportThisTo "biblatex";
      csljson = exportThisTo "csljson";
    };
  }) csl