From 9a3f3680449ccd7930c394922b5a4dff29f68a88 Mon Sep 17 00:00:00 2001 From: Quinn Dougherty Date: Mon, 15 Aug 2022 22:45:03 -0700 Subject: [PATCH] `nix flake update` on `gentype`'s new `flake-utils` --- flake.lock | 22 +++++- flake.nix | 146 +++++++++++++++++++++--------------- nix/shell.nix | 2 +- nix/squiggle-components.nix | 10 ++- nix/squiggle-lang.nix | 11 +-- nix/squiggle-website.nix | 11 ++- 6 files changed, 123 insertions(+), 79 deletions(-) diff --git a/flake.lock b/flake.lock index 92d3710c..1fba6a00 100644 --- a/flake.lock +++ b/flake.lock @@ -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": { diff --git a/flake.nix b/flake.nix index 6d83673c..64252a59 100644 --- a/flake.nix +++ b/flake.nix @@ -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; } diff --git a/nix/shell.nix b/nix/shell.nix index a42cf69b..023524bc 100644 --- a/nix/shell.nix +++ b/nix/shell.nix @@ -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 ]; diff --git a/nix/squiggle-components.nix b/nix/squiggle-components.nix index 80fe96e8..aa04b4a9 100644 --- a/nix/squiggle-components.nix +++ b/nix/squiggle-components.nix @@ -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 { diff --git a/nix/squiggle-lang.nix b/nix/squiggle-lang.nix index b9c7a27b..03a49c7d 100644 --- a/nix/squiggle-lang.nix +++ b/nix/squiggle-lang.nix @@ -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 ''; }; diff --git a/nix/squiggle-website.nix b/nix/squiggle-website.nix index 2d5db190..27b9a163 100644 --- a/nix/squiggle-website.nix +++ b/nix/squiggle-website.nix @@ -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;