{ inputs = { nixpkgs.url = "nixpkgs/nixos-23.05"; flake-utils.url = "github:numtide/flake-utils"; linuxcnc-src = { #url = "github:LinuxCNC/linuxcnc?ref=v2.8.4"; #requires python2 url = "github:LinuxCNC/linuxcnc"; flake = false; }; yapps-src = { url = "github:smurfix/yapps"; flake = false; }; pangocffi-src = { url = "github:leifgehrmann/pangocffi"; flake = false; }; }; outputs = { self, nixpkgs, flake-utils, linuxcnc-src, mach-nix, yapps-src, pangocffi-src, ... }: flake-utils.lib.eachSystem [ "x86_64-linux" "i686-linux" "aarch64-linux" ] (system: let pkgs = nixpkgs.legacyPackages.${system}; yapps = pkgs.python3Packages.buildPythonApplication { pname = "yapps"; version = "1.0"; #propagatedBuildInputs = [ flask ]; src = yapps-src; }; pangocffi = pkgs.python3Packages.buildPythonApplication { pname = "pangocffi"; version = "1.0"; nativeBuildInputs = [ pkgs.pkg-config pkgs.libffi pkgs.pango.dev pkgs.glib pkgs.python3Packages.setuptools ]; propagatedBuildInputs = with pkgs.python3Packages; [ cffi pytest setuptools flake8 pytest coverage sphinx sphinx_rtd_theme tox twine ]; src = pangocffi-src; setuptoolsCheckPhase = '' echo "SKIPPING setuptoolsCheckPhase" ''; }; #boostPython = pkgs.boost174.override { python = pkgs.python3; enablePython = true; }; boostPython = pkgs.boost174.override { enablePython = true; }; linuxcnc = pkgs.stdenv.mkDerivation { # https://linuxcnc.org/docs/devel/html/code/building-linuxcnc.html name = "linuxcnc"; src = linuxcnc-src; enableParallelBuilding = true; #preConfigure = '' # cd src # #./autogen.sh #''; preAutoreconf = '' cd src ''; configureFlags = [ "--with-realtime=uspace" "--enable-non-distributable=yes" "--with-tclConfig=${pkgs.tcl}/lib/tclConfig.sh" "--with-tkConfig=${pkgs.tk}/lib/tkConfig.sh" #"--with-boost-python=${boostPython.dev}/include/boost/" #"PYTHON_LDFLAGS=-L${pkgs.python39Packages.python}/lib" ]; nativeBuildInputs = with pkgs; [ autoreconfHook pkg-config #wrapGAppsHook gobject-introspection ]; #nativeBuildInputs = [ pkgs.pkg-config ]; buildInputs = with pkgs; [ libtirpc udev libmodbus libusb glib gtk3.dev gtk2.dev psmisc yapps intltool boostPython boostPython.dev #python3Packages.boost #python3Packages.boost.dev #python3Packages.eigenpy #pkgs.python39Packages.python tcl tclx tk.dev tkimg bwidget python3Packages.pygobject3 readline.dev python3Packages.tkinter libGLU xorg.libXmu.dev ps sysvtools util-linux #tclreadline #pkgs.python3Packages.pygobject3.dev #pkgs.python3Packages.gst-python #pangocffi #pkgs.pango.dev #pkgs.python3Packages.pyxdg #pkgs.python3Packages.xcffib #pkgs.python3Packages.cairocffi #pkgs.python3Packages.manimpango ]; }; in { #packages.default = pkgs.tk; packages.default = linuxcnc; packages.linuxcnc = linuxcnc; } ); }