Change:
As described in , GNOME 3 needs the to handle authenticating Thunderbolt 3 devices. This is not yet packaged for NixOS. I've bolt myself but have thus far been unsuccessful. Start a Gnome 3 session Navigate to Settings → Devices → Thunderbolt Expected Results: A nice GUI as . Actual Results: An error message: ! (Note: The error message is slightly misleading. Thunderbolt 3 is supported and working on my laptop, albeit with authorization disabled, but without GNOME doesn't know that.) system: host os: multi-user?: sandbox: version: channels(root): nixpkgs:
Can you share the errors you have encountered when packaging? Perhaps we can point you to solution.
Right now I'm hitting two roadblocks with bolt itself: the man pages fails somewhere inside asciidoc: I'm not sure how to get more information / further work on that. I disable manpage generation (), everything compiles and links just fine but then fails with:
Yeah, meson sometimes gives incredibly useless error messages. The problem is the build trying to install files in and , which it looks up through pkgconfig. Adding these fixes these: We'll also need to knock out as it tries to create a directory in . This fixed the build for me:
You can try to add flag to the asciidoc command in the meson file (I recommend setting to the local checkout of the project in question). As for the second error, Meson only calls when it fails to write to install destination, which means that some is probably wrong.
There ought to be a message Perhaps you can find it in build directory under if you run with .
Woohoo! ! Now I just have to: things up out how to get the systemd unit file linked out how to properly test a patch against this repo request!
We'll have to make module, something like this: Will probably need too.

Discussion:
github = "calbrecht"; name = "Christian Albrecht"; }; <ins> callahad = { email = "dan.callahan@gmail.com"; github = "callahad"; name = "Dan Callahan"; }; </ins> calvertvl = { email = "calvertvl@gmail.com"; github = "calvertvl";

./services/hardware/acpid.nix ./services/hardware/actkbd.nix ./services/hardware/bluetooth.nix <ins> ./services/hardware/bolt.nix </ins> ./services/hardware/brltty.nix ./services/hardware/freefall.nix ./services/hardware/fwupd.nix

<ins> # 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 ]; }; } </ins>

services.colord.enable = mkDefault true; services.packagekit.enable = mkDefault true; hardware.bluetooth.enable = mkDefault true; <ins> services.hardware.bolt.enable = mkDefault true; </ins> 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 ];

<ins> { 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; }; } </ins>

<ins> 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}" </ins>

<ins> { 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; }; } </ins>

inherit (python3Packages) bedup; <ins> bolt = callPackage ../os-specific/linux/bolt { }; </ins> bridge-utils = callPackage ../os-specific/linux/bridge-utils { }; busybox = callPackage ../os-specific/linux/busybox { };

python-binance = callPackage ../development/python-modules/python-binance { }; <ins> python-dbusmock = callPackage ../development/python-modules/python-dbusmock { }; </ins> python-engineio = callPackage ../development/python-modules/python-engineio { }; python-hosts = callPackage ../development/python-modules/python-hosts { };