From 7a7ee47e0ba965ebd6dea56e280c50e69b73c36f Mon Sep 17 00:00:00 2001 From: Yoann Beaugnon Date: Sun, 21 Aug 2022 19:46:11 +0200 Subject: [PATCH] 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/. +# 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..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 {} }: +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