initial version
This commit is contained in:
102
flake.nix
Normal file
102
flake.nix
Normal file
@@ -0,0 +1,102 @@
|
||||
{
|
||||
description = "org-to-quartz: Convert org notes to Quartz-compatible markdown";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
python = pkgs.python311;
|
||||
pythonPackages = python.pkgs;
|
||||
|
||||
org-to-quartz = pythonPackages.buildPythonApplication {
|
||||
pname = "org-to-quartz";
|
||||
version = "0.1.0";
|
||||
format = "pyproject";
|
||||
|
||||
src = ./.;
|
||||
|
||||
nativeBuildInputs = [
|
||||
pythonPackages.setuptools
|
||||
pythonPackages.wheel
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
pythonPackages.pybtex
|
||||
pythonPackages.requests
|
||||
pythonPackages.pyyaml
|
||||
pkgs.pandoc
|
||||
];
|
||||
|
||||
# Make pandoc available at runtime
|
||||
makeWrapperArgs = [
|
||||
"--prefix" "PATH" ":" "${pkgs.pandoc}/bin"
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Convert org notes to Quartz-compatible markdown";
|
||||
mainProgram = "org-to-quartz";
|
||||
};
|
||||
};
|
||||
|
||||
# Script to serve quartz with converted notes
|
||||
quartz-serve = pkgs.writeShellScriptBin "quartz-serve" ''
|
||||
set -e
|
||||
NOTES_DIR="''${1:-.}"
|
||||
PORT="''${2:-8080}"
|
||||
WORK_DIR=$(mktemp -d)
|
||||
|
||||
echo "Cloning Quartz..."
|
||||
${pkgs.git}/bin/git clone --depth 1 https://github.com/jackyzha0/quartz.git "$WORK_DIR/quartz" 2>/dev/null
|
||||
|
||||
echo "Installing dependencies..."
|
||||
cd "$WORK_DIR/quartz"
|
||||
${pkgs.nodejs}/bin/npm install --silent
|
||||
|
||||
echo "Converting org notes from $NOTES_DIR..."
|
||||
${org-to-quartz}/bin/org-to-quartz "$NOTES_DIR" "$WORK_DIR/quartz/content" -v
|
||||
|
||||
# Enable OxHugo plugin
|
||||
${pkgs.gnused}/bin/sed -i 's/Plugin.GitHubFlavoredMarkdown()/Plugin.OxHugoFlavouredMarkdown(),\n Plugin.GitHubFlavoredMarkdown()/' quartz.config.ts
|
||||
|
||||
echo ""
|
||||
echo "Starting Quartz on http://localhost:$PORT"
|
||||
${pkgs.nodejs}/bin/npx quartz build --serve --port "$PORT"
|
||||
'';
|
||||
|
||||
in {
|
||||
packages = {
|
||||
default = org-to-quartz;
|
||||
org-to-quartz = org-to-quartz;
|
||||
};
|
||||
|
||||
devShells.default = pkgs.mkShell {
|
||||
buildInputs = [
|
||||
python
|
||||
pythonPackages.pybtex
|
||||
pythonPackages.requests
|
||||
pythonPackages.pyyaml
|
||||
pythonPackages.pytest
|
||||
pkgs.pandoc
|
||||
pkgs.nodejs
|
||||
];
|
||||
};
|
||||
|
||||
apps = {
|
||||
default = {
|
||||
type = "app";
|
||||
program = "${org-to-quartz}/bin/org-to-quartz";
|
||||
};
|
||||
serve = {
|
||||
type = "app";
|
||||
program = "${quartz-serve}/bin/quartz-serve";
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user