Some checks failed
CI / list-packages (push) Successful in 13s
CI / build (pjsk-cursor-ani-leoneed-honami) (push) Successful in 8s
CI / build (pjsk-cursor-ani-leoneed-ichika) (push) Successful in 4s
CI / build (pjsk-cursor-ani-leoneed-miku) (push) Successful in 4s
CI / build (pjsk-cursor-ani-leoneed-saki) (push) Successful in 4s
CI / build (pjsk-cursor-ani-leoneed-shiho) (push) Successful in 5s
CI / build (pjsk-cursor-ani-mmj-airi) (push) Successful in 5s
CI / build (pjsk-cursor-ani-mmj-haruka) (push) Successful in 6s
CI / build (pjsk-cursor-ani-mmj-miku) (push) Successful in 5s
CI / build (pjsk-cursor-ani-mmj-minori) (push) Successful in 5s
CI / build (pjsk-cursor-ani-mmj-shizuku) (push) Successful in 5s
CI / build (pjsk-cursor-ani-n25-ena) (push) Successful in 5s
CI / build (pjsk-cursor-ani-n25-kanade) (push) Successful in 5s
CI / build (pjsk-cursor-ani-n25-miku) (push) Successful in 4s
CI / build (pjsk-cursor-ani-vbs-akito) (push) Successful in 4s
CI / build (pjsk-cursor-ani-vbs-an) (push) Successful in 4s
CI / build (pjsk-cursor-ani-vbs-kohane) (push) Successful in 4s
CI / build (pjsk-cursor-ani-vbs-miku) (push) Successful in 4s
CI / build (pjsk-cursor-ani-vbs-toya) (push) Successful in 4s
CI / build (pjsk-cursor-ani-virtualsinger-kaito) (push) Successful in 4s
CI / build (pjsk-cursor-ani-virtualsinger-len) (push) Successful in 4s
CI / build (pjsk-cursor-ani-virtualsinger-luka) (push) Successful in 4s
CI / build (pjsk-cursor-ani-virtualsinger-meiko) (push) Successful in 4s
CI / build (pjsk-cursor-ani-virtualsinger-rin) (push) Successful in 4s
CI / build (pjsk-cursor-ani-wxs-emu) (push) Successful in 4s
CI / build (pjsk-cursor-ani-wxs-nene) (push) Successful in 4s
CI / build (pjsk-cursor-ani-wxs-rui) (push) Successful in 4s
CI / build (pjsk-cursor-ani-n25-mafuyu) (push) Successful in 4s
CI / build (pjsk-cursor-ani-n25-mizuki) (push) Successful in 4s
CI / build (pjsk-cursor-ani-virtualsinger-miku) (push) Successful in 4s
CI / build (pjsk-cursor-ani-wxs-miku) (push) Successful in 4s
CI / build (pjsk-cursor-ani-wxs-tsukasa) (push) Successful in 4s
CI / build (pjsk-cursor-cur-leoneed-ichika) (push) Successful in 4s
CI / build (pjsk-cursor-cur-leoneed-miku) (push) Successful in 4s
CI / build (pjsk-cursor-cur-leoneed-saki) (push) Successful in 4s
CI / build (pjsk-cursor-cur-mmj-airi) (push) Successful in 4s
CI / build (pjsk-cursor-cur-n25-kanade) (push) Has been cancelled
CI / build (pjsk-cursor-cur-vbs-kohane) (push) Has been cancelled
CI / build (pjsk-cursor-cur-virtualsinger-meiko) (push) Has been cancelled
CI / build (pjsk-cursor-cur-wxs-rui) (push) Has been cancelled
CI / build (pjsk-cursors-ani-n25) (push) Has been cancelled
CI / build (pjsk-cursors-cur-mmj) (push) Has been cancelled
CI / build (pjsk-cursor-cur-mmj-miku) (push) Has been cancelled
CI / build (pjsk-cursor-cur-mmj-minori) (push) Has been cancelled
CI / build (pjsk-cursor-cur-leoneed-honami) (push) Successful in 4s
CI / build (pjsk-cursor-cur-leoneed-shiho) (push) Successful in 4s
CI / build (pjsk-cursor-cur-mmj-haruka) (push) Has been cancelled
CI / build (pjsk-cursors-ani-leoneed) (push) Has been cancelled
CI / build (pjsk-cursors-ani-mmj) (push) Has been cancelled
CI / build (pjsk-cursors-ani-vbs) (push) Has been cancelled
CI / build (pjsk-cursors-ani-virtualsinger) (push) Has been cancelled
CI / build (pjsk-cursors-ani-wxs) (push) Has been cancelled
CI / build (pjsk-cursors-cur) (push) Has been cancelled
CI / build (pjsk-cursors-cur-leoneed) (push) Has been cancelled
CI / build (pjsk-cursors-cur-n25) (push) Has been cancelled
CI / build (pjsk-cursors-cur-vbs) (push) Has been cancelled
CI / build (pjsk-cursors-cur-virtualsinger) (push) Has been cancelled
CI / build (pjsk-cursors-cur-wxs) (push) Has been cancelled
CI / build (waterfox-bin) (push) Has been cancelled
CI / build (xcursor-mizuki) (push) Has been cancelled
CI / build (pjsk-cursor-cur-mmj-shizuku) (push) Has been cancelled
CI / build (pjsk-cursor-cur-n25-ena) (push) Has been cancelled
CI / build (pjsk-cursor-cur-n25-mafuyu) (push) Has been cancelled
CI / build (pjsk-cursor-cur-n25-miku) (push) Has been cancelled
CI / build (pjsk-cursor-cur-n25-mizuki) (push) Has been cancelled
CI / build (pjsk-cursor-cur-vbs-akito) (push) Has been cancelled
CI / build (pjsk-cursor-cur-vbs-an) (push) Has been cancelled
CI / build (pjsk-cursor-cur-vbs-miku) (push) Has been cancelled
CI / build (pjsk-cursor-cur-vbs-toya) (push) Has been cancelled
CI / build (pjsk-cursor-cur-virtualsinger-kaito) (push) Has been cancelled
CI / build (pjsk-cursor-cur-virtualsinger-len) (push) Has been cancelled
CI / build (pjsk-cursor-cur-virtualsinger-luka) (push) Has been cancelled
CI / build (pjsk-cursor-cur-virtualsinger-miku) (push) Has been cancelled
CI / build (pjsk-cursor-cur-virtualsinger-rin) (push) Has been cancelled
CI / build (pjsk-cursor-cur-wxs-emu) (push) Has been cancelled
CI / build (pjsk-cursor-cur-wxs-miku) (push) Has been cancelled
CI / build (pjsk-cursor-cur-wxs-nene) (push) Has been cancelled
CI / build (pjsk-cursor-cur-wxs-tsukasa) (push) Has been cancelled
CI / build (pjsk-cursors) (push) Has been cancelled
CI / build (pjsk-cursors-ani) (push) Has been cancelled
142 lines
No EOL
4.1 KiB
Nix
142 lines
No EOL
4.1 KiB
Nix
{ stdenv, lib, symlinkJoin }:
|
|
|
|
let
|
|
homepage = "https://colorfulstage.com/media/download/";
|
|
|
|
mkCursor = { name, src }:
|
|
stdenv.mkDerivation rec {
|
|
inherit name src;
|
|
version = "1.0.0";
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
install -dm 0755 $out/share/icons/${name}
|
|
|
|
cp -rf . $out/share/icons/${name}
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = {
|
|
description = "Project Sekai cursor theme - ${name}";
|
|
inherit homepage;
|
|
};
|
|
};
|
|
|
|
groups = {
|
|
leoneed = [ "honami" "ichika" "miku" "saki" "shiho" ];
|
|
mmj = [ "airi" "haruka" "miku" "minori" "shizuku" ];
|
|
n25 = [ "ena" "kanade" "mafuyu" "miku" "mizuki" ];
|
|
vbs = [ "akito" "an" "kohane" "miku" "toya" ];
|
|
virtualsinger = [ "kaito" "len" "luka" "meiko" "miku" "rin" ];
|
|
wxs = [ "emu" "miku" "nene" "rui" "tsukasa" ];
|
|
};
|
|
|
|
# Individual cursors organized hierarchically
|
|
pjsk-cursor-tree = lib.recurseIntoAttrs (lib.genAttrs [ "ani" "cur" ] (variant:
|
|
lib.recurseIntoAttrs (lib.mapAttrs (group: characters:
|
|
lib.recurseIntoAttrs (lib.genAttrs characters (character:
|
|
mkCursor {
|
|
name = "pjsk-cursor-${variant}-${group}-${character}";
|
|
src = ../../assets/${group}-${character}-${variant}.tar.gz;
|
|
}
|
|
))
|
|
) groups)
|
|
));
|
|
|
|
# Helper to collect all derivations under a tree for symlinkJoin
|
|
collectDerivations = v:
|
|
if lib.isDerivation v then [ v ]
|
|
else lib.concatLists (map collectDerivations (lib.attrValues (builtins.removeAttrs v [ "recurseForDerivations" ])));
|
|
|
|
# Joined cursors organized hierarchically
|
|
pjsk-cursors-tree =
|
|
let
|
|
allJoined = symlinkJoin {
|
|
name = "pjsk-cursors";
|
|
paths = collectDerivations pjsk-cursor-tree;
|
|
meta = {
|
|
description = "Project Sekai cursor theme - All cursors";
|
|
inherit homepage;
|
|
};
|
|
};
|
|
variants = lib.genAttrs [ "ani" "cur" ] (variant:
|
|
let
|
|
vPaths = collectDerivations pjsk-cursor-tree.${variant};
|
|
vJoined = symlinkJoin {
|
|
name = "pjsk-cursors-${variant}";
|
|
paths = vPaths;
|
|
meta = {
|
|
description = "Project Sekai cursor theme - All ${variant} cursors";
|
|
inherit homepage;
|
|
};
|
|
};
|
|
vGroups = lib.mapAttrs (group: _:
|
|
symlinkJoin {
|
|
name = "pjsk-cursors-${variant}-${group}";
|
|
paths = collectDerivations pjsk-cursor-tree.${variant}.${group};
|
|
meta = {
|
|
description = "Project Sekai cursor theme - ${group} group ${variant} cursors";
|
|
inherit homepage;
|
|
};
|
|
}
|
|
) groups;
|
|
in
|
|
vJoined // lib.recurseIntoAttrs vGroups
|
|
);
|
|
in
|
|
allJoined // lib.recurseIntoAttrs variants;
|
|
|
|
# Create flat attribute set for CI visibility
|
|
flatOutputs =
|
|
let
|
|
variantNames = [ "ani" "cur" ];
|
|
groupNames = builtins.attrNames groups;
|
|
|
|
# Individual cursors (e.g., pjsk-cursor-ani-n25-mizuki)
|
|
individuals = lib.concatLists (map
|
|
(v:
|
|
lib.concatLists (map
|
|
(g:
|
|
map (c: {
|
|
name = "pjsk-cursor-${v}-${g}-${c}";
|
|
value = pjsk-cursor-tree.${v}.${g}.${c};
|
|
}) groups.${g}
|
|
)
|
|
groupNames)
|
|
)
|
|
variantNames);
|
|
|
|
# Group-joined cursors (e.g., pjsk-cursors-ani-n25)
|
|
groupJoined = lib.concatLists (map
|
|
(v:
|
|
map (g: {
|
|
name = "pjsk-cursors-${v}-${g}";
|
|
value = pjsk-cursors-tree.${v}.${g};
|
|
}) groupNames
|
|
)
|
|
variantNames);
|
|
|
|
# Variant-joined cursors (e.g., pjsk-cursors-ani)
|
|
variantJoined = map
|
|
(v: {
|
|
name = "pjsk-cursors-${v}";
|
|
value = pjsk-cursors-tree.${v};
|
|
})
|
|
variantNames;
|
|
|
|
# Top-level joined (pjsk-cursors)
|
|
allJoined = { name = "pjsk-cursors"; value = pjsk-cursors-tree; };
|
|
in
|
|
builtins.listToAttrs (individuals ++ groupJoined ++ variantJoined ++ [ allJoined ]);
|
|
|
|
in
|
|
{
|
|
# Hierarchical access
|
|
pjsk-cursor = pjsk-cursor-tree;
|
|
pjsk-cursors = pjsk-cursors-tree;
|
|
|
|
# Flat access for CI
|
|
flat = flatOutputs;
|
|
} |