dotfiles

My PC Dotfiles & Website

packages/_obsidian.nix (1559B)


 1# Obsidian Package Builders #
 2{
 3  lib,
 4  stdenvNoCC,
 5  fetchFromGitHub,
 6  fetchurl,
 7}: {
 8  mkTheme = {
 9    pname,
10    meta ? {},
11    ...
12  } @ metadata:
13    stdenvNoCC.mkDerivation {
14      inherit pname;
15      version = builtins.substring 0 7 metadata.rev;
16
17      src = fetchFromGitHub {
18        inherit (metadata) owner repo rev;
19        hash = metadata.sha256;
20      };
21
22      dontBuild = true;
23      installPhase = ''
24        runHook preInstall
25        mkdir -p $out
26        cp manifest.json theme.css $out/
27        runHook postInstall
28      '';
29
30      meta = {maintainers = ["maydayv7"];} // meta;
31    };
32
33  mkPlugin = {
34    pname,
35    owner,
36    repo,
37    version,
38    hashes,
39    meta ? {},
40    ...
41  }: let
42    base = "https://github.com/${owner}/${repo}/releases/download/${version}";
43    main = fetchurl {
44      url = "${base}/main.js";
45      hash = hashes.main;
46    };
47    manifest = fetchurl {
48      url = "${base}/manifest.json";
49      hash = hashes.manifest;
50    };
51    styles =
52      if hashes ? styles
53      then
54        fetchurl {
55          url = "${base}/styles.css";
56          hash = hashes.styles;
57        }
58      else null;
59  in
60    stdenvNoCC.mkDerivation {
61      inherit pname version;
62
63      dontUnpack = true;
64      installPhase = ''
65        runHook preInstall
66        mkdir -p $out
67        cp ${main} $out/main.js
68        cp ${manifest} $out/manifest.json
69        ${lib.optionalString (styles != null) "cp ${styles} $out/styles.css"}
70        runHook postInstall
71      '';
72
73      meta = {maintainers = ["maydayv7"];} // meta;
74    };
75}