Merge pull request #1034 from quantified-uncertainty/nix-cached-ci
`ci-cachix.yml`
This commit is contained in:
commit
a9dd18cbcd
87
.github/workflows/ci-cachix.yml
vendored
Normal file
87
.github/workflows/ci-cachix.yml
vendored
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
name: Nix build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
- reducer-dev
|
||||||
|
- epic-reducer-project
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
flake-lints:
|
||||||
|
name: All lint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Install nix
|
||||||
|
uses: cachix/install-nix-action@v17
|
||||||
|
with:
|
||||||
|
nix_path: nixpkgs=channel:nixos-22.05
|
||||||
|
- name: Use cachix
|
||||||
|
uses: cachix/cachix-action@v10
|
||||||
|
with:
|
||||||
|
name: quantified-uncertainty
|
||||||
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||||
|
|
||||||
|
- name: Check that lang lints
|
||||||
|
run: nix build .#lang-lint
|
||||||
|
- name: Check that components lints
|
||||||
|
run: nix build .#components-lint
|
||||||
|
- name: Check that website lints
|
||||||
|
run: nix build .#docusaurus-lint
|
||||||
|
- name: Check that vscode extension lints
|
||||||
|
run: nix build .#vscode-lint
|
||||||
|
- name: Check that cli lints
|
||||||
|
run: nix build .#cli-lint
|
||||||
|
|
||||||
|
flake-packages:
|
||||||
|
name: Builds, tests, and bundles
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: flake-lints
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Install nix
|
||||||
|
uses: cachix/install-nix-action@v17
|
||||||
|
with:
|
||||||
|
nix_path: nixpkgs=channel:nixos-22.05
|
||||||
|
- name: Use cachix
|
||||||
|
uses: cachix/cachix-action@v10
|
||||||
|
with:
|
||||||
|
name: quantified-uncertainty
|
||||||
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||||
|
|
||||||
|
- name: Check all lang tests
|
||||||
|
run: nix build .#lang-test
|
||||||
|
- name: Check that lang bundles
|
||||||
|
run: nix build .#lang-bundle
|
||||||
|
- name: Check that components builds
|
||||||
|
run: nix build .#components
|
||||||
|
- name: Check that components bundles
|
||||||
|
run: nix build .#components-bundle
|
||||||
|
|
||||||
|
flake-devshells:
|
||||||
|
name: Development shell environment
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Install nix
|
||||||
|
uses: cachix/install-nix-action@v17
|
||||||
|
with:
|
||||||
|
nix_path: nixpkgs=channel:nixos-22.05
|
||||||
|
- name: Use cachix
|
||||||
|
uses: cachix/cachix-action@v10
|
||||||
|
with:
|
||||||
|
name: quantified-uncertainty
|
||||||
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||||
|
- name: Build js devshell
|
||||||
|
run: nix develop .#js --profile just-js
|
||||||
|
- name: Build js & wasm devshell
|
||||||
|
run: nix develop --profile full-shell
|
251
.github/workflows/ci.yml
vendored
251
.github/workflows/ci.yml
vendored
|
@ -10,6 +10,7 @@ on:
|
||||||
- master
|
- master
|
||||||
- develop
|
- develop
|
||||||
- reducer-dev
|
- reducer-dev
|
||||||
|
- epic-reducer-project
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
pre_check:
|
pre_check:
|
||||||
|
@ -48,26 +49,26 @@ jobs:
|
||||||
with:
|
with:
|
||||||
paths: '["packages/cli/**"]'
|
paths: '["packages/cli/**"]'
|
||||||
|
|
||||||
lang-lint:
|
# lang-lint:
|
||||||
name: Language lint
|
# name: Language lint
|
||||||
runs-on: ubuntu-latest
|
# runs-on: ubuntu-latest
|
||||||
needs: pre_check
|
# needs: pre_check
|
||||||
if: ${{ needs.pre_check.outputs.should_skip_lang != 'true' }}
|
# if: ${{ needs.pre_check.outputs.should_skip_lang != 'true' }}
|
||||||
defaults:
|
# defaults:
|
||||||
run:
|
# run:
|
||||||
shell: bash
|
# shell: bash
|
||||||
working-directory: packages/squiggle-lang
|
# working-directory: packages/squiggle-lang
|
||||||
steps:
|
# steps:
|
||||||
- uses: actions/checkout@v3
|
# - uses: actions/checkout@v3
|
||||||
- name: Install Dependencies
|
# - name: Install Dependencies
|
||||||
run: cd ../../ && yarn
|
# run: cd ../../ && yarn
|
||||||
- name: Check rescript lint
|
# - name: Check rescript lint
|
||||||
run: yarn lint:rescript
|
# run: yarn lint:rescript
|
||||||
- name: Check javascript, typescript, and markdown lint
|
# - name: Check javascript, typescript, and markdown lint
|
||||||
uses: creyD/prettier_action@v4.2
|
# uses: creyD/prettier_action@v4.2
|
||||||
with:
|
# with:
|
||||||
dry: true
|
# dry: true
|
||||||
prettier_options: --check packages/squiggle-lang
|
# prettier_options: --check packages/squiggle-lang
|
||||||
|
|
||||||
lang-build-test-bundle:
|
lang-build-test-bundle:
|
||||||
name: Language build, test, and bundle
|
name: Language build, test, and bundle
|
||||||
|
@ -97,96 +98,96 @@ jobs:
|
||||||
- name: Upload typescript coverage report
|
- name: Upload typescript coverage report
|
||||||
run: yarn coverage:ts:ci
|
run: yarn coverage:ts:ci
|
||||||
|
|
||||||
components-lint:
|
# components-lint:
|
||||||
name: Components lint
|
# name: Components lint
|
||||||
runs-on: ubuntu-latest
|
# runs-on: ubuntu-latest
|
||||||
needs: pre_check
|
# needs: pre_check
|
||||||
if: ${{ needs.pre_check.outputs.should_skip_components != 'true' }}
|
# if: ${{ needs.pre_check.outputs.should_skip_components != 'true' }}
|
||||||
defaults:
|
# defaults:
|
||||||
run:
|
# run:
|
||||||
shell: bash
|
# shell: bash
|
||||||
working-directory: packages/components
|
# working-directory: packages/components
|
||||||
steps:
|
# steps:
|
||||||
- uses: actions/checkout@v3
|
# - uses: actions/checkout@v3
|
||||||
- name: Check javascript, typescript, and markdown lint
|
# - name: Check javascript, typescript, and markdown lint
|
||||||
uses: creyD/prettier_action@v4.2
|
# uses: creyD/prettier_action@v4.2
|
||||||
with:
|
# with:
|
||||||
dry: true
|
# dry: true
|
||||||
prettier_options: --check packages/components --ignore-path packages/components/.prettierignore
|
# prettier_options: --check packages/components --ignore-path packages/components/.prettierignore
|
||||||
|
#
|
||||||
|
# components-bundle-build:
|
||||||
|
# name: Components bundle and build
|
||||||
|
# runs-on: ubuntu-latest
|
||||||
|
# needs: pre_check
|
||||||
|
# if: ${{ (needs.pre_check.outputs.should_skip_components != 'true') || (needs.pre_check.outputs.should_skip_lang != 'true') }}
|
||||||
|
# defaults:
|
||||||
|
# run:
|
||||||
|
# shell: bash
|
||||||
|
# working-directory: packages/components
|
||||||
|
# steps:
|
||||||
|
# - uses: actions/checkout@v3
|
||||||
|
# - name: Install dependencies from monorepo level
|
||||||
|
# run: cd ../../ && yarn
|
||||||
|
# - name: Build rescript codebase in squiggle-lang
|
||||||
|
# run: cd ../squiggle-lang && yarn build
|
||||||
|
# - name: Run webpack
|
||||||
|
# run: yarn bundle
|
||||||
|
# - name: Build storybook
|
||||||
|
# run: yarn build
|
||||||
|
|
||||||
components-bundle-build:
|
# website-lint:
|
||||||
name: Components bundle and build
|
# name: Website lint
|
||||||
runs-on: ubuntu-latest
|
# runs-on: ubuntu-latest
|
||||||
needs: pre_check
|
# needs: pre_check
|
||||||
if: ${{ (needs.pre_check.outputs.should_skip_components != 'true') || (needs.pre_check.outputs.should_skip_lang != 'true') }}
|
# if: ${{ needs.pre_check.outputs.should_skip_website != 'true' }}
|
||||||
defaults:
|
# defaults:
|
||||||
run:
|
# run:
|
||||||
shell: bash
|
# shell: bash
|
||||||
working-directory: packages/components
|
# working-directory: packages/website
|
||||||
steps:
|
# steps:
|
||||||
- uses: actions/checkout@v3
|
# - uses: actions/checkout@v3
|
||||||
- name: Install dependencies from monorepo level
|
# - name: Check javascript, typescript, and markdown lint
|
||||||
run: cd ../../ && yarn
|
# uses: creyD/prettier_action@v4.2
|
||||||
- name: Build rescript codebase in squiggle-lang
|
# with:
|
||||||
run: cd ../squiggle-lang && yarn build
|
# dry: true
|
||||||
- name: Run webpack
|
# prettier_options: --check packages/website
|
||||||
run: yarn bundle
|
#
|
||||||
- name: Build storybook
|
# website-build:
|
||||||
run: yarn build
|
# name: Website build
|
||||||
|
# runs-on: ubuntu-latest
|
||||||
website-lint:
|
# needs: pre_check
|
||||||
name: Website lint
|
# if: ${{ (needs.pre_check.outputs.should_skip_website != 'true') || (needs.pre_check.outputs.should_skip_lang != 'true') || (needs.pre_check.outputs.should_skip_components != 'true') }}
|
||||||
runs-on: ubuntu-latest
|
# defaults:
|
||||||
needs: pre_check
|
# run:
|
||||||
if: ${{ needs.pre_check.outputs.should_skip_website != 'true' }}
|
# shell: bash
|
||||||
defaults:
|
# working-directory: packages/website
|
||||||
run:
|
# steps:
|
||||||
shell: bash
|
# - uses: actions/checkout@v3
|
||||||
working-directory: packages/website
|
# - name: Install dependencies from monorepo level
|
||||||
steps:
|
# run: cd ../../ && yarn
|
||||||
- uses: actions/checkout@v3
|
# - name: Build rescript in squiggle-lang
|
||||||
- name: Check javascript, typescript, and markdown lint
|
# run: cd ../squiggle-lang && yarn build
|
||||||
uses: creyD/prettier_action@v4.2
|
# - name: Build components
|
||||||
with:
|
# run: cd ../components && yarn build
|
||||||
dry: true
|
# - name: Build website assets
|
||||||
prettier_options: --check packages/website
|
# run: yarn build
|
||||||
|
#
|
||||||
website-build:
|
# vscode-ext-lint:
|
||||||
name: Website build
|
# name: VS Code extension lint
|
||||||
runs-on: ubuntu-latest
|
# runs-on: ubuntu-latest
|
||||||
needs: pre_check
|
# needs: pre_check
|
||||||
if: ${{ (needs.pre_check.outputs.should_skip_website != 'true') || (needs.pre_check.outputs.should_skip_lang != 'true') || (needs.pre_check.outputs.should_skip_components != 'true') }}
|
# if: ${{ needs.pre_check.outputs.should_skip_vscodeext != 'true' }}
|
||||||
defaults:
|
# defaults:
|
||||||
run:
|
# run:
|
||||||
shell: bash
|
# shell: bash
|
||||||
working-directory: packages/website
|
# working-directory: packages/vscode-ext
|
||||||
steps:
|
# steps:
|
||||||
- uses: actions/checkout@v3
|
# - uses: actions/checkout@v3
|
||||||
- name: Install dependencies from monorepo level
|
# - name: Check javascript, typescript, and markdown lint
|
||||||
run: cd ../../ && yarn
|
# uses: creyD/prettier_action@v4.2
|
||||||
- name: Build rescript in squiggle-lang
|
# with:
|
||||||
run: cd ../squiggle-lang && yarn build
|
# dry: true
|
||||||
- name: Build components
|
# prettier_options: --check packages/vscode-ext
|
||||||
run: cd ../components && yarn build
|
|
||||||
- name: Build website assets
|
|
||||||
run: yarn build
|
|
||||||
|
|
||||||
vscode-ext-lint:
|
|
||||||
name: VS Code extension lint
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: pre_check
|
|
||||||
if: ${{ needs.pre_check.outputs.should_skip_vscodeext != 'true' }}
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
shell: bash
|
|
||||||
working-directory: packages/vscode-ext
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Check javascript, typescript, and markdown lint
|
|
||||||
uses: creyD/prettier_action@v4.2
|
|
||||||
with:
|
|
||||||
dry: true
|
|
||||||
prettier_options: --check packages/vscode-ext
|
|
||||||
|
|
||||||
vscode-ext-build:
|
vscode-ext-build:
|
||||||
name: VS Code extension build
|
name: VS Code extension build
|
||||||
|
@ -204,19 +205,19 @@ jobs:
|
||||||
- name: Build
|
- name: Build
|
||||||
run: yarn compile
|
run: yarn compile
|
||||||
|
|
||||||
cli-lint:
|
# cli-lint:
|
||||||
name: CLI lint
|
# name: CLI lint
|
||||||
runs-on: ubuntu-latest
|
# runs-on: ubuntu-latest
|
||||||
needs: pre_check
|
# needs: pre_check
|
||||||
if: ${{ needs.pre_check.outputs.should_skip_cli != 'true' }}
|
# if: ${{ needs.pre_check.outputs.should_skip_cli != 'true' }}
|
||||||
defaults:
|
# defaults:
|
||||||
run:
|
# run:
|
||||||
shell: bash
|
# shell: bash
|
||||||
working-directory: packages/cli
|
# working-directory: packages/cli
|
||||||
steps:
|
# steps:
|
||||||
- uses: actions/checkout@v3
|
# - uses: actions/checkout@v3
|
||||||
- name: Check javascript, typescript, and markdown lint
|
# - name: Check javascript, typescript, and markdown lint
|
||||||
uses: creyD/prettier_action@v4.2
|
# uses: creyD/prettier_action@v4.2
|
||||||
with:
|
# with:
|
||||||
dry: true
|
# dry: true
|
||||||
prettier_options: --check packages/cli
|
# prettier_options: --check packages/cli
|
||||||
|
|
|
@ -13,3 +13,4 @@ packages/squiggle-lang/src/rescript/Reducer/Reducer_Peggy/Reducer_Peggy_Generate
|
||||||
packages/vscode-ext/media/vendor/
|
packages/vscode-ext/media/vendor/
|
||||||
packages/squiggle-lang/.nyc_output/
|
packages/squiggle-lang/.nyc_output/
|
||||||
packages/*/dist
|
packages/*/dist
|
||||||
|
result
|
||||||
|
|
79
flake.lock
Normal file
79
flake.lock
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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": 1661855866,
|
||||||
|
"narHash": "sha256-+q0OOTyaq8eOn9BOWdPOCtSDOISW4A59v3mq3JOZyug=",
|
||||||
|
"owner": "rescript-association",
|
||||||
|
"repo": "genType",
|
||||||
|
"rev": "6b5f164b4f6ced456019b7579a0ab7e0a86518ad",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "rescript-association",
|
||||||
|
"repo": "genType",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1661617163,
|
||||||
|
"narHash": "sha256-NN9Ky47j8ohgPhA9JZyfkYIbbAo6RJkGz+7h8/exVpE=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0ba2543f8c855d7be8e90ef6c8dc89c1617e8a08",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-22.05",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"gentype": "gentype",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
99
flake.nix
Normal file
99
flake.nix
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
{
|
||||||
|
description = "Squiggle packages";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "nixpkgs/nixos-22.05";
|
||||||
|
gentype = {
|
||||||
|
url = "github:rescript-association/genType";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, gentype, flake-utils }:
|
||||||
|
let
|
||||||
|
version = builtins.substring 0 8 self.lastModifiedDate;
|
||||||
|
overlays = [
|
||||||
|
(final: prev: {
|
||||||
|
# set the node version here
|
||||||
|
nodejs = prev.nodejs-18_x;
|
||||||
|
# The override is the only way to get it into mkYarnModules
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
commonFn = pkgs: {
|
||||||
|
buildInputs = with pkgs; [ nodejs yarn ];
|
||||||
|
prettier = with pkgs.nodePackages; [ prettier ];
|
||||||
|
which = [ pkgs.which ];
|
||||||
|
};
|
||||||
|
gentypeOutputFn = pkgs: gentype.outputs.packages.${pkgs.system}.default;
|
||||||
|
langFn = { pkgs, ... }:
|
||||||
|
# Probably doesn't work on i686-linux
|
||||||
|
import ./nix/squiggle-lang.nix {
|
||||||
|
inherit pkgs commonFn gentypeOutputFn;
|
||||||
|
};
|
||||||
|
componentsFn = { pkgs, ... }:
|
||||||
|
import ./nix/squiggle-components.nix { inherit pkgs commonFn langFn; };
|
||||||
|
websiteFn = { pkgs, ... }:
|
||||||
|
import ./nix/squiggle-website.nix {
|
||||||
|
inherit pkgs commonFn langFn componentsFn;
|
||||||
|
};
|
||||||
|
vscodeextFn = { pkgs, ... }:
|
||||||
|
import ./nix/squiggle-vscode.nix {
|
||||||
|
inherit pkgs commonFn langFn componentsFn;
|
||||||
|
};
|
||||||
|
cliFn = { pkgs, ... }:
|
||||||
|
import ./nix/squiggle-cli.nix {
|
||||||
|
inherit pkgs commonFn;
|
||||||
|
};
|
||||||
|
|
||||||
|
# local machines
|
||||||
|
localFlakeOutputs = { pkgs, ... }:
|
||||||
|
let
|
||||||
|
lang = langFn pkgs;
|
||||||
|
components = componentsFn pkgs;
|
||||||
|
website = websiteFn pkgs;
|
||||||
|
vscodeext = vscodeextFn pkgs;
|
||||||
|
cli = cliFn pkgs;
|
||||||
|
in {
|
||||||
|
# validating
|
||||||
|
checks = flake-utils.lib.flattenTree {
|
||||||
|
lang-lint = lang.lint;
|
||||||
|
lang-test = lang.test;
|
||||||
|
components-lint = components.lint;
|
||||||
|
docusaurus-lint = website.lint;
|
||||||
|
cli-lint = cli.lint;
|
||||||
|
};
|
||||||
|
# building
|
||||||
|
packages = flake-utils.lib.flattenTree {
|
||||||
|
default = components.build;
|
||||||
|
lang = lang.build;
|
||||||
|
lang-bundle = lang.bundle;
|
||||||
|
lang-test = lang.test;
|
||||||
|
components = components.build;
|
||||||
|
components-bundle = components.bundle;
|
||||||
|
|
||||||
|
# Lint
|
||||||
|
lang-lint = lang.lint;
|
||||||
|
components-lint = components.lint;
|
||||||
|
docusaurus-lint = website.lint;
|
||||||
|
vscode-lint = vscodeext.lint;
|
||||||
|
cli-lint = cli.lint;
|
||||||
|
};
|
||||||
|
|
||||||
|
# developing
|
||||||
|
devShells = let shellNix = import ./nix/shell.nix { inherit pkgs; };
|
||||||
|
in flake-utils.lib.flattenTree {
|
||||||
|
default = shellNix.all;
|
||||||
|
js = shellNix.just-js;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
overlays = overlays;
|
||||||
|
};
|
||||||
|
|
||||||
|
in localFlakeOutputs pkgs);
|
||||||
|
}
|
1
nix/README.md
Normal file
1
nix/README.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Visit `quantified-uncertainty.cachix.org` for information about how to add our binary cache to your local dev environment.
|
25
nix/shell.nix
Normal file
25
nix/shell.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{ pkgs }:
|
||||||
|
with pkgs;
|
||||||
|
let
|
||||||
|
js = [ yarn nodejs nodePackages.ts-node ];
|
||||||
|
rust = [
|
||||||
|
wasm-pack
|
||||||
|
cargo
|
||||||
|
rustup
|
||||||
|
pkg-config
|
||||||
|
libressl
|
||||||
|
rustfmt
|
||||||
|
wasmtime
|
||||||
|
binaryen
|
||||||
|
wasm-bindgen-cli
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
all = mkShell {
|
||||||
|
name = "squiggle_yarn-wasm-devshell";
|
||||||
|
buildInputs = builtins.concatLists [ js rust [ nixfmt ] ];
|
||||||
|
};
|
||||||
|
just-js = mkShell {
|
||||||
|
name = "squiggle_yarn-devshell";
|
||||||
|
buildInputs = js ++ [ nixfmt ];
|
||||||
|
};
|
||||||
|
}
|
13
nix/squiggle-cli.nix
Normal file
13
nix/squiggle-cli.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{ pkgs, commonFn }:
|
||||||
|
|
||||||
|
rec {
|
||||||
|
common = commonFn pkgs;
|
||||||
|
|
||||||
|
lint = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-cli-lint";
|
||||||
|
buildInputs = common.buildInputs ++ common.prettier;
|
||||||
|
src = ../packages/cli;
|
||||||
|
buildPhase = "prettier --check .";
|
||||||
|
installPhase = "mkdir -p $out";
|
||||||
|
};
|
||||||
|
}
|
75
nix/squiggle-components.nix
Normal file
75
nix/squiggle-components.nix
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
{ pkgs, commonFn, langFn }:
|
||||||
|
|
||||||
|
rec {
|
||||||
|
common = commonFn pkgs;
|
||||||
|
lang = langFn pkgs;
|
||||||
|
componentsPackageJson = let
|
||||||
|
raw = pkgs.lib.importJSON ../packages/components/package.json;
|
||||||
|
modified =
|
||||||
|
pkgs.lib.recursiveUpdate raw { dependencies.react-dom = "^18.2.0"; };
|
||||||
|
packageJsonString = builtins.toJSON modified;
|
||||||
|
in pkgs.writeText "packages/components/patched-package.json"
|
||||||
|
packageJsonString;
|
||||||
|
yarn-source = pkgs.mkYarnPackage {
|
||||||
|
name = "squiggle-components_yarnsource";
|
||||||
|
buildInputs = common.buildInputs;
|
||||||
|
src = ../packages/components;
|
||||||
|
packageJSON = componentsPackageJson;
|
||||||
|
yarnLock = ../yarn.lock;
|
||||||
|
packageResolutions."@quri/squiggle-lang" = lang.build;
|
||||||
|
};
|
||||||
|
lint = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-components-lint";
|
||||||
|
src = ../packages/components;
|
||||||
|
buildInputs = common.buildInputs ++ common.prettier;
|
||||||
|
buildPhase = "yarn lint";
|
||||||
|
installPhase = "mkdir -p $out";
|
||||||
|
};
|
||||||
|
build = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-components-build";
|
||||||
|
src = yarn-source + "/libexec/@quri/squiggle-components";
|
||||||
|
buildInputs = common.buildInputs;
|
||||||
|
buildPhase = ''
|
||||||
|
cp -r node_modules/@quri/squiggle-lang deps/@quri
|
||||||
|
pushd deps/@quri/squiggle-components
|
||||||
|
|
||||||
|
yarn --offline build:cjs
|
||||||
|
yarn --offline build:css
|
||||||
|
popd
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
|
||||||
|
# annoying hack because permissions on transitive dependencies later on
|
||||||
|
mv deps/@quri/squiggle-components/node_modules deps/@quri/squiggle-components/NODE_MODULES
|
||||||
|
mv node_modules deps/@quri/squiggle-components
|
||||||
|
|
||||||
|
# patching .gitignore so flake keeps build artefacts
|
||||||
|
sed -i /dist/d deps/@quri/squiggle-components/.gitignore
|
||||||
|
cp -r deps/@quri/squiggle-components/. $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
bundle = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-components-bundle";
|
||||||
|
src = yarn-source + "/libexec/@quri/squiggle-components";
|
||||||
|
buildInputs = common.buildInputs;
|
||||||
|
buildPhase = ''
|
||||||
|
cp -r node_modules/@quri/squiggle-lang deps/@quri
|
||||||
|
pushd deps/@quri/squiggle-components
|
||||||
|
|
||||||
|
yarn --offline bundle
|
||||||
|
popd
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
|
||||||
|
# annoying hack because permissions on transitive dependencies later on
|
||||||
|
mv deps/@quri/squiggle-components/node_modules deps/@quri/squiggle-components/NODE_MODULES
|
||||||
|
mv node_modules deps/@quri/squiggle-components
|
||||||
|
|
||||||
|
# patching .gitignore so flake keeps build artefacts
|
||||||
|
sed -i /dist/d deps/@quri/squiggle-components/.gitignore
|
||||||
|
cp -r deps/@quri/squiggle-components/. $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
125
nix/squiggle-lang.nix
Normal file
125
nix/squiggle-lang.nix
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
{ pkgs, commonFn, gentypeOutputFn }:
|
||||||
|
|
||||||
|
rec {
|
||||||
|
common = commonFn pkgs;
|
||||||
|
langPackageJson = let
|
||||||
|
raw = pkgs.lib.importJSON ../packages/squiggle-lang/package.json;
|
||||||
|
modified = pkgs.lib.recursiveUpdate raw {
|
||||||
|
devDependencies."@types/lodash" = "^4.14.167";
|
||||||
|
};
|
||||||
|
packageJsonString = builtins.toJSON modified;
|
||||||
|
in pkgs.writeText "packages/squiggle-lang/patched-package.json"
|
||||||
|
packageJsonString;
|
||||||
|
yarn-source = pkgs.mkYarnPackage {
|
||||||
|
name = "squiggle-lang_yarnsource";
|
||||||
|
src = ../packages/squiggle-lang;
|
||||||
|
packageJSON = langPackageJson;
|
||||||
|
yarnLock = ../yarn.lock;
|
||||||
|
pkgConfig = {
|
||||||
|
rescript = {
|
||||||
|
buildInputs = common.which
|
||||||
|
++ (if pkgs.system != "i686-linux" then [ pkgs.gcc_multi ] else [ ]);
|
||||||
|
postInstall = ''
|
||||||
|
echo "PATCHELF'ING RESCRIPT EXECUTABLES (INCL NINJA)"
|
||||||
|
# Patching interpreter for linux/*.exe's
|
||||||
|
THE_LD=$(patchelf --print-interpreter $(which mkdir))
|
||||||
|
patchelf --set-interpreter $THE_LD linux/*.exe && echo "- patched interpreter for linux/*.exe's"
|
||||||
|
|
||||||
|
# Replacing needed shared library for linux/ninja.exe
|
||||||
|
THE_SO=$(find /nix/store/*/lib64 -name libstdc++.so.6 | head -n 1)
|
||||||
|
patchelf --replace-needed libstdc++.so.6 $THE_SO linux/ninja.exe && echo "- replaced needed for linux/ninja.exe"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
bisect_ppx = {
|
||||||
|
buildInputs = common.which;
|
||||||
|
postInstall = ''
|
||||||
|
echo "PATCHELF'ING BISECT_PPX EXECUTABLE"
|
||||||
|
THE_LD=$(patchelf --print-interpreter $(which mkdir))
|
||||||
|
patchelf --set-interpreter $THE_LD bin/linux/ppx
|
||||||
|
patchelf --set-interpreter $THE_LD bin/linux/bisect-ppx-report
|
||||||
|
cp bin/linux/ppx ppx
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
gentype = {
|
||||||
|
postInstall = ''
|
||||||
|
mv gentype.exe ELFLESS-gentype.exe
|
||||||
|
cp ${gentypeOutputFn pkgs}/src/GenType.exe gentype.exe
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
lint = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-lang-lint";
|
||||||
|
src = yarn-source + "/libexec/@quri/squiggle-lang/deps/@quri/squiggle-lang";
|
||||||
|
buildInputs = common.buildInputs ++ common.prettier;
|
||||||
|
buildPhase = ''
|
||||||
|
yarn lint:prettier
|
||||||
|
yarn lint:rescript
|
||||||
|
'';
|
||||||
|
installPhase = "mkdir -p $out";
|
||||||
|
};
|
||||||
|
build = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-lang-build";
|
||||||
|
# `peggy` is in the `node_modules` that's adjacent to `deps`.
|
||||||
|
src = yarn-source + "/libexec/@quri/squiggle-lang";
|
||||||
|
buildInputs = common.buildInputs;
|
||||||
|
buildPhase = ''
|
||||||
|
# so that the path to ppx doesn't need to be patched.
|
||||||
|
mv node_modules deps
|
||||||
|
|
||||||
|
pushd deps/@quri/squiggle-lang
|
||||||
|
yarn --offline build:peggy
|
||||||
|
yarn --offline build:rescript
|
||||||
|
yarn --offline build:typescript
|
||||||
|
|
||||||
|
# custom gitignore so that the flake keeps build artefacts
|
||||||
|
mv .gitignore GITIGNORE
|
||||||
|
sed -i /Reducer_Peggy_GeneratedParser.js/d GITIGNORE
|
||||||
|
sed -i /\*.bs.js/d GITIGNORE
|
||||||
|
sed -i /\*.gen.ts/d GITIGNORE
|
||||||
|
sed -i /\*.gen.tsx/d GITIGNORE
|
||||||
|
sed -i /\*.gen.js/d GITIGNORE
|
||||||
|
sed -i /helpers.js/d GITIGNORE
|
||||||
|
|
||||||
|
popd
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
# mkdir -p $out/node_modules
|
||||||
|
mv deps/@quri/squiggle-lang/GITIGNORE deps/@quri/squiggle-lang/.gitignore
|
||||||
|
|
||||||
|
# annoying hack because permissions on transitive dependencies later on
|
||||||
|
mv deps/@quri/squiggle-lang/node_modules deps/@quri/squiggle-lang/NODE_MODULES
|
||||||
|
mv deps/node_modules deps/@quri/squiggle-lang
|
||||||
|
|
||||||
|
# the proper install phase
|
||||||
|
cp -r deps/@quri/squiggle-lang/. $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
test = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-lang-test";
|
||||||
|
src = build;
|
||||||
|
buildInputs = common.buildInputs;
|
||||||
|
buildPhase = ''
|
||||||
|
yarn --offline test
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -r . $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
bundle = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-lang-bundle";
|
||||||
|
src = test;
|
||||||
|
buildInputs = common.buildInputs;
|
||||||
|
buildPhase = ''
|
||||||
|
yarn --offline bundle
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -r dist $out
|
||||||
|
cp *.json $out/dist
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
24
nix/squiggle-vscode.nix
Normal file
24
nix/squiggle-vscode.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{ pkgs, commonFn, langFn, componentsFn }:
|
||||||
|
|
||||||
|
rec {
|
||||||
|
common = commonFn pkgs;
|
||||||
|
lang = langFn pkgs;
|
||||||
|
components = componentsFn pkgs;
|
||||||
|
|
||||||
|
yarn-source = pkgs.mkYarnPackage {
|
||||||
|
name = "squiggle-vscodeext_yarnsource";
|
||||||
|
src = ../packages/vscode-ext;
|
||||||
|
packageJson = ../packages/vscode-ext/package.json;
|
||||||
|
yarnLock = ../yarn.lock;
|
||||||
|
packageResolutions."@quri/squiggle-lang" = lang.build;
|
||||||
|
packageResolutions."@quri/squiggle-components" = components.build;
|
||||||
|
};
|
||||||
|
lint = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-vscode-lint";
|
||||||
|
buildInputs = common.buildInputs ++ common.prettier;
|
||||||
|
src =
|
||||||
|
../packages/vscode-ext; # yarn-source + "/libexec/vscode-squiggle/deps/vscode-squiggle";
|
||||||
|
buildPhase = "prettier --check .";
|
||||||
|
installPhase = "mkdir -p $out";
|
||||||
|
};
|
||||||
|
}
|
30
nix/squiggle-website.nix
Normal file
30
nix/squiggle-website.nix
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{ pkgs, commonFn, langFn, componentsFn }:
|
||||||
|
|
||||||
|
rec {
|
||||||
|
common = commonFn pkgs;
|
||||||
|
lang = langFn pkgs;
|
||||||
|
components = componentsFn pkgs;
|
||||||
|
websitePackageJson = let
|
||||||
|
raw = pkgs.lib.importJSON ../packages/website/package.json;
|
||||||
|
modified = pkgs.lib.recursiveUpdate raw {
|
||||||
|
dependencies.postcss-import = "^14.1.0";
|
||||||
|
dependencies.tailwindcss = "^3.1.8";
|
||||||
|
};
|
||||||
|
packageJsonString = builtins.toJSON modified;
|
||||||
|
in pkgs.writeText "packages/website/patched-package.json" packageJsonString;
|
||||||
|
yarn-source = pkgs.mkYarnPackage {
|
||||||
|
name = "squiggle-website_yarnsource";
|
||||||
|
src = ../packages/website;
|
||||||
|
packageJSON = websitePackageJson;
|
||||||
|
yarnLock = ../yarn.lock;
|
||||||
|
packageResolutions."@quri/squiggle-lang" = lang.build;
|
||||||
|
packageResolutions."@quri/squiggle-components" = components.build;
|
||||||
|
};
|
||||||
|
lint = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-website-lint";
|
||||||
|
buildInputs = common.buildInputs ++ common.prettier;
|
||||||
|
src = ../packages/website;
|
||||||
|
buildPhase = "yarn lint";
|
||||||
|
installPhase = "mkdir -p $out";
|
||||||
|
};
|
||||||
|
}
|
2
nixos.sh
2
nixos.sh
|
@ -14,5 +14,5 @@ patchelf --set-interpreter $theLd ./node_modules/gentype/gentype.exe
|
||||||
patchelf --set-interpreter $theLd ./node_modules/rescript/linux/*.exe
|
patchelf --set-interpreter $theLd ./node_modules/rescript/linux/*.exe
|
||||||
patchelf --set-interpreter $theLd ./node_modules/bisect_ppx/ppx
|
patchelf --set-interpreter $theLd ./node_modules/bisect_ppx/ppx
|
||||||
patchelf --set-interpreter $theLd ./node_modules/bisect_ppx/bisect-ppx-report
|
patchelf --set-interpreter $theLd ./node_modules/bisect_ppx/bisect-ppx-report
|
||||||
theSo=$(find /nix/store/*$fhsShellName*/lib64 -name libstdc++.so.6 | grep $fhsShellName | head -n 1)
|
theSo=$(find /nix/store/*$fhsShellName*/lib64 -name libstdc++.so.6 | head -n 1)
|
||||||
patchelf --replace-needed libstdc++.so.6 $theSo ./node_modules/rescript/linux/ninja.exe
|
patchelf --replace-needed libstdc++.so.6 $theSo ./node_modules/rescript/linux/ninja.exe
|
||||||
|
|
10
yarn.lock
10
yarn.lock
|
@ -18807,16 +18807,16 @@ y18n@^5.0.5:
|
||||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
|
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
|
||||||
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
|
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
|
||||||
|
|
||||||
yallist@^4.0.0:
|
|
||||||
version "4.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
|
|
||||||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
|
||||||
|
|
||||||
yallist@^3.0.2:
|
yallist@^3.0.2:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
||||||
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
||||||
|
|
||||||
|
yallist@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
|
||||||
|
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
||||||
|
|
||||||
yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2:
|
yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2:
|
||||||
version "1.10.2"
|
version "1.10.2"
|
||||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
|
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user