lol

Merge pull request #163542 from sandro-fugro/add-darwin-support-obsidian

authored by

Ben Siraphob and committed by
GitHub
267148d1 26adc1f8

+92 -63
+6
maintainers/maintainer-list.nix
··· 9260 9260 githubId = 23431373; 9261 9261 name = "Christoph Neidahl"; 9262 9262 }; 9263 + opeik = { 9264 + email = "sandro@stikic.com"; 9265 + github = "opeik"; 9266 + githubId = 11566773; 9267 + name = "Sandro Stikić"; 9268 + }; 9263 9269 orbekk = { 9264 9270 email = "kjetil.orbekk@gmail.com"; 9265 9271 github = "orbekk";
+86 -63
pkgs/applications/misc/obsidian/default.nix
··· 1 - { stdenv, fetchurl, lib, makeWrapper, electron_16, makeDesktopItem, graphicsmagick 2 - , writeScript }: 3 - 1 + { stdenv 2 + , fetchurl 3 + , lib 4 + , makeWrapper 5 + , electron_16 6 + , makeDesktopItem 7 + , graphicsmagick 8 + , writeScript 9 + , undmg 10 + , unzip 11 + }: 4 12 let 5 - electron = electron_16; 6 - icon = fetchurl { 7 - url = 8 - "https://forum.obsidian.md/uploads/default/original/1X/bf119bd48f748f4fd2d65f2d1bb05d3c806883b5.png"; 9 - sha256 = "18ylnbvxr6k4x44c4i1d55wxy2dq4fdppp43a4wl6h6zar0sc9s2"; 13 + inherit (stdenv.hostPlatform) system; 14 + pname = "obsidian"; 15 + version = "0.13.31"; 16 + meta = with lib; { 17 + description = "A powerful knowledge base that works on top of a local folder of plain text Markdown files"; 18 + homepage = "https://obsidian.md"; 19 + downloadPage = "https://github.com/obsidianmd/obsidian-releases/releases"; 20 + license = licenses.obsidian; 21 + maintainers = with maintainers; [ conradmearns zaninime opeik ]; 10 22 }; 11 23 12 - desktopItem = makeDesktopItem { 13 - name = "obsidian"; 14 - desktopName = "Obsidian"; 15 - comment = "Knowledge base"; 16 - icon = "obsidian"; 17 - exec = "obsidian"; 18 - categories = [ "Office" ]; 24 + src = fetchurl { 25 + url = "https://github.com/obsidianmd/obsidian-releases/releases/download/v${version}/obsidian-${version}${extension}"; 26 + inherit sha256; 19 27 }; 20 28 21 - updateScript = writeScript "obsidian-updater" '' 22 - #!/usr/bin/env nix-shell 23 - #!nix-shell -i bash -p curl jq common-updater-scripts 29 + sha256 = rec { 30 + x86_64-linux = "v3Zm5y8V1KyWDQeJxhryBojz56OTT7gfT+pLGDUD4zs="; 31 + x86_64-darwin = "m/81uuDhMJJ1tHTUPww+xNdwsaYCOmeNtbjdwMAwhBU="; 32 + aarch64-darwin = x86_64-darwin; 33 + }.${system}; 24 34 25 - set -eu -o pipefail 35 + extension = rec { 36 + x86_64-linux = ".tar.gz"; 37 + x86_64-darwin = "-universal.dmg"; 38 + aarch64-darwin = x86_64-darwin; 39 + }.${system}; 26 40 27 - latestVersion="$(curl -sS https://raw.githubusercontent.com/obsidianmd/obsidian-releases/master/desktop-releases.json | jq -r '.latestVersion')" 41 + linux = stdenv.mkDerivation rec { 42 + icon = fetchurl { 43 + url = "https://forum.obsidian.md/uploads/default/original/1X/bf119bd48f748f4fd2d65f2d1bb05d3c806883b5.png"; 44 + sha256 = "18ylnbvxr6k4x44c4i1d55wxy2dq4fdppp43a4wl6h6zar0sc9s2"; 45 + }; 28 46 29 - update-source-version obsidian "$latestVersion" 30 - ''; 47 + desktopItem = makeDesktopItem { 48 + name = "obsidian"; 49 + desktopName = "Obsidian"; 50 + comment = "Knowledge base"; 51 + icon = "obsidian"; 52 + exec = "obsidian"; 53 + categories = [ "Office" ]; 54 + }; 31 55 32 - in stdenv.mkDerivation rec { 33 - pname = "obsidian"; 34 - version = "0.13.30"; 56 + inherit pname version src; 57 + meta.platforms = [ "x86_64-linux" ]; 58 + nativeBuildInputs = [ makeWrapper graphicsmagick ]; 59 + installPhase = '' 60 + runHook preInstall 61 + mkdir -p $out/bin 62 + makeWrapper ${electron_16}/bin/electron $out/bin/obsidian \ 63 + --add-flags $out/share/obsidian/app.asar 64 + install -m 444 -D resources/app.asar $out/share/obsidian/app.asar 65 + install -m 444 -D resources/obsidian.asar $out/share/obsidian/obsidian.asar 66 + install -m 444 -D "${desktopItem}/share/applications/"* \ 67 + -t $out/share/applications/ 68 + for size in 16 24 32 48 64 128 256 512; do 69 + mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps 70 + gm convert -resize "$size"x"$size" ${icon} $out/share/icons/hicolor/"$size"x"$size"/apps/obsidian.png 71 + done 72 + runHook postInstall 73 + ''; 35 74 36 - src = fetchurl { 37 - url = "https://github.com/obsidianmd/obsidian-releases/releases/download/v${version}/obsidian-${version}.tar.gz"; 38 - sha256 = "ymdqdDD7WWfol/jLBsz8tEzcN7Ed1HSIrkuA51cvKKw="; 75 + passthru.updateScript = writeScript "updater" '' 76 + #!/usr/bin/env nix-shell 77 + #!nix-shell -i bash -p curl jq common-updater-scripts 78 + set -eu -o pipefail 79 + latestVersion="$(curl -sS https://raw.githubusercontent.com/obsidianmd/obsidian-releases/master/desktop-releases.json | jq -r '.latestVersion')" 80 + update-source-version obsidian "$latestVersion" 81 + ''; 39 82 }; 40 83 41 - nativeBuildInputs = [ makeWrapper graphicsmagick ]; 42 - 43 - installPhase = '' 44 - runHook preInstall 45 - 46 - mkdir -p $out/bin 47 - 48 - makeWrapper ${electron}/bin/electron $out/bin/obsidian \ 49 - --add-flags $out/share/obsidian/app.asar 50 - 51 - install -m 444 -D resources/app.asar $out/share/obsidian/app.asar 52 - install -m 444 -D resources/obsidian.asar $out/share/obsidian/obsidian.asar 53 - 54 - install -m 444 -D "${desktopItem}/share/applications/"* \ 55 - -t $out/share/applications/ 56 - 57 - for size in 16 24 32 48 64 128 256 512; do 58 - mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps 59 - gm convert -resize "$size"x"$size" ${icon} $out/share/icons/hicolor/"$size"x"$size"/apps/obsidian.png 60 - done 61 - 62 - runHook postInstall 63 - ''; 64 - 65 - passthru.updateScript = updateScript; 66 - 67 - meta = with lib; { 68 - description = 69 - "A powerful knowledge base that works on top of a local folder of plain text Markdown files"; 70 - homepage = "https://obsidian.md"; 71 - downloadPage = "https://github.com/obsidianmd/obsidian-releases/releases"; 72 - license = licenses.obsidian; 73 - maintainers = with maintainers; [ conradmearns zaninime ]; 74 - platforms = [ "x86_64-linux" ]; 84 + darwin = stdenv.mkDerivation rec { 85 + appname = "Obsidian"; 86 + inherit pname version src; 87 + meta.platforms = [ "x86_64-darwin" "aarch64-darwin" ]; 88 + sourceRoot = "${appname}.app"; 89 + nativeBuildInputs = [ makeWrapper undmg unzip ]; 90 + installPhase = '' 91 + runHook preInstall 92 + mkdir -p $out/{Applications/${appname}.app,bin} 93 + cp -R . $out/Applications/${appname}.app 94 + makeWrapper $out/Applications/${appname}.app/Contents/MacOS/${appname} $out/bin/${pname} 95 + runHook postInstall 96 + ''; 75 97 }; 76 - } 98 + in 99 + if stdenv.isDarwin then darwin else linux