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 let
homepage = "https://colorfulstage.com/media/download/"; homepage = "https://colorfulstage.com/media/download/";
pnameBase = "pjsk-cursor";
version = "1.0.0";
mkCursor = { name, src }: meta = {
stdenv.mkDerivation rec { description = "Project Sekai cursor theme";
inherit name src; inherit homepage;
version = "1.0.0"; };
mkCursor =
{ pname, src }:
stdenv.mkDerivation {
inherit
pname
src
version
meta
;
installPhase = '' installPhase = ''
runHook preInstall 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 runHook postInstall
''; '';
meta = {
description = "Project Sekai cursor theme";
inherit homepage;
};
}; };
makeVariant = group: character: makeVariant =
{ group: character:
ani = mkCursor { let
name = "pjsk-cursor-${group}-${character}-ani"; pnameVariant = "${pnameBase}-${group}-${character}";
src = ../../assets/${group}-${character}-ani.tar.gz; variants = {
}; ani = mkCursor {
pname = "${pnameVariant}-ani";
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;
paths = lib.attrsets.attrValues variants;
passthru = variants;
}; };
makeGroup = group: characters: makeGroup =
builtins.listToAttrs (map (character: { group: characters:
name = character; let
value = makeVariant group character; pname = "${pnameBase}-${group}";
}) characters); 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 in
{ symlinkJoin {
leoneed = makeGroup "leoneed" [ pname = pnameBase;
"honami" inherit version meta;
"ichika" paths = lib.attrsets.attrValues groups;
"miku" passthru = groups // {
"saki" cur = mkGroupVariantJoin "${pnameBase}-cur" (group: group.cur);
"shiho" ani = mkGroupVariantJoin "${pnameBase}-ani" (group: group.ani);
]; };
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"
];
} }