diff --git a/default.nix b/default.nix index db30c70..c229b46 100644 --- a/default.nix +++ b/default.nix @@ -24,4 +24,10 @@ in rec { vivaldi = callPackage ./pkgs/vivaldi { }; +} // optionalAttrs (builtins.elem pkgs.system pkgs.lib.platforms.linux) rec { + + xmm7360-pci = callPackage ./pkgs/xmm7360-pci { kernel = pkgs.linux; }; + + xmm7360-pci-tools = callPackage ./pkgs/xmm7360-pci/tools.nix { inherit xmm7360-pci; }; + } diff --git a/flake.nix b/flake.nix index fd1b6a4..e7629e6 100644 --- a/flake.nix +++ b/flake.nix @@ -44,6 +44,11 @@ ryzen_smu vivaldi ; + } // prev.lib.optionalAttrs (builtins.elem prev.system prev.lib.platforms.linux) rec { + inherit (localPkgs) + xmm7360-pci + xmm7360-pci-tools + ; }; }; diff --git a/pkgs/xmm7360-pci/default.nix b/pkgs/xmm7360-pci/default.nix new file mode 100644 index 0000000..5e0336e --- /dev/null +++ b/pkgs/xmm7360-pci/default.nix @@ -0,0 +1,33 @@ +{ lib, fetchFromGitHub, kernel }: + +kernel.stdenv.mkDerivation rec { + pname = "xmm7360-pci"; + version = "unstable-20210802"; + + src = fetchFromGitHub { + owner = "xmm7360"; + repo = pname; + rev = "b28714b6fb73887ecd5c0c25ffc0613d6eab6533"; + sha256 = "sha256-wNSQZvPL297pTAVT9Hj4IgcsHSc7KVNe7K0raS0bObg="; + }; + + nativeBuildInputs = kernel.moduleBuildDependencies; + + patches = [ ./fix.patch ]; + + makeFlags = [ + "KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + ]; + + installPhase = '' + install -m0644 -D xmm7360.ko $out/lib/modules/${kernel.modDirVersion}/misc/xmm7360.ko + ''; + + meta = with lib; { + description = "PCI driver for Fibocom L850-GL modem base on Intel XMM7360 modem"; + homepage = src.meta.homepage; + license = licenses.gpl2; + maintainers = with maintainers; [ aw ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/xmm7360-pci/fix.patch b/pkgs/xmm7360-pci/fix.patch new file mode 100644 index 0000000..eaf85b3 --- /dev/null +++ b/pkgs/xmm7360-pci/fix.patch @@ -0,0 +1,13 @@ +diff --git a/xmm7360.c b/xmm7360.c +index ccd149d..acc7fea 100644 +--- a/xmm7360.c ++++ b/xmm7360.c +@@ -1272,7 +1272,7 @@ static int xmm7360_tty_write(struct tty_struct *tty, + return written; + } + +-static int xmm7360_tty_write_room(struct tty_struct *tty) ++static unsigned int xmm7360_tty_write_room(struct tty_struct *tty) + { + struct queue_pair *qp = tty->driver_data; + if (!xmm7360_qp_can_write(qp)) diff --git a/pkgs/xmm7360-pci/tools.nix b/pkgs/xmm7360-pci/tools.nix new file mode 100644 index 0000000..b87bc57 --- /dev/null +++ b/pkgs/xmm7360-pci/tools.nix @@ -0,0 +1,46 @@ +{ lib, stdenv, fetchFromGitHub, xmm7360-pci, python3Packages, makeWrapper }: + +let + inherit (xmm7360-pci) pname version src; + + pythonPath = with python3Packages; makePythonPath [ + python + configargparse + dbus-python + pyroute2 + ]; + +in stdenv.mkDerivation { + pname = "${pname}-tools"; + inherit version src; + + nativeBuildInputs = [ makeWrapper ]; + + buildInputs = [ python3Packages.python ]; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin $out/lib + cp -a rpc/* $out/lib + + pushd $out/lib + find . -executable -type f | while read file; do + makeWrapper ${python3Packages.python.interpreter} $out/bin/''${file%.py} \ + --add-flags "$out/lib/''${file}" \ + --prefix NIX_PYTHONPATH : "${pythonPath}" + done + + runHook postInstall + ''; + + meta = with lib; { + description = xmm7360-pci.meta.description + " (tools)"; + homepage = src.meta.homepage; + license = licenses.gpl2; + maintainers = with maintainers; [ aw ]; + platforms = platforms.linux; + }; +}