hook legacy data in ui build

This commit is contained in:
hsjobeki 2023-11-29 21:37:07 +01:00
parent 845691b8b5
commit bc4c5d81b9
No known key found for this signature in database
13 changed files with 166 additions and 32 deletions

View File

@ -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"
}

View File

@ -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
];
});
}

65
indexer/flake-module.nix Normal file
View File

@ -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 '<nixpkgs>'/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;
};
};
}

View File

@ -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 = {

View File

@ -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 =

10
scripts/.envrc Normal file
View File

@ -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 ''

25
scripts/flake-module.nix Normal file
View File

@ -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 ];
};
};
}

View File

@ -1,4 +1,4 @@
[formatter.nix]
command = "nixpkgs-fmt"
includes = ["*.nix"]
excludes = ["pesto/test_data/*.nix"]
excludes = ["*/test_data/*"]

View File

@ -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.

View File

@ -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;
};
};
}

View File

@ -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));

View File

@ -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 =

View File

@ -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)