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,95 +1,159 @@
{ stdenv }:
{
lib,
stdenv,
symlinkJoin,
}:
let
homepage = "https://colorfulstage.com/media/download/";
pnameBase = "pjsk-cursor";
version = "1.0.0";
mkCursor = { name, src }:
stdenv.mkDerivation rec {
inherit name src;
version = "1.0.0";
meta = {
description = "Project Sekai cursor theme";
inherit homepage;
};
mkCursor =
{ pname, src }:
stdenv.mkDerivation {
inherit
pname
src
version
meta
;
installPhase = ''
runHook preInstall
install -dm 0755 $out/share/icons/${name}
install -dm 0755 $out/share/icons/${pname}
cp -rf . $out/share/icons/${name}
cp -rf . $out/share/icons/${pname}
runHook postInstall
'';
meta = {
description = "Project Sekai cursor theme";
inherit homepage;
};
};
makeVariant = group: character:
{
ani = mkCursor {
name = "pjsk-cursor-${group}-${character}-ani";
src = ../../assets/${group}-${character}-ani.tar.gz;
};
makeVariant =
group: character:
let
pnameVariant = "${pnameBase}-${group}-${character}";
variants = {
ani = mkCursor {
pname = "${pnameVariant}-ani";
src = ../../assets/${group}-${character}-ani.tar.gz;
};
cur = mkCursor {
name = "pjsk-cursor-${group}-${character}-cur";
src = ../../assets/${group}-${character}-cur.tar.gz;
cur = mkCursor {
pname = "${pnameVariant}-cur";
src = ../../assets/${group}-${character}-cur.tar.gz;
};
};
in
symlinkJoin {
pname = pnameVariant;
inherit version meta;
paths = lib.attrsets.attrValues variants;
passthru = variants;
};
makeGroup = group: characters:
builtins.listToAttrs (map (character: {
name = character;
value = makeVariant group character;
}) characters);
makeGroup =
group: characters:
let
pname = "${pnameBase}-${group}";
cursors = builtins.listToAttrs (
map (character: {
name = character;
value = makeVariant group character;
}) characters
);
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" [
"honami"
"ichika"
"miku"
"saki"
"shiho"
];
mmj = makeGroup "mmj" [
"airi"
"haruka"
"miku"
"minori"
"shizuku"
];
n25 = makeGroup "n25" [
"ena"
"kanade"
"mafuyu"
"miku"
"mizuki"
];
vbs = makeGroup "vbs" [
"akito"
"an"
"kohane"
"miku"
"toya"
];
virtualsinger = makeGroup "virtualsinger" [
"kaito"
"len"
"luka"
"meiko"
"miku"
"rin"
];
wxs = makeGroup "wxs" [
"emu"
"miku"
"nene"
"rui"
"tsukasa"
];
};
mkGroupVariantJoin =
pname: selector:
symlinkJoin {
inherit pname version meta;
paths = lib.mapAttrsToList (name: selector) groups;
};
in
{
leoneed = makeGroup "leoneed" [
"honami"
"ichika"
"miku"
"saki"
"shiho"
];
mmj = makeGroup "mmj" [
"airi"
"haruka"
"miku"
"minori"
"shizuku"
];
n25 = makeGroup "n25" [
"ena"
"kanade"
"mafuyu"
"miku"
"mizuki"
];
vbs = makeGroup "vbs" [
"akito"
"an"
"kohane"
"miku"
"toya"
];
virtualsinger = makeGroup "virtualsinger" [
"kaito"
"len"
"luka"
"meiko"
"miku"
"rin"
];
wxs = makeGroup "wxs" [
"emu"
"miku"
"nene"
"rui"
"tsukasa"
];
}
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);
};
}