From 7a7ee47e0ba965ebd6dea56e280c50e69b73c36f Mon Sep 17 00:00:00 2001
From: Yoann Beaugnon <aeltheos@crans.org>
Date: Sun, 21 Aug 2022 19:46:11 +0200
Subject: [PATCH 1/2] Add two shell.nix to enable easier development on nixos.

---
 .gitignore       |  1 -
 shell-static.nix | 34 ++++++++++++++++++++++++++++++++++
 shell.nix        | 23 +++++++++++++++++++++++
 3 files changed, 57 insertions(+), 1 deletion(-)
 create mode 100755 shell-static.nix
 create mode 100755 shell.nix

diff --git a/.gitignore b/.gitignore
index 91e55e22..affc851f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -47,7 +47,6 @@ backups/
 env/
 venv/
 db.sqlite3
-shell.nix
 
 # ansibles customs host
 ansible/host_vars/*.yaml
diff --git a/shell-static.nix b/shell-static.nix
new file mode 100755
index 00000000..d6e01fbe
--- /dev/null
+++ b/shell-static.nix
@@ -0,0 +1,34 @@
+# This is a workaround meant for use with the nix package manager. If you don't know what it is or don't use it, please ignore this file.
+# 
+# The nk20 javascript static location are hardcoded for imperative system.
+# This make ./manage.py collectstatic hard to use with nixos.
+# 
+# A workaround is to enter a FHSUserEnv with the static placed under /share/javascript/<static>.
+# This emulate a debian like system and enable collecting static normally with ./manage.py collectstatics.
+# The regular shell.nix should be enough for other configurations.
+#
+# Warning, you are still supposed to use pip package with a venv !
+{ pkgs ? import <nixpkgs> {} }:
+(pkgs.buildFHSUserEnv {
+  name = "pipzone";
+  targetPkgs = pkgs: (with pkgs;
+  let
+    fhs-static = stdenv.mkDerivation {
+      name = "fhs-static";
+      buildCommand = ''
+      mkdir -p $out/share/javascript/bootstrap4
+      mkdir -p $out/share/javascript/jquery
+      ln -s ${python39Packages.xstatic-bootstrap}/lib/python3.9/site-packages/xstatic/pkg/bootstrap/data/* $out/share/javascript/bootstrap4
+      ln -s ${python39Packages.xstatic-jquery}/lib/python3.9/site-packages/xstatic/pkg/jquery/data/* $out/share/javascript/jquery
+    '';
+    };
+  in [
+    fhs-static
+    python39
+    gettext
+    python39Packages.pip
+    python39Packages.virtualenv
+    python39Packages.setuptools
+  ]);
+  runScript = "bash";
+}).env
\ No newline at end of file
diff --git a/shell.nix b/shell.nix
new file mode 100755
index 00000000..730d4bdd
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,23 @@
+# This is meant for use with the nix package manager. If you don't know what it is or don't use it, please ignore this file.
+#
+# This shell.nix contains all dependencies require to create a venv and pip install -r requirements.txt.
+#
+# Please check shell-static.nix for
+{ pkgs ? import <nixpkgs> {} }:
+pkgs.mkShell {
+  buildInputs = with pkgs; [
+    python39
+    python39Packages.pip
+    python39Packages.setuptools
+    gettext
+
+  ];
+  shellHook = ''
+    # Tells pip to put packages into $PIP_PREFIX instead of the usual locations.
+    # See https://pip.pypa.io/en/stable/user_guide/#environment-variables.
+    export PIP_PREFIX=$(pwd)/_build/pip_packages
+    export PYTHONPATH="$PIP_PREFIX/${pkgs.python39.sitePackages}:$PYTHONPATH"
+    export PATH="$PIP_PREFIX/bin:$PATH"
+    unset SOURCE_DATE_EPOCH
+  '';
+}
\ No newline at end of file

From dde1baa25cc41af657a1c049fc82afec97f79fa6 Mon Sep 17 00:00:00 2001
From: Yoann Beaugnon <aeltheos@crans.org>
Date: Sun, 21 Aug 2022 19:50:53 +0200
Subject: [PATCH 2/2] typo

---
 shell.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/shell.nix b/shell.nix
index 730d4bdd..ab3cb46e 100755
--- a/shell.nix
+++ b/shell.nix
@@ -2,7 +2,7 @@
 #
 # This shell.nix contains all dependencies require to create a venv and pip install -r requirements.txt.
 #
-# Please check shell-static.nix for
+# Please check shell-static.nix for running ./manage.py collectstatics.
 { pkgs ? import <nixpkgs> {} }:
 pkgs.mkShell {
   buildInputs = with pkgs; [