Last active
March 24, 2025 17:47
-
-
Save Technicus/145c94d0376b129b297b3c589d551657 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # shell-build123d.nix | |
| # Shell environment for build123d | |
| # https://build123d.readthedocs.io/en/latest/index.html | |
| # https://wiki.nixos.org/wiki/Python#Using_nix-shell_alongside_pip | |
| { pkgs ? import <nixpkgs> {} }: | |
| let | |
| myPython = pkgs.python311; | |
| pythonPackages = pkgs.python311Packages; | |
| pythonWithPkgs = myPython.withPackages (pythonPkgs: with pythonPkgs; [ | |
| # This list contains tools for Python development. | |
| # You can also add other tools, like black. | |
| # | |
| # Note that even if you add Python packages here like PyTorch or Tensorflow, | |
| # they will be reinstalled when running `pip -r requirements.txt` because | |
| # virtualenv is used below in the shellHook. | |
| ipython | |
| pip | |
| setuptools | |
| virtualenvwrapper | |
| wheel | |
| black | |
| # https://discourse.nixos.org/t/what-package-provides-libstdc-so-6/18707/3 | |
| stdenv | |
| ]); | |
| extraBuildInputs = with pkgs; [ | |
| # this list contains packages that you want to be available at runtime and might not be able to be installed properly via pip | |
| pythonPackages.pandas | |
| pythonPackages.stdenv | |
| pythonPackages.requests | |
| stdenv.cc.cc.lib | |
| gcc | |
| expat | |
| libGL | |
| xorg.libX11 | |
| zlib | |
| ]; | |
| in | |
| import ./shell-python.nix { | |
| extraBuildInputs=extraBuildInputs; | |
| # extraLibPackages=extraLibPackages; | |
| myPython=myPython; | |
| pythonWithPkgs=pythonWithPkgs; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # python-shell.nix | |
| { pkgs ? import <nixpkgs> {}, extraBuildInputs ? [], myPython ? pkgs.python3, extraLibPackages ? [], pythonWithPkgs? myPython }: | |
| let | |
| buildInputs = with pkgs; [ | |
| clang | |
| llvmPackages_16.bintools | |
| rustup | |
| # stdenvNoCC | |
| # stdenvNoLibs | |
| # stdenv_32bit | |
| # gccStdenv | |
| # gccStdenvNoLibs | |
| # libcxxStdenv | |
| # gccMultiStdenv | |
| # gcc49Stdenv | |
| ] ++ extraBuildInputs; | |
| lib-path = with pkgs; lib.makeLibraryPath buildInputs; | |
| shell = pkgs.mkShell { | |
| buildInputs = [ | |
| # my python and packages | |
| pythonWithPkgs | |
| # other packages needed for compiling python libs | |
| pkgs.readline | |
| pkgs.libffi | |
| pkgs.openssl | |
| pkgs.git | |
| pkgs.openssh | |
| pkgs.rsync | |
| pkgs.cowsay | |
| pkgs.lolcat | |
| pkgs.nix-index | |
| # unfortunately needed because of messing with LD_LIBRARY_PATH below | |
| pkgs.gcc | |
| pkgs.stdenv | |
| # pkgs.stdenv-linux | |
| pkgs.stdenvNoCC | |
| pkgs.stdenvNoLibs | |
| pkgs.stdenv_32bit | |
| pkgs.gccStdenv | |
| pkgs.gccStdenvNoLibs | |
| pkgs.libcxxStdenv | |
| pkgs.gccMultiStdenv | |
| pkgs.gcc49Stdenv | |
| ] ++ extraBuildInputs; | |
| GREETING = "Entering build123d development shell!"; | |
| shellHook = '' | |
| # Allow the use of wheels. | |
| SOURCE_DATE_EPOCH=$(date +%s) | |
| # Augment the dynamic linker path | |
| export "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${lib-path}" | |
| # https://discourse.nixos.org/t/what-package-provides-libstdc-so-6/18707/4 | |
| # fixes libstdc++ issues and libgl.so issues | |
| LD_LIBRARY_PATH=lib.makeLibraryPath [ pkgs.stdenv.cc.cc ]; | |
| # Setup the virtual environment if it doesn't already exist. | |
| VENV=shell-build123d | |
| if test ! -d $VENV; then | |
| virtualenv $VENV | |
| fi | |
| source ./$VENV/bin/activate | |
| export PYTHONPATH=$PYTHONPATH:`pwd`/$VENV/${myPython.sitePackages}/ | |
| pip install --upgrade pip | |
| pip install build123d | |
| echo $GREETING | cowsay | lolcat | |
| ''; | |
| }; | |
| in | |
| shell |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # test-build123d.py | |
| # Installation test | |
| # https://build123d.readthedocs.io/en/latest/installation.html#test-your-build123d-installation | |
| from build123d import * | |
| print(Solid.make_box(1,2,3).show_topology(limit_class="Face")) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # test-shell.sh | |
| # https://discourse.nixos.org/t/how-to-create-a-development-environment-for-build123d/45146/2?u=technicus | |
| nix-shell shell-build123d.nix --command "python ./test-build123d.py" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Please do!