flake.nix 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. qmd = pkgs.stdenv.mkDerivation {
  12. pname = "qmd";
  13. version = "1.0.0";
  14. src = ./.;
  15. nativeBuildInputs = [ pkgs.bun pkgs.makeWrapper ];
  16. buildInputs = [ pkgs.sqlite ];
  17. buildPhase = ''
  18. export HOME=$(mktemp -d)
  19. bun install --frozen-lockfile
  20. '';
  21. installPhase = ''
  22. mkdir -p $out/lib/qmd
  23. mkdir -p $out/bin
  24. cp -r node_modules $out/lib/qmd/
  25. cp -r src $out/lib/qmd/
  26. cp package.json $out/lib/qmd/
  27. makeWrapper ${pkgs.bun}/bin/bun $out/bin/qmd \
  28. --add-flags "$out/lib/qmd/src/qmd.ts" \
  29. --set DYLD_LIBRARY_PATH "${pkgs.sqlite.out}/lib" \
  30. --set LD_LIBRARY_PATH "${pkgs.sqlite.out}/lib"
  31. '';
  32. meta = with pkgs.lib; {
  33. description = "On-device search engine for markdown notes, meeting transcripts, and knowledge bases";
  34. homepage = "https://github.com/tobi/qmd";
  35. license = licenses.mit;
  36. platforms = platforms.unix;
  37. };
  38. };
  39. in
  40. {
  41. packages = {
  42. default = qmd;
  43. qmd = qmd;
  44. };
  45. apps.default = {
  46. type = "app";
  47. program = "${qmd}/bin/qmd";
  48. };
  49. devShells.default = pkgs.mkShell {
  50. buildInputs = [
  51. pkgs.bun
  52. pkgs.sqlite
  53. ];
  54. shellHook = ''
  55. echo "QMD development shell"
  56. echo "Run: bun src/qmd.ts <command>"
  57. '';
  58. };
  59. }
  60. );
  61. }