about summary refs log tree commit diff stats
path: root/unmaintained_templates/python/flake.nix
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-04-01 12:54:37 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-04-01 12:54:37 +0200
commit08eb5c464906a29e9f5135e1fb11e872b93746b1 (patch)
treec1cbbeade93e8d74009273e51e9fb9744bcf3d0a /unmaintained_templates/python/flake.nix
parentdocs(update_common_files): Improve terminal output (diff)
downloadflake-templates-08eb5c464906a29e9f5135e1fb11e872b93746b1.zip
refactor(templates/unmaintained): Move out of the templates dir
Otherwise, the `update_common_files` script will try to instantiate
files in there, which is just useless noise.
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";
+          };
+        };
+      }
+    );
+}