cyberchef: Add binary and desktop item

+40 -4
+40 -4
pkgs/by-name/cy/cyberchef/package.nix
··· 1 1 { 2 2 lib, 3 3 fetchzip, 4 + fetchurl, 4 5 stdenv, 6 + makeDesktopItem, 5 7 }: 6 8 7 - stdenv.mkDerivation rec { 8 - pname = "cyberchef"; 9 + let 10 + icon = fetchurl { 11 + url = "https://raw.githubusercontent.com/gchq/CyberChef/c57556f49f723863b9be15668fd240672cd15b09/src/web/static/images/cyberchef-512x512.png"; 12 + hash = "sha256-Lg9JbVHhdILdrRtxYFWSv9HNJUx98JOaTbs+IbS1eO0="; 13 + }; 14 + desktopItem = ( 15 + makeDesktopItem { 16 + name = "cyberchef"; 17 + desktopName = "Cyberchef"; 18 + exec = "cyberchef"; 19 + icon = "cyberchef"; 20 + comment = "Cyber Swiss Army Knife for encryption, encoding, compression and data analysis"; 21 + categories = [ "Development" ]; 22 + } 23 + ); 9 24 version = "10.19.4"; 25 + in 26 + stdenv.mkDerivation { 27 + pname = "cyberchef"; 28 + inherit version; 10 29 11 30 src = fetchzip { 12 31 url = "https://github.com/gchq/CyberChef/releases/download/v${version}/CyberChef_v${version}.zip"; 13 - sha256 = "sha256-eOMo7kdxC5HfmMrKUhGZU3vnBXibO2Fz1ftIS9RAbjY="; 32 + hash = "sha256-eOMo7kdxC5HfmMrKUhGZU3vnBXibO2Fz1ftIS9RAbjY="; 14 33 stripRoot = false; 15 34 }; 16 35 17 36 installPhase = '' 18 37 mkdir -p "$out/share/cyberchef" 38 + mkdir -p "$out/bin" 39 + 19 40 mv "CyberChef_v${version}.html" index.html 20 41 mv * "$out/share/cyberchef" 42 + 43 + cat <<INI > $out/bin/cyberchef 44 + #!/bin/sh 45 + xdg-open $out/share/cyberchef/index.html 46 + INI 47 + 48 + chmod +x $out/bin/cyberchef 49 + 50 + install -m 444 -D ${icon} $out/share/icons/hicolor/512x512/apps/cyberchef.png 51 + 52 + mkdir -p $out/share/applications/ 53 + cp ${desktopItem}/share/applications/*.desktop $out/share/applications/ 21 54 ''; 22 55 23 56 meta = { 24 57 description = "Cyber Swiss Army Knife for encryption, encoding, compression and data analysis"; 25 58 homepage = "https://gchq.github.io/CyberChef"; 26 59 changelog = "https://github.com/gchq/CyberChef/blob/v${version}/CHANGELOG.md"; 27 - maintainers = with lib.maintainers; [ sebastianblunt ]; 60 + maintainers = with lib.maintainers; [ 61 + sebastianblunt 62 + aldenparker 63 + ]; 28 64 license = lib.licenses.asl20; 29 65 platforms = lib.platforms.all; 30 66 };