flake.nix 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. {
  2. description = "Dev shell for myBookShelf (Lazarus/FPC)";
  3. inputs = {
  4. nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; # feel free to bump to unstable if you prefer
  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 = import nixpkgs { inherit system; };
  11. in {
  12. devShells = {
  13. # Safe default: GTK2 widgetset
  14. default = pkgs.mkShell {
  15. buildInputs = [
  16. pkgs.fpc
  17. pkgs.fpcSrc
  18. pkgs.lazarus
  19. pkgs.gtk2 # widget toolkit for LCL
  20. pkgs.poppler_utils # pdftoppm for PDF covers
  21. pkgs.openssl
  22. pkgs.cacert # SSL certs for HTTPS
  23. pkgs.gdb # Lazarus debugger
  24. pkgs.pkg-config
  25. ];
  26. shellHook = ''
  27. export LCLWidgetType=gtk2
  28. export FPCSRC=${pkgs.fpcSrc}
  29. # Nix usually sets this, but make it explicit:
  30. export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt
  31. export NIX_SSL_CERT_FILE=$SSL_CERT_FILE
  32. echo
  33. echo "myBookShelf dev shell (GTK2) ready!"
  34. echo " • Widgetset: $LCLWidgetType"
  35. echo " • FPC source dir: $FPCSRC"
  36. echo "Commands:"
  37. echo " lazarus & # launch IDE (first run: point FPC sources to \$FPCSRC if asked)"
  38. echo " lazbuild --ws=$LCLWidgetType path/to/project.lpi"
  39. echo
  40. '';
  41. };
  42. # Optional: Qt5 widgetset
  43. qt5 = pkgs.mkShell {
  44. buildInputs = [
  45. pkgs.fpc
  46. pkgs.fpcSrc
  47. pkgs.lazarus
  48. pkgs.qt5.qtbase
  49. pkgs.qt5.qttools
  50. pkgs.poppler_utils
  51. pkgs.openssl
  52. pkgs.cacert
  53. pkgs.gdb
  54. pkgs.pkg-config
  55. ];
  56. shellHook = ''
  57. export LCLWidgetType=qt5
  58. export FPCSRC=${pkgs.fpcSrc}
  59. export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt
  60. export NIX_SSL_CERT_FILE=$SSL_CERT_FILE
  61. echo
  62. echo "myBookShelf dev shell (Qt5) ready!"
  63. echo " • Widgetset: $LCLWidgetType"
  64. echo " • FPC source dir: $FPCSRC"
  65. echo "Commands:"
  66. echo " lazarus & # launch IDE"
  67. echo " lazbuild --ws=$LCLWidgetType path/to/project.lpi"
  68. echo
  69. '';
  70. };
  71. };
  72. });
  73. }