From ffca542386363fcf29fb243ef9474cf4b99168aa Mon Sep 17 00:00:00 2001 From: Dan Callahan Date: Mon, 18 Feb 2019 21:50:29 +0000 Subject: [PATCH 1/5] maintainers: add callahad --- maintainers/maintainer-list.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 14e1c080102..335285e7679 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -752,6 +752,11 @@ github = "calbrecht"; name = "Christian Albrecht"; }; + callahad = { + email = "dan.callahan@gmail.com"; + github = "callahad"; + name = "Dan Callahan"; + }; calvertvl = { email = "calvertvl@gmail.com"; github = "calvertvl"; From b121c016725d004983bb5b446ed4e8b80d8ae0f7 Mon Sep 17 00:00:00 2001 From: Dan Callahan Date: Mon, 18 Feb 2019 21:54:25 +0000 Subject: [PATCH 2/5] pythonPackages.python-dbusmock: init at 0.18.1 --- .../python-dbusmock/default.nix | 59 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 61 insertions(+) create mode 100644 pkgs/development/python-modules/python-dbusmock/default.nix diff --git a/pkgs/development/python-modules/python-dbusmock/default.nix b/pkgs/development/python-modules/python-dbusmock/default.nix new file mode 100644 index 00000000000..bee0cab0a3f --- /dev/null +++ b/pkgs/development/python-modules/python-dbusmock/default.nix @@ -0,0 +1,59 @@ +{ lib, buildPythonPackage, fetchPypi, + nose, dbus, dbus-python, pygobject3, + which, pyflakes, pycodestyle, bluez, networkmanager +}: + +buildPythonPackage rec { + pname = "python-dbusmock"; + version = "0.18.1"; + + src = fetchPypi { + inherit pname version; + sha256 = "1hj02p65cic4jdc6a5xf1hx8j5icwy7dcrm5kg91lkjks4gwpg5h"; + }; + + prePatch = '' + sed -i -e 's|pyflakes3|pyflakes|g' tests/test_code.py; + ''; + + # TODO: Get the rest of these tests running? + # This is a mocking library used as a check dependency for a single derivation. + # That derivation's tests pass. Maybe not worth the effort to fix these... + NOSE_EXCLUDE = lib.concatStringsSep "," [ + "test_bluez4" # NixOS ships BlueZ5 + # These appear to fail because they're expecting to run in an Ubuntu chroot? + "test_everything" # BlueZ5 OBEX + "test_polkitd" + "test_consolekit" + "test_api" + "test_logind" + "test_notification_daemon" + "test_ofono" + "test_gnome_screensaver" + "test_cli" + "test_timedated" + "test_upower" + # Very slow, consider disabling? + # "test_networkmanager" + ]; + + checkInputs = [ + nose dbus dbus-python which pycodestyle pyflakes + pygobject3 bluez bluez.test networkmanager + ]; + + checkPhase = '' + runHook preCheck + export PATH="$PATH:${bluez.test}/test"; + nosetests -v + runHook postCheck + ''; + + meta = with lib; { + description = "Mock D-Bus objects for tests"; + homepage = https://github.com/martinpitt/python-dbusmock; + license = licenses.lgpl3Plus; + maintainers = with maintainers; [ callahad ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 3d5dc89605d..62b9fb87e78 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -720,6 +720,8 @@ in { python-binance = callPackage ../development/python-modules/python-binance { }; + python-dbusmock = callPackage ../development/python-modules/python-dbusmock { }; + python-engineio = callPackage ../development/python-modules/python-engineio { }; python-hosts = callPackage ../development/python-modules/python-hosts { }; From c2a1d01a4b4b1a2aa6d6b6b35185ceecfd050d15 Mon Sep 17 00:00:00 2001 From: Dan Callahan Date: Mon, 18 Feb 2019 21:58:30 +0000 Subject: [PATCH 3/5] bolt: init at 0.7 --- .../linux/bolt/0001-skip-mkdir.patch | 12 ++++ pkgs/os-specific/linux/bolt/default.nix | 61 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 75 insertions(+) create mode 100644 pkgs/os-specific/linux/bolt/0001-skip-mkdir.patch create mode 100644 pkgs/os-specific/linux/bolt/default.nix diff --git a/pkgs/os-specific/linux/bolt/0001-skip-mkdir.patch b/pkgs/os-specific/linux/bolt/0001-skip-mkdir.patch new file mode 100644 index 00000000000..0853bcea916 --- /dev/null +++ b/pkgs/os-specific/linux/bolt/0001-skip-mkdir.patch @@ -0,0 +1,12 @@ +diff --git a/scripts/meson-install.sh b/scripts/meson-install.sh +index 859ae81..05a1c58 100644 +--- a/scripts/meson-install.sh ++++ b/scripts/meson-install.sh +@@ -7,5 +7,5 @@ fi + + BOLT_DBDIR=$1 + +-echo "Creating database dir: ${BOLT_DBDIR}" +-mkdir -p "${DESTDIR}/${BOLT_DBDIR}" ++# echo "Creating database dir: ${BOLT_DBDIR}" ++# mkdir -p "${DESTDIR}/${BOLT_DBDIR}" diff --git a/pkgs/os-specific/linux/bolt/default.nix b/pkgs/os-specific/linux/bolt/default.nix new file mode 100644 index 00000000000..f57fb1310c6 --- /dev/null +++ b/pkgs/os-specific/linux/bolt/default.nix @@ -0,0 +1,61 @@ +{ stdenv, meson, ninja, pkgconfig, fetchFromGitLab, + python3, umockdev, gobject-introspection, dbus, + asciidoc, libxml2, libxslt, docbook_xml_dtd_45, docbook_xsl, + glib, systemd, polkit +}: + +stdenv.mkDerivation rec { + pname = "bolt"; + version = "0.7"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + owner = "bolt"; + repo = "bolt"; + rev = "${version}"; + sha256 = "0xn2c31kcjh1j76gq1qrcxwjyjyqnsxygkfrvh3xk07qc92f99xd"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig + asciidoc libxml2 libxslt docbook_xml_dtd_45 docbook_xsl + ] ++ stdenv.lib.optional (!doCheck) python3; + + buildInputs = [ + glib systemd polkit + ]; + + doCheck = true; + + preCheck = '' + export LD_LIBRARY_PATH=${umockdev.out}/lib/ + ''; + + checkInputs = [ + dbus umockdev gobject-introspection + (python3.withPackages + (p: [ p.pygobject3 p.dbus-python p.python-dbusmock ])) + ]; + + # meson install tries to create /var/lib/boltd + patches = [ ./0001-skip-mkdir.patch ]; + + postPatch = '' + patchShebangs tests/test-integration + ''; + + mesonFlags = [ + "-Dlocalstatedir=/var" + ]; + + PKG_CONFIG_SYSTEMD_SYSTEMDSYSTEMUNITDIR = "${placeholder "out"}/lib/systemd/system"; + PKG_CONFIG_UDEV_UDEVDIR = "${placeholder "out"}/lib/udev"; + + meta = with stdenv.lib; { + description = "Thunderbolt 3 device management daemon"; + homepage = https://gitlab.freedesktop.org/bolt/bolt; + license = licenses.lgpl21Plus; + maintainers = [ maintainers.callahad ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2dd4e5465bd..312b3f5de47 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14314,6 +14314,8 @@ in inherit (python3Packages) bedup; + bolt = callPackage ../os-specific/linux/bolt { }; + bridge-utils = callPackage ../os-specific/linux/bridge-utils { }; busybox = callPackage ../os-specific/linux/busybox { }; From 139e12323f0c818f2d8101871b9d095c0811ada7 Mon Sep 17 00:00:00 2001 From: Dan Callahan Date: Tue, 19 Feb 2019 13:56:42 +0000 Subject: [PATCH 4/5] nixos/bolt: init at 0.7 --- nixos/modules/module-list.nix | 1 + nixos/modules/services/hardware/bolt.nix | 34 ++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 nixos/modules/services/hardware/bolt.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 6219abda7dc..24b02c080e3 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -280,6 +280,7 @@ ./services/hardware/acpid.nix ./services/hardware/actkbd.nix ./services/hardware/bluetooth.nix + ./services/hardware/bolt.nix ./services/hardware/brltty.nix ./services/hardware/freefall.nix ./services/hardware/fwupd.nix diff --git a/nixos/modules/services/hardware/bolt.nix b/nixos/modules/services/hardware/bolt.nix new file mode 100644 index 00000000000..32b60af0603 --- /dev/null +++ b/nixos/modules/services/hardware/bolt.nix @@ -0,0 +1,34 @@ +# Thunderbolt 3 device manager + +{ config, lib, pkgs, ...}: + +with lib; + +{ + options = { + + services.hardware.bolt = { + + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable Bolt, a userspace daemon to enable + security levels for Thunderbolt 3 on GNU/Linux. + + Bolt is used by GNOME 3 to handle Thunderbolt settings. + ''; + }; + + }; + + }; + + config = mkIf config.services.hardware.bolt.enable { + + environment.systemPackages = [ pkgs.bolt ]; + services.udev.packages = [ pkgs.bolt ]; + systemd.packages = [ pkgs.bolt ]; + + }; +} From d20ad56ca7a75d42b0cce2ee7833ae25977636e5 Mon Sep 17 00:00:00 2001 From: Dan Callahan Date: Mon, 18 Feb 2019 22:11:13 +0000 Subject: [PATCH 5/5] nixos/gnome3: enable bolt by default GNOME's support for Thunderbolt 3 requires the bolt daemon. Fixes #55938 --- nixos/modules/services/x11/desktop-managers/gnome3.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix index 7544ba4638a..31ff60019ae 100644 --- a/nixos/modules/services/x11/desktop-managers/gnome3.nix +++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix @@ -151,6 +151,7 @@ in { services.colord.enable = mkDefault true; services.packagekit.enable = mkDefault true; hardware.bluetooth.enable = mkDefault true; + services.hardware.bolt.enable = mkDefault true; services.xserver.libinput.enable = mkDefault true; # for controlling touchpad settings via gnome control center services.udev.packages = [ pkgs.gnome3.gnome-settings-daemon ]; systemd.packages = [ pkgs.gnome3.vino ];