refactor: reorganize pjsk-cursor into a hierarchical attribute structure with symlinkJoin groups
All checks were successful
CI / list-packages (push) Successful in 3s
All checks were successful
CI / list-packages (push) Successful in 3s
This commit is contained in:
parent
f6a01b5957
commit
7f154d659d
2 changed files with 74 additions and 69 deletions
|
|
@ -12,16 +12,17 @@
|
|||
# waterfox = final.callPackage ./pkgs/waterfox/default.nix { };
|
||||
# another = final.callPackage ./pkgs/another/default.nix { };
|
||||
waterfox-bin = final.callPackage ./pkgs/waterfox-bin/default.nix { };
|
||||
xcursor-mizuki = final.callPackage ./pkgs/xcursor-mizuki/default.nix { stdenv = final.stdenv; };
|
||||
pjsk-cursor = final.callPackage ./pkgs/pjsk-cursor/default.nix { stdenv = final.stdenv; };
|
||||
xcursor-mizuki = final.callPackage ./pkgs/xcursor-mizuki/default.nix { };
|
||||
pjsk-cursor = final.callPackage ./pkgs/pjsk-cursor/default.nix { };
|
||||
};
|
||||
pkgs = nixpkgs.legacyPackages.${system}.extend overlay;
|
||||
in {
|
||||
overlays.default = overlay;
|
||||
|
||||
packages.${system} = {
|
||||
inherit (pkgs) waterfox-bin xcursor-mizuki pjsk-cursor;
|
||||
# default = pkgs.waterfox-bin;
|
||||
inherit (pkgs) waterfox-bin xcursor-mizuki;
|
||||
};
|
||||
|
||||
legacyPackages.${system} = (builtins.removeAttrs pkgs.pjsk-cursor [ "override" "overrideDerivation" ]);
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ stdenv }:
|
||||
{ stdenv, lib, symlinkJoin }:
|
||||
|
||||
let
|
||||
homepage = "https://colorfulstage.com/media/download/";
|
||||
|
|
@ -19,77 +19,81 @@ let
|
|||
'';
|
||||
|
||||
meta = {
|
||||
description = "Project Sekai cursor theme";
|
||||
description = "Project Sekai cursor theme - ${name}";
|
||||
inherit homepage;
|
||||
};
|
||||
};
|
||||
|
||||
makeVariant = group: character:
|
||||
{
|
||||
ani = mkCursor {
|
||||
name = "pjsk-cursor-${group}-${character}-ani";
|
||||
src = ../../assets/${group}-${character}-ani.tar.gz;
|
||||
};
|
||||
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" ];
|
||||
};
|
||||
|
||||
cur = mkCursor {
|
||||
name = "pjsk-cursor-${group}-${character}-cur";
|
||||
src = ../../assets/${group}-${character}-cur.tar.gz;
|
||||
# Individual cursors organized hierarchically
|
||||
# Structure: pjsk-cursor.<variant>.<group>.<character>
|
||||
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
|
||||
# Structure: pjsk-cursors (all)
|
||||
# pjsk-cursors.<variant> (all in variant)
|
||||
# pjsk-cursors.<variant>.<group> (all in variant/group)
|
||||
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;
|
||||
|
||||
makeGroup = group: characters:
|
||||
builtins.listToAttrs (map (character: {
|
||||
name = character;
|
||||
value = makeVariant group character;
|
||||
}) characters);
|
||||
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"
|
||||
];
|
||||
pjsk-cursor = pjsk-cursor-tree;
|
||||
pjsk-cursors = pjsk-cursors-tree;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue