The official website and blog for the Marlowe Language and platform.
Writing with live preview:
$ nix develop
$ pnpm install
$ pnpm run devThe preview by default is available at http://localhost:3000.
Currently there is no fully automated publishing pipeline so in order to publish a post:
- Write a new post in the
./pagesdirectory - Commit and push the changes
- Once merged to
main, either:
- Notify the team to publish your content, or
- Deploy yourself using the
marlowe-deployrepository:$ nix develop $ nix flake update --input marlowe-website $ redeploy-hetzner
- Uses
nextrawith customizedblogtheme in./themedirectory - Content markdown files located in
./pagesdirectory - All
*.mdxfiles require a "type" specification that determines rendering
The ./nix/default.nix file contains the build configuration:
- Uses
buildNpmPackageto build the project - Main build step executes
npm run publish
The ./nix/nixos.nix file contains the NixOS module:
- Integrates with
http-servicesfor static page serving http-servicesmodule is defined atmarlowe-deploylevel
During deployment development you can be interested in both building the project and deploying it to a local machine:
- In order to quickly check the build process itself you can use
$ nix build .#defaultwhich will build the project and create aresultsymlink to the build directory. - If you are on NixOS machine which uses flakes you can add the web page deployment to your system by including two extra modules - here is a simple system level flake which deploys our blog on a local machine on
marlowe.localhost.com(you should add this domain to your systemextraHosts):
{
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable"; # Or your current version
marlowe-blog.url = "git+file:///home/paluh/projects/marlowe/blog/";
marlowe-deploy.url = "git+file:///home/paluh/projects/marlowe/marlowe-deploy/";
};
outputs = { self, nixpkgs, marlowe-blog, marlowe-deploy }: {
nixosConfigurations.apoptosis = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
marlowe-blog.nixosModules.default
(import (marlowe-deploy + "/http-services.nix"))
({config, ...}: {
marlowe.website."localhost" = {
domain = "marlowe.localhost.com";
flake = marlowe-blog;
useSSL = false;
};
})
];
};
};
}