Bernardo Magri пре 4 месеци
родитељ
комит
1b766b6e9e
1 измењених фајлова са 78 додато и 0 уклоњено
  1. 78 0
      flake.nix

+ 78 - 0
flake.nix

@@ -0,0 +1,78 @@
+{
+  description = "Dev shell for myBookShelf (Lazarus/FPC)";
+
+  inputs = {
+    nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; # feel free to bump to unstable if you prefer
+    flake-utils.url = "github:numtide/flake-utils";
+  };
+
+  outputs = { self, nixpkgs, flake-utils }:
+    flake-utils.lib.eachDefaultSystem (system:
+      let
+        pkgs = import nixpkgs { inherit system; };
+      in {
+        devShells = {
+          # Safe default: GTK2 widgetset
+          default = pkgs.mkShell {
+            buildInputs = [
+              pkgs.fpc
+              pkgs.fpcSrc
+              pkgs.lazarus
+              pkgs.gtk2                 # widget toolkit for LCL
+              pkgs.poppler_utils        # pdftoppm for PDF covers
+              pkgs.openssl
+              pkgs.cacert               # SSL certs for HTTPS
+              pkgs.gdb                  # Lazarus debugger
+              pkgs.pkg-config
+            ];
+            shellHook = ''
+              export LCLWidgetType=gtk2
+              export FPCSRC=${pkgs.fpcSrc}
+              # Nix usually sets this, but make it explicit:
+              export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt
+              export NIX_SSL_CERT_FILE=$SSL_CERT_FILE
+
+              echo
+              echo "myBookShelf dev shell (GTK2) ready!"
+              echo "  • Widgetset:      $LCLWidgetType"
+              echo "  • FPC source dir: $FPCSRC"
+              echo "Commands:"
+              echo "  lazarus &     # launch IDE (first run: point FPC sources to \$FPCSRC if asked)"
+              echo "  lazbuild --ws=$LCLWidgetType path/to/project.lpi"
+              echo
+            '';
+          };
+
+          # Optional: Qt5 widgetset
+          qt5 = pkgs.mkShell {
+            buildInputs = [
+              pkgs.fpc
+              pkgs.fpcSrc
+              pkgs.lazarus
+              pkgs.qt5.qtbase
+              pkgs.qt5.qttools
+              pkgs.poppler_utils
+              pkgs.openssl
+              pkgs.cacert
+              pkgs.gdb
+              pkgs.pkg-config
+            ];
+            shellHook = ''
+              export LCLWidgetType=qt5
+              export FPCSRC=${pkgs.fpcSrc}
+              export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt
+              export NIX_SSL_CERT_FILE=$SSL_CERT_FILE
+
+              echo
+              echo "myBookShelf dev shell (Qt5) ready!"
+              echo "  • Widgetset:      $LCLWidgetType"
+              echo "  • FPC source dir: $FPCSRC"
+              echo "Commands:"
+              echo "  lazarus &     # launch IDE"
+              echo "  lazbuild --ws=$LCLWidgetType path/to/project.lpi"
+              echo
+            '';
+          };
+        };
+      });
+}