diff --git a/pkgs/tools/misc/ckb-next/default.nix b/pkgs/tools/misc/ckb-next/default.nix
index 575cb686f9d..738430f561b 100644
--- a/pkgs/tools/misc/ckb-next/default.nix
+++ b/pkgs/tools/misc/ckb-next/default.nix
@@ -2,14 +2,14 @@
, pkgconfig, qtbase, cmake, zlib, kmod }:
mkDerivation rec {
- version = "0.3.2";
+ version = "0.4.2";
pname = "ckb-next";
src = fetchFromGitHub {
owner = "ckb-next";
repo = "ckb-next";
rev = "v${version}";
- sha256 = "0ri5n7r1vhsgk6s64abvqcdrs5fmlwprw0rxiwfy0j8a9qcic1dr";
+ sha256 = "1mkx1psw5xnpscdfik1kpzsnfhhkn3571i7acr9gxyjr27sckplc";
};
buildInputs = [
@@ -25,11 +25,12 @@ mkDerivation rec {
cmakeFlags = [
"-DINSTALL_DIR_ANIMATIONS=libexec"
+ "-DUDEV_RULE_DIRECTORY=lib/udev/rules.d"
+ "-DFORCE_INIT_SYSTEM=systemd"
];
patches = [
./install-dirs.patch
- ./systemd-service.patch
(substituteAll {
name = "ckb-next-modprobe.patch";
src = ./modprobe.patch;
diff --git a/pkgs/tools/misc/ckb-next/install-dirs.patch b/pkgs/tools/misc/ckb-next/install-dirs.patch
index 5545292a65e..0f113d71aa3 100644
--- a/pkgs/tools/misc/ckb-next/install-dirs.patch
+++ b/pkgs/tools/misc/ckb-next/install-dirs.patch
@@ -1,32 +1,13 @@
diff --git a/src/daemon/CMakeLists.txt b/src/daemon/CMakeLists.txt
-index 09056a7..1bb4595 100644
+index 2fc10a8..22dbd14 100644
--- a/src/daemon/CMakeLists.txt
+++ b/src/daemon/CMakeLists.txt
-@@ -456,7 +456,7 @@ endif ()
- if (LINUX)
- install(
- FILES "${CMAKE_SOURCE_DIR}/linux/udev/99-ckb-daemon.rules"
-- DESTINATION "/etc/udev/rules.d"
-+ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/udev/rules.d"
- PERMISSIONS
- OWNER_READ OWNER_WRITE
- GROUP_READ
-diff --git a/src/libs/ckb-next/CMakeLists.txt b/src/libs/ckb-next/CMakeLists.txt
-index ecc591c..35de563 100644
---- a/src/libs/ckb-next/CMakeLists.txt
-+++ b/src/libs/ckb-next/CMakeLists.txt
-@@ -75,12 +75,12 @@ if(NOT MACOS)
- NAMESPACE
- ${CMAKE_PROJECT_NAME}::
- DESTINATION
-- "/usr/lib/cmake/${CMAKE_PROJECT_NAME}/${PROJECT_NAME}")
-+ "${CMAKE_INSTALL_PREFIX}/lib/cmake/${CMAKE_PROJECT_NAME}/${PROJECT_NAME}")
-
+@@ -421,7 +421,7 @@ if ("${CKB_NEXT_INIT_SYSTEM}" STREQUAL "launchd")
+ elseif ("${CKB_NEXT_INIT_SYSTEM}" STREQUAL "systemd")
install(
- FILES
- "cmake/${PROJECT_NAME}Config.cmake"
- "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake"
- DESTINATION
-- "/usr/lib/cmake/${CMAKE_PROJECT_NAME}/${PROJECT_NAME}")
-+ "${CMAKE_INSTALL_PREFIX}/lib/cmake/${CMAKE_PROJECT_NAME}/${PROJECT_NAME}")
- endif()
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/service/ckb-next-daemon.service"
+- DESTINATION "/usr/lib/systemd/system"
++ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/systemd/system"
+ PERMISSIONS
+ OWNER_READ OWNER_WRITE
+ GROUP_READ
diff --git a/pkgs/tools/misc/ckb-next/modprobe.patch b/pkgs/tools/misc/ckb-next/modprobe.patch
index f2156fc3b23..a2cbe262e89 100644
--- a/pkgs/tools/misc/ckb-next/modprobe.patch
+++ b/pkgs/tools/misc/ckb-next/modprobe.patch
@@ -1,26 +1,26 @@
diff --git a/src/daemon/input_linux.c b/src/daemon/input_linux.c
-index 1cedb07..8e0b24b 100644
+index 8489f5b..b851419 100644
--- a/src/daemon/input_linux.c
+++ b/src/daemon/input_linux.c
-@@ -58,7 +58,7 @@ int os_inputopen(usbdevice* kb){
- /// First check whether the uinput module is loaded by the kernel.
- ///
- // Load the uinput module (if it's not loaded already)
-- if(system("modprobe uinput") != 0) {
-+ if(system("@kmod@/bin/modprobe uinput") != 0) {
- ckb_fatal("Failed to load uinput module\n");
- return 1;
- }
+@@ -63,7 +63,7 @@ int os_inputopen(usbdevice* kb){
+
+ // If not available, load the module
+ if(fd < 0){
+- if(system("modprobe uinput") != 0) {
++ if(system("@kmod@/bin/modprobe uinput") != 0) {
+ ckb_fatal("Failed to load uinput module\n");
+ return 1;
+ }
diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp
-index 3601146..3f2f78f 100644
+index 1eb95bd..f7d38ba 100644
--- a/src/gui/mainwindow.cpp
+++ b/src/gui/mainwindow.cpp
-@@ -251,7 +251,7 @@ void MainWindow::updateVersion(){
- daemonWarning.append(tr("
Warning: System Extension by \"Fumihiko Takayama\" is not allowed in Security & Privacy. Please allow it and then unplug and replug your devices."));
+@@ -284,7 +284,7 @@ void MainWindow::updateVersion(){
#elif defined(Q_OS_LINUX)
- QProcess modprobe;
-- modprobe.start("modprobe", QStringList("uinput"));
-+ modprobe.start("@kmod@/bin/modprobe", QStringList("uinput"));
+ if(!(QFileInfo("/dev/uinput").exists() || QFileInfo("/dev/input/uinput").exists())){
+ QProcess modprobe;
+- modprobe.start("modprobe", QStringList("uinput"));
++ modprobe.start("@kmod@/bin/modprobe", QStringList("uinput"));
- if(!modprobe.waitForFinished())
- qDebug() << "Modprobe error";
+ if(!modprobe.waitForFinished())
+ qDebug() << "Modprobe error";
diff --git a/pkgs/tools/misc/ckb-next/systemd-service.patch b/pkgs/tools/misc/ckb-next/systemd-service.patch
deleted file mode 100644
index 917bc09627f..00000000000
--- a/pkgs/tools/misc/ckb-next/systemd-service.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff --git a/src/daemon/CMakeLists.txt b/src/daemon/CMakeLists.txt
-index 09056a7..72a7249 100644
---- a/src/daemon/CMakeLists.txt
-+++ b/src/daemon/CMakeLists.txt
-@@ -249,12 +249,7 @@ elseif (LINUX)
- # but it is not enabled by default and systemd is used instead. (Ubuntu 15.04+)
-
- # A way to check for upstart
-- execute_process(
-- COMMAND initctl --version
-- OUTPUT_VARIABLE initctl_output
-- OUTPUT_STRIP_TRAILING_WHITESPACE)
--
-- if ("${initctl_output}" MATCHES "upstart")
-+ if (FALSE)
- message(STATUS "upstart detected")
- set(CKB_NEXT_INIT_SYSTEM "upstart" CACHE INTERNAL "")
- set(DISALLOW_SYSVINIT TRUE)
-@@ -292,7 +287,7 @@ elseif (LINUX)
- endif ()
-
- # A way to check for systemd
-- if (EXISTS "/run/systemd/system")
-+ if (TRUE)
- message(STATUS "systemd detected")
- set(CKB_NEXT_INIT_SYSTEM "systemd" CACHE INTERNAL "")
- set(DISALLOW_SYSVINIT TRUE)
-@@ -328,7 +323,7 @@ elseif (LINUX)
- endif ()
-
- # A way to check for OpenRC
-- if (EXISTS "/run/openrc/softlevel")
-+ if (FALSE)
- message(STATUS "OpenRC detected")
- set(CKB_NEXT_INIT_SYSTEM "OpenRC" CACHE INTERNAL "")
- set(DISALLOW_SYSVINIT TRUE)
-@@ -419,7 +414,7 @@ if ("${CKB_NEXT_INIT_SYSTEM}" STREQUAL "launchd")
- elseif ("${CKB_NEXT_INIT_SYSTEM}" STREQUAL "systemd")
- install(
- FILES "${CMAKE_CURRENT_BINARY_DIR}/service/ckb-next-daemon.service"
-- DESTINATION "/usr/lib/systemd/system"
-+ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/systemd/system"
- PERMISSIONS
- OWNER_READ OWNER_WRITE
- GROUP_READ