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 { };