scroll auto discovery

This commit is contained in:
EatThePooh 2025-08-03 14:20:58 +07:00
parent 60b5164a8a
commit 8769d9de00
9 changed files with 44 additions and 20 deletions

View file

@ -10,7 +10,7 @@
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
lib = import ./nix/deno;
lib = import ./nix;
shelf = import ./shelf {
inherit pkgs system lib;
};

10
nix/default.nix Normal file
View file

@ -0,0 +1,10 @@
let
lib = {
buildDenoCache = import ./deno/buildCache.nix { self = lib; };
readDenoScroll = import ./deno/readScroll.nix { self = lib; };
buildSharedDenoCache = import ./deno/buildSharedCache.nix { self = lib; };
makeDenoShelfSetup = import ./deno/makeShelfSetup.nix { self = lib; };
discoverScrolls = import ./discoverScrolls.nix { self = lib; };
};
in
lib

View file

@ -1,9 +0,0 @@
let
lib = {
buildDenoCache = import ./buildDenoCache.nix { self = lib; };
readDenoScroll = import ./readDenoScroll.nix { self = lib; };
buildSharedDenoCache = import ./buildSharedDenoCache.nix { self = lib; };
makeDenoShelfSetup = import ./makeDenoShelfSetup.nix { self = lib; };
};
in
lib

29
nix/discoverScrolls.nix Normal file
View file

@ -0,0 +1,29 @@
{ self }:
{ scrollsDir }:
let
allSubDirs = builtins.attrNames (
builtins.readDir scrollsDir
);
directoriesOnly = builtins.filter (name:
let
type = (builtins.readDir scrollsDir).${name};
in type == "directory"
) allSubDirs;
hasScrollNix = dir:
let
scrollPath = scrollsDir + "/${dir}/scroll.nix";
in builtins.pathExists scrollPath;
scrollDirs = builtins.filter hasScrollNix directoriesOnly;
missingScrollDirs = builtins.filter (dir: !(hasScrollNix dir)) directoriesOnly;
warnings =
if builtins.length missingScrollDirs > 0
then builtins.trace
"Warning: Found directories without scroll.nix: ${builtins.toString missingScrollDirs}"
null
else null;
in
scrollDirs

View file

@ -2,23 +2,17 @@
let
denoScrollsDir = ./deno;
scrollDirs = lib.discoverScrolls {
scrollsDir = denoScrollsDir;
};
mkScroll = subDir: lib.readDenoScroll {
inherit pkgs system subDir;
scrollsDir = denoScrollsDir;
};
scrollDirs = [
"hjq"
"uses-hjq"
];
scrolls = builtins.map mkScroll scrollDirs;
# shelfSetup =
# lib.collectDenoCaches {
# inherit pkgs;
# denoCacheDrvs = builtins.map (s: s.env) scrolls;
# };
sharedCache = lib.buildSharedDenoCache {
inherit pkgs system;
scrollsDir = denoScrollsDir;