about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/video
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2022-03-15 10:36:38 +0000
committerAlyssa Ross <hi@alyssa.is>2022-03-16 11:37:19 +0000
commitd435710923ac6e6f9fc155534800745004f2ce93 (patch)
tree386f9401476f96bdc6ec25173a090198942b5d5b /nixpkgs/pkgs/applications/video
parentc725f0011e91ae49d351b981690eb66b862b6104 (diff)
parent3239fd2b8f728106491154b44625662e10259af2 (diff)
downloadnixlib-d435710923ac6e6f9fc155534800745004f2ce93.tar
nixlib-d435710923ac6e6f9fc155534800745004f2ce93.tar.gz
nixlib-d435710923ac6e6f9fc155534800745004f2ce93.tar.bz2
nixlib-d435710923ac6e6f9fc155534800745004f2ce93.tar.lz
nixlib-d435710923ac6e6f9fc155534800745004f2ce93.tar.xz
nixlib-d435710923ac6e6f9fc155534800745004f2ce93.tar.zst
nixlib-d435710923ac6e6f9fc155534800745004f2ce93.zip
Merge commit '3239fd2b8f728106491154b44625662e10259af2'
Conflicts:
	nixpkgs/pkgs/applications/window-managers/sway/default.nix
Diffstat (limited to 'nixpkgs/pkgs/applications/video')
-rw-r--r--nixpkgs/pkgs/applications/video/clapper/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/clipgrab/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/video/epgstation/client/package.json57
-rw-r--r--nixpkgs/pkgs/applications/video/epgstation/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/video/epgstation/epgstation.16
-rw-r--r--nixpkgs/pkgs/applications/video/epgstation/package.json113
-rw-r--r--nixpkgs/pkgs/applications/video/epgstation/update.nix25
-rw-r--r--nixpkgs/pkgs/applications/video/epgstation/use-mysql-over-domain-socket.patch55
-rw-r--r--nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/filebot/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/video/go-chromecast/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/video/gpac/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/unwrapped.nix10
-rw-r--r--nixpkgs/pkgs/applications/video/losslesscut-bin/appimage.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/losslesscut-bin/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/video/losslesscut-bin/dmg.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/losslesscut-bin/windows.nix5
-rw-r--r--nixpkgs/pkgs/applications/video/makemkv/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/video/mirakurun/update.nix2
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/video/obs-studio/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/rtabmap/0001-remove-printer-support.patch139
-rw-r--r--nixpkgs/pkgs/applications/video/rtabmap/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/video/shotcut/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/video/streamlink-twitch-gui/bin.nix12
-rw-r--r--nixpkgs/pkgs/applications/video/streamlink/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/video/vlc/default.nix9
28 files changed, 484 insertions, 179 deletions
diff --git a/nixpkgs/pkgs/applications/video/clapper/default.nix b/nixpkgs/pkgs/applications/video/clapper/default.nix
index 4f09fc14d9f8..0e97eab1773e 100644
--- a/nixpkgs/pkgs/applications/video/clapper/default.nix
+++ b/nixpkgs/pkgs/applications/video/clapper/default.nix
@@ -12,7 +12,7 @@
 , desktop-file-utils
 , makeWrapper
 , shared-mime-info
-, wrapGAppsHook
+, wrapGAppsHook4
 , meson
 , gjs
 , gtk4
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
     pkg-config
     python3
     shared-mime-info # for update-mime-database
-    wrapGAppsHook # for gsettings
+    wrapGAppsHook4 # for gsettings
   ];
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/video/clipgrab/default.nix b/nixpkgs/pkgs/applications/video/clipgrab/default.nix
index 2bd30c9e5291..9a1940cffc75 100644
--- a/nixpkgs/pkgs/applications/video/clipgrab/default.nix
+++ b/nixpkgs/pkgs/applications/video/clipgrab/default.nix
@@ -40,7 +40,7 @@ mkDerivation rec {
     desktopName = "ClipGrab";
     comment = meta.description;
     genericName = "Web video downloader";
-    categories = "Qt;AudioVideo;Audio;Video";
+    categories = [ "Qt" "AudioVideo" "Audio" "Video" ];
   };
 
   installPhase = ''
diff --git a/nixpkgs/pkgs/applications/video/epgstation/client/package.json b/nixpkgs/pkgs/applications/video/epgstation/client/package.json
new file mode 100644
index 000000000000..6ba9974afa5a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/epgstation/client/package.json
@@ -0,0 +1,57 @@
+{
+  "name": "epgstation-client",
+  "version": "2.6.20",
+  "private": true,
+  "scripts": {
+    "build": "vue-cli-service build",
+    "lint": "vue-cli-service lint",
+    "watch": "vue-cli-service build --watch --mode development"
+  },
+  "dependencies": {
+    "@mdi/font": "6.5.95",
+    "aribb24.js": "1.8.8",
+    "axios": "0.24.0",
+    "eventemitter2": "6.4.5",
+    "hls.js": "1.1.2",
+    "inversify": "6.0.1",
+    "json-stable-stringify": "1.0.1",
+    "lodash": "4.17.21",
+    "material-design-icons-iconfont": "6.1.1",
+    "mpegts.js": "1.6.10",
+    "reflect-metadata": "0.1.13",
+    "resize-observer-polyfill": "1.5.1",
+    "roboto-fontface": "*",
+    "smoothscroll-polyfill": "0.4.4",
+    "socket.io-client": "4.3.2",
+    "typeface-roboto": "1.1.13",
+    "vue": "2.6.14",
+    "vue-class-component": "7.2.6",
+    "vue-property-decorator": "9.1.2",
+    "vue-router": "3.5.3",
+    "vuetify": "2.5.10",
+    "vuetify-datetime-picker": "2.1.1",
+    "@types/hls.js": "0.13.3",
+    "@types/json-stable-stringify": "1.0.33",
+    "@types/lodash": "4.14.178",
+    "@types/smoothscroll-polyfill": "0.3.1",
+    "@types/socket.io-client": "1.4.36",
+    "@typescript-eslint/eslint-plugin": "4.33.0",
+    "@typescript-eslint/parser": "4.33.0",
+    "@vue/cli-plugin-eslint": "4.5.12",
+    "@vue/cli-plugin-typescript": "4.5.13",
+    "@vue/cli-plugin-vuex": "4.5.13",
+    "@vue/cli-service": "4.5.13",
+    "@vue/eslint-config-prettier": "6.0.0",
+    "@vue/eslint-config-typescript": "7.0.0",
+    "eslint": "7.32.0",
+    "eslint-plugin-prettier": "3.4.1",
+    "eslint-plugin-vue": "7.20.0",
+    "prettier": "2.4.1",
+    "sass": "1.32.12",
+    "sass-loader": "10.2.0",
+    "typescript": "4.4.4",
+    "vue-cli-plugin-vuetify": "2.4.3",
+    "vue-template-compiler": "2.6.14",
+    "vuetify-loader": "1.7.3"
+  }
+}
diff --git a/nixpkgs/pkgs/applications/video/epgstation/default.nix b/nixpkgs/pkgs/applications/video/epgstation/default.nix
index 3d910ad4c0e8..77510ae153de 100644
--- a/nixpkgs/pkgs/applications/video/epgstation/default.nix
+++ b/nixpkgs/pkgs/applications/video/epgstation/default.nix
@@ -10,17 +10,18 @@
 , nodePackages
 , gzip
 , jq
+, yq
 }:
 
 let
   # NOTE: use updateScript to bump the package version
   pname = "EPGStation";
-  version = "1.7.5";
+  version = "2.6.20";
   src = fetchFromGitHub {
     owner = "l3tnun";
     repo = "EPGStation";
     rev = "v${version}";
-    sha256 = "06yaf5yb5rp3q0kdhw33df7px7vyfby885ckb6bdzw3wnams5d8m";
+    sha256 = "K1cAvmqWEfS6EY4MKAtjXb388XLYHtouxNM70PWgFig=";
   };
 
   workaround-opencollective-buildfailures = stdenv.mkDerivation {
@@ -35,19 +36,44 @@ let
     '';
   };
 
-  pkg = nodePackages.epgstation.override (drv: {
+  client = nodePackages.epgstation-client.override (drv: {
+    # FIXME: remove this option if possible
+    #
+    # Unsetting this option resulted NPM attempting to re-download packages.
+    dontNpmInstall = true;
+
+    meta = drv.meta // {
+      inherit (nodejs.meta) platforms;
+    };
+  });
+
+  server = nodePackages.epgstation.override (drv: {
     inherit src;
 
+    bypassCache = false;
+
+    # This is set to false to keep devDependencies at build time. Build time
+    # dependencies are pruned afterwards.
+    production = false;
+
     buildInputs = [ bash ];
     nativeBuildInputs = [
+      nodejs
       workaround-opencollective-buildfailures
       makeWrapper
-      nodePackages.node-pre-gyp
-    ];
+    ] ++ (with nodePackages; [
+      node-pre-gyp
+      node-gyp-build
+    ]);
 
     preRebuild = ''
       # Fix for not being able to connect to mysql using domain sockets.
-      patch -p1 ${./use-mysql-over-domain-socket.patch}
+      patch -p1 < ${./use-mysql-over-domain-socket.patch}
+
+      # Workaround for https://github.com/svanderburg/node2nix/issues/275
+      sed -i -e "s|#!/usr/bin/env node|#! ${nodejs}/bin/node|" node_modules/node-gyp-build/bin.js
+
+      find . -name package-lock.json -delete
     '';
 
     postInstall = let
@@ -56,12 +82,19 @@ let
     ''
       mkdir -p $out/{bin,libexec,share/doc/epgstation,share/man/man1}
 
-      pushd $out/lib/node_modules/EPGStation
+      pushd $out/lib/node_modules/epgstation
+
+      cp -r ${client}/lib/node_modules/epgstation-client/node_modules client/node_modules
+      chmod -R u+w client/node_modules
 
       npm run build
+
       npm prune --production
+      pushd client
+      npm prune --production
+      popd
 
-      mv config/{enc.sh,enc.js} $out/libexec
+      mv config/enc.js.template $out/libexec/enc.js
       mv LICENSE Readme.md $out/share/doc/epgstation
       mv doc/* $out/share/doc/epgstation
       sed 's/@DESCRIPTION@/${drv.meta.description}/g' ${./epgstation.1} \
@@ -82,8 +115,9 @@ let
       ln -sfT /var/lib/epgstation/thumbnail thumbnail
 
       makeWrapper ${nodejs}/bin/npm $out/bin/epgstation \
-       --run "cd $out/lib/node_modules/EPGStation" \
-       --prefix PATH : ${lib.makeBinPath runtimeDeps}
+       --run "cd $out/lib/node_modules/epgstation" \
+       --prefix PATH : ${lib.makeBinPath runtimeDeps} \
+       --set APP_ROOT_PATH "$out/lib/node_modules/epgstation"
 
       popd
     '';
@@ -99,22 +133,25 @@ let
         common-updater-scripts
         genericUpdater
         writers
-        jq;
+        jq
+        yq;
     };
 
     # nodePackages.epgstation is a stub package to fetch npm dependencies and
-    # is marked as broken to prevent users from installing it directly. This
-    # technique ensures epgstation can share npm packages with the rest of
-    # nixpkgs while still allowing us to heavily customize the build. It also
-    # allows us to provide devDependencies for the epgstation build process
-    # without doing the same for all the other node packages.
-    meta = drv.meta // { broken = false; };
+    # its meta.platforms is made empty to prevent users from installing it
+    # directly. This technique ensures epgstation can share npm packages with
+    # the rest of nixpkgs while still allowing us to heavily customize the
+    # build. It also allows us to provide devDependencies for the epgstation
+    # build process without doing the same for all the other node packages.
+    meta = drv.meta // {
+      inherit (nodejs.meta) platforms;
+    };
   });
 in
-pkg // {
+server // {
   name = "${pname}-${version}";
 
-  meta = with lib; pkg.meta // {
+  meta = with lib; server.meta // {
     maintainers = with maintainers; [ midchildan ];
 
     # NOTE: updateScript relies on this being correct
diff --git a/nixpkgs/pkgs/applications/video/epgstation/epgstation.1 b/nixpkgs/pkgs/applications/video/epgstation/epgstation.1
index bb5c02381378..2dc67f646088 100644
--- a/nixpkgs/pkgs/applications/video/epgstation/epgstation.1
+++ b/nixpkgs/pkgs/applications/video/epgstation/epgstation.1
@@ -27,7 +27,7 @@ platforms, run
 to start EPGStation.
 .Sh FILES
 .Bl -tag -width Ds -compact
-.It Pa /etc/epgstation/config.json
+.It Pa /etc/epgstation/config.yml
 .Nm
 configuration file.
 .El
@@ -48,5 +48,9 @@ Restore the EPGstation database.
 .Pp
 .Dl $ epgstation run restore /path/to/src
 .Pp
+Restore the EPGstation database from the prior v1 release.
+.Pp
+.Dl $ epgstation run v1migrate /path/to/src
+.Pp
 .Sh SEE ALSO
 .Xr npm 1
diff --git a/nixpkgs/pkgs/applications/video/epgstation/package.json b/nixpkgs/pkgs/applications/video/epgstation/package.json
index 53b1ebca2da7..cf302a95161a 100644
--- a/nixpkgs/pkgs/applications/video/epgstation/package.json
+++ b/nixpkgs/pkgs/applications/video/epgstation/package.json
@@ -1,85 +1,72 @@
 {
-  "name": "EPGStation",
-  "version": "1.7.5",
+  "name": "epgstation",
+  "version": "2.6.20",
   "description": "DTV Software in Japan.",
   "repository": {
     "type": "git",
-    "url": "https://github.com/l3tnun/EPGStation.git"
+    "url": "git+https://github.com/l3tnun/EPGStation-V2.git"
   },
   "author": "l3tnun",
   "license": "MIT",
   "bugs": {
-    "url": "https://github.com/l3tnun/EPGStation/issues"
-  },
-  "homepage": "https://github.com/l3tnun/EPGStation#readme",
-  "engines": {
-    "node": "^10.x.x < 11 || ^12.14.0 < 13 || ^14.5.0 < 15"
+    "url": "https://github.com/l3tnun/EPGStation-V2/issues"
   },
+  "homepage": "https://github.com/l3tnun/EPGStation-V2#readme",
   "dependencies": {
-    "aribts": "^2.1.12",
-    "b24.js": "1.0.3",
-    "basic-auth": "2.0.1",
+    "arib-subtitle-timedmetadater": "4.0.9",
+    "aribts": "2.1.12",
+    "axios": "0.24.0",
     "body-parser": "1.19.0",
-    "chart.js": "2.9.3",
-    "css-ripple-effect": "1.0.5",
-    "diskusage": "1.1.3",
+    "cors": "2.8.5",
+    "diskusage-ng": "1.0.2",
     "express": "4.17.1",
-    "express-openapi": "7.0.1",
-    "fs-extra": "9.0.1",
-    "hls-b24.js": "0.12.3",
-    "js-yaml": "3.14.0",
-    "lodash": "4.17.20",
+    "express-openapi": "9.3.0",
+    "file-type": "16.5.3",
+    "inversify": "5.1.1",
+    "js-yaml": "4.1.0",
+    "lodash": "4.17.21",
     "log4js": "6.3.0",
-    "material-design-icons": "3.0.1",
-    "material-design-lite": "1.3.0",
     "minimist": "1.2.5",
-    "mirakurun": "3.3.1",
-    "mithril": "2.0.4",
+    "mirakurun": "3.9.0-beta.26",
     "mkdirp": "1.0.4",
-    "multer": "1.4.2",
+    "multer": "1.4.3",
     "mysql": "2.18.1",
-    "openapi-types": "7.0.1",
-    "pg": "8.3.3",
-    "request": "2.88.2",
-    "socket.io": "2.3.0",
-    "socket.io-client": "2.3.0",
-    "sqlite3": "5.0.0",
-    "swagger-ui-dist": "3.34.0",
+    "openapi-types": "9.3.0",
+    "reflect-metadata": "0.1.13",
+    "socket.io": "4.3.1",
+    "source-map-support": "0.5.20",
+    "sqlite3": "5.0.2",
+    "swagger-ui-dist": "3.52.5",
+    "typeorm": "0.2.38",
     "url-join": "4.0.1",
-    "@types/basic-auth": "1.1.3",
-    "@types/body-parser": "1.19.0",
-    "@types/chart.js": "2.9.24",
-    "@types/express": "4.17.8",
-    "@types/hls.js": "0.13.1",
-    "@types/js-yaml": "3.12.5",
-    "@types/lodash": "4.14.161",
-    "@types/material-design-lite": "1.1.16",
-    "@types/minimist": "1.2.0",
-    "@types/mithril": "2.0.3",
-    "@types/mkdirp": "1.0.1",
-    "@types/multer": "1.4.4",
-    "@types/mysql": "2.15.15",
-    "@types/node": "14.11.1",
-    "@types/pg": "7.14.5",
-    "@types/request": "2.48.5",
-    "@types/socket.io": "2.1.11",
-    "@types/socket.io-client": "1.4.33",
-    "@types/sqlite3": "3.1.6",
-    "@types/url-join": "4.0.0",
-    "del": "5.1.0",
+    "@types/body-parser": "1.19.1",
+    "@types/express": "4.17.13",
+    "@types/file-type": "10.9.1",
+    "@types/js-yaml": "4.0.4",
+    "@types/lodash": "4.14.176",
+    "@types/minimist": "1.2.2",
+    "@types/mkdirp": "1.0.2",
+    "@types/mongodb": "4.0.6",
+    "@types/multer": "1.4.7",
+    "@types/node": "16.11.6",
+    "@types/socket.io": "3.0.1",
+    "@types/source-map-support": "0.5.4",
+    "@types/sqlite3": "3.1.7",
+    "@types/url-join": "4.0.1",
+    "@typescript-eslint/eslint-plugin": "4.33.0",
+    "@typescript-eslint/parser": "4.33.0",
+    "del": "6.0.0",
+    "eslint": "7.32.0",
+    "eslint-config-prettier": "8.3.0",
+    "eslint-plugin-prettier": "3.4.1",
     "gulp": "4.0.2",
-    "gulp-clean-css": "4.3.0",
-    "gulp-concat": "2.6.1",
-    "gulp-dart-sass": "1.0.2",
+    "gulp-eslint": "6.0.0",
     "gulp-plumber": "1.2.1",
-    "gulp-sourcemaps": "2.6.5",
-    "gulp-tslint": "8.1.4",
+    "gulp-sourcemaps": "3.0.0",
     "gulp-typescript": "5.0.1",
-    "terser-webpack-plugin": "4.2.2",
-    "ts-loader": "8.0.4",
-    "tslint": "6.1.3",
-    "typescript": "4.0.3",
-    "webpack": "4.44.2",
-    "webpack-stream": "6.1.0"
+    "prettier": "2.4.1",
+    "ts-loader": "9.2.6",
+    "ts-node": "10.4.0",
+    "typescript": "4.4.4"
   }
 }
diff --git a/nixpkgs/pkgs/applications/video/epgstation/update.nix b/nixpkgs/pkgs/applications/video/epgstation/update.nix
index 9faa83c64f9e..5eb23be6c52b 100644
--- a/nixpkgs/pkgs/applications/video/epgstation/update.nix
+++ b/nixpkgs/pkgs/applications/video/epgstation/update.nix
@@ -6,6 +6,7 @@
 , genericUpdater
 , writers
 , jq
+, yq
 }:
 
 let
@@ -13,7 +14,7 @@ let
     inherit pname version;
     attrPath = lib.toLower pname;
     rev-prefix = "v";
-    versionLister = "${common-updater-scripts}/bin/list-git-tags ${homepage}";
+    versionLister = "${common-updater-scripts}/bin/list-git-tags --url=${homepage}";
   };
   updateScript = builtins.elemAt updater 0;
   updateArgs = map (lib.escapeShellArg) (builtins.tail updater);
@@ -40,6 +41,11 @@ in writers.writeBash "update-epgstation" ''
     } | del(.devDependencies, .main, .scripts)' \
     "$SRC/package.json" \
     > package.json
+  ${jq}/bin/jq '. + {
+      dependencies: (.dependencies + .devDependencies),
+    } | del(.devDependencies, .main, .scripts)' \
+    "$SRC/client/package.json" \
+    > client/package.json
 
   # Regenerate node packages to update the pre-overriden epgstation derivation.
   # This must come *after* package.json has been regenerated.
@@ -49,18 +55,11 @@ in writers.writeBash "update-epgstation" ''
 
   # Generate default streaming settings for the nixos module.
   pushd ../../../../nixos/modules/services/video/epgstation
-  ${jq}/bin/jq '
-    { liveHLS
-    , liveMP4
-    , liveWebM
-    , mpegTsStreaming
-    , mpegTsViewer
-    , recordedDownloader
-    , recordedStreaming
-    , recordedHLS
-    , recordedViewer
-    }' \
-    "$SRC/config/config.sample.json" \
+  ${yq}/bin/yq -j '{ urlscheme , stream }' \
+    "$SRC/config/config.yml.template" \
     > streaming.json
+
+  # Fix generated output for EditorConfig compliance
+  printf '\n' >> streaming.json  # rule: insert_final_newline
   popd
 ''
diff --git a/nixpkgs/pkgs/applications/video/epgstation/use-mysql-over-domain-socket.patch b/nixpkgs/pkgs/applications/video/epgstation/use-mysql-over-domain-socket.patch
index 48640f2ba08d..87bb3e7fbd19 100644
--- a/nixpkgs/pkgs/applications/video/epgstation/use-mysql-over-domain-socket.patch
+++ b/nixpkgs/pkgs/applications/video/epgstation/use-mysql-over-domain-socket.patch
@@ -1,17 +1,46 @@
-diff --git a/src/server/ConfigInterface.ts b/src/server/ConfigInterface.ts
-index d23badd..1dd2b98 100644
---- a/src/server/ConfigInterface.ts
-+++ b/src/server/ConfigInterface.ts
-@@ -11,9 +11,10 @@ interface ConfigInterface {
-     dbPath: string;
-     dbInfoPath: string;
-     mysql: {
+diff --git a/ormconfig.js b/ormconfig.js
+index 5591853b..838c06cb 100644
+--- a/ormconfig.js
++++ b/ormconfig.js
+@@ -38,8 +38,6 @@ switch (config.dbtype) {
+ 
+     case 'mysql':
+         ormConfig.type = 'mysql';
+-        ormConfig.host = config.mysql.host;
+-        ormConfig.port = config.mysql.port;
+         ormConfig.username = config.mysql.user;
+         ormConfig.password = config.mysql.password;
+         ormConfig.database = config.mysql.database;
+@@ -49,6 +47,12 @@ switch (config.dbtype) {
+         } else {
+             ormConfig.charset = config.mysql.charset;
+         }
++        if (config.mysql.socketPath) {
++            ormConfig.socketPath = config.mysql.socketPath;
++        } else {
++            ormConfig.host = config.mysql.host;
++            ormConfig.port = config.mysql.port;
++        }
+         break;
+ 
+     case 'postgres':
+diff --git a/src/model/IConfigFile.ts b/src/model/IConfigFile.ts
+index 6a502e83..ba84a423 100644
+--- a/src/model/IConfigFile.ts
++++ b/src/model/IConfigFile.ts
+@@ -61,12 +61,13 @@ export default interface IConfigFile {
+         regexp?: boolean;
+     };
+     mysql?: {
 -        host: string;
 +        host?: string;
-+        socketPath?: string;
          user: string;
--        password: string;
-+        password?: string;
+-        port: number;
++        port?: number;
+         password: string;
          database: string;
-         connectTimeout: number;
-         connectionLimit: number;
+         charset?: string;
++        socketPath?: string;
+     };
+     postgres?: {
+         host: string;
diff --git a/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix b/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix
index 28a974a7cc6d..a2f802c6e87b 100644
--- a/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix
+++ b/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonApplication rec {
   pname = "ffmpeg-normalize";
-  version = "1.22.6";
+  version = "1.22.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-aPPRzNotm3ATL0lEq+49lrlrHoNp+Dm1Im5jYF4E1vY=";
+    sha256 = "sha256-vxiq6q8fPh8ZLKnxYdIN591UQW73FWsoke1PvKTkko8=";
   };
 
   propagatedBuildInputs = [ ffmpeg ffmpeg-progress-yield ];
diff --git a/nixpkgs/pkgs/applications/video/filebot/default.nix b/nixpkgs/pkgs/applications/video/filebot/default.nix
index 93f11e78ffb3..d80384f7b26a 100644
--- a/nixpkgs/pkgs/applications/video/filebot/default.nix
+++ b/nixpkgs/pkgs/applications/video/filebot/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, openjdk11, makeWrapper, autoPatchelfHook
+{ lib, stdenv, fetchurl, openjdk17, makeWrapper, autoPatchelfHook
 , zlib, libzen, libmediainfo, curl, libmms, glib
 }:
 
@@ -10,11 +10,11 @@ in
 
 stdenv.mkDerivation rec {
   pname = "filebot";
-  version = "4.9.4";
+  version = "4.9.5";
 
   src = fetchurl {
-    url = "https://web.archive.org/web/20210326102451/https://get.filebot.net/filebot/FileBot_${version}/FileBot_${version}-portable.tar.xz";
-    sha256 = "sha256-fz0B9P/UBrlKGPZkheMd/4cFnWHt+brS3zRTv4nVt9o=";
+    url = "https://web.archive.org/web/20220226124706/https://get.filebot.net/filebot/FileBot_${version}/FileBot_${version}-portable.tar.xz";
+    sha256 = "sha256-LNvfAueDMd2TedK6bqnNG+J/4YhhbmUca9iyUkoUNkE=";
   };
 
   unpackPhase = "tar xvf $src";
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
       --replace 'APP_DATA="$FILEBOT_HOME/data/$(id -u)"' 'APP_DATA=''${XDG_DATA_HOME:-$HOME/.local/share}/filebot/data' \
       --replace '$FILEBOT_HOME/data/.license' '$APP_DATA/.license'
     wrapProgram $out/opt/filebot.sh \
-      --prefix PATH : ${lib.makeBinPath [ openjdk11 ]}
+      --prefix PATH : ${lib.makeBinPath [ openjdk17 ]}
     # Expose the binary in bin to make runnable.
     ln -s $out/opt/filebot.sh $out/bin/filebot
   '';
diff --git a/nixpkgs/pkgs/applications/video/go-chromecast/default.nix b/nixpkgs/pkgs/applications/video/go-chromecast/default.nix
index 0ffb5170dc29..99ddd7b24b69 100644
--- a/nixpkgs/pkgs/applications/video/go-chromecast/default.nix
+++ b/nixpkgs/pkgs/applications/video/go-chromecast/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "go-chromecast";
-  version = "0.2.11";
+  version = "0.2.12";
 
   src = fetchFromGitHub {
     owner = "vishen";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-BCOyeXo3uoR4ry/nFbF+//U62/hHnPK+tbG+8Rv6Rv0=";
+    sha256 = "sha256-h8qWwMaEhXnj6ZSrKAXBVbrMR0je41EoOtFeN9XlCuk=";
   };
 
-  vendorSha256 = "sha256-idxElk4Sy7SE9G1OMRw8YH4o8orBa80qhBXPA+ar620=";
+  vendorSha256 = "sha256-PpMLHuJR6irp+QHhzguwGtBy30HM7DR0tNGiwB07M5E=";
 
   ldflags = [ "-s" "-w" "-X main.version=${version}" "-X main.commit=${src.rev}" "-X main.date=unknown" ];
 
diff --git a/nixpkgs/pkgs/applications/video/gpac/default.nix b/nixpkgs/pkgs/applications/video/gpac/default.nix
index 6597b5fbffe8..6fd7a2036c56 100644
--- a/nixpkgs/pkgs/applications/video/gpac/default.nix
+++ b/nixpkgs/pkgs/applications/video/gpac/default.nix
@@ -1,14 +1,14 @@
 { lib, stdenv, fetchFromGitHub, pkg-config, zlib }:
 
 stdenv.mkDerivation rec {
-  version = "1.0.1";
+  version = "2.0.0";
   pname = "gpac";
 
   src = fetchFromGitHub {
     owner = "gpac";
     repo = "gpac";
     rev = "v${version}";
-    sha256 = "0gj46jpprfqv3wyagblv3a52chbplyzhvpra66v63czjibqsslm5";
+    sha256 = "sha256-MIX32lSqf/lrz9240h4wMIQp/heUmwvDJz8WN08yf6c=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix b/nixpkgs/pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix
index 758e509b85d9..9c7041441ff1 100644
--- a/nixpkgs/pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix
+++ b/nixpkgs/pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix
@@ -2,13 +2,13 @@
 buildKodiBinaryAddon rec {
   pname = "pvr-hdhomerun";
   namespace = "pvr.hdhomerun";
-  version = "19.0.2";
+  version = "19.1.0";
 
   src = fetchFromGitHub {
     owner = "kodi-pvr";
     repo = "pvr.hdhomerun";
     rev = "${version}-${rel}";
-    sha256 = "sha256-iFAOoQvZAdvJvN8FBg2w+oZWtr8mYdBQ3QX58HLmBho=";
+    sha256 = "sha256-sYVb4nhUz2j19yv3/cyLyUAC+1K0c05+iAMEfpPifjs=";
   };
 
   extraBuildInputs = [ jsoncpp libhdhomerun ];
diff --git a/nixpkgs/pkgs/applications/video/kodi/unwrapped.nix b/nixpkgs/pkgs/applications/video/kodi/unwrapped.nix
index 89eeed890485..18319468eae9 100644
--- a/nixpkgs/pkgs/applications/video/kodi/unwrapped.nix
+++ b/nixpkgs/pkgs/applications/video/kodi/unwrapped.nix
@@ -38,24 +38,24 @@ assert usbSupport -> !udevSupport; # libusb-compat-0_1 won't be used if udev is
 assert gbmSupport || waylandSupport || x11Support;
 
 let
-  kodiReleaseDate = "20211024";
-  kodiVersion = "19.3";
+  kodiReleaseDate = "20220303";
+  kodiVersion = "19.4";
   rel = "Matrix";
 
   kodi_src = fetchFromGitHub {
     owner  = "xbmc";
     repo   = "xbmc";
     rev    = "${kodiVersion}-${rel}";
-    sha256 = "02bnknk87zzv9j6b6k9c0xx47q2gh399j6v25rm94g7rhzf8phbw";
+    sha256 = "sha256-XDtmY3KthiD91kvueQRSamBcdM7fBpRntmZX6KRsCzE=";
   };
 
   ffmpeg = stdenv.mkDerivation rec {
     pname = "kodi-ffmpeg";
-    version = "4.3.2";
+    version = "4.3.2"; # see https://github.com/xbmc/xbmc/blob/${kodiVersion}-${rel}/tools/depends/target/ffmpeg/FFMPEG-VERSION
     src = fetchFromGitHub {
       owner   = "xbmc";
       repo    = "FFmpeg";
-      rev     = "${version}-${rel}-${kodiVersion}";
+      rev     = "${version}-${rel}-19.2";
       sha256  = "14s215sgc93ds1mrdbkgb7fvy94lpgv2ldricyxzis0gbzqfgs4f";
     };
     preConfigure = ''
diff --git a/nixpkgs/pkgs/applications/video/losslesscut-bin/appimage.nix b/nixpkgs/pkgs/applications/video/losslesscut-bin/appimage.nix
index d1f60c3dd2c2..e6be6f54e1dc 100644
--- a/nixpkgs/pkgs/applications/video/losslesscut-bin/appimage.nix
+++ b/nixpkgs/pkgs/applications/video/losslesscut-bin/appimage.nix
@@ -1,4 +1,4 @@
-{ appimageTools, lib, fetchurl, gtk3, gsettings-desktop-schemas, version }:
+{ appimageTools, lib, fetchurl, gtk3, gsettings-desktop-schemas, version, sha256 }:
 
 let
   pname = "losslesscut";
@@ -11,7 +11,7 @@ let
   src = fetchurl {
     url = "https://github.com/${owner}/${nameRepo}/releases/download/v${version}/${nameSource}";
     name = nameSource;
-    sha256 = "0aqz5ijl5japfzzbcdcd2mmihkb8b2fc2hs9kkm3211yb37c5ygv";
+    inherit sha256;
   };
   extracted = appimageTools.extractType2 {
     inherit name src;
diff --git a/nixpkgs/pkgs/applications/video/losslesscut-bin/default.nix b/nixpkgs/pkgs/applications/video/losslesscut-bin/default.nix
index 01f9c1580628..be7786f91020 100644
--- a/nixpkgs/pkgs/applications/video/losslesscut-bin/default.nix
+++ b/nixpkgs/pkgs/applications/video/losslesscut-bin/default.nix
@@ -1,9 +1,9 @@
 { callPackage, stdenvNoCC, lib }:
 let
-  version = "3.33.1";
-  appimage = callPackage ./appimage.nix { inherit version; };
-  dmg = callPackage ./dmg.nix { inherit version; };
-  windows = callPackage ./windows.nix { inherit version; };
+  version = "3.43.0";
+  appimage = callPackage ./appimage.nix { inherit version; sha256 = "1xfr3i4gsi13wj374yr5idhgs0q71s4h33yxdr7b7xjdg2gb8lp1"; };
+  dmg = callPackage ./dmg.nix { inherit version; sha256 = "1axki47hrxx5m0hrmjpxcya091lahqfnh2pd3zhn5dd496slq8an"; };
+  windows = callPackage ./windows.nix { inherit version; sha256 = "1v00gym18hjxxm42dfqmw7vhwh8lgjz2jgv6fmg234npr3d43py5"; };
 in (
   if stdenvNoCC.isDarwin then dmg
   else if stdenvNoCC.isCygwin then windows
@@ -13,7 +13,7 @@ in (
   meta = with lib; {
     description = "The swiss army knife of lossless video/audio editing";
     homepage = "https://mifi.no/losslesscut/";
-    license = licenses.mit;
+    license = licenses.gpl2Only;
     maintainers = with maintainers; [ ShamrockLee ];
   } // oldAttrs.meta // {
     platforms =
diff --git a/nixpkgs/pkgs/applications/video/losslesscut-bin/dmg.nix b/nixpkgs/pkgs/applications/video/losslesscut-bin/dmg.nix
index 3d0bad197570..3cbd77198b93 100644
--- a/nixpkgs/pkgs/applications/video/losslesscut-bin/dmg.nix
+++ b/nixpkgs/pkgs/applications/video/losslesscut-bin/dmg.nix
@@ -1,4 +1,4 @@
-{ stdenvNoCC, lib, fetchurl, undmg, version }:
+{ stdenvNoCC, lib, fetchurl, undmg, version , sha256 }:
 
 let
   pname = "losslesscut";
@@ -10,7 +10,7 @@ let
   src = fetchurl {
     url = "https://github.com/${owner}/${nameRepo}/releases/download/v${version}/${nameSource}";
     name = nameSource;
-    sha256 = "0xa1avbwar7x7kv5yn2ldca4vj3nwaz0dhjm3bcdy59q914xn3dj";
+    inherit sha256;
   };
 in stdenvNoCC.mkDerivation {
   inherit pname version src;
diff --git a/nixpkgs/pkgs/applications/video/losslesscut-bin/windows.nix b/nixpkgs/pkgs/applications/video/losslesscut-bin/windows.nix
index fe5df9d6c906..0e6ed9b04123 100644
--- a/nixpkgs/pkgs/applications/video/losslesscut-bin/windows.nix
+++ b/nixpkgs/pkgs/applications/video/losslesscut-bin/windows.nix
@@ -3,6 +3,7 @@
 , fetchurl
 , unzip
 , version
+, sha256
 , useMklink ? false
 , customSymlinkCommand ? null
 }:
@@ -18,12 +19,12 @@ let
     else if useMklink then (targetPath: linkPath: "mklink ${targetPath} ${linkPath}")
     else (targetPath: linkPath: "ln -s ${targetPath} ${linkPath}");
 in stdenvNoCC.mkDerivation {
-  inherit pname version;
+  inherit pname version sha256;
 
   src = fetchurl {
     name = nameSource;
     url = "https://github.com/${owner}/${nameRepo}/releases/download/v${version}/${nameSource}";
-    sha256 = "1rq9frab0jl9y1mgmjhzsm734jvz0a646zq2wi5xzzspn4wikhvb";
+    inherit sha256;
   };
 
   nativeBuildInputs = [ unzip ];
diff --git a/nixpkgs/pkgs/applications/video/makemkv/default.nix b/nixpkgs/pkgs/applications/video/makemkv/default.nix
index 26d80b1596c2..712ccacd7a0c 100644
--- a/nixpkgs/pkgs/applications/video/makemkv/default.nix
+++ b/nixpkgs/pkgs/applications/video/makemkv/default.nix
@@ -14,21 +14,21 @@
 }:
 
 let
-  version = "1.16.5";
+  version = "1.16.7";
   # Using two URLs as the first one will break as soon as a new version is released
   src_bin = fetchurl {
     urls = [
       "http://www.makemkv.com/download/makemkv-bin-${version}.tar.gz"
       "http://www.makemkv.com/download/old/makemkv-bin-${version}.tar.gz"
     ];
-    sha256 = "1y14yxhjj0sdq0s24qr58m0ddhna2rf0q0w3ny888as4wbqiwvm0";
+    sha256 = "sha256-YjsYW2MmzDZqOMdYlqE0dZ399Qq8hJRQ9BCViNexLHs=";
   };
   src_oss = fetchurl {
     urls = [
       "http://www.makemkv.com/download/makemkv-oss-${version}.tar.gz"
       "http://www.makemkv.com/download/old/makemkv-oss-${version}.tar.gz"
     ];
-    sha256 = "131vdi4gyc996z77rrcqb9nfbd62j8314ai4ib1jnilmrsrk93p5";
+    sha256 = "sha256-TL0PRP/pDg16qsbYi9RYyD0egNDaxuApmR86hiR/Rq8=";
   };
 
 in mkDerivation {
@@ -55,15 +55,15 @@ in mkDerivation {
   installPhase = ''
     runHook preInstall
 
-    install -Dm555 -t $out/bin                          out/makemkv ../makemkv-bin-${version}/bin/amd64/makemkvcon
-    install -D     -t $out/lib                          out/lib{driveio,makemkv,mmbd}.so.*
-    install -D     -t $out/share/MakeMKV                ../makemkv-bin-${version}/src/share/*
-    install -Dm444 -t $out/share/applications           ../makemkv-oss-${version}/makemkvgui/share/makemkv.desktop
-    install -Dm444 -t $out/share/icons/hicolor/16x16    ../makemkv-oss-${version}/makemkvgui/share/icons/16x16/*
-    install -Dm444 -t $out/share/icons/hicolor/32x32    ../makemkv-oss-${version}/makemkvgui/share/icons/32x32/*
-    install -Dm444 -t $out/share/icons/hicolor/64x64    ../makemkv-oss-${version}/makemkvgui/share/icons/64x64/*
-    install -Dm444 -t $out/share/icons/hicolor/128x128  ../makemkv-oss-${version}/makemkvgui/share/icons/128x128/*
-    install -Dm444 -t $out/share/icons/hicolor/256x256  ../makemkv-oss-${version}/makemkvgui/share/icons/256x256/*
+    install -Dm555 -t $out/bin                              out/makemkv ../makemkv-bin-${version}/bin/amd64/makemkvcon
+    install -D     -t $out/lib                              out/lib{driveio,makemkv,mmbd}.so.*
+    install -D     -t $out/share/MakeMKV                    ../makemkv-bin-${version}/src/share/*
+    install -Dm444 -t $out/share/applications               ../makemkv-oss-${version}/makemkvgui/share/makemkv.desktop
+    install -Dm444 -t $out/share/icons/hicolor/16x16/apps   ../makemkv-oss-${version}/makemkvgui/share/icons/16x16/*
+    install -Dm444 -t $out/share/icons/hicolor/32x32/apps   ../makemkv-oss-${version}/makemkvgui/share/icons/32x32/*
+    install -Dm444 -t $out/share/icons/hicolor/64x64/apps   ../makemkv-oss-${version}/makemkvgui/share/icons/64x64/*
+    install -Dm444 -t $out/share/icons/hicolor/128x128/apps ../makemkv-oss-${version}/makemkvgui/share/icons/128x128/*
+    install -Dm444 -t $out/share/icons/hicolor/256x256/apps ../makemkv-oss-${version}/makemkvgui/share/icons/256x256/*
 
     runHook postInstall
   '';
diff --git a/nixpkgs/pkgs/applications/video/mirakurun/update.nix b/nixpkgs/pkgs/applications/video/mirakurun/update.nix
index ccea2279783b..18a4d0ab2562 100644
--- a/nixpkgs/pkgs/applications/video/mirakurun/update.nix
+++ b/nixpkgs/pkgs/applications/video/mirakurun/update.nix
@@ -17,7 +17,7 @@ let
 
     # exclude prerelease versions
     versionLister = writers.writeBash "list-mirakurun-versions" ''
-      ${common-updater-scripts}/bin/list-git-tags ${homepage} \
+      ${common-updater-scripts}/bin/list-git-tags --url=${homepage} \
         | grep '^[0-9]\+\.[0-9]\+\.[0-9]\+$'
     '';
   };
diff --git a/nixpkgs/pkgs/applications/video/mpv/default.nix b/nixpkgs/pkgs/applications/video/mpv/default.nix
index 576f79c47793..3ceda57fb899 100644
--- a/nixpkgs/pkgs/applications/video/mpv/default.nix
+++ b/nixpkgs/pkgs/applications/video/mpv/default.nix
@@ -15,7 +15,6 @@
 , freetype
 , libass
 , libpthreadstubs
-, mujs
 , nv-codec-headers
 , lua
 , libuchardet
@@ -56,6 +55,7 @@
 , cmsSupport         ? true,           lcms2
 , dvdnavSupport      ? stdenv.isLinux, libdvdnav
 , jackaudioSupport   ? false,          libjack2
+, javascriptSupport  ? true,           mujs
 , libpngSupport      ? true,           libpng
 , openalSupport      ? true,           openalSoft
 , pulseSupport       ? config.pulseaudio or stdenv.isLinux, libpulseaudio
@@ -108,6 +108,7 @@ in stdenv.mkDerivation rec {
     (lib.enableFeature archiveSupport  "libarchive")
     (lib.enableFeature cddaSupport     "cdda")
     (lib.enableFeature dvdnavSupport   "dvdnav")
+    (lib.enableFeature javascriptSupport "javascript")
     (lib.enableFeature openalSupport   "openal")
     (lib.enableFeature sdl2Support     "sdl2")
     (lib.enableFeature sixelSupport    "sixel")
@@ -134,7 +135,6 @@ in stdenv.mkDerivation rec {
     libpthreadstubs
     libuchardet
     luaEnv
-    mujs
   ] ++ lib.optionals alsaSupport        [ alsa-lib ]
     ++ lib.optionals archiveSupport     [ libarchive ]
     ++ lib.optionals bluraySupport      [ libbluray ]
@@ -145,6 +145,7 @@ in stdenv.mkDerivation rec {
     ++ lib.optionals drmSupport         [ libdrm mesa ]
     ++ lib.optionals dvdnavSupport      [ libdvdnav libdvdnav.libdvdread ]
     ++ lib.optionals jackaudioSupport   [ libjack2 ]
+    ++ lib.optionals javascriptSupport  [ mujs ]
     ++ lib.optionals libpngSupport      [ libpng ]
     ++ lib.optionals openalSupport      [ openalSoft ]
     ++ lib.optionals pulseSupport       [ libpulseaudio ]
diff --git a/nixpkgs/pkgs/applications/video/obs-studio/default.nix b/nixpkgs/pkgs/applications/video/obs-studio/default.nix
index 6d3f9b6d32db..22c206dfe037 100644
--- a/nixpkgs/pkgs/applications/video/obs-studio/default.nix
+++ b/nixpkgs/pkgs/applications/video/obs-studio/default.nix
@@ -46,13 +46,13 @@ let
 in
 mkDerivation rec {
   pname = "obs-studio";
-  version = "27.2.0";
+  version = "27.2.1";
 
   src = fetchFromGitHub {
     owner = "obsproject";
     repo = "obs-studio";
     rev = version;
-    sha256 = "KZgwAtyxv2vXDW7vF1eArF5Mqw45NngwChc+5OnXuXg=";
+    sha256 = "sha256-RHPzSw7wjnAHk90N7g53LyIH3ozO/hyZV5hVZpZe+Ow=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/applications/video/rtabmap/0001-remove-printer-support.patch b/nixpkgs/pkgs/applications/video/rtabmap/0001-remove-printer-support.patch
new file mode 100644
index 000000000000..f3b31ed95861
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/rtabmap/0001-remove-printer-support.patch
@@ -0,0 +1,139 @@
+From c04ce502d29f7769efbff730d1f9060b8c24629a Mon Sep 17 00:00:00 2001
+From: ckie <git-525ff67@ckie.dev>
+Date: Tue, 8 Feb 2022 19:18:49 +0200
+Subject: [PATCH] remove printer support
+
+---
+ app/src/CMakeLists.txt       |  4 ++--
+ guilib/src/CMakeLists.txt    |  4 ++--
+ guilib/src/GraphViewer.cpp   | 12 +-----------
+ guilib/src/ImageView.cpp     | 16 ----------------
+ guilib/src/utilite/UPlot.cpp |  9 ---------
+ 5 files changed, 5 insertions(+), 40 deletions(-)
+
+diff --git a/app/src/CMakeLists.txt b/app/src/CMakeLists.txt
+index b20a07d4..2cad8c1e 100644
+--- a/app/src/CMakeLists.txt
++++ b/app/src/CMakeLists.txt
+@@ -63,9 +63,9 @@ ENDIF()
+ TARGET_LINK_LIBRARIES(rtabmap rtabmap_core rtabmap_gui rtabmap_utilite ${LIBRARIES})

+ IF(Qt5_FOUND)

+     IF(Qt5Svg_FOUND)

+-        QT5_USE_MODULES(rtabmap Widgets Core Gui Svg PrintSupport)

++        QT5_USE_MODULES(rtabmap Widgets Core Gui Svg)

+     ELSE()

+-        QT5_USE_MODULES(rtabmap Widgets Core Gui PrintSupport)

++        QT5_USE_MODULES(rtabmap Widgets Core Gui)

+     ENDIF()

+ ENDIF(Qt5_FOUND)

+ 

+diff --git a/guilib/src/CMakeLists.txt b/guilib/src/CMakeLists.txt
+index 3711205b..a393aa25 100644
+--- a/guilib/src/CMakeLists.txt
++++ b/guilib/src/CMakeLists.txt
+@@ -208,9 +208,9 @@ ADD_LIBRARY(rtabmap_gui ${SRC_FILES})
+ TARGET_LINK_LIBRARIES(rtabmap_gui rtabmap_core rtabmap_utilite ${LIBRARIES})
+ IF(Qt5_FOUND)
+     IF(Qt5Svg_FOUND)
+-        QT5_USE_MODULES(rtabmap_gui Widgets Core Gui Svg PrintSupport)
++        QT5_USE_MODULES(rtabmap_gui Widgets Core Gui Svg)
+     ELSE()
+-        QT5_USE_MODULES(rtabmap_gui Widgets Core Gui PrintSupport)
++        QT5_USE_MODULES(rtabmap_gui Widgets Core Gui)
+     ENDIF()
+ ENDIF(Qt5_FOUND)
+ 
+diff --git a/guilib/src/GraphViewer.cpp b/guilib/src/GraphViewer.cpp
+index 58907c34..7b41061f 100644
+--- a/guilib/src/GraphViewer.cpp
++++ b/guilib/src/GraphViewer.cpp
+@@ -38,7 +38,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include <QtGui/QDesktopServices>
+ #include <QtGui/QContextMenuEvent>
+ #include <QColorDialog>
+-#include <QPrinter>
+ #include <QFileDialog>
+ #ifdef QT_SVG_LIB
+ #include <QtSvg/QSvgGenerator>
+@@ -2011,16 +2010,7 @@ void GraphViewer::contextMenuEvent(QContextMenuEvent * event)
+ 				this->scene()->setSceneRect(this->scene()->itemsBoundingRect());  // Re-shrink the scene to it's bounding contents
+ 				QSize sceneSize = this->scene()->sceneRect().size().toSize();
+ 
+-				if(QFileInfo(filePath).suffix().compare("pdf") == 0)
+-				{
+-					QPrinter printer(QPrinter::HighResolution);
+-					printer.setOrientation(QPrinter::Portrait);
+-					printer.setOutputFileName( filePath );
+-					QPainter p(&printer);
+-					scene()->render(&p);
+-					p.end();
+-				}
+-				else if(QFileInfo(filePath).suffix().compare("svg") == 0)
++				if(QFileInfo(filePath).suffix().compare("svg") == 0)
+ 				{
+ #ifdef QT_SVG_LIB
+ 					QSvgGenerator svgGen;
+diff --git a/guilib/src/ImageView.cpp b/guilib/src/ImageView.cpp
+index 714f2d36..887e7bdc 100644
+--- a/guilib/src/ImageView.cpp
++++ b/guilib/src/ImageView.cpp
+@@ -37,7 +37,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include <QInputDialog>
+ #include <QVBoxLayout>
+ #include <QColorDialog>
+-#include <QPrinter>
+ #include <QGraphicsRectItem>
+ #include "rtabmap/utilite/ULogger.h"
+ #include "rtabmap/gui/KeypointItem.h"
+@@ -843,21 +842,6 @@ void ImageView::contextMenuEvent(QContextMenuEvent * e)
+ 				}
+ 
+ 				_savedFileName = text;
+-				if(QFileInfo(text).suffix().compare("pdf") == 0)
+-				{
+-					QPrinter printer(QPrinter::HighResolution);
+-					printer.setOrientation(QPrinter::Portrait);
+-					printer.setOutputFileName( text );
+-					QPainter p(&printer);
+-					p.begin(&printer);
+-					double xscale = printer.pageRect().width()/double(_graphicsView->sceneRect().width());
+-					double yscale = printer.pageRect().height()/double(_graphicsView->sceneRect().height());
+-					double scale = qMin(xscale, yscale);
+-					p.scale(scale, scale);
+-					_graphicsView->scene()->render(&p, _graphicsView->sceneRect(), _graphicsView->sceneRect());
+-					p.end();
+-				}
+-				else
+ 				{
+ 					QImage img(_graphicsView->sceneRect().width(), _graphicsView->sceneRect().height(), QImage::Format_ARGB32_Premultiplied);
+ 					QPainter p(&img);
+diff --git a/guilib/src/utilite/UPlot.cpp b/guilib/src/utilite/UPlot.cpp
+index 1b11c65e..8bf94841 100644
+--- a/guilib/src/utilite/UPlot.cpp
++++ b/guilib/src/utilite/UPlot.cpp
+@@ -42,7 +42,6 @@
+ #include <QFileDialog>

+ #include <QtGui/QClipboard>

+ #include <QApplication>

+-#include <QPrinter>

+ #include <QColorDialog>

+ #include <QToolTip>

+ #ifdef QT_SVG_LIB

+@@ -2849,14 +2848,6 @@ void UPlot::contextMenuEvent(QContextMenuEvent * event)
+ 			else

+ 			{

+ #endif

+-				if(QFileInfo(text).suffix().compare("pdf") == 0)

+-				{

+-					QPrinter printer;

+-					printer.setOutputFormat(QPrinter::PdfFormat);

+-					printer.setOutputFileName(text);

+-					this->render(&printer);

+-				}

+-				else

+ 				{

+ 					QPixmap figure = QPixmap::grabWidget(this);

+ 					figure.save(text);

+-- 
+2.34.1
+
diff --git a/nixpkgs/pkgs/applications/video/rtabmap/default.nix b/nixpkgs/pkgs/applications/video/rtabmap/default.nix
new file mode 100644
index 000000000000..c6429b093486
--- /dev/null
+++ b/nixpkgs/pkgs/applications/video/rtabmap/default.nix
@@ -0,0 +1,59 @@
+{ lib, stdenv, fetchFromGitHub, pkg-config, cmake, opencv, pcl, libusb1, eigen
+, wrapQtAppsHook, qtbase, g2o, ceres-solver, libpointmatcher, octomap, freenect
+, libdc1394, librealsense, libGL, libGLU, vtkWithQt5, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "rtabmap";
+  version = "unstable-2022-02-07";
+
+  src = fetchFromGitHub {
+    owner = "introlab";
+    repo = "rtabmap";
+    rev = "f584f42ea423c44138aa0668b5c8eb18f2978fe2";
+    sha256 = "sha256-xotOcaz5XrmzwEKuVEQZoeq6fEVbACK7PSUW9kULH40=";
+  };
+
+  patches = [
+    # Our Qt5 seems to be missing PrintSupport.. I think?
+    ./0001-remove-printer-support.patch
+  ];
+
+  nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook wrapGAppsHook ];
+  buildInputs = [
+    ## Required
+    opencv
+    pcl
+    ## Optional
+    libusb1
+    eigen
+    g2o
+    ceres-solver
+    # libpointmatcher - ABI mismatch
+    octomap
+    freenect
+    libdc1394
+    # librealsense - missing includedir
+    qtbase
+    libGL
+    libGLU
+    vtkWithQt5
+  ];
+
+  # Disable warnings that are irrelevant to us as packagers
+  cmakeFlags = "-Wno-dev";
+
+  # We run one of the executables we build while the build is
+  # still running (and patchelf hasn't been invoked) which means
+  # the RPATH is not set correctly. This hacks around that error:
+  #
+  # build/bin/rtabmap-res_tool: error while loading shared libraries: librtabmap_utilite.so.0.20: cannot open shared object file: No such file or directory
+  LD_LIBRARY_PATH = "/build/source/build/bin";
+
+  meta = with lib; {
+    description = "Real-Time Appearance-Based 3D Mapping";
+    homepage = "https://introlab.github.io/rtabmap/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ ckie ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/shotcut/default.nix b/nixpkgs/pkgs/applications/video/shotcut/default.nix
index 3b6116d5a068..e996ae92d216 100644
--- a/nixpkgs/pkgs/applications/video/shotcut/default.nix
+++ b/nixpkgs/pkgs/applications/video/shotcut/default.nix
@@ -17,8 +17,7 @@
 , qtgraphicaleffects
 , qmake
 , qttools
-, genericUpdater
-, common-updater-scripts
+, gitUpdater
 }:
 
 assert lib.versionAtLeast mlt.version "6.24.0";
@@ -76,9 +75,8 @@ mkDerivation rec {
     cp -r src/qml $out/share/shotcut/
   '';
 
-  passthru.updateScript = genericUpdater {
+  passthru.updateScript = gitUpdater {
     inherit pname version;
-    versionLister = "${common-updater-scripts}/bin/list-git-tags ${src.meta.homepage}";
     rev-prefix = "v";
   };
 
diff --git a/nixpkgs/pkgs/applications/video/streamlink-twitch-gui/bin.nix b/nixpkgs/pkgs/applications/video/streamlink-twitch-gui/bin.nix
index 53e87fbb2b9d..395da881ea9f 100644
--- a/nixpkgs/pkgs/applications/video/streamlink-twitch-gui/bin.nix
+++ b/nixpkgs/pkgs/applications/video/streamlink-twitch-gui/bin.nix
@@ -27,7 +27,7 @@
 }:
 let
   basename = "streamlink-twitch-gui";
-  runtimeLibs = lib.makeLibraryPath [ libudev0-shim ];
+  runtimeLibs = lib.makeLibraryPath [ gtk3-x11 libudev0-shim ];
   runtimeBins = lib.makeBinPath [ streamlink ];
   arch =
     if stdenv.hostPlatform.system == "x86_64-linux"
@@ -39,16 +39,16 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "${basename}-bin";
-  version = "1.11.0";
+  version = "2.0.0";
 
   src = fetchurl {
     url = "https://github.com/streamlink/${basename}/releases/download/v${version}/${basename}-v${version}-${arch}.tar.gz";
-    sha256 =
+    hash =
       if arch == "linux64"
       then
-        "0y96nziavvpdvrpn58p6a175kaa8cgadp19rnbm250x9cypn1d9y"
+        "sha256-5AgQ+nvv/J493Zi+F+6QRT/DGg8JyusXsP5qVuXtiG4="
       else
-        "0sfmhqf55w7wavqy4idsqpkf5p7l8sapjxap6xvyzpz4z5z6xr7y";
+        "sha256-+jgTpIYb4BPM7Ixmo+YUeOX5OlQlMaRVEXf3WzS2lAI=";
   };
 
   nativeBuildInputs = with xorg; [
@@ -116,7 +116,7 @@ stdenv.mkDerivation rec {
     icon = basename;
     desktopName = "Streamlink Twitch GUI";
     genericName = meta.description;
-    categories = "AudioVideo;Network;";
+    categories = [ "AudioVideo" "Network" ];
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/video/streamlink/default.nix b/nixpkgs/pkgs/applications/video/streamlink/default.nix
index 957911e239c9..415790b4c11c 100644
--- a/nixpkgs/pkgs/applications/video/streamlink/default.nix
+++ b/nixpkgs/pkgs/applications/video/streamlink/default.nix
@@ -6,11 +6,11 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "streamlink";
-  version = "3.1.1";
+  version = "3.2.0";
 
   src = python3Packages.fetchPypi {
     inherit pname version;
-    sha256 = "sha256-hVzTHpAOOuHVMoo3Ejv//irsUBoddLzdEvDSonWAYOQ=";
+    sha256 = "sha256-l3DS2DhExTeKc+FBMNy3YKvIVlZsqgpB/FuXoN7V2SY=";
   };
 
   checkInputs = with python3Packages; [
@@ -44,7 +44,6 @@ python3Packages.buildPythonApplication rec {
     '';
     changelog = "https://github.com/streamlink/streamlink/raw/${version}/CHANGELOG.md";
     license = licenses.bsd2;
-    platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ dezgeg zraexy DeeUnderscore ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/vlc/default.nix b/nixpkgs/pkgs/applications/video/vlc/default.nix
index a5e65480b2bf..c19b8fa15cd1 100644
--- a/nixpkgs/pkgs/applications/video/vlc/default.nix
+++ b/nixpkgs/pkgs/applications/video/vlc/default.nix
@@ -82,11 +82,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "${optionalString onlyLibVLC "lib"}vlc";
-  version = "3.0.16";
+  version = "3.0.17";
 
   src = fetchurl {
     url = "http://get.videolan.org/vlc/${version}/vlc-${version}.tar.xz";
-    sha256 = "sha256-/641/GT2JcF1Vx0jRrxfYge+mXYlF/FUI+dPGDmUEPY=";
+    sha256 = "sha256-SL2b8zeqEHoVJOulfFLcSpHin1qX+97pL2pNupA4PNA=";
   };
 
   # VLC uses a *ton* of libraries for various pieces of functionality, many of
@@ -187,11 +187,6 @@ stdenv.mkDerivation rec {
   BUILDCC = "${stdenv.cc}/bin/gcc";
 
   patches = [
-    # Required in order to run newer srt plugin. Remove it when next release arrives
-    (fetchpatch {
-      url = "https://raw.githubusercontent.com/archlinux/svntogit-packages/4250fe8f28c220d883db454cec2b2c76a07473eb/trunk/vlc-3.0.11.1-srt_1.4.2.patch";
-      sha256 = "53poWjZfwq/6l316sqiCp0AtcGweyXBntcLDFPSokHQ=";
-    })
     # patches to build with recent live555
     # upstream issue: https://code.videolan.org/videolan/vlc/-/issues/25473
     (fetchpatch {