https://github.com/jiribenes/effekt-template
Effekt project template
https://github.com/jiribenes/effekt-template
effekt effekt-lang template
Last synced: 5 months ago
JSON representation
Effekt project template
- Host: GitHub
- URL: https://github.com/jiribenes/effekt-template
- Owner: jiribenes
- License: mit
- Created: 2024-08-31T09:43:11.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2026-01-13T08:55:14.000Z (6 months ago)
- Last Synced: 2026-01-13T10:59:20.255Z (6 months ago)
- Topics: effekt, effekt-lang, template
- Language: Nix
- Homepage:
- Size: 137 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Effekt Template
> [!WARNING]
> This is a work-in-progress, feel free to contribute!
This template provides a starting point for Effekt projects.
## Table of contents
- [First steps](#first-steps)
- [Useful commands](#useful-commands)
- [Effekt commands](#effekt-commands)
- [Nix-related commands](#nix-related-commands)
- [Example projects](#example-projects-using-this-template)
- [Repository structure](#repository-structure)
- [CI](#ci)
---
## First steps
After using this template, follow these steps to set up your project:
1. Set up your development environment:
- Clone this repository locally.
- Open it in VSCode.
- Install the Effekt VSCode extension offered in the pop-up in the bottom right.
2. Customize the project:
- Open `flake.nix` and update the project name and other relevant values (follow the comments).
- Push your `flake.nix` file after the changes and see if the CI agrees.
3. Set-up auto-update CI in order to get weekly PRs on Tuesday which update the Effekt version in CI:
- Go to Settings -> Actions -> General:
- and set "Workflow permissions" to "Read and write permissions"
- and check "Allow GitHub Actions to create and approve pull requests"
- See the [CI](#ci) section for more details
3. Replace this `README` with your own!
## Useful commands
### Effekt commands
Run the main file:
```sh
effekt src/main.effekt
```
This (like many other Effekt commands) uses the JavaScript backend by default.
To use a different backend, add the `--backend ` flag.
Run the tests:
```sh
effekt src/test.effekt
```
Open the REPL:
```sh
effekt
```
Build the project:
```sh
effekt --build src/main.effekt
```
This builds the project into the `out/` directory, creating a runnable file `out/main`.
To see all available options and backends, run:
```sh
effekt --help
```
### Nix-related commands
While Nix installation is optional, it provides several benefits:
Update dependencies (also runs automatically in CI):
```sh
nix flake update
```
Open a shell with all necessary dependencies:
```sh
nix develop
```
Run the main entry point:
```sh
nix run
```
Build the project (output in `result/bin/`):
```sh
nix build
```
## Example projects using this template
- [see the `effekt-community` GitHub organization](https://github.com/effekt-community/)
- This very project!
## Repository structure
- `.github/workflows/*.yml`: Contains the [CI](#ci) definitions
- `src/`: Contains the source code
- `main.effekt`: Main entry point
- `test.effekt`: Entry point for tests
- `lib.effekt`: Library code imported by `main` and `test`
- `flake.nix`: Package configuration in a Nix flake
- `flake.lock`: Auto-generated lockfile for dependencies
- `LICENSE`: Project license
- `README`: This README file
## CI
Two GitHub Actions are set up:
1. `flake-check`:
- Checks the `flake.nix` file, builds and tests the project
- Runs on demand, on `main`, and on PRs
- To run custom commands, add a step using:
- `nix run -- ` to run the main entry point with the given arguments
- `nix develop -c ''` to run commands in the correct environment
2. `update-flake-lock`:
- Updates package versions in `flake.nix`
- Runs on demand and weekly (Tuesdays at 00:00 UTC)