about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/networking/charles/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/networking/charles/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/networking/charles/default.nix98
1 files changed, 59 insertions, 39 deletions
diff --git a/nixpkgs/pkgs/applications/networking/charles/default.nix b/nixpkgs/pkgs/applications/networking/charles/default.nix
index 3f019d177023..98d4e25ef872 100644
--- a/nixpkgs/pkgs/applications/networking/charles/default.nix
+++ b/nixpkgs/pkgs/applications/networking/charles/default.nix
@@ -1,48 +1,68 @@
-{ stdenv, fetchurl, makeDesktopItem, jre, makeWrapper }:
+{
+stdenv
+, makeWrapper
+, makeDesktopItem
+, fetchurl
+, jre
+}:
 
 let
-  desktopItem = makeDesktopItem {
-    categories = "Network;Development;WebDevelopment;Java;";
-    desktopName = "Charles";
-    exec = "charles %F";
-    genericName  = "Web Debugging Proxy";
-    icon = "charles-proxy";
-    mimeType = "application/x-charles-savedsession;application/x-charles-savedsession+xml;application/x-charles-savedsession+json;application/har+json;application/vnd.tcpdump.pcap;application/x-charles-trace";
-    name = "Charles";
-    startupNotify = "true";
-  };
-
-in stdenv.mkDerivation rec {
-  name = "charles-${version}";
-  version = "4.2.7";
-
-  src = fetchurl {
-    url = "https://www.charlesproxy.com/assets/release/${version}/charles-proxy-${version}.tar.gz";
-    sha256 = "1nycw3wpbfwj4ijjaq5k0f4xipj8j605fs0yjzgl66gmv7r583rd";
-  };
+  generic = { version, sha256, ... }@attrs:
+  let
+    desktopItem = makeDesktopItem {
+      categories = "Network;Development;WebDevelopment;Java;";
+      desktopName = "Charles";
+      exec = "charles %F";
+      genericName  = "Web Debugging Proxy";
+      icon = "charles-proxy";
+      mimeType = "application/x-charles-savedsession;application/x-charles-savedsession+xml;application/x-charles-savedsession+json;application/har+json;application/vnd.tcpdump.pcap;application/x-charles-trace";
+      name = "Charles";
+      startupNotify = "true";
+    };
+
+    attrs' = builtins.removeAttrs attrs ["version" "sha256"];
+    in stdenv.mkDerivation rec {
+      name = "charles-${version}";
+      inherit version;
+
+      src = fetchurl {
+        url = "https://www.charlesproxy.com/assets/release/${version}/charles-proxy-${version}.tar.gz";
+        inherit sha256;
+      };
+      buildInputs = [ makeWrapper ];
 
-  buildInputs = [ makeWrapper ];
+      installPhase = ''
+        makeWrapper ${jre}/bin/java $out/bin/charles \
+          --add-flags "-Xmx1024M -Dcharles.config='~/.charles.config' -jar $out/share/java/charles.jar"
 
-  installPhase = ''
-    makeWrapper ${jre}/bin/java $out/bin/charles \
-      --add-flags "-Xmx1024M -Dcharles.config='~/.charles.config' -jar $out/share/java/charles.jar"
+        for fn in lib/*.jar; do
+          install -D -m644 $fn $out/share/java/$(basename $fn)
+        done
 
-    for fn in lib/*.jar; do
-      install -D -m644 $fn $out/share/java/$(basename $fn)
-    done
+        mkdir -p $out/share/applications
+        ln -s ${desktopItem}/share/applications/* $out/share/applications/
 
-    mkdir -p $out/share/applications
-    ln -s ${desktopItem}/share/applications/* $out/share/applications/
+        mkdir -p $out/share/icons
+        cp -r icon $out/share/icons/hicolor
+      '';
 
-    mkdir -p $out/share/icons
-    cp -r icon $out/share/icons/hicolor
-  '';
+      meta = with stdenv.lib; {
+        description = "Web Debugging Proxy";
+        homepage = https://www.charlesproxy.com/;
+        maintainers = [ maintainers.kalbasit ];
+        license = stdenv.lib.licenses.unfree;
+        platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
+      };
+    };
 
-  meta = with stdenv.lib; {
-    description = "Web Debugging Proxy";
-    homepage = https://www.charlesproxy.com/;
-    maintainers = [ maintainers.kalbasit ];
-    license = stdenv.lib.licenses.unfree;
-    platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
-  };
+in rec {
+  charles4 = (generic {
+    version = "4.2.7";
+    sha256 = "1nycw3wpbfwj4ijjaq5k0f4xipj8j605fs0yjzgl66gmv7r583rd";
+  });
+  charles3 = (generic {
+    version = "3.12.3";
+    sha256 = "13zk82ny1w5zd9qcs9qkq0kdb22ni5byzajyshpxdfm4zv6p32ss";
+  });
 }
+