Caution
Homeval is still in early alpha and can be unstable so do not trust it with data you have not backed up.
Homeval is licensed under GNU AGPL-3.0-only
Unfortunately due to replit's TOS, AGPL programs cannot be run in public repls. Though, private repls are fine, as long as you still fulfill the terms of the license.
This is due to all public repls being licensed under MIT, and GPL code cannot be included in a MIT licensed project.
- Git clone the repository
- Install required dependencies
- Git ( Git for Windows on windows)
- The Protobuf Compiler
- If using a debian linux based distro just run:
sudo apt install protobuf-compiler
- If using a debian linux based distro just run:
- Rustup
- Git ( Git for Windows on windows)
- Ripgrep.
Set up a PostgreSQL database and set the env var $HOMEVAL_DB
to its connection url.
If the database isn't setup repldb won't work, and file history won't persist through server restarts.
Warning
If you use someone else's key server it could let them authenticate as any user on your homeval instance
Note
This feature has not been tested with deployments yet, a new solution may be needed.
Run repl-key-server on a repl and set the env var $HOMEVAL_PASETO_KEY_URL
to <your repl url>/keys
.
Important
This will not work on windows see #112
To make use of this feature make sure that all files in extras/
are placed in a directory contained in your $PATH
on the machine running homeval.
Homeval can be built into a binary with cargo build --release
the binary will then end up in target/release/homeval
or target/release/homeval.exe
(make sure to set RUST_LOG=INFO
when running this binary or you won't get any logs).
To build a minimal build run cargo build --release --no-default-features
, this will compile out the following features:
- replspace api
- database support
- repldb
- connection authentication
It will however produce a smaller binary, and compile faster.
To compile and run a debug build use cargo run
.
Make a new file in services/src/
name it with the format <service name>.rs
then see existing services and services/src/traits.rs
for the interface you need to provide. Docs focussed on implementing services are a WIP.
To then use the service you will need to edit services/src/lib.rs
to include your service.
- Make a new line at the top of
services/src/lib.rs
and addmod <service name>
- Go to the definition of
Channel::new
and add your service initialization code to the match statement. - Add your service to
IMPLEMENTED_SERVICES
(it can be found at the bottom ofservices/src/lib.rs
)
Target | Will Compile | Officially Supported | Feature Complete | Tested1 |
---|---|---|---|---|
Linux2 | ✅ | ✅ | ✅ | ✅3 |
macOS4 | ✅ | ✅ | ✅ | ❎ |
Windows | ✅ | ✅ | ✅5 | ❎ |
Footnotes
-
This marks if every release is officially tested for this target. ↩
-
The distro has to have an up to date GLIBC version, musl is not supported. ↩
-
Currently, the only tested distribution is arch linux. Though all distros with an up to date GLIC should work. ↩
-
Please not that PotentialStyx (the main dev) does not have any machines that run macOS, so issues on macOS might take longer to fix. ↩
-
While the windows binary supports every feature, the replspace binaries found in extras still need to be ported to batch/powershell (#112) ↩