From bc4c5d81b97cb93d2a79e966fb94242e06913602 Mon Sep 17 00:00:00 2001 From: hsjobeki Date: Wed, 29 Nov 2023 21:37:07 +0100 Subject: [PATCH] hook legacy data in ui build --- flake.lock | 16 +++++++++ flake.nix | 6 +++- indexer/flake-module.nix | 65 ++++++++++++++++++++++++++++++++++++ pasta/flake-module.nix | 2 +- preCommit.nix | 5 ++- scripts/.envrc | 10 ++++++ scripts/flake-module.nix | 25 ++++++++++++++ treefmt.toml | 2 +- website/default.nix | 4 +-- website/flake-module.nix | 14 +++++--- website/models/data/index.ts | 32 +++++++++--------- website/nix/foverrides.nix | 13 ++++++-- website/shell.nix | 4 ++- 13 files changed, 166 insertions(+), 32 deletions(-) create mode 100644 indexer/flake-module.nix create mode 100644 scripts/.envrc create mode 100644 scripts/flake-module.nix diff --git a/flake.lock b/flake.lock index 72b8c02..2045bcf 100644 --- a/flake.lock +++ b/flake.lock @@ -186,6 +186,21 @@ } }, "nixpkgs-master": { + "locked": { + "lastModified": 1701287633, + "narHash": "sha256-F0V7p4hXvubyF9vhkVwB1rWGUh7bfg0IC9GM7ID1FQM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2c01cd06afc2e327343b047e27e172ba488d98f8", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "master", + "type": "indirect" + } + }, + "nixpkgs-migrated": { "locked": { "lastModified": 1699884649, "narHash": "sha256-HF1iNm+SqZJtUgoi57Mk21jDsgeybIcopDwaNFLqexc=", @@ -280,6 +295,7 @@ "nix": "nix", "nixpkgs": "nixpkgs_2", "nixpkgs-master": "nixpkgs-master", + "nixpkgs-migrated": "nixpkgs-migrated", "pre-commit-hooks": "pre-commit-hooks", "treefmt-nix": "treefmt-nix" } diff --git a/flake.nix b/flake.nix index 58de142..89a6834 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,8 @@ description = "Noogle.dev | Discover the nix api surface"; inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; - nixpkgs-master.url = "github:hsjobeki/nixpkgs/?ref=migrate-doc-comments"; + nixpkgs-master.url = "nixpkgs/master"; + nixpkgs-migrated.url = "github:hsjobeki/nixpkgs/?ref=migrate-doc-comments"; # A custom nix verison, to introspect lambda values. nix.url = "github:hsjobeki/nix/?ref=feat/positions"; @@ -33,6 +34,9 @@ ./website/flake-module.nix ./pasta/flake-module.nix ./pesto/flake-module.nix + # Deprecated. Will be removed. + ./indexer/flake-module.nix + ./scripts/flake-module.nix ]; }); } diff --git a/indexer/flake-module.nix b/indexer/flake-module.nix new file mode 100644 index 0000000..4ee82e5 --- /dev/null +++ b/indexer/flake-module.nix @@ -0,0 +1,65 @@ +{ inputs, ... }: { + perSystem = { self', inputs', pkgs, system, ... }: + let + craneLib = inputs.crane.lib.${system}; + src = craneLib.cleanCargoSource (craneLib.path ./.); + + commonArgs = { + inherit src; + strictDeps = true; + cargoArtifacts = craneLib.buildDepsOnly commonArgs; + }; + + indexer = craneLib.buildPackage commonArgs; + checks = { + inherit indexer; + indexer-clippy = craneLib.cargoClippy (commonArgs // { + cargoClippyExtraArgs = "--all-targets -- --deny warnings"; + }); + indexer-fmt = craneLib.cargoFmt { inherit src; }; + indexer-nextest = craneLib.cargoNextest (commonArgs // { + partitions = 1; + partitionType = "count"; + }); + }; + nixpkgs-data = pkgs.stdenv.mkDerivation { + pname = "data"; + version = "0.1.0"; + description = '' + wrapper around the indexer. + + Calls the indexer with ''/path. + and defines one output for every specified input path + + currently this list is manually maintained below. + ''; + src = inputs.nixpkgs-master; + outputs = [ "out" "lib" "trivial_builders" "build_support" ]; + nativeBuildInputs = [ indexer ]; + buildPhase = '' + echo "running nix metadata collect in nixpkgs/lib" + ${indexer}/bin/indexer --dir ./lib + ${indexer}/bin/indexer --dir ./pkgs/build-support/trivial-builders + ${indexer}/bin/indexer --dir ./pkgs/build-support + ''; + installPhase = '' + cat lib.json > $lib + cat trivial-builders.json > $trivial_builders + cat build-support.json > $build_support + + mkdir $out + ln -s $lib $out/lib + ln -s $trivial_builders $out/trivial_builders + ln -s $build_support $out/build_support + ''; + }; + in + { + packages = { inherit indexer nixpkgs-data; }; + inherit checks; + devShells.indexer = craneLib.devShell { + # Inherit inputs from checks. + inherit checks; + }; + }; +} diff --git a/pasta/flake-module.nix b/pasta/flake-module.nix index 5b78d24..c66520e 100644 --- a/pasta/flake-module.nix +++ b/pasta/flake-module.nix @@ -2,7 +2,7 @@ perSystem = { self', inputs', pkgs, ... }: let nix = inputs'.nix.packages.nix-clangStdenv; - nixpkgs = inputs.nixpkgs-master; + nixpkgs = inputs.nixpkgs-migrated; in { packages = { diff --git a/preCommit.nix b/preCommit.nix index 0c83062..2811dc6 100644 --- a/preCommit.nix +++ b/preCommit.nix @@ -19,11 +19,10 @@ treefmt.enable = true; statix.enable = true; }; - excludes = [ "indexer/test" ".github" "scripts/data" ]; + excludes = [ "indexer/test" ".github" "scripts/data" "test_data" ]; settings = { - statix.ignore = [ "indexer/test" ]; + statix.ignore = [ "indexer/test" "test_data" ]; nixfmt.width = 80; - treefmt.package = pkgs.writeShellApplication { name = "treefmt"; runtimeInputs = diff --git a/scripts/.envrc b/scripts/.envrc new file mode 100644 index 0000000..1281ada --- /dev/null +++ b/scripts/.envrc @@ -0,0 +1,10 @@ +source_up + +files=(../../flake.nix flake-module.nix package.json) +if type nix_direnv_watch_file &>/dev/null; then + nix_direnv_watch_file "${files[@]}" +else + watch_file "${files[@]}" +fi + +use flake .#builtins-data --builders '' diff --git a/scripts/flake-module.nix b/scripts/flake-module.nix new file mode 100644 index 0000000..98c05fa --- /dev/null +++ b/scripts/flake-module.nix @@ -0,0 +1,25 @@ +_: { + perSystem = { self', inputs', pkgs, ... }: + let + builtins-data = pkgs.stdenv.mkDerivation { + pname = "builtins-data"; + version = "0.1.0"; + src = ./.; + nativeBuildInputs = [ pkgs.nodejs_20 ]; + buildPhase = '' + npm run build + ''; + installPhase = '' + cat data.json > $out + ''; + }; + in + { + packages = { + inherit builtins-data; + }; + devShells.builtins-data = pkgs.mkShell { + inputsFrom = [ builtins-data ]; + }; + }; +} diff --git a/treefmt.toml b/treefmt.toml index b6dafa5..70507e4 100644 --- a/treefmt.toml +++ b/treefmt.toml @@ -1,4 +1,4 @@ [formatter.nix] command = "nixpkgs-fmt" includes = ["*.nix"] -excludes = ["pesto/test_data/*.nix"] +excludes = ["*/test_data/*"] diff --git a/website/default.nix b/website/default.nix index 7765c35..8e6e712 100644 --- a/website/default.nix +++ b/website/default.nix @@ -1,4 +1,4 @@ -{ floco, system, pkgs, nooglePkgs }: +{ floco, system, pkgs, hooks }: let inherit (floco) lib; @@ -27,7 +27,7 @@ let } ./nix/floco-cfg.nix ]; - specialArgs = { inherit pkgs nooglePkgs; }; + specialArgs = { inherit pkgs hooks; }; }; # This attrset holds a few derivations related to our package. diff --git a/website/flake-module.nix b/website/flake-module.nix index cfd9ad1..4e4f776 100644 --- a/website/flake-module.nix +++ b/website/flake-module.nix @@ -2,17 +2,23 @@ perSystem = { self', pkgs, ... }: let inherit (self.inputs) floco; + hooks = { + prepare = prefix: '' + cp -f ${self'.packages.nixpkgs-data.lib} ${prefix}/lib.json + cp -f ${self'.packages.nixpkgs-data.trivial_builders} ${prefix}/trivial-builders.json + cp -f ${self'.packages.nixpkgs-data.build_support} ${prefix}/build_support.json + cp -f ${self'.packages.builtins-data} ${prefix}/builtins.json + ''; + }; base = pkgs.callPackage ./default.nix { - inherit floco; - nooglePkgs = self'.packages; + inherit floco hooks; }; in { packages = { ui = base.pkg.global; }; devShells.ui = pkgs.callPackage ./shell.nix { - inherit pkgs; + inherit pkgs hooks; inherit (base) fmod pkg; - nooglePkgs = self'.packages; }; }; } diff --git a/website/models/data/index.ts b/website/models/data/index.ts index f827c08..dc48383 100644 --- a/website/models/data/index.ts +++ b/website/models/data/index.ts @@ -1,20 +1,20 @@ import { MetaData } from "../nix"; -// import nixLibs from "./lib.json"; -// import nixBuiltins from "./builtins.json"; -// import nixTrivialBuilders from "./trivial-builders.json"; -const mock = { - id: "mock", - category: "mock", - name: "mock", - fn_type: null, - description: "No data yet in dev mode", - example: null, - line: null, -}; +import nixBuiltins from "./builtins.json"; +import nixLibs from "./lib.json"; +import nixTrivialBuilders from "./trivial-builders.json"; +// const mock = { +// id: "mock", +// category: "mock", +// name: "mock", +// fn_type: null, +// description: "No data yet in dev mode", +// example: null, +// line: null, +// }; export const data: MetaData = [ - mock, - // ...(nixLibs as MetaData), - // ...(nixBuiltins as MetaData), - // ...(nixTrivialBuilders as MetaData), + // mock, + ...(nixLibs as MetaData), + ...(nixBuiltins as MetaData), + ...(nixTrivialBuilders as MetaData), ].sort((a, b) => a.name.localeCompare(b.name)); diff --git a/website/nix/foverrides.nix b/website/nix/foverrides.nix index 6f5d51a..660db46 100644 --- a/website/nix/foverrides.nix +++ b/website/nix/foverrides.nix @@ -1,4 +1,4 @@ -{ lib, config, ... }: +{ lib, config, hooks, ... }: let pjs = let @@ -30,8 +30,11 @@ let in { config.floco.packages.${ident}.${version} = - let cfg = config.floco.packages.${ident}.${version}; - in { + let + cfg = config.floco.packages.${ident}.${version}; + prefix = "models/data"; + in + { # ---------------------------------------------------------------------------- # # Removes any `*.nix' files as well as `node_modules/' and @@ -45,6 +48,10 @@ in # nextjs chaches some stuff in $HOME override.preBuild = '' export HOME=./home + + ${hooks.prepare "models/data"} + + ls -la models/data ''; tree = diff --git a/website/shell.nix b/website/shell.nix index a8f426b..e001ee5 100644 --- a/website/shell.nix +++ b/website/shell.nix @@ -1,7 +1,9 @@ -{ fmod, pkg, pkgs, ... }: +{ fmod, pkg, pkgs, hooks, ... }: pkgs.mkShell { buildInputs = [ fmod.config.floco.settings.nodePackage ]; shellHook = '' + ${hooks.prepare "models/data"} + ID=${pkg.built.tree} currID=$(cat .floco/.node_modules_id 2> /dev/null)