summaryrefslogtreecommitdiff
path: root/publications/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'publications/default.nix')
-rw-r--r--publications/default.nix29
1 files changed, 29 insertions, 0 deletions
diff --git a/publications/default.nix b/publications/default.nix
new file mode 100644
index 0000000..2c85dff
--- /dev/null
+++ b/publications/default.nix
@@ -0,0 +1,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