wow
All checks were successful
CI / list-packages (push) Successful in 3s

> Co-authored-by: paring <paringchan@proton.me>
This commit is contained in:
암냥 2026-04-25 13:22:31 +09:00
commit 9d233c7b04
No known key found for this signature in database

View file

@ -1,49 +1,95 @@
{ stdenv }: {
lib,
stdenv,
symlinkJoin,
}:
let let
homepage = "https://colorfulstage.com/media/download/"; homepage = "https://colorfulstage.com/media/download/";
pnameBase = "pjsk-cursor";
mkCursor = { name, src }:
stdenv.mkDerivation rec {
inherit name src;
version = "1.0.0"; version = "1.0.0";
installPhase = ''
runHook preInstall
install -dm 0755 $out/share/icons/${name}
cp -rf . $out/share/icons/${name}
runHook postInstall
'';
meta = { meta = {
description = "Project Sekai cursor theme"; description = "Project Sekai cursor theme";
inherit homepage; inherit homepage;
}; };
mkCursor =
{ pname, src }:
stdenv.mkDerivation {
inherit
pname
src
version
meta
;
installPhase = ''
runHook preInstall
install -dm 0755 $out/share/icons/${pname}
cp -rf . $out/share/icons/${pname}
runHook postInstall
'';
}; };
makeVariant = group: character: makeVariant =
{ group: character:
let
pnameVariant = "${pnameBase}-${group}-${character}";
variants = {
ani = mkCursor { ani = mkCursor {
name = "pjsk-cursor-${group}-${character}-ani"; pname = "${pnameVariant}-ani";
src = ../../assets/${group}-${character}-ani.tar.gz; src = ../../assets/${group}-${character}-ani.tar.gz;
}; };
cur = mkCursor { cur = mkCursor {
name = "pjsk-cursor-${group}-${character}-cur"; pname = "${pnameVariant}-cur";
src = ../../assets/${group}-${character}-cur.tar.gz; src = ../../assets/${group}-${character}-cur.tar.gz;
}; };
}; };
in
symlinkJoin {
pname = pnameVariant;
inherit version meta;
makeGroup = group: characters: paths = lib.attrsets.attrValues variants;
builtins.listToAttrs (map (character: { passthru = variants;
};
makeGroup =
group: characters:
let
pname = "${pnameBase}-${group}";
cursors = builtins.listToAttrs (
map (character: {
name = character; name = character;
value = makeVariant group character; value = makeVariant group character;
}) characters); }) characters
in );
{
mkCursorVariantJoin =
pname: selector:
symlinkJoin {
inherit pname version meta;
paths = lib.mapAttrsToList (name: selector) cursors;
};
in
symlinkJoin {
inherit pname version meta;
paths = lib.attrsets.attrValues cursors;
passthru = cursors // {
cur = mkCursorVariantJoin "${pname}-cur" (cursor: cursor.cur);
ani = mkCursorVariantJoin "${pname}-ani" (cursor: cursor.ani);
};
};
groups = {
leoneed = makeGroup "leoneed" [ leoneed = makeGroup "leoneed" [
"honami" "honami"
"ichika" "ichika"
@ -92,4 +138,22 @@ in
"rui" "rui"
"tsukasa" "tsukasa"
]; ];
};
mkGroupVariantJoin =
pname: selector:
symlinkJoin {
inherit pname version meta;
paths = lib.mapAttrsToList (name: selector) groups;
};
in
symlinkJoin {
pname = pnameBase;
inherit version meta;
paths = lib.attrsets.attrValues groups;
passthru = groups // {
cur = mkGroupVariantJoin "${pnameBase}-cur" (group: group.cur);
ani = mkGroupVariantJoin "${pnameBase}-ani" (group: group.ani);
};
} }