From 5b35a7ca6f3e7fd3c7dd5961c63b3bd2384582db Mon Sep 17 00:00:00 2001 From: Rhys Davies Date: Sun, 20 Feb 2022 11:13:29 +1300 Subject: [PATCH 1/4] maintainers: add rhysmdnz --- maintainers/maintainer-list.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 4725587493bb..2b8e9ea23463 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -10246,6 +10246,13 @@ githubId = 6047658; name = "Ryan Horiguchi"; }; + rhysmdnz = { + email = "rhys@memes.nz"; + matrix = "@rhys:memes.nz"; + github = "rhysmdnz"; + githubId = 2162021; + name = "Rhys Davies"; + }; ribose-jeffreylau = { name = "Jeffrey Lau"; email = "jeffrey.lau@ribose.com"; From 8f273717957236d20de842f58ece781af7b72565 Mon Sep 17 00:00:00 2001 From: Rhys Davies Date: Sun, 20 Feb 2022 11:14:59 +1300 Subject: [PATCH 2/4] xone: init at 0.2 --- pkgs/os-specific/linux/xone/default.nix | 39 +++++++++++++++++++++++++ pkgs/top-level/linux-kernels.nix | 2 ++ 2 files changed, 41 insertions(+) create mode 100644 pkgs/os-specific/linux/xone/default.nix diff --git a/pkgs/os-specific/linux/xone/default.nix b/pkgs/os-specific/linux/xone/default.nix new file mode 100644 index 000000000000..f04ccc569dff --- /dev/null +++ b/pkgs/os-specific/linux/xone/default.nix @@ -0,0 +1,39 @@ +{ stdenv, lib, fetchFromGitHub, kernel, fetchurl }: + +stdenv.mkDerivation rec { + name = "xone-${version}-${kernel.version}"; + version = "0.2"; + + src = fetchFromGitHub { + owner = "medusalix"; + repo = "xone"; + rev = "v${version}"; + sha256 = "sha256-m4305Xl5w4nyAVqubjwWsiyPDVtfGykjlSW2eKEytVk="; + }; + + setSourceRoot = '' + export sourceRoot=$(pwd)/source + ''; + + nativeBuildInputs = kernel.moduleBuildDependencies; + + makeFlags = [ + "-C" + "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + "M=$(sourceRoot)" + "VERSION=${version}" + ]; + + buildFlags = [ "modules" ]; + installFlags = [ "INSTALL_MOD_PATH=${placeholder "out"}" ]; + installTargets = [ "modules_install" ]; + + meta = with lib; { + description = "Linux kernel driver for Xbox One and Xbox Series X|S accessories"; + homepage = "https://github.com/medusalix/xone"; + license = licenses.gpl2; + maintainers = with lib.maintainers; [ rhysmdnz ]; + platforms = platforms.linux; + }; +} + diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index d9a96164c6aa..5ce446b5a5e6 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -460,6 +460,8 @@ in { xmm7360-pci = callPackage ../os-specific/linux/xmm7360-pci { }; + xone = callPackage ../os-specific/linux/xone { }; + xpadneo = callPackage ../os-specific/linux/xpadneo { }; zenpower = callPackage ../os-specific/linux/zenpower { }; From fb69e1763e329029e615169a5f7fca9d480c46d2 Mon Sep 17 00:00:00 2001 From: Rhys Davies Date: Sun, 20 Feb 2022 11:21:19 +1300 Subject: [PATCH 3/4] xow_dongle-firmware: init at 2017-07 --- nixos/modules/hardware/all-firmware.nix | 1 + .../firmware/xow_dongle-firmware/default.nix | 32 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ pkgs/top-level/linux-kernels.nix | 2 +- 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 pkgs/os-specific/linux/firmware/xow_dongle-firmware/default.nix diff --git a/nixos/modules/hardware/all-firmware.nix b/nixos/modules/hardware/all-firmware.nix index 99bdb11b0112..5b60b17312f9 100644 --- a/nixos/modules/hardware/all-firmware.nix +++ b/nixos/modules/hardware/all-firmware.nix @@ -83,6 +83,7 @@ in { b43Firmware_5_1_138 b43Firmware_6_30_163_46 b43FirmwareCutter + xow_dongle-firmware ] ++ optional pkgs.stdenv.hostPlatform.isx86 facetimehd-firmware; }) (mkIf cfg.wirelessRegulatoryDatabase { diff --git a/pkgs/os-specific/linux/firmware/xow_dongle-firmware/default.nix b/pkgs/os-specific/linux/firmware/xow_dongle-firmware/default.nix new file mode 100644 index 000000000000..0375eb0eead8 --- /dev/null +++ b/pkgs/os-specific/linux/firmware/xow_dongle-firmware/default.nix @@ -0,0 +1,32 @@ +{ stdenv, lib, fetchurl, cabextract }: + +stdenv.mkDerivation rec { + pname = "xow_dongle-firmware"; + version = "2017-07"; + + dontUnpack = true; + dontInstall = true; + + src = fetchurl { + url = "http://download.windowsupdate.com/c/msdownload/update/driver/drvs/2017/07/1cd6a87c-623f-4407-a52d-c31be49e925c_e19f60808bdcbfbd3c3df6be3e71ffc52e43261e.cab"; + sha256 = "013g1zngxffavqrk5jy934q3bdhsv6z05ilfixdn8dj0zy26lwv5"; + }; + + nativeBuildInputs = [ cabextract ]; + + buildPhase = '' + cabextract -F FW_ACC_00U.bin ${src} + mkdir -p $out/lib/firmware + cp -a FW_ACC_00U.bin $out/lib/firmware/xow_dongle.bin + ''; + + meta = with lib; { + description = "Xbox One wireless dongle firmware"; + homepage = "https://www.xbox.com/en-NZ/accessories/adapters/wireless-adapter-windows"; + license = licenses.unfree; + maintainers = with lib.maintainers; [ rhysmdnz ]; + platforms = platforms.linux; + }; +} + + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f9be6bb9b429..77c38e8d4ff1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -34115,6 +34115,8 @@ with pkgs; xosview2 = callPackage ../tools/X11/xosview2 { }; + xow_dongle-firmware = callPackage ../os-specific/linux/firmware/xow_dongle-firmware { }; + xpad = callPackage ../applications/misc/xpad { }; xsane = callPackage ../applications/graphics/sane/xsane.nix { diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 5ce446b5a5e6..411358267f3f 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -460,7 +460,7 @@ in { xmm7360-pci = callPackage ../os-specific/linux/xmm7360-pci { }; - xone = callPackage ../os-specific/linux/xone { }; + xone = if lib.versionAtLeast kernel.version "5.4" then callPackage ../os-specific/linux/xone { } else null; xpadneo = callPackage ../os-specific/linux/xpadneo { }; From 32a44aa069898adbe2e6dc4ba82d901c3c15ee71 Mon Sep 17 00:00:00 2001 From: Rhys Davies Date: Sun, 20 Feb 2022 12:25:42 +1300 Subject: [PATCH 4/4] nixos/xone: init --- nixos/modules/hardware/xone.nix | 23 +++++++++++++++++++++++ nixos/modules/module-list.nix | 1 + 2 files changed, 24 insertions(+) create mode 100644 nixos/modules/hardware/xone.nix diff --git a/nixos/modules/hardware/xone.nix b/nixos/modules/hardware/xone.nix new file mode 100644 index 000000000000..89690d8c6fb1 --- /dev/null +++ b/nixos/modules/hardware/xone.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.hardware.xone; +in +{ + options.hardware.xone = { + enable = mkEnableOption "the xone driver for Xbox One and Xbobx Series X|S accessories"; + }; + + config = mkIf cfg.enable { + boot = { + blacklistedKernelModules = [ "xpad" "mt76x2u" ]; + extraModulePackages = with config.boot.kernelPackages; [ xone ]; + }; + hardware.firmware = [ pkgs.xow_dongle-firmware ]; + }; + + meta = { + maintainers = with maintainers; [ rhysmdnz ]; + }; +} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index ca82ddfb5863..f69bb932ea4a 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -91,6 +91,7 @@ ./hardware/video/switcheroo-control.nix ./hardware/video/uvcvideo/default.nix ./hardware/video/webcam/facetimehd.nix + ./hardware/xone.nix ./hardware/xpadneo.nix ./i18n/input-method/default.nix ./i18n/input-method/fcitx.nix