dotfiles

My PC Dotfiles & Website

_obsidian.nix (1559B)


# Obsidian Package Builders #
{
  lib,
  stdenvNoCC,
  fetchFromGitHub,
  fetchurl,
}: {
  mkTheme = {
    pname,
    meta ? {},
    ...
  } @ metadata:
    stdenvNoCC.mkDerivation {
      inherit pname;
      version = builtins.substring 0 7 metadata.rev;

      src = fetchFromGitHub {
        inherit (metadata) owner repo rev;
        hash = metadata.sha256;
      };

      dontBuild = true;
      installPhase = ''
        runHook preInstall
        mkdir -p $out
        cp manifest.json theme.css $out/
        runHook postInstall
      '';

      meta = {maintainers = ["maydayv7"];} // meta;
    };

  mkPlugin = {
    pname,
    owner,
    repo,
    version,
    hashes,
    meta ? {},
    ...
  }: let
    base = "https://github.com/${owner}/${repo}/releases/download/${version}";
    main = fetchurl {
      url = "${base}/main.js";
      hash = hashes.main;
    };
    manifest = fetchurl {
      url = "${base}/manifest.json";
      hash = hashes.manifest;
    };
    styles =
      if hashes ? styles
      then
        fetchurl {
          url = "${base}/styles.css";
          hash = hashes.styles;
        }
      else null;
  in
    stdenvNoCC.mkDerivation {
      inherit pname version;

      dontUnpack = true;
      installPhase = ''
        runHook preInstall
        mkdir -p $out
        cp ${main} $out/main.js
        cp ${manifest} $out/manifest.json
        ${lib.optionalString (styles != null) "cp ${styles} $out/styles.css"}
        runHook postInstall
      '';

      meta = {maintainers = ["maydayv7"];} // meta;
    };
}