| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- {
- description = "QMD - Quick Markdown Search";
- inputs = {
- nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
- flake-utils.url = "github:numtide/flake-utils";
- };
- outputs = { self, nixpkgs, flake-utils }:
- flake-utils.lib.eachDefaultSystem (system:
- let
- pkgs = nixpkgs.legacyPackages.${system};
- qmd = pkgs.stdenv.mkDerivation {
- pname = "qmd";
- version = "1.0.0";
- src = ./.;
- nativeBuildInputs = [ pkgs.bun pkgs.makeWrapper ];
- buildInputs = [ pkgs.sqlite ];
- buildPhase = ''
- export HOME=$(mktemp -d)
- bun install --frozen-lockfile
- '';
- installPhase = ''
- mkdir -p $out/lib/qmd
- mkdir -p $out/bin
- cp -r node_modules $out/lib/qmd/
- cp -r src $out/lib/qmd/
- cp package.json $out/lib/qmd/
- makeWrapper ${pkgs.bun}/bin/bun $out/bin/qmd \
- --add-flags "$out/lib/qmd/src/qmd.ts" \
- --set DYLD_LIBRARY_PATH "${pkgs.sqlite.out}/lib" \
- --set LD_LIBRARY_PATH "${pkgs.sqlite.out}/lib"
- '';
- meta = with pkgs.lib; {
- description = "On-device search engine for markdown notes, meeting transcripts, and knowledge bases";
- homepage = "https://github.com/tobi/qmd";
- license = licenses.mit;
- platforms = platforms.unix;
- };
- };
- in
- {
- packages = {
- default = qmd;
- qmd = qmd;
- };
- apps.default = {
- type = "app";
- program = "${qmd}/bin/qmd";
- };
- devShells.default = pkgs.mkShell {
- buildInputs = [
- pkgs.bun
- pkgs.sqlite
- ];
- shellHook = ''
- echo "QMD development shell"
- echo "Run: bun src/qmd.ts <command>"
- '';
- };
- }
- );
- }
|