about summary refs log tree commit diff stats
path: root/unmaintained_templates/python/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'unmaintained_templates/python/flake.nix')
-rw-r--r--unmaintained_templates/python/flake.nix67
1 files changed, 67 insertions, 0 deletions
diff --git a/unmaintained_templates/python/flake.nix b/unmaintained_templates/python/flake.nix
new file mode 100644
index 0000000..36c7478
--- /dev/null
+++ b/unmaintained_templates/python/flake.nix
@@ -0,0 +1,67 @@
+{
+  description = ""; # TODO: fill this out
+
+  inputs = {
+    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+    flake-utils.url = "github:numtide/flake-utils";
+
+    mach-nix.url = "github:davhau/mach-nix";
+  };
+
+  outputs = {
+    self,
+    nixpkgs,
+    mach-nix,
+    flake-utils,
+    ...
+  }: let
+    pythonVersion = "python39"; # TODO: update if necessary
+  in
+    flake-utils.lib.eachDefaultSystem (
+      system: let
+        pkgs = nixpkgs.legacyPackages.${system};
+        mach = mach-nix.lib.${system};
+
+        pythonApp = mach.buildPythonApplication ./.;
+        pythonAppEnv = mach.mkPython {
+          python = pythonVersion;
+          requirements = builtins.readFile ./requirements.txt;
+        };
+        pythonAppImage = pkgs.dockerTools.buildLayeredImage {
+          name = pythonApp.pname;
+          contents = [pythonApp];
+          config.Cmd = ["${pythonApp}/bin/main"];
+        };
+      in {
+        packages = {
+          image = pythonAppImage;
+          pythonPkg = pythonApp;
+
+          default = self.packages.pythonPkg;
+        };
+
+        apps.default = {
+          type = "app";
+          program = "${self.packages.pythonPkg}/bin/main";
+        };
+
+        devShells.default = pkgs.mkShell {
+          packages = with pkgs; [
+            pythonAppEnv
+            black
+            ruff
+            python310Packages.python-lsp-server
+            gnat
+          ];
+
+          env = {
+            LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [
+              pkgs.stdenv.cc.cc
+            ];
+
+            PYTHONPATH = "${pythonAppEnv}/bin/python";
+          };
+        };
+      }
+    );
+}