diff options
author | Florian Klink <flokli@flokli.de> | 2019-06-02 12:41:21 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-02 12:41:21 +0200 |
commit | 640afe964e4336efa4a5d0902a6af7a860f0ee7b (patch) | |
tree | a637989aa258c995311f972700f598d184a9fd9f | |
parent | 1ccd410e40d6a2dd56706f1cf17d7125b350cd8e (diff) | |
parent | b38bdf6d2fadc3305bf6c967b42e5282a4e92433 (diff) | |
download | nixlib-640afe964e4336efa4a5d0902a6af7a860f0ee7b.tar nixlib-640afe964e4336efa4a5d0902a6af7a860f0ee7b.tar.gz nixlib-640afe964e4336efa4a5d0902a6af7a860f0ee7b.tar.bz2 nixlib-640afe964e4336efa4a5d0902a6af7a860f0ee7b.tar.lz nixlib-640afe964e4336efa4a5d0902a6af7a860f0ee7b.tar.xz nixlib-640afe964e4336efa4a5d0902a6af7a860f0ee7b.tar.zst nixlib-640afe964e4336efa4a5d0902a6af7a860f0ee7b.zip |
Barco clickshare (#59891)
Barco clickshare
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/programs/clickshare.nix | 21 | ||||
-rw-r--r-- | pkgs/applications/video/clickshare-csc1/default.nix | 124 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 2 |
4 files changed, 148 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 5ad11b87d23e..49b5076aefde 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -94,6 +94,7 @@ ./programs/ccache.nix ./programs/cdemu.nix ./programs/chromium.nix + ./programs/clickshare.nix ./programs/command-not-found/command-not-found.nix ./programs/criu.nix ./programs/dconf.nix diff --git a/nixos/modules/programs/clickshare.nix b/nixos/modules/programs/clickshare.nix new file mode 100644 index 000000000000..9980a7daf525 --- /dev/null +++ b/nixos/modules/programs/clickshare.nix @@ -0,0 +1,21 @@ +{ config, lib, pkgs, ... }: + +{ + + options.programs.clickshare-csc1.enable = + lib.options.mkEnableOption '' + Barco ClickShare CSC-1 driver/client. + This allows users in the <literal>clickshare</literal> + group to access and use a ClickShare USB dongle + that is connected to the machine + ''; + + config = lib.modules.mkIf config.programs.clickshare-csc1.enable { + environment.systemPackages = [ pkgs.clickshare-csc1 ]; + services.udev.packages = [ pkgs.clickshare-csc1 ]; + users.groups.clickshare = {}; + }; + + meta.maintainers = [ lib.maintainers.yarny ]; + +} diff --git a/pkgs/applications/video/clickshare-csc1/default.nix b/pkgs/applications/video/clickshare-csc1/default.nix new file mode 100644 index 000000000000..34c80e1050b4 --- /dev/null +++ b/pkgs/applications/video/clickshare-csc1/default.nix @@ -0,0 +1,124 @@ +{ lib +, stdenv +, fetchurl +, alsaLib +, autoPatchelfHook +, binutils-unwrapped +, gnutar +, libav_0_8 +, libnotify +, libresample +, libusb1 +, qt4 +, rpmextract +, unzip +, xorg +, usersGroup ? "clickshare" # for udev access rules +}: + + +# This fetches the latest firmware version that +# contains a linux-compatible client binary. +# Barco no longer supports linux, so updates are unlikely: +# https://www.barco.com/de/support/clickshare-csc-1/knowledge-base/KB1191 + + +stdenv.mkDerivation rec { + name = "clickshare-csc1-${version}"; + version = "01.07.00.033"; + src = fetchurl { + name = "clickshare-csc1-${version}.zip"; + url = https://www.barco.com/services/website/de/TdeFiles/Download?FileNumber=R33050020&TdeType=3&MajorVersion=01&MinorVersion=07&PatchVersion=00&BuildVersion=033; + sha256 = "0h4jqidqvk4xkaky5bizi7ilz4qzl2mh68401j21y3djnzx09br3"; + }; + + nativeBuildInputs = [ + autoPatchelfHook + binutils-unwrapped + gnutar + rpmextract + unzip + ]; + buildInputs = [ + alsaLib + libav_0_8 + libnotify + libresample + libusb1 + qt4 + xorg.libX11 + xorg.libXdamage + xorg.libXfixes + xorg.libXinerama + xorg.libXtst + ]; + sourceRoot = "."; + + # The source consists of nested archives. + # We extract them archive by archive. + # If the filename contains version numbers, + # we use a wildcard and check that there + # is actually only one file matching. + postUnpack = + let + rpmArch = + if stdenv.hostPlatform.isx86_32 then "i386" else + if stdenv.hostPlatform.isx86_64 then "x86_64" else + throw "unsupported system: ${stdenv.hostPlatform.system}"; + in + '' + ls clickshare_baseunit_*.*_all.signed_release.ipk | wc --lines | xargs test 1 = + tar --verbose --extract --one-top-level=dir1 < clickshare_baseunit_*.*_all.signed_release.ipk + mkdir dir2 + ( cd dir2 ; ar xv ../dir1/firmware.ipk ) + tar --verbose --gzip --extract --one-top-level=dir3 --exclude='dev/*' < dir2/data.tar.gz + ls dir3/clickshare/clickshare-*-*.${rpmArch}.rpm | wc --lines | xargs test 1 = + mkdir dir4 + cd dir4 + rpmextract ../dir3/clickshare/clickshare-*-*.${rpmArch}.rpm + ''; + + installPhase = '' + runHook preInstall + mkdir --verbose --parents $out + mv --verbose --target-directory=. usr/* + rmdir --verbose usr + cp --verbose --recursive --target-directory=$out * + runHook postInstall + ''; + + # Default udev rule restricts access to the + # clickshare USB dongle to the `wheel` group. + # We replace it with the group + # stated in the package arguments. + # Also, we patch executable and icon paths in .desktop files. + preFixup = '' + substituteInPlace \ + $out/lib/udev/rules.d/99-clickshare.rules \ + --replace wheel ${usersGroup} + substituteInPlace \ + $out/share/applications/clickshare.desktop \ + --replace Exec= Exec=$out/bin/ \ + --replace =/usr =$out + substituteInPlace \ + $out/etc/xdg/autostart/clickshare-launcher.desktop \ + --replace =/usr =$out + ''; + + meta = { + homepage = https://www.barco.com/de/support/clickshare-csc-1/drivers; + downloadPage = https://www.barco.com/de/Support/software/R33050020; + platforms = [ "i686-linux" "x86_64-linux" ]; + license = lib.licenses.unfree; + maintainers = [ lib.maintainers.yarny ]; + description = "Linux driver/client for Barco ClickShare CSC-1"; + longDescription = '' + Barco ClickShare is a wireless presentation system + where a USB dongle transmits to a base station + that is connected with a beamer. + The USB dongle requires proprietary software that + captures the screen and sends it to the dongle. + This package provides the necessary software for Linux. + ''; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index de65d2c16ad5..215e487d2573 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -17089,6 +17089,8 @@ in clfswm = callPackage ../applications/window-managers/clfswm { }; + clickshare-csc1 = callPackage ../applications/video/clickshare-csc1 { }; + cligh = python3Packages.callPackage ../development/tools/github/cligh {}; clipgrab = qt5.callPackage ../applications/video/clipgrab { }; |