nix flake update on gentype's new flake-utils

This commit is contained in:
Quinn Dougherty 2022-08-15 22:45:03 -07:00
parent 909ebbec94
commit 9a3f368044
6 changed files with 123 additions and 79 deletions

View File

@ -15,18 +15,34 @@
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gentype": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1660002716,
"narHash": "sha256-Ig7Dt7d33nNCNlqRGc45uEJTXLRmpCeHrYNOd1AdObc=",
"lastModified": 1660628617,
"narHash": "sha256-swFuey10pJV/TFcPv9pMf9xuXf/BDuJ1xzZ57jpfkrA=",
"owner": "quinn-dougherty",
"repo": "genType",
"rev": "c7291db6465ac62800a49bacbe94ce4eb4abcbe0",
"rev": "e4374399178976de0c4fc41f64dde913c3bed5dd",
"type": "github"
},
"original": {

146
flake.nix
View File

@ -18,10 +18,91 @@
};
outputs = { self, nixpkgs, gentype, hercules-ci-effects, flake-utils, ... }:
flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
let
commonFn = pkgs: {
buildInputs = with pkgs; [ nodejs yarn ];
prettier = with pkgs.nodePackages; [ prettier ];
which = [ pkgs.which ];
};
langFn = { pkgs, ... }:
import ./nix/squiggle-lang.nix { inherit pkgs commonFn gentype; };
componentsFn = { pkgs, ... }:
import ./nix/squiggle-components.nix { inherit pkgs commonFn langFn; };
websiteFn = { pkgs, ... }:
import ./nix/squiggle-website.nix {
inherit pkgs commonFn langFn componentsFn;
};
# local machines
localFlake = { pkgs }:
let
lang = langFn pkgs;
components = componentsFn pkgs;
website = websiteFn pkgs;
in {
# validating
checks = flake-utils.lib.flattenTree {
lang-lint = lang.lang-lint;
lang-test = lang.lang-test;
components-lint = components.components-lint;
docusaurus-lint = website.website-lint;
};
# building
packages = flake-utils.lib.flattenTree {
default = website.website;
lang-build = lang.lang-build;
lang-bundle = lang.lang-bundle;
components = components.components-package-build;
storybook = components.components-site-build;
docs-site = website.website;
};
# developing
devShells = flake-utils.lib.flattenTree {
default = (import ./nix/shell.nix { inherit pkgs; }).shell;
};
};
# ci
herc = let
hciSystem = "x86_64-linux";
hciPkgs = import nixpkgs { system = hciSystem; };
effects = hercules-ci-effects.lib.withPkgs hciPkgs;
local = localFlake {
pkgs = hciPkgs;
lang = langFn { pkgs = hciPkgs; };
components = componentsFn { pkgs = hciPkgs; };
website = websiteFn { pkgs = hciPkgs; };
};
in {
# herc
herculesCI = {
ciSystems = [ hciSystem ];
onPush = {
lang.outputs = {
squiggle-lang-lint = local.checks.${hciSystem}.lang-lint;
squiggle-lang-test = local.checks.${hciSystem}.lang-test;
# squiggle-lang-build = lang.lang-build;
squiggle-lang-bundle = local.packages.${hciSystem}.lang-bundle;
};
components.outputs = {
squiggle-components = local.packages.${hciSystem}.components;
squiggle-components-lint =
local.checks.${hciSystem}.components-lint;
squiggle-components-storybook =
local.packages.${hciSystem}.storybook;
};
docs-site.outputs = {
squiggle-website = local.packages.${hciSystem}.docs-site;
docusaurus-lint = local.checks.${hciSystem}.docusaurus-lint;
};
};
};
};
in flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
let
# globals
hciSystem = "x86_64-linux";
pkgs = import nixpkgs {
system = system;
overlays = [
@ -32,65 +113,6 @@
})
];
};
hciPkgs = import nixpkgs { system = hciSystem; };
effects = hercules-ci-effects.lib.withPkgs hciPkgs;
common = {
buildInputs = with pkgs; [ nodejs yarn ];
prettier = with pkgs.nodePackages; [ prettier ];
which = [ pkgs.which ];
};
lang = import ./nix/squiggle-lang.nix {
inherit system pkgs common gentype;
};
components =
import ./nix/squiggle-components.nix { inherit pkgs common lang; };
website = import ./nix/squiggle-website.nix {
inherit pkgs common lang components;
};
in rec {
checks = flake-utils.lib.flattenTree {
lang-lint = lang.lang-lint;
lang-test = lang.lang-test;
components-lint = components.components-lint;
docusaurus-lint = website.website-lint;
};
packages = flake-utils.lib.flattenTree {
default = website.website;
lang-bundle = lang.lang-bundle;
components = components.components-package-build;
storybook = components.components-site-build;
docs-site = website.website;
};
# nix develop
devShells = flake-utils.lib.flattenTree {
default = (import ./nix/shell.nix { inherit pkgs; }).shell;
};
# herc
herculesCI = flake-utils.lib.flattenTree {
ciSystems = [ hciSystem ];
onPush = {
lang.outputs = {
squiggle-lang-lint = checks.${hciSystem}.lang-lint;
squiggle-lang-test = checks.${hciSystem}.lang-test;
squiggle-lang-build = lang.lang-build;
squiggle-lang-bundle = packages.${hciSystem}.lang-bundle;
};
components.outputs = {
squiggle-components = packages.${hciSystem}.components;
squiggle-components-lint = checks.${hciSystem}.components-lint;
squiggle-components-storybook = packages.${hciSystem}.storybook;
};
docs-site.outputs = {
squiggle-website = packages.${hciSystem}.docs-site;
docusaurus-lint = checks.${hciSystem}.docusaurus-lint;
};
};
};
});
in (localFlake { inherit pkgs; } )) // herc;
}

View File

@ -1,7 +1,7 @@
{ pkgs }:
with pkgs;
{
shell = pkgs.mkShell {
shell = mkShell {
name = "SQUIGGLE_yarn-wasm-devshell";
buildInputs =
[ wasm-pack cargo yarn nodejs rustup pkg-config openssl nixfmt ];

View File

@ -1,8 +1,10 @@
{ pkgs, common, lang }:
{ pkgs, commonFn, langFn }:
rec {
common = commonFn pkgs;
lang = langFn pkgs;
componentsPackageJson = let
raw = pkgs.lib.importJSON ./packages/components/package.json;
raw = pkgs.lib.importJSON ../packages/components/package.json;
modified =
pkgs.lib.recursiveUpdate raw { dependencies.react-dom = "^18.2.0"; };
packageJsonString = builtins.toJSON modified;
@ -11,9 +13,9 @@ rec {
components-yarnPackage = pkgs.mkYarnPackage {
name = "squiggle-components_source";
buildInputs = common.buildInputs;
src = ./packages/components;
src = ../packages/components;
packageJSON = componentsPackageJson;
yarnLock = ./yarn.lock;
yarnLock = ../yarn.lock;
packageResolutions."@quri/squiggle-lang" = lang.lang-build;
};
components-lint = pkgs.stdenv.mkDerivation {

View File

@ -1,12 +1,13 @@
{ system, pkgs, common, gentype }:
{ pkgs, commonFn, gentype }:
rec {
common = commonFn pkgs;
# packages in subrepos
lang-yarnPackage = pkgs.mkYarnPackage {
name = "squiggle-lang_source";
src = ./packages/squiggle-lang;
packageJSON = ./packages/squiggle-lang/package.json;
yarnLock = ./yarn.lock;
src = ../packages/squiggle-lang;
packageJSON = ../packages/squiggle-lang/package.json;
yarnLock = ../yarn.lock;
# extraBuildInputs = prettierCommon;
pkgConfig = {
rescript = {
@ -36,7 +37,7 @@ rec {
postInstall = ''
mv gentype.exe ELFLESS-gentype.exe
cp ${
gentype.outputs.defaultPackage."${system}"
gentype.outputs.defaultPackage."${pkgs.system}"
}/GenType.exe gentype.exe
'';
};

View File

@ -1,8 +1,11 @@
{ pkgs, common, lang, components }:
{ pkgs, commonFn, langFn, componentsFn }:
rec {
common = commonFn pkgs;
lang = langFn pkgs;
components = componentsFn pkgs;
websitePackageJson = let
raw = pkgs.lib.importJSON ./packages/website/package.json;
raw = pkgs.lib.importJSON ../packages/website/package.json;
modified = pkgs.lib.recursiveUpdate raw {
dependencies.postcss-import = "^14.1.0";
dependencies.tailwindcss = "^3.1.8";
@ -11,9 +14,9 @@ rec {
in pkgs.writeText "packages/website/patched-package.json" packageJsonString;
website-yarnPackage = pkgs.mkYarnPackage {
name = "squiggle-website_source";
src = ./packages/website;
src = ../packages/website;
packageJSON = websitePackageJson;
yarnLock = ./yarn.lock;
yarnLock = ../yarn.lock;
packageResolutions."@quri/squiggle-lang" = lang.lang-build;
packageResolutions."@quri/squiggle-components" =
components.components-package-build;