From c2ea196a53f8703b76198c1d10aac4b529705b7c Mon Sep 17 00:00:00 2001
From: Derick Eddington <4731128+DerickEddington@users.noreply.github.com>
Date: Mon, 14 Feb 2022 11:44:26 -0800
Subject: [PATCH] comixcursors: init at 0.9.2
---
pkgs/data/icons/comixcursors/default.nix | 125 ++++++++++++++++++
.../comixcursors/makefile-shell-var.patch | 11 ++
pkgs/top-level/all-packages.nix | 2 +
3 files changed, 138 insertions(+)
create mode 100644 pkgs/data/icons/comixcursors/default.nix
create mode 100644 pkgs/data/icons/comixcursors/makefile-shell-var.patch
diff --git a/pkgs/data/icons/comixcursors/default.nix b/pkgs/data/icons/comixcursors/default.nix
new file mode 100644
index 000000000000..aa744878bcb3
--- /dev/null
+++ b/pkgs/data/icons/comixcursors/default.nix
@@ -0,0 +1,125 @@
+{ lib, stdenv, fetchFromGitLab, bc, librsvg, xcursorgen }:
+
+let
+ dimensions = {
+ color = [ "Black" "Blue" "Green" "Orange" "Red" "White" ];
+ opacity = [ "" "Opaque_" ]; # Translucent or opaque.
+ thickness = [ "" "Slim_" ]; # Thick or slim edges.
+ handedness = [ "" "LH_" ]; # Right- or left-handed.
+ };
+ product = lib.cartesianProductOfSets dimensions;
+ variantName =
+ { color, opacity, thickness, handedness }:
+ "${handedness}${opacity}${thickness}${color}";
+ variants =
+ # (The order of this list is already good looking enough to show in the
+ # meta.longDescription.)
+ map variantName product;
+in
+stdenv.mkDerivation rec {
+ pname = "comixcursors";
+ version = "0.9.2";
+
+ src = fetchFromGitLab {
+ owner = "limitland";
+ repo = "comixcursors";
+ # https://gitlab.com/limitland/comixcursors/-/issues/3
+ rev = "8c327c8514ab3a352583605c1ddcb7eb3d1d302b";
+ sha256 = "0bpxqw4izj7m0zb9lnxnmsjicfw60ppkdyv5nwrrz4x865wb296a";
+ };
+
+ nativeBuildInputs = [ bc librsvg xcursorgen ];
+
+ patches = [ ./makefile-shell-var.patch ];
+
+ postPatch = ''
+ patchShebangs ./install-all ./bin/
+ '';
+
+ # install-all is used instead of the directions in upstream's INSTALL file,
+ # because using its Makefile directly is broken. Upstream itself seems to use
+ # its build-distribution script instead, which also uses install-all, but we
+ # do not use it because it does extra things for other distros.
+ #
+ # When not all of the variants, i.e. only a smaller subset of them, are
+ # desired (i.e. when a subset of outputs are chosen), install-all will still
+ # build all of them. While upstream appears to provide old functionality for
+ # building only a subset, it is broken and we do not use it. With prebuilt
+ # substitutions, installers of this package will get only the outputs they
+ # chose.
+ buildPhase = ''
+ ICONSDIR=$TMP/staged ./install-all
+ '';
+
+ installPhase = ''
+ for outputName in $outputs ; do
+ if [ $outputName != out ]; then
+ local outputDir=''${!outputName};
+ local iconsDir=$outputDir/share/icons
+ local cursorName=$(tr _ - <<<"$outputName")
+
+ mkdir -p $iconsDir
+ cp -r -d $TMP/staged/ComixCursors-$cursorName $iconsDir
+
+ unset outputDir iconsDir cursorName
+ fi
+ done
+
+ # Need this directory (empty) to prevent the builder scripts from breaking.
+ mkdir -p $out
+ '';
+
+ outputs = let
+ default = "Opaque_Black";
+ in
+ # Have the most-traditional variant be the default output (as the first).
+ # Even with outputsToInstall=[], the default/first still has an effect on
+ # some Nix tools (e.g. nix-build).
+ [ default ] ++ (lib.remove default variants)
+ # Need a dummy "out" output to prevent the builder scripts from breaking.
+ ++ [ "out" ];
+
+ # No default output (to the extent possible). Instead, the outputs'
+ # attributes are used to choose which variant(s) to have.
+ outputsToInstall = [];
+
+ meta = with lib; {
+ description = "The Comix Cursors mouse themes";
+ longDescription = ''
+ There are many (${toString ((length outputs) - 1)}) variants of color,
+ opacity, edge thickness, and right- or left-handedness, for this cursor
+ theme. This package's derivation has an output for each of these
+ variants, named following the upstream convention, and the attribute for
+ an output must be used to install a variant. E.g.:
+
+ environment.systemPackages = [
+ comixcursors.Blue
+ comixcursors.Opaque_Orange
+ comixcursors.Slim_Red
+ comixcursors.Opaque_Slim_White
+ comixcursors.LH_Green
+ comixcursors.LH_Opaque_Black
+ comixcursors.LH_Slim_Orange
+ comixcursors.LH_Opaque_Slim_Blue
+ ];
+
+
+ Attempting to use just comixcursors, i.e. without an
+ output attribute, will not install any variants. To install all the
+ variants, use comixcursors.all (which is a list), e.g.:
+
+ environment.systemPackages = comixcursors.all ++ [...];
+
+
+ The complete list of output attributes is:
+
+ ${concatStringsSep "\n" variants}
+
+ '';
+ homepage = "https://gitlab.com/limitland/comixcursors";
+ changelog = "https://gitlab.com/limitland/comixcursors/-/blob/HEAD/NEWS";
+ license = licenses.gpl3Plus;
+ maintainers = [ maintainers.DerickEddington ];
+ platforms = platforms.all;
+ };
+}
diff --git a/pkgs/data/icons/comixcursors/makefile-shell-var.patch b/pkgs/data/icons/comixcursors/makefile-shell-var.patch
new file mode 100644
index 000000000000..4032244c9ef0
--- /dev/null
+++ b/pkgs/data/icons/comixcursors/makefile-shell-var.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -22,8 +22,6 @@
+
+ # Makefile for ComixCursors project.
+
+-SHELL = /bin/bash
+-
+ CURSORSNAME = ComixCursors
+ PACKAGENAME ?= ${CURSORSNAME}
+ SUMMARY ?= The original Comix Cursors
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index d8f375441406..6fec45447e49 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -23444,6 +23444,8 @@ with pkgs;
comic-relief = callPackage ../data/fonts/comic-relief {};
+ comixcursors = callPackage ../data/icons/comixcursors {};
+
coreclr = callPackage ../development/compilers/coreclr { };
corefonts = callPackage ../data/fonts/corefonts { };