diff --git a/.gitignore b/.gitignore index 40e0824d..9e6677f7 100644 --- a/.gitignore +++ b/.gitignore @@ -48,7 +48,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/. +# 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 {} }: +(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..ab3cb46e --- /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 running ./manage.py collectstatics. +{ pkgs ? import {} }: +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