mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-18 08:01:26 +00:00
add nix documentation + flake cleanups (#4662)
This commit is contained in:
@@ -355,6 +355,8 @@ you to have it being synced automatically everyday.
|
||||
See the [./frontend/README_DEV.md](./frontend/README_DEV.md) file for all
|
||||
running options.
|
||||
|
||||
Using [Nix](./frontend/README_DEV.md#nix).
|
||||
|
||||
### only Frontend
|
||||
This will use the backend of <https://app.windmill.dev> but your own frontend
|
||||
with hot-code reloading. Note that you will need to use a username / password login due to CSRF checks using a different auth provider.
|
||||
|
||||
@@ -13,31 +13,20 @@
|
||||
overlays = [ (import rust-overlay) ];
|
||||
};
|
||||
buildInputs = with pkgs; [
|
||||
openssl.dev libxml2.dev xmlsec.dev libxslt.dev
|
||||
rust-bin.beta.latest.default nodejs go
|
||||
xcaddy sqlx-cli pkg-config
|
||||
openssl openssl.dev libxml2.dev xmlsec.dev libxslt.dev
|
||||
rust-bin.stable.latest.default nodejs
|
||||
postgresql
|
||||
pkg-config
|
||||
];
|
||||
environment = {
|
||||
NODE_ENV = "development";
|
||||
NODE_OPTIONS = "--max-old-space-size=16384";
|
||||
DATABASE_URL = "postgres://postgres:changeme@127.0.0.1:5432/";
|
||||
PKG_CONFIG_PATH = pkgs.lib.makeSearchPath "lib/pkgconfig" (with pkgs; [
|
||||
openssl.dev
|
||||
libxml2.dev
|
||||
xmlsec.dev
|
||||
libxslt.dev
|
||||
]);
|
||||
};
|
||||
rustcTarget = pkgs.hostPlatform.rust.rustcTarget;
|
||||
fetch_librusty_v8 = { version, shas }: pkgs.fetchurl {
|
||||
name = "librusty_v8-${version}";
|
||||
url = "https://github.com/denoland/rusty_v8/releases/download/v${version}/librusty_v8_release_${rustcTarget}.a.gz";
|
||||
sha256 = shas.${system};
|
||||
};
|
||||
PKG_CONFIG_PATH = pkgs.lib.makeSearchPath "lib/pkgconfig" (with pkgs; [
|
||||
openssl.dev
|
||||
libxml2.dev
|
||||
xmlsec.dev
|
||||
libxslt.dev
|
||||
]);
|
||||
in {
|
||||
devShell = pkgs.mkShell {
|
||||
inherit (environment) NODE_ENV NODE_OPTIONS DATABASE_URL PKG_CONFIG_PATH;
|
||||
buildInputs = buildInputs;
|
||||
buildInputs = buildInputs ++ (with pkgs; [ git go xcaddy sqlx-cli ]);
|
||||
packages = [
|
||||
(pkgs.writeScriptBin "wm-caddy" ''
|
||||
cd ./frontend
|
||||
@@ -54,27 +43,39 @@
|
||||
'')
|
||||
(pkgs.writeScriptBin "wm-migrate" ''
|
||||
cd ./backend
|
||||
sqlx database reset
|
||||
sqlx database create
|
||||
sqlx migrate run
|
||||
'')
|
||||
(pkgs.writeScriptBin "wm-setup" ''
|
||||
sqlx database create
|
||||
wm-build
|
||||
wm-caddy
|
||||
wm-migrate
|
||||
'')
|
||||
(pkgs.writeScriptBin "wm-reset" ''
|
||||
sqlx database drop -f
|
||||
sqlx database create
|
||||
wm-migrate
|
||||
'')
|
||||
(pkgs.writeScriptBin "wm" ''
|
||||
cd ./frontend
|
||||
npm run dev $*
|
||||
'')
|
||||
];
|
||||
|
||||
inherit PKG_CONFIG_PATH;
|
||||
NODE_ENV = "development";
|
||||
NODE_OPTIONS = "--max-old-space-size=16384";
|
||||
DATABASE_URL = "postgres://postgres:changeme@127.0.0.1:5432/";
|
||||
REMOTE = "http://127.0.0.1:8000";
|
||||
REMOTE_LSP = "http://127.0.0.1:3001";
|
||||
};
|
||||
packages.default = self.packages.${system}.windmill;
|
||||
packages.windmill-client = pkgs.stdenv.mkDerivation {
|
||||
pname = "windmill-client";
|
||||
version = (pkgs.lib.strings.trim (builtins.readFile ./version.txt));
|
||||
|
||||
src = ./.;
|
||||
buildInputs = with pkgs; [ nodejs go ];
|
||||
buildInputs = with pkgs; [ nodejs ];
|
||||
|
||||
buildPhase = ''
|
||||
export HOME=$(pwd)
|
||||
@@ -91,8 +92,6 @@
|
||||
'';
|
||||
};
|
||||
packages.windmill = pkgs.rustPlatform.buildRustPackage {
|
||||
inherit (environment) DATABASE_URL PKG_CONFIG_PATH;
|
||||
|
||||
pname = "windmill";
|
||||
version = (pkgs.lib.strings.trim (builtins.readFile ./version.txt));
|
||||
|
||||
@@ -111,26 +110,32 @@
|
||||
};
|
||||
};
|
||||
|
||||
buildFeatures = [ "enterprise" ];
|
||||
buildFeatures = [ ];
|
||||
doCheck = false;
|
||||
preBuild = ''
|
||||
export HOME=$(pwd)
|
||||
npm config set strict-ssl false
|
||||
cd backend
|
||||
sqlx database create
|
||||
sqlx migrate run
|
||||
'';
|
||||
|
||||
inherit PKG_CONFIG_PATH;
|
||||
SQLX_OFFLINE = true;
|
||||
FRONTEND_BUILD_DIR = "${self.packages.${system}.windmill-client}/build";
|
||||
RUSTY_V8_ARCHIVE = (fetch_librusty_v8 {
|
||||
version = "130.0.1";
|
||||
shas = {
|
||||
x86_64-linux = pkgs.lib.fakeHash;
|
||||
aarch64-linux = pkgs.lib.fakeHash;
|
||||
x86_64-darwin = pkgs.lib.fakeHash;
|
||||
aarch64-darwin = "sha256-d1QTLt8gOUFxACes4oyIYgDF/srLOEk+5p5Oj1ECajQ=";
|
||||
RUSTY_V8_ARCHIVE =
|
||||
let
|
||||
version = "130.0.1";
|
||||
target = pkgs.hostPlatform.rust.rustcTarget;
|
||||
sha256 = {
|
||||
x86_64-linux = pkgs.lib.fakeHash;
|
||||
aarch64-linux = pkgs.lib.fakeHash;
|
||||
x86_64-darwin = pkgs.lib.fakeHash;
|
||||
aarch64-darwin = "sha256-d1QTLt8gOUFxACes4oyIYgDF/srLOEk+5p5Oj1ECajQ=";
|
||||
}.${system};
|
||||
in pkgs.fetchurl {
|
||||
name = "librusty_v8-${version}";
|
||||
url = "https://github.com/denoland/rusty_v8/releases/download/v${version}/librusty_v8_release_${target}.a.gz";
|
||||
inherit sha256;
|
||||
};
|
||||
});
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# Developing
|
||||
|
||||
[Using Nix](#nix), otherwise:
|
||||
|
||||
In the `frontend/` directory:
|
||||
|
||||
- install the dependencies with `npm install` (or `pnpm install` or `yarn`)
|
||||
@@ -136,3 +138,45 @@ NOTCATCHALL=true npm run build
|
||||
which will generate an index.html and allow you to serve the frontend with any static server.
|
||||
|
||||
Env variables used for build are set in .env file. See [https://vitejs.dev/guide/env-and-mode.html#env-files](https://vitejs.dev/guide/env-and-mode.html#env-files) for more details.
|
||||
|
||||
## Nix
|
||||
|
||||
Windmill use [nix flakes](https://nixos.wiki/wiki/Flakes):
|
||||
```bash
|
||||
nix run github:windmill-labs/windmill
|
||||
```
|
||||
|
||||
### Development
|
||||
```bash
|
||||
nix develop # enter a dev shell containing all necessary packages.
|
||||
|
||||
wm-setup # build the frontend and setup the database.
|
||||
wm # run the frontend.
|
||||
|
||||
# In an other shell:
|
||||
nix develop
|
||||
cd backend
|
||||
cargo run
|
||||
```
|
||||
|
||||
### Updating [`flake.nix`](../flake.nix)
|
||||
|
||||
```bash
|
||||
nix flake update # update the lock file.
|
||||
```
|
||||
|
||||
Some cargo dependencies use fixed git revisions, which are also fixed in `flake.nix`:
|
||||
```nix
|
||||
outputHashes = {
|
||||
"php-parser-rs-0.1.3" = "sha256-ZeI3KgUPmtjlRfq6eAYveqt8Ay35gwj6B9iOQRjQa9A=";
|
||||
# ...
|
||||
};
|
||||
```
|
||||
|
||||
When updating a revision, replace the incorrect `sha256` with `pkgs.lib.fakeHash`:
|
||||
```diff
|
||||
- "php-parser-rs-0.1.3" = "sha256-ZeI3KgUPmtjlRfq6eAYveqt8Ay35gwj6B9iOQRjQa9A=";
|
||||
+ "php-parser-rs-0.1.3" = pkgs.lib.fakeHash;
|
||||
```
|
||||
|
||||
Then run `nix build .#windmill` and update with the correct sha.
|
||||
|
||||
Reference in New Issue
Block a user