summaryrefslogtreecommitdiff
path: root/publications/default.nix
diff options
context:
space:
mode:
authorQuentin Aristote <quentin@aristote.fr>2022-11-11 17:27:34 +0100
committerQuentin Aristote <quentin@aristote.fr>2022-11-11 17:27:34 +0100
commit102ed4e7d78dd17ce8ce9e0b928f5123e94d0cfa (patch)
tree357bafdd2f40ca3504748998e8c9d704198a485d /publications/default.nix
add initial data
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