flake.nix 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. {
  2. description = "QMD - Quick Markdown Search";
  3. inputs = {
  4. nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
  5. flake-utils.url = "github:numtide/flake-utils";
  6. };
  7. outputs = { self, nixpkgs, flake-utils }:
  8. flake-utils.lib.eachDefaultSystem (system:
  9. let
  10. pkgs = nixpkgs.legacyPackages.${system};
  11. # SQLite with loadable extension support for sqlite-vec
  12. sqliteWithExtensions = pkgs.sqlite.overrideAttrs (old: {
  13. configureFlags = (old.configureFlags or []) ++ [
  14. "--enable-load-extension"
  15. ];
  16. });
  17. qmd = pkgs.stdenv.mkDerivation {
  18. pname = "qmd";
  19. version = "1.0.0";
  20. src = ./.;
  21. nativeBuildInputs = [ pkgs.bun pkgs.makeWrapper ];
  22. buildInputs = [ pkgs.sqlite ];
  23. buildPhase = ''
  24. export HOME=$(mktemp -d)
  25. bun install --frozen-lockfile
  26. '';
  27. installPhase = ''
  28. mkdir -p $out/lib/qmd
  29. mkdir -p $out/bin
  30. cp -r node_modules $out/lib/qmd/
  31. cp -r src $out/lib/qmd/
  32. cp package.json $out/lib/qmd/
  33. makeWrapper ${pkgs.bun}/bin/bun $out/bin/qmd \
  34. --add-flags "$out/lib/qmd/src/qmd.ts" \
  35. --set DYLD_LIBRARY_PATH "${pkgs.sqlite.out}/lib" \
  36. --set LD_LIBRARY_PATH "${pkgs.sqlite.out}/lib"
  37. '';
  38. meta = with pkgs.lib; {
  39. description = "On-device search engine for markdown notes, meeting transcripts, and knowledge bases";
  40. homepage = "https://github.com/tobi/qmd";
  41. license = licenses.mit;
  42. platforms = platforms.unix;
  43. };
  44. };
  45. in
  46. {
  47. packages = {
  48. default = qmd;
  49. qmd = qmd;
  50. };
  51. apps.default = {
  52. type = "app";
  53. program = "${qmd}/bin/qmd";
  54. };
  55. devShells.default = pkgs.mkShell {
  56. buildInputs = [
  57. pkgs.bun
  58. sqliteWithExtensions
  59. ];
  60. shellHook = ''
  61. export BREW_PREFIX="''${BREW_PREFIX:-${sqliteWithExtensions.out}}"
  62. echo "QMD development shell"
  63. echo "Run: bun src/qmd.ts <command>"
  64. '';
  65. };
  66. }
  67. );
  68. }