diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 2a25eacb9966..592b74e294fa 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -1859,6 +1859,12 @@
fingerprint = "68B8 0D57 B2E5 4AC3 EC1F 49B0 B37E 0F23 7101 6A4C";
}];
};
+ collares = {
+ email = "mauricio@collares.org";
+ github = "collares";
+ githubId = 244239;
+ name = "Mauricio Collares";
+ };
copumpkin = {
email = "pumpkingod@gmail.com";
github = "copumpkin";
diff --git a/maintainers/team-list.nix b/maintainers/team-list.nix
index 7d778a8ae30c..0575b87b7472 100644
--- a/maintainers/team-list.nix
+++ b/maintainers/team-list.nix
@@ -134,6 +134,7 @@ with lib.maintainers; {
timokau
omasanori
raskin
+ collares
];
scope = "Maintain SageMath and the dependencies that are likely to break it.";
};
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 7a84e2620f82..21f421abfece 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -177,6 +177,7 @@
./programs/tmux.nix
./programs/traceroute.nix
./programs/tsm-client.nix
+ ./programs/turbovnc.nix
./programs/udevil.nix
./programs/usbtop.nix
./programs/vim.nix
diff --git a/nixos/modules/programs/turbovnc.nix b/nixos/modules/programs/turbovnc.nix
new file mode 100644
index 000000000000..e6f8836aa367
--- /dev/null
+++ b/nixos/modules/programs/turbovnc.nix
@@ -0,0 +1,54 @@
+# Global configuration for the SSH client.
+
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.programs.turbovnc;
+in
+{
+ options = {
+
+ programs.turbovnc = {
+
+ ensureHeadlessSoftwareOpenGL = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ Whether to set up NixOS such that TurboVNC's built-in software OpenGL
+ implementation works.
+
+ This will enable so that OpenGL
+ programs can find Mesa's llvmpipe drivers.
+
+ Setting this option to false
does not mean that software
+ OpenGL won't work; it may still work depending on your system
+ configuration.
+
+ This option is also intended to generate warnings if you are using some
+ configuration that's incompatible with using headless software OpenGL
+ in TurboVNC.
+ '';
+ };
+
+ };
+
+ };
+
+ config = mkIf cfg.ensureHeadlessSoftwareOpenGL {
+
+ # TurboVNC has builtin support for Mesa llvmpipe's `swrast`
+ # software rendering to implemnt GLX (OpenGL on Xorg).
+ # However, just building TurboVNC with support for that is not enough
+ # (it only takes care of the X server side part of OpenGL);
+ # the indiviudual applications (e.g. `glxgears`) also need to directly load
+ # the OpenGL libs.
+ # Thus, this creates `/run/opengl-driver` populated by Mesa so that the applications
+ # can find the llvmpipe `swrast.so` software rendering DRI lib via `libglvnd`.
+ # This comment exists to explain why `hardware.` is involved,
+ # even though 100% software rendering is used.
+ hardware.opengl.enable = true;
+
+ };
+}
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 251f24a9a089..3ce71b0abe6d 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -408,6 +408,7 @@ in
trickster = handleTest ./trickster.nix {};
trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {};
tuptime = handleTest ./tuptime.nix {};
+ turbovnc-headless-server = handleTest ./turbovnc-headless-server.nix {};
ucg = handleTest ./ucg.nix {};
udisks2 = handleTest ./udisks2.nix {};
unbound = handleTest ./unbound.nix {};
diff --git a/nixos/tests/turbovnc-headless-server.nix b/nixos/tests/turbovnc-headless-server.nix
new file mode 100644
index 000000000000..35da9a53d2db
--- /dev/null
+++ b/nixos/tests/turbovnc-headless-server.nix
@@ -0,0 +1,171 @@
+import ./make-test-python.nix ({ pkgs, lib, ... }: {
+ name = "turbovnc-headless-server";
+ meta = {
+ maintainers = with lib.maintainers; [ nh2 ];
+ };
+
+ machine = { pkgs, ... }: {
+
+ environment.systemPackages = with pkgs; [
+ glxinfo
+ procps # for `pkill`, `pidof` in the test
+ scrot # for screenshotting Xorg
+ turbovnc
+ ];
+
+ programs.turbovnc.ensureHeadlessSoftwareOpenGL = true;
+
+ networking.firewall = {
+ # Reject instead of drop, for failures instead of hangs.
+ rejectPackets = true;
+ allowedTCPPorts = [
+ 5900 # VNC :0, for seeing what's going on in the server
+ ];
+ };
+
+ # So that we can ssh into the VM, see e.g.
+ # http://blog.patapon.info/nixos-local-vm/#accessing-the-vm-with-ssh
+ services.openssh.enable = true;
+ services.openssh.permitRootLogin = "yes";
+ users.extraUsers.root.password = "";
+ users.mutableUsers = false;
+ };
+
+ testScript = ''
+ def wait_until_terminated_or_succeeds(
+ termination_check_shell_command,
+ success_check_shell_command,
+ get_detail_message_fn,
+ retries=60,
+ retry_sleep=0.5,
+ ):
+ def check_success():
+ command_exit_code, _output = machine.execute(success_check_shell_command)
+ return command_exit_code == 0
+
+ for _ in range(retries):
+ exit_check_exit_code, _output = machine.execute(termination_check_shell_command)
+ is_terminated = exit_check_exit_code != 0
+ if is_terminated:
+ if check_success():
+ return
+ else:
+ details = get_detail_message_fn()
+ raise Exception(
+ f"termination check ({termination_check_shell_command}) triggered without command succeeding ({success_check_shell_command}); details: {details}"
+ )
+ else:
+ if check_success():
+ return
+ time.sleep(retry_sleep)
+
+ if not check_success():
+ details = get_detail_message_fn()
+ raise Exception(
+ f"action timed out ({success_check_shell_command}); details: {details}"
+ )
+
+
+ # Below we use the pattern:
+ # (cmd | tee stdout.log) 3>&1 1>&2 2>&3 | tee stderr.log
+ # to capture both stderr and stdout while also teeing them, see:
+ # https://unix.stackexchange.com/questions/6430/how-to-redirect-stderr-and-stdout-to-different-files-and-also-display-in-termina/6431#6431
+
+
+ # Starts headless VNC server, backgrounding it.
+ def start_xvnc():
+ xvnc_command = " ".join(
+ [
+ "Xvnc",
+ ":0",
+ "-iglx",
+ "-auth /root/.Xauthority",
+ "-geometry 1240x900",
+ "-depth 24",
+ "-rfbwait 5000",
+ "-deferupdate 1",
+ "-verbose",
+ "-securitytypes none",
+ # We don't enforce localhost listening such that we
+ # can connect from outside the VM using
+ # env QEMU_NET_OPTS=hostfwd=tcp::5900-:5900 $(nix-build nixos/tests/turbovnc-headless-server.nix -A driver)/bin/nixos-test-driver
+ # for testing purposes, and so that we can in the future
+ # add another test case that connects the TurboVNC client.
+ # "-localhost",
+ ]
+ )
+ machine.execute(
+ # Note trailing & for backgrounding.
+ f"({xvnc_command} | tee /tmp/Xvnc.stdout) 3>&1 1>&2 2>&3 | tee /tmp/Xvnc.stderr &",
+ )
+
+
+ # Waits until the server log message that tells us that GLX is ready
+ # (requires `-verbose` above), avoiding screenshoting racing below.
+ def wait_until_xvnc_glx_ready():
+ machine.wait_until_succeeds("test -f /tmp/Xvnc.stderr")
+ wait_until_terminated_or_succeeds(
+ termination_check_shell_command="pidof Xvnc",
+ success_check_shell_command="grep 'GLX: Initialized DRISWRAST' /tmp/Xvnc.stderr",
+ get_detail_message_fn=lambda: "Contents of /tmp/Xvnc.stderr:\n"
+ + machine.succeed("cat /tmp/Xvnc.stderr"),
+ )
+
+
+ # Checks that we detect glxgears failing when
+ # `LIBGL_DRIVERS_PATH=/nonexistent` is set
+ # (in which case software rendering should not work).
+ def test_glxgears_failing_with_bad_driver_path():
+ machine.execute(
+ # Note trailing & for backgrounding.
+ "(env DISPLAY=:0 LIBGL_DRIVERS_PATH=/nonexistent glxgears -info | tee /tmp/glxgears-should-fail.stdout) 3>&1 1>&2 2>&3 | tee /tmp/glxgears-should-fail.stderr &"
+ )
+ machine.wait_until_succeeds("test -f /tmp/glxgears-should-fail.stderr")
+ wait_until_terminated_or_succeeds(
+ termination_check_shell_command="pidof glxgears",
+ success_check_shell_command="grep 'libGL error: failed to load driver: swrast' /tmp/glxgears-should-fail.stderr",
+ get_detail_message_fn=lambda: "Contents of /tmp/glxgears-should-fail.stderr:\n"
+ + machine.succeed("cat /tmp/glxgears-should-fail.stderr"),
+ )
+ machine.wait_until_fails("pidof glxgears")
+
+
+ # Starts glxgears, backgrounding it. Waits until it prints the `GL_RENDERER`.
+ # Does not quit glxgears.
+ def test_glxgears_prints_renderer():
+ machine.execute(
+ # Note trailing & for backgrounding.
+ "(env DISPLAY=:0 glxgears -info | tee /tmp/glxgears.stdout) 3>&1 1>&2 2>&3 | tee /tmp/glxgears.stderr &"
+ )
+ machine.wait_until_succeeds("test -f /tmp/glxgears.stderr")
+ wait_until_terminated_or_succeeds(
+ termination_check_shell_command="pidof glxgears",
+ success_check_shell_command="grep 'GL_RENDERER' /tmp/glxgears.stdout",
+ get_detail_message_fn=lambda: "Contents of /tmp/glxgears.stderr:\n"
+ + machine.succeed("cat /tmp/glxgears.stderr"),
+ )
+
+
+ with subtest("Start Xvnc"):
+ start_xvnc()
+ wait_until_xvnc_glx_ready()
+
+ with subtest("Ensure bad driver path makes glxgears fail"):
+ test_glxgears_failing_with_bad_driver_path()
+
+ with subtest("Run 3D application (glxgears)"):
+ test_glxgears_prints_renderer()
+
+ # Take screenshot; should display the glxgears.
+ machine.succeed("scrot --display :0 /tmp/glxgears.png")
+
+ # Copy files down.
+ machine.copy_from_vm("/tmp/glxgears.png")
+ machine.copy_from_vm("/tmp/glxgears.stdout")
+ machine.copy_from_vm("/tmp/glxgears-should-fail.stdout")
+ machine.copy_from_vm("/tmp/glxgears-should-fail.stderr")
+ machine.copy_from_vm("/tmp/Xvnc.stdout")
+ machine.copy_from_vm("/tmp/Xvnc.stderr")
+ '';
+
+})
diff --git a/pkgs/applications/graphics/freecad/default.nix b/pkgs/applications/graphics/freecad/default.nix
index 5a3dffd0c367..07ac5b32e5f1 100644
--- a/pkgs/applications/graphics/freecad/default.nix
+++ b/pkgs/applications/graphics/freecad/default.nix
@@ -130,6 +130,8 @@ mkDerivation rec {
postFixup = ''
mv $out/share/doc $out
+ ln -s $out/bin/FreeCAD $out/bin/freecad
+ ln -s $out/bin/FreeCADCmd $out/bin/freecadcmd
'';
meta = with lib; {
diff --git a/pkgs/applications/graphics/gimp/default.nix b/pkgs/applications/graphics/gimp/default.nix
index 62f1a3627716..2491d8d3a8ab 100644
--- a/pkgs/applications/graphics/gimp/default.nix
+++ b/pkgs/applications/graphics/gimp/default.nix
@@ -1,6 +1,7 @@
{ stdenv
, lib
, fetchurl
+, fetchpatch
, substituteAll
, autoreconfHook
, pkg-config
@@ -72,6 +73,12 @@ in stdenv.mkDerivation rec {
# Use absolute paths instead of relying on PATH
# to make sure plug-ins are loaded by the correct interpreter.
./hardcode-plugin-interpreters.patch
+
+ # Fix crash without dot.
+ (fetchpatch {
+ url = "https://gitlab.gnome.org/GNOME/gimp/-/commit/f83fd22c4b8701ffc4ce14383e5e22756a4bce04.patch";
+ sha256 = "POuvBhOSStO7hBGp4HgNx5F9pElFRoqN3W+i3u4zOnk=";
+ })
];
nativeBuildInputs = [
diff --git a/pkgs/applications/networking/cluster/waypoint/default.nix b/pkgs/applications/networking/cluster/waypoint/default.nix
index f28754005ecb..7675dc0de880 100644
--- a/pkgs/applications/networking/cluster/waypoint/default.nix
+++ b/pkgs/applications/networking/cluster/waypoint/default.nix
@@ -2,17 +2,17 @@
buildGoModule rec {
pname = "waypoint";
- version = "0.2.3";
+ version = "0.2.4";
src = fetchFromGitHub {
owner = "hashicorp";
repo = pname;
rev = "v${version}";
- sha256 = "sha256-FTBBDKFUoyC+Xdm3+2QWXK57fLwitYrFP89OvAyHHVY=";
+ sha256 = "sha256-6sV2e/m0qVSRWgdvVZ9VxEL/J57nTcTClxHF5X8/8PQ=";
};
deleteVendor = true;
- vendorSha256 = "sha256-ihelAumTRgLALevJdVq3V3SISitiRPCQZUh2h5/eczA=";
+ vendorSha256 = "sha256-NPE3YHulqllWDGrxQgPmy/KKE7xFPOUorLQNIU8cP50=";
nativeBuildInputs = [ go-bindata ];
diff --git a/pkgs/applications/networking/ftp/filezilla/default.nix b/pkgs/applications/networking/ftp/filezilla/default.nix
index 877cdec4ca8d..b4c1e95087ec 100644
--- a/pkgs/applications/networking/ftp/filezilla/default.nix
+++ b/pkgs/applications/networking/ftp/filezilla/default.nix
@@ -17,11 +17,11 @@
stdenv.mkDerivation rec {
pname = "filezilla";
- version = "3.51.0";
+ version = "3.52.2";
src = fetchurl {
url = "https://download.filezilla-project.org/client/FileZilla_${version}_src.tar.bz2";
- sha256 = "0k3c7gm16snc6dr9a3xgq14ajyqj4hxcrd6hk6jk5fsi9x51rgl2";
+ sha256 = "sha256-wHiIFpKKJuiGPH3CaxWGROcb7ylAbffS7aN9xIENbN8=";
};
# https://www.linuxquestions.org/questions/slackware-14/trouble-building-filezilla-3-47-2-1-current-4175671182/#post6099769
diff --git a/pkgs/applications/version-management/gitlab/data.json b/pkgs/applications/version-management/gitlab/data.json
index 001d0b158b25..b3a5d25c930f 100644
--- a/pkgs/applications/version-management/gitlab/data.json
+++ b/pkgs/applications/version-management/gitlab/data.json
@@ -1,11 +1,11 @@
{
- "version": "13.8.5",
- "repo_hash": "0dpyqynd6rscg07s58y0cjn7vfj2h21h51ja0fm6ll76wb02sbm6",
+ "version": "13.8.6",
+ "repo_hash": "0izzvr4bw86nbrqkf44gkcf63ham10cw4vp5yk0ylgm7w0kimv8v",
"owner": "gitlab-org",
"repo": "gitlab",
- "rev": "v13.8.5-ee",
+ "rev": "v13.8.6-ee",
"passthru": {
- "GITALY_SERVER_VERSION": "13.8.5",
+ "GITALY_SERVER_VERSION": "13.8.6",
"GITLAB_PAGES_VERSION": "1.34.0",
"GITLAB_SHELL_VERSION": "13.15.1",
"GITLAB_WORKHORSE_VERSION": "8.59.2"
diff --git a/pkgs/applications/version-management/gitlab/gitaly/default.nix b/pkgs/applications/version-management/gitlab/gitaly/default.nix
index a201d79a12a4..db2ac513b211 100644
--- a/pkgs/applications/version-management/gitlab/gitaly/default.nix
+++ b/pkgs/applications/version-management/gitlab/gitaly/default.nix
@@ -33,14 +33,14 @@ let
};
};
in buildGoModule rec {
- version = "13.8.5";
+ version = "13.8.6";
pname = "gitaly";
src = fetchFromGitLab {
owner = "gitlab-org";
repo = "gitaly";
rev = "v${version}";
- sha256 = "sha256-hKIjKltPPmz50Ru7elpHdeoyGAqgp+txR3fKleqY7hM=";
+ sha256 = "sha256-6ocP4SMafvLI2jfvcB8jk1AemAI/TiBQ1iaVxK7I54A=";
};
vendorSha256 = "sha256-oVw6vXI3CyOn4l02PkYx3HVpZfzQPi3yBuf9tRvoWoM=";
diff --git a/pkgs/applications/video/kodi-packages/addon-update-script/default.nix b/pkgs/applications/video/kodi-packages/addon-update-script/default.nix
new file mode 100644
index 000000000000..17c1d45783fa
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/addon-update-script/default.nix
@@ -0,0 +1,23 @@
+{ writeShellScript
+, nix
+, curl
+, gzip
+, xmlstarlet
+, common-updater-scripts
+}:
+
+{ attrPath }:
+
+let
+ url = "http://mirrors.kodi.tv/addons/matrix/addons.xml.gz";
+ updateScript = writeShellScript "update.sh" ''
+ set -ex
+
+ attrPath=$1
+ namespace=$(${nix}/bin/nix-instantiate $systemArg --eval -E "with import ./. {}; $attrPath.namespace" | tr -d '"')
+ version=$(${curl}/bin/curl -s -L ${url} | ${gzip}/bin/gunzip -c | ${xmlstarlet}/bin/xml select -T -t -m "//addons/addon[@id='$namespace']" -v @version)
+
+ ${common-updater-scripts}/bin/update-source-version "$attrPath" "$version"
+ '';
+in
+ [ updateScript attrPath ]
diff --git a/pkgs/applications/video/kodi-packages/certifi/default.nix b/pkgs/applications/video/kodi-packages/certifi/default.nix
new file mode 100644
index 000000000000..bfce47b7b2ce
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/certifi/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+ pname = "certifi";
+ namespace = "script.module.certifi";
+ version = "2019.11.28+matrix.1";
+
+ src = fetchzip {
+ url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+ sha256 = "0vsd68izv1ix0hb1gm74qq3zff0sxmhfhjyh7y9005zzp2gpi62v";
+ };
+
+ passthru.updateScript = addonUpdateScript {
+ attrPath = "kodi.packages.certifi";
+ };
+
+ meta = with lib; {
+ homepage = "https://certifi.io";
+ description = "Python package for providing Mozilla's CA Bundle";
+ license = licenses.mpl20;
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/chardet/default.nix b/pkgs/applications/video/kodi-packages/chardet/default.nix
new file mode 100644
index 000000000000..1e37f6b46e2b
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/chardet/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+ pname = "chardet";
+ namespace = "script.module.chardet";
+ version = "3.0.4+matrix.3";
+
+ src = fetchzip {
+ url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+ sha256 = "05928dj4fsj2zg8ajdial3sdf8izddq64sr0al3zy1gqw91jp80f";
+ };
+
+ passthru.updateScript = addonUpdateScript {
+ attrPath = "kodi.packages.chardet";
+ };
+
+ meta = with lib; {
+ homepage = "https://github.com/Freso/script.module.chardet";
+ description = "Universal encoding detector";
+ license = licenses.lgpl2Only;
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/controllers/default.nix b/pkgs/applications/video/kodi-packages/controllers/default.nix
new file mode 100644
index 000000000000..bd29b7c0f7c3
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/controllers/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildKodiAddon, fetchFromGitHub, controller }:
+buildKodiAddon rec {
+ pname = "game-controller-${controller}";
+ namespace = "game.controller.${controller}";
+ version = "1.0.3";
+
+ sourceDir = "addons/" + namespace;
+
+ src = fetchFromGitHub {
+ owner = "kodi-game";
+ repo = "kodi-game-controllers";
+ rev = "01acb5b6e8b85392b3cb298b034aadb1b24ccf18";
+ sha256 = "0sbc0w0fwbp7rbmbgb6a1kglhnn5g85hijcbbvf5x6jdq9v3f1qb";
+ };
+
+ meta = with lib; {
+ description = "Add support for different gaming controllers.";
+ platforms = platforms.all;
+ maintainers = with maintainers; [ edwtjo ];
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/idna/default.nix b/pkgs/applications/video/kodi-packages/idna/default.nix
new file mode 100644
index 000000000000..abe5635e8281
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/idna/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+ pname = "idna";
+ namespace = "script.module.idna";
+ version = "2.8.1+matrix.1";
+
+ src = fetchzip {
+ url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+ sha256 = "02s75fhfmbs3a38wvxba51aj3lv5bidshjdkl6yjfji6waxpr9xh";
+ };
+
+ passthru.updateScript = addonUpdateScript {
+ attrPath = "kodi.packages.idna";
+ };
+
+ meta = with lib; {
+ homepage = "https://github.com/Freso/script.module.idna";
+ description = "Internationalized Domain Names for Python";
+ license = licenses.bsd3;
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/inputstream-adaptive/default.nix b/pkgs/applications/video/kodi-packages/inputstream-adaptive/default.nix
new file mode 100644
index 000000000000..cd4c5aca1171
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/inputstream-adaptive/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, rel, addonDir, buildKodiBinaryAddon, fetchFromGitHub, expat, glib, nspr, nss }:
+buildKodiBinaryAddon rec {
+ pname = "inputstream-adaptive";
+ namespace = "inputstream.adaptive";
+ version = "2.6.7";
+
+ src = fetchFromGitHub {
+ owner = "peak3d";
+ repo = "inputstream.adaptive";
+ rev = "${version}-${rel}";
+ sha256 = "1pwqmbr78wp12jn6rwv63npdfc456adwz0amlxf6gvgg43li6p7s";
+ };
+
+ extraBuildInputs = [ expat ];
+
+ extraRuntimeDependencies = [ glib nspr nss stdenv.cc.cc.lib ];
+
+ extraInstallPhase = let n = namespace; in ''
+ ln -s $out/lib/addons/${n}/libssd_wv.so $out/${addonDir}/${n}/libssd_wv.so
+ '';
+
+ meta = with lib; {
+ homepage = "https://github.com/peak3d/inputstream.adaptive";
+ description = "Kodi inputstream addon for several manifest types";
+ platforms = platforms.all;
+ maintainers = with maintainers; [ sephalon ];
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/inputstreamhelper/default.nix b/pkgs/applications/video/kodi-packages/inputstreamhelper/default.nix
new file mode 100644
index 000000000000..2bbcc6d9d2c3
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/inputstreamhelper/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+ pname = "inputstreamhelper";
+ namespace = "script.module.inputstreamhelper";
+ version = "0.5.2+matrix.1";
+
+ src = fetchzip {
+ url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+ sha256 = "18lkksljfa57w69yklbldf7dgyykrm84pd10mdjdqdm88fdiiijk";
+ };
+
+ passthru.updateScript = addonUpdateScript {
+ attrPath = "kodi.packages.inputstreamhelper";
+ };
+
+ meta = with lib; {
+ homepage = "https://github.com/emilsvennesson/script.module.inputstreamhelper";
+ description = "A simple Kodi module that makes life easier for add-on developers relying on InputStream based add-ons and DRM playback";
+ license = licenses.mit;
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/joystick/default.nix b/pkgs/applications/video/kodi-packages/joystick/default.nix
new file mode 100644
index 000000000000..321ddce905fd
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/joystick/default.nix
@@ -0,0 +1,21 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, tinyxml, udev }:
+buildKodiBinaryAddon rec {
+ pname = namespace;
+ namespace = "peripheral.joystick";
+ version = "1.7.1";
+
+ src = fetchFromGitHub {
+ owner = "xbmc";
+ repo = namespace;
+ rev = "${version}-${rel}";
+ sha256 = "1dhj4afr9kj938xx70fq5r409mz6lbw4n581ljvdjj9lq7akc914";
+ };
+
+ meta = with lib; {
+ description = "Binary addon for raw joystick input.";
+ platforms = platforms.all;
+ maintainers = with maintainers; [ edwtjo ];
+ };
+
+ extraBuildInputs = [ tinyxml udev ];
+}
diff --git a/pkgs/applications/video/kodi-packages/kodi-platform/default.nix b/pkgs/applications/video/kodi-packages/kodi-platform/default.nix
new file mode 100644
index 000000000000..6d458f7377d7
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/kodi-platform/default.nix
@@ -0,0 +1,15 @@
+{ stdenv, fetchFromGitHub, cmake, kodi, libcec_platform, tinyxml }:
+stdenv.mkDerivation rec {
+ pname = "kodi-platform";
+ version = "17.1";
+
+ src = fetchFromGitHub {
+ owner = "xbmc";
+ repo = pname;
+ rev = "c8188d82678fec6b784597db69a68e74ff4986b5";
+ sha256 = "1r3gs3c6zczmm66qcxh9mr306clwb3p7ykzb70r3jv5jqggiz199";
+ };
+
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [ kodi libcec_platform tinyxml ];
+}
diff --git a/pkgs/applications/video/kodi-packages/myconnpy/default.nix b/pkgs/applications/video/kodi-packages/myconnpy/default.nix
new file mode 100644
index 000000000000..a1b255765242
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/myconnpy/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+ pname = "myconnpy";
+ namespace = "script.module.myconnpy";
+ version = "8.0.18+matrix.1";
+
+ src = fetchzip {
+ url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+ sha256 = "1cx3qdzw9lkkmbyvyrmc2i193is20fihn2sfl7kmv43f708vam0k";
+ };
+
+ passthru.updateScript = addonUpdateScript {
+ attrPath = "kodi.packages.myconnpy";
+ };
+
+ meta = with lib; {
+ homepage = "http://dev.mysql.com/doc/connector-python/en/index.html";
+ description = "MySQL Connector/Python";
+ license = licenses.gpl2Only;
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/netflix/default.nix b/pkgs/applications/video/kodi-packages/netflix/default.nix
new file mode 100644
index 000000000000..20440153f76e
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/netflix/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildKodiAddon, fetchFromGitHub, signals, inputstreamhelper, requests, myconnpy }:
+buildKodiAddon rec {
+ pname = "netflix";
+ namespace = "plugin.video.netflix";
+ version = "1.14.1";
+
+ src = fetchFromGitHub {
+ owner = "CastagnaIT";
+ repo = namespace;
+ rev = "v${version}";
+ sha256 = "0vv3234gg4brp0gvrsl4vdskmpfbyk4z7cjmmj31zn4m8j33japn";
+ };
+
+ propagatedBuildInputs = [
+ signals
+ inputstreamhelper
+ requests
+ myconnpy
+ ];
+
+ meta = with lib; {
+ homepage = "https://github.com/CastagnaIT/plugin.video.netflix";
+ description = "Netflix VOD Services Add-on";
+ license = licenses.mit;
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/osmc-skin/default.nix b/pkgs/applications/video/kodi-packages/osmc-skin/default.nix
new file mode 100644
index 000000000000..c83fd66a4333
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/osmc-skin/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildKodiAddon, fetchFromGitHub }:
+buildKodiAddon rec {
+ pname = "osmc-skin";
+ namespace = "skin.osmc";
+ version = "18.0.0";
+
+ src = fetchFromGitHub {
+ owner = "osmc";
+ repo = namespace;
+ rev = "40a6c318641e2cbeac58fb0e7dde9c2beac737a0";
+ sha256 = "1l7hyfj5zvjxjdm94y325bmy1naak455b9l8952sb0gllzrcwj6s";
+ };
+
+ meta = with lib; {
+ homepage = "https://github.com/osmc/skin.osmc";
+ description = "The default skin for OSMC";
+ platforms = platforms.all;
+ maintainers = with maintainers; [ worldofpeace ];
+ license = licenses.cc-by-nc-sa-30;
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/pdfreader/default.nix b/pkgs/applications/video/kodi-packages/pdfreader/default.nix
new file mode 100644
index 000000000000..430b9be3fd45
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/pdfreader/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildKodiAddon, fetchFromGitHub }:
+buildKodiAddon rec {
+ pname = "pdfreader";
+ namespace = "plugin.image.pdf";
+ version = "2.0.2";
+
+ src = fetchFromGitHub {
+ owner = "i96751414";
+ repo = "plugin.image.pdfreader";
+ rev = "v${version}";
+ sha256 = "0nkqhlm1gyagq6xpdgqvd5qxyr2ngpml9smdmzfabc8b972mwjml";
+ };
+
+ meta = with lib; {
+ homepage = "https://forum.kodi.tv/showthread.php?tid=187421";
+ description = "A comic book reader";
+ maintainers = with maintainers; [ edwtjo ];
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/pvr-hdhomerun/default.nix b/pkgs/applications/video/kodi-packages/pvr-hdhomerun/default.nix
new file mode 100644
index 000000000000..3920120b90ac
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/pvr-hdhomerun/default.nix
@@ -0,0 +1,22 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, jsoncpp, libhdhomerun }:
+buildKodiBinaryAddon rec {
+ pname = "pvr-hdhomerun";
+ namespace = "pvr.hdhomerun";
+ version = "7.1.0";
+
+ src = fetchFromGitHub {
+ owner = "kodi-pvr";
+ repo = "pvr.hdhomerun";
+ rev = "${version}-${rel}";
+ sha256 = "0gbwjssnd319csq2kwlyjj1rskg19m1dxac5dl2dymvx5hn3zrgm";
+ };
+
+ meta = with lib; {
+ homepage = "https://github.com/kodi-pvr/pvr.hdhomerun";
+ description = "Kodi's HDHomeRun PVR client addon";
+ platforms = platforms.all;
+ maintainers = with maintainers; [ titanous ];
+ };
+
+ extraBuildInputs = [ jsoncpp libhdhomerun ];
+}
diff --git a/pkgs/applications/video/kodi-packages/pvr-hts/default.nix b/pkgs/applications/video/kodi-packages/pvr-hts/default.nix
new file mode 100644
index 000000000000..935238758a6b
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/pvr-hts/default.nix
@@ -0,0 +1,21 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub }:
+buildKodiBinaryAddon rec {
+ pname = "pvr-hts";
+ namespace = "pvr.hts";
+ version = "8.2.2";
+
+ src = fetchFromGitHub {
+ owner = "kodi-pvr";
+ repo = "pvr.hts";
+ rev = "${version}-${rel}";
+ sha256 = "0jnn9gfjl556acqjf92wzzn371gxymhbbi665nqgg2gjcan0a49q";
+ };
+
+ meta = with lib; {
+ homepage = "https://github.com/kodi-pvr/pvr.hts";
+ description = "Kodi's Tvheadend HTSP client addon";
+ platforms = platforms.all;
+ maintainers = with maintainers; [ cpages ];
+ };
+
+}
diff --git a/pkgs/applications/video/kodi-packages/pvr-iptvsimple/default.nix b/pkgs/applications/video/kodi-packages/pvr-iptvsimple/default.nix
new file mode 100644
index 000000000000..b508eae8c7e8
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/pvr-iptvsimple/default.nix
@@ -0,0 +1,22 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, zlib, pugixml }:
+buildKodiBinaryAddon rec {
+ pname = "pvr-iptvsimple";
+ namespace = "pvr.iptvsimple";
+ version = "7.4.2";
+
+ src = fetchFromGitHub {
+ owner = "kodi-pvr";
+ repo = "pvr.iptvsimple";
+ rev = "${version}-${rel}";
+ sha256 = "062i922qi0izkvn7v47yhyy2cf3fa7xc3k95b1gm9abfdwkk8ywr";
+ };
+
+ meta = with lib; {
+ homepage = "https://github.com/kodi-pvr/pvr.iptvsimple";
+ description = "Kodi's IPTV Simple client addon";
+ platforms = platforms.all;
+ license = licenses.gpl2Plus;
+ };
+
+ extraBuildInputs = [ zlib pugixml ];
+}
diff --git a/pkgs/applications/video/kodi-packages/requests/default.nix b/pkgs/applications/video/kodi-packages/requests/default.nix
new file mode 100644
index 000000000000..05288b74b6c1
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/requests/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript, certifi, chardet, idna, urllib3 }:
+buildKodiAddon rec {
+ pname = "requests";
+ namespace = "script.module.requests";
+ version = "2.22.0+matrix.1";
+
+ src = fetchzip {
+ url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+ sha256 = "09576galkyzhw8fhy2h4aablm5rm2v08g0mdmg9nn55dlxhkkljq";
+ };
+
+ propagatedBuildInputs = [
+ certifi
+ chardet
+ idna
+ urllib3
+ ];
+
+ passthru.updateScript = addonUpdateScript {
+ attrPath = "kodi.packages.requests";
+ };
+
+ meta = with lib; {
+ homepage = "http://python-requests.org";
+ description = "Python HTTP for Humans";
+ license = licenses.asl20;
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/signals/default.nix b/pkgs/applications/video/kodi-packages/signals/default.nix
new file mode 100644
index 000000000000..9d49e632721f
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/signals/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+ pname = "signals";
+ namespace = "script.module.addon.signals";
+ version = "0.0.6+matrix.1";
+
+ src = fetchzip {
+ url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+ sha256 = "1qcjbakch8hvx02wc01zv014nmzgn6ahc4n2bj5mzr114ppd3hjs";
+ };
+
+ passthru.updateScript = addonUpdateScript {
+ attrPath = "kodi.packages.signals";
+ };
+
+ meta = with lib; {
+ homepage = "https://github.com/ruuk/script.module.addon.signals";
+ description = "Provides signal/slot mechanism for inter-addon communication";
+ license = licenses.lgpl21Only;
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/steam-controller/default.nix b/pkgs/applications/video/kodi-packages/steam-controller/default.nix
new file mode 100644
index 000000000000..5eee0eff9415
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/steam-controller/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildKodiBinaryAddon, fetchFromGitHub, libusb1 }:
+buildKodiBinaryAddon rec {
+ pname = namespace;
+ namespace = "peripheral.steamcontroller";
+ version = "0.11.0";
+
+ src = fetchFromGitHub {
+ owner = "kodi-game";
+ repo = namespace;
+ rev = "f68140ca44f163a03d3a625d1f2005a6edef96cb";
+ sha256 = "09lm8i119xlsxxk0c64rnp8iw0crr90v7m8iwi9r31qdmxrdxpmg";
+ };
+
+ extraBuildInputs = [ libusb1 ];
+
+ meta = with lib; {
+ description = "Binary addon for steam controller.";
+ platforms = platforms.all;
+ maintainers = with maintainers; [ edwtjo ];
+ };
+
+}
diff --git a/pkgs/applications/video/kodi-packages/steam-launcher/default.nix b/pkgs/applications/video/kodi-packages/steam-launcher/default.nix
new file mode 100644
index 000000000000..cb140b4fb4d6
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/steam-launcher/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildKodiAddon, fetchFromGitHub, steam }:
+buildKodiAddon {
+ pname = "steam-launcher";
+ namespace = "script.steam.launcher";
+ version = "3.5.1";
+
+ src = fetchFromGitHub rec {
+ owner = "teeedubb";
+ repo = owner + "-xbmc-repo";
+ rev = "8260bf9b464846a1f1965da495d2f2b7ceb81d55";
+ sha256 = "1fj3ry5s44nf1jzxk4bmnpa4b9p23nrpmpj2a4i6xf94h7jl7p5k";
+ };
+
+ propagatedBuildInputs = [ steam ];
+
+ meta = with lib; {
+ homepage = "https://forum.kodi.tv/showthread.php?tid=157499";
+ description = "Launch Steam in Big Picture Mode from Kodi";
+ longDescription = ''
+ This add-on will close/minimise Kodi, launch Steam in Big
+ Picture Mode and when Steam BPM is exited (either by quitting
+ Steam or returning to the desktop) Kodi will
+ restart/maximise. Running pre/post Steam scripts can be
+ configured via the addon.
+ '';
+ maintainers = with maintainers; [ edwtjo ];
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/svtplay/default.nix b/pkgs/applications/video/kodi-packages/svtplay/default.nix
new file mode 100644
index 000000000000..cc7d350fa31c
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/svtplay/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildKodiAddon, fetchFromGitHub }:
+buildKodiAddon rec {
+ pname = "svtplay";
+ namespace = "plugin.video.svtplay";
+ version = "5.1.12";
+
+ src = fetchFromGitHub {
+ owner = "nilzen";
+ repo = "xbmc-" + pname;
+ rev = "v${version}";
+ sha256 = "04j1nhm7mh9chs995lz6bv1vsq5xzk7a7c0lmk4bnfv8jrfpj0w6";
+ };
+
+ meta = with lib; {
+ homepage = "https://forum.kodi.tv/showthread.php?tid=67110";
+ description = "Watch content from SVT Play";
+ longDescription = ''
+ With this addon you can stream content from SVT Play
+ (svtplay.se). The plugin fetches the video URL from the SVT
+ Play website and feeds it to the Kodi video player. HLS (m3u8)
+ is the preferred video format by the plugin.
+ '';
+ platforms = platforms.all;
+ maintainers = with maintainers; [ edwtjo ];
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/urllib3/default.nix b/pkgs/applications/video/kodi-packages/urllib3/default.nix
new file mode 100644
index 000000000000..e81469879139
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/urllib3/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+ pname = "urllib3";
+ namespace = "script.module.urllib3";
+ version = "1.25.8+matrix.1";
+
+ src = fetchzip {
+ url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+ sha256 = "080yq8ns0sag6rmdag1hjwi0whcmp35wzqjp3by92m81cpszs75q";
+ };
+
+ passthru.updateScript = addonUpdateScript {
+ attrPath = "kodi.packages.urllib3";
+ };
+
+ meta = with lib; {
+ homepage = "https://urllib3.readthedocs.io/en/latest/";
+ description = "HTTP library with thread-safe connection pooling, file post, and more";
+ license = licenses.mit;
+ };
+}
diff --git a/pkgs/applications/video/kodi-packages/vfs-libarchive/default.nix b/pkgs/applications/video/kodi-packages/vfs-libarchive/default.nix
new file mode 100644
index 000000000000..13100b0dd35a
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/vfs-libarchive/default.nix
@@ -0,0 +1,22 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libarchive, lzma, bzip2, zlib, lz4, lzo, openssl }:
+buildKodiBinaryAddon rec {
+ pname = namespace;
+ namespace = "vfs.libarchive";
+ version = "2.0.0";
+
+ src = fetchFromGitHub {
+ owner = "xbmc";
+ repo = namespace;
+ rev = "${version}-${rel}";
+ sha256 = "1q62p1i6rvqk2zv6f1cpffkh95lgclys2xl4dwyhj3acmqdxd9i5";
+ };
+
+ meta = with lib; {
+ description = "LibArchive Virtual Filesystem add-on for Kodi";
+ license = licenses.gpl2Plus;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ minijackson ];
+ };
+
+ extraBuildInputs = [ libarchive lzma bzip2 zlib lz4 lzo openssl ];
+}
diff --git a/pkgs/applications/video/kodi-packages/vfs-sftp/default.nix b/pkgs/applications/video/kodi-packages/vfs-sftp/default.nix
new file mode 100644
index 000000000000..7910ab640e91
--- /dev/null
+++ b/pkgs/applications/video/kodi-packages/vfs-sftp/default.nix
@@ -0,0 +1,22 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, openssl, libssh, zlib }:
+buildKodiBinaryAddon rec {
+ pname = namespace;
+ namespace = "vfs.sftp";
+ version = "2.0.0";
+
+ src = fetchFromGitHub {
+ owner = "xbmc";
+ repo = namespace;
+ rev = "${version}-${rel}";
+ sha256 = "06w74sh8yagrrp7a7rjaz3xrh1j3wdqald9c4b72c33gpk5997dk";
+ };
+
+ meta = with lib; {
+ description = "SFTP Virtual Filesystem add-on for Kodi";
+ license = licenses.gpl2Plus;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ minijackson ];
+ };
+
+ extraBuildInputs = [ openssl libssh zlib ];
+}
diff --git a/pkgs/applications/video/kodi/build-kodi-addon.nix b/pkgs/applications/video/kodi/build-kodi-addon.nix
new file mode 100644
index 000000000000..cd768b6fa991
--- /dev/null
+++ b/pkgs/applications/video/kodi/build-kodi-addon.nix
@@ -0,0 +1,21 @@
+{ stdenv, toKodiAddon, addonDir }:
+{ name ? "${attrs.pname}-${attrs.version}"
+, namespace
+, sourceDir ? ""
+, ... } @ attrs:
+toKodiAddon (stdenv.mkDerivation ({
+ name = "kodi-" + name;
+
+ dontStrip = true;
+
+ extraRuntimeDependencies = [ ];
+
+ installPhase = ''
+ cd $src/$sourceDir
+ d=$out${addonDir}/${namespace}
+ mkdir -p $d
+ sauce="."
+ [ -d ${namespace} ] && sauce=${namespace}
+ cp -R "$sauce/"* $d
+ '';
+} // attrs))
diff --git a/pkgs/applications/video/kodi/build-kodi-binary-addon.nix b/pkgs/applications/video/kodi/build-kodi-binary-addon.nix
new file mode 100644
index 000000000000..74ce508ab6a6
--- /dev/null
+++ b/pkgs/applications/video/kodi/build-kodi-binary-addon.nix
@@ -0,0 +1,31 @@
+{ stdenv, toKodiAddon, addonDir, cmake, kodi, kodi-platform, libcec_platform }:
+{ name ? "${attrs.pname}-${attrs.version}"
+, namespace
+, version
+, extraBuildInputs ? []
+, extraRuntimeDependencies ? []
+, extraInstallPhase ? "", ... } @ attrs:
+toKodiAddon (stdenv.mkDerivation ({
+ name = "kodi-" + name;
+
+ dontStrip = true;
+
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [ kodi kodi-platform libcec_platform ] ++ extraBuildInputs;
+
+ inherit extraRuntimeDependencies;
+
+ # disables check ensuring install prefix is that of kodi
+ cmakeFlags = [
+ "-DOVERRIDE_PATHS=1"
+ ];
+
+ # kodi checks for addon .so libs existance in the addon folder (share/...)
+ # and the non-wrapped kodi lib/... folder before even trying to dlopen
+ # them. Symlinking .so, as setting LD_LIBRARY_PATH is of no use
+ installPhase = let n = namespace; in ''
+ make install
+ ln -s $out/lib/addons/${n}/${n}.so.${version} $out${addonDir}/${n}/${n}.so.${version}
+ ${extraInstallPhase}
+ '';
+} // attrs))
diff --git a/pkgs/applications/video/kodi/default.nix b/pkgs/applications/video/kodi/default.nix
index 55ba84cc454c..3f382efff11b 100644
--- a/pkgs/applications/video/kodi/default.nix
+++ b/pkgs/applications/video/kodi/default.nix
@@ -1,7 +1,7 @@
{ callPackage, ... } @ args:
let
unwrapped = callPackage ./unwrapped.nix (removeAttrs args [ "callPackage" ]);
- kodiPackages = callPackage ./packages.nix { kodi = unwrapped; };
+ kodiPackages = callPackage ../../../top-level/kodi-packages.nix { kodi = unwrapped; };
in
unwrapped.overrideAttrs (oldAttrs: {
passthru = oldAttrs.passthru // {
diff --git a/pkgs/applications/video/kodi/packages.nix b/pkgs/applications/video/kodi/packages.nix
deleted file mode 100644
index 8e0ecbf9b9b7..000000000000
--- a/pkgs/applications/video/kodi/packages.nix
+++ /dev/null
@@ -1,560 +0,0 @@
-{ lib, stdenv, callPackage, fetchFromGitHub
-, cmake, kodi, libcec_platform, tinyxml, pugixml
-, steam, udev, libusb1, jsoncpp, libhdhomerun, zlib
-, python3Packages, expat, glib, nspr, nss, openssl
-, libssh, libarchive, lzma, bzip2, lz4, lzo }:
-
-with lib;
-
-let self = rec {
-
- addonDir = "/share/kodi/addons";
- rel = "Matrix";
-
- inherit kodi;
-
- # Convert derivation to a kodi module. Stolen from ../../../top-level/python-packages.nix
- toKodiAddon = drv: drv.overrideAttrs(oldAttrs: {
- # Use passthru in order to prevent rebuilds when possible.
- passthru = (oldAttrs.passthru or {})// {
- kodiAddonFor = kodi;
- requiredKodiAddons = requiredKodiAddons drv.propagatedBuildInputs;
- };
- });
-
- # Check whether a derivation provides a Kodi addon.
- hasKodiAddon = drv: drv ? kodiAddonFor && drv.kodiAddonFor == kodi;
-
- # Get list of required Kodi addons given a list of derivations.
- requiredKodiAddons = drvs: let
- modules = filter hasKodiAddon drvs;
- in unique (modules ++ concatLists (catAttrs "requiredKodiAddons" modules));
-
- kodi-platform = stdenv.mkDerivation rec {
- project = "kodi-platform";
- version = "17.1";
- name = "${project}-${version}";
-
- src = fetchFromGitHub {
- owner = "xbmc";
- repo = project;
- rev = "c8188d82678fec6b784597db69a68e74ff4986b5";
- sha256 = "1r3gs3c6zczmm66qcxh9mr306clwb3p7ykzb70r3jv5jqggiz199";
- };
-
- nativeBuildInputs = [ cmake ];
- buildInputs = [ kodi libcec_platform tinyxml ];
- };
-
- buildKodiAddon =
- { name ? "${attrs.pname}-${attrs.version}"
- , namespace
- , sourceDir ? ""
- , ... } @ attrs:
- toKodiAddon (stdenv.mkDerivation ({
- name = "kodi-" + name;
-
- dontStrip = true;
-
- extraRuntimeDependencies = [ ];
-
- installPhase = ''
- cd $src/$sourceDir
- d=$out${addonDir}/${namespace}
- mkdir -p $d
- sauce="."
- [ -d ${namespace} ] && sauce=${namespace}
- cp -R "$sauce/"* $d
- '';
- } // attrs));
-
- buildKodiBinaryAddon =
- { name ? "${attrs.pname}-${attrs.version}"
- , namespace
- , version
- , extraBuildInputs ? []
- , extraRuntimeDependencies ? []
- , extraInstallPhase ? "", ... } @ attrs:
- toKodiAddon (stdenv.mkDerivation ({
- name = "kodi-" + name;
-
- dontStrip = true;
-
- nativeBuildInputs = [ cmake ];
- buildInputs = [ kodi kodi-platform libcec_platform ] ++ extraBuildInputs;
-
- inherit extraRuntimeDependencies;
-
- # disables check ensuring install prefix is that of kodi
- cmakeFlags = [
- "-DOVERRIDE_PATHS=1"
- ];
-
- # kodi checks for addon .so libs existance in the addon folder (share/...)
- # and the non-wrapped kodi lib/... folder before even trying to dlopen
- # them. Symlinking .so, as setting LD_LIBRARY_PATH is of no use
- installPhase = let n = namespace; in ''
- make install
- ln -s $out/lib/addons/${n}/${n}.so.${version} $out${addonDir}/${n}/${n}.so.${version}
- ${extraInstallPhase}
- '';
- } // attrs));
-
- advanced-launcher = buildKodiAddon rec {
-
- pname = "advanced-launcher";
- namespace = "plugin.program.advanced.launcher";
- version = "2.5.8";
-
- src = fetchFromGitHub {
- owner = "edwtjo";
- repo = pname;
- rev = version;
- sha256 = "142vvgs37asq5m54xqhjzqvgmb0xlirvm0kz6lxaqynp0vvgrkx2";
- };
-
- meta = {
- homepage = "https://forum.kodi.tv/showthread.php?tid=85724";
- description = "A program launcher for Kodi";
- longDescription = ''
- Advanced Launcher allows you to start any Linux, Windows and
- macOS external applications (with command line support or not)
- directly from the Kodi GUI. Advanced Launcher also give you
- the possibility to edit, download (from Internet resources)
- and manage all the meta-data (informations and images) related
- to these applications.
- '';
- platforms = platforms.all;
- maintainers = with maintainers; [ edwtjo ];
- broken = true; # requires port to python3
- };
-
- };
-
- advanced-emulator-launcher = buildKodiAddon rec {
-
- pname = "advanced-emulator-launcher";
- namespace = "plugin.program.advanced.emulator.launcher";
- version = "0.9.6";
-
- src = fetchFromGitHub {
- owner = "Wintermute0110";
- repo = namespace;
- rev = version;
- sha256 = "1sv9z77jj6bam6llcnd9b3dgkbvhwad2m1v541rv3acrackms2z2";
- };
-
- meta = {
- homepage = "https://forum.kodi.tv/showthread.php?tid=287826";
- description = "A program launcher for Kodi";
- longDescription = ''
- Advanced Emulator Launcher is a multi-emulator front-end for Kodi
- scalable to collections of thousands of ROMs. Includes offline scrapers
- for MAME and No-Intro ROM sets and also supports scrapping ROM metadata
- and artwork online. ROM auditing for No-Intro ROMs using No-Intro XML
- DATs. Launching of games and standalone applications is also available.
- '';
- platforms = platforms.all;
- maintainers = with maintainers; [ edwtjo ];
- broken = true; # requires port to python3
- };
-
- };
-
- controllers = let
- pname = "game-controller";
- version = "1.0.3";
-
- src = fetchFromGitHub {
- owner = "kodi-game";
- repo = "kodi-game-controllers";
- rev = "01acb5b6e8b85392b3cb298b034aadb1b24ccf18";
- sha256 = "0sbc0w0fwbp7rbmbgb6a1kglhnn5g85hijcbbvf5x6jdq9v3f1qb";
- };
-
- meta = {
- description = "Add support for different gaming controllers.";
- platforms = platforms.all;
- maintainers = with maintainers; [ edwtjo ];
- };
-
- mkController = controller: {
- ${controller} = buildKodiAddon rec {
- pname = pname + "-" + controller;
- namespace = "game.controller." + controller;
- sourceDir = "addons/" + namespace;
- inherit version src meta;
- };
- };
- in (mkController "default")
- // (mkController "dreamcast")
- // (mkController "gba")
- // (mkController "genesis")
- // (mkController "mouse")
- // (mkController "n64")
- // (mkController "nes")
- // (mkController "ps")
- // (mkController "snes");
-
- hyper-launcher = let
- pname = "hyper-launcher";
- version = "1.5.2";
- src = fetchFromGitHub rec {
- name = pname + "-" + version + ".tar.gz";
- owner = "teeedubb";
- repo = owner + "-xbmc-repo";
- rev = "f958ba93fe85b9c9025b1745d89c2db2e7dd9bf6";
- sha256 = "1dvff24fbas25k5kvca4ssks9l1g5rfa3hl8lqxczkaqi3pp41j5";
- };
- meta = {
- homepage = "https://forum.kodi.tv/showthread.php?tid=258159";
- description = "A ROM launcher for Kodi that uses HyperSpin assets.";
- maintainers = with maintainers; [ edwtjo ];
- broken = true; # requires port to python3
- };
- in {
- service = buildKodiAddon {
- pname = pname + "-service";
- version = "1.2.1";
- namespace = "service.hyper.launcher";
- inherit src meta;
- };
- plugin = buildKodiAddon {
- namespace = "plugin.hyper.launcher";
- inherit pname version src meta;
- };
- };
-
- joystick = buildKodiBinaryAddon rec {
- pname = namespace;
- namespace = "peripheral.joystick";
- version = "1.7.1";
-
- src = fetchFromGitHub {
- owner = "xbmc";
- repo = namespace;
- rev = "${version}-${rel}";
- sha256 = "1dhj4afr9kj938xx70fq5r409mz6lbw4n581ljvdjj9lq7akc914";
- };
-
- meta = {
- description = "Binary addon for raw joystick input.";
- platforms = platforms.all;
- maintainers = with maintainers; [ edwtjo ];
- };
-
- extraBuildInputs = [ tinyxml udev ];
- };
-
- simpleplugin = buildKodiAddon rec {
- pname = "simpleplugin";
- namespace = "script.module.simpleplugin";
- version = "2.3.2";
-
- src = fetchFromGitHub {
- owner = "romanvm";
- repo = namespace;
- rev = "v.${version}";
- sha256 = "0myar8dqjigb75pcc8zx3i5z79p1ifgphgb82s5syqywk0zaxm3j";
- };
-
- meta = {
- homepage = src.meta.homepage;
- description = "Simpleplugin API";
- license = licenses.gpl3;
- broken = true; # requires port to python3
- };
- };
-
- svtplay = buildKodiAddon rec {
-
- pname = "svtplay";
- namespace = "plugin.video.svtplay";
- version = "5.1.12";
-
- src = fetchFromGitHub {
- name = pname + "-" + version + ".tar.gz";
- owner = "nilzen";
- repo = "xbmc-" + pname;
- rev = "v${version}";
- sha256 = "04j1nhm7mh9chs995lz6bv1vsq5xzk7a7c0lmk4bnfv8jrfpj0w6";
- };
-
- meta = {
- homepage = "https://forum.kodi.tv/showthread.php?tid=67110";
- description = "Watch content from SVT Play";
- longDescription = ''
- With this addon you can stream content from SVT Play
- (svtplay.se). The plugin fetches the video URL from the SVT
- Play website and feeds it to the Kodi video player. HLS (m3u8)
- is the preferred video format by the plugin.
- '';
- platforms = platforms.all;
- maintainers = with maintainers; [ edwtjo ];
- };
-
- };
-
- steam-controller = buildKodiBinaryAddon rec {
- pname = namespace;
- namespace = "peripheral.steamcontroller";
- version = "0.11.0";
-
- src = fetchFromGitHub {
- owner = "kodi-game";
- repo = namespace;
- rev = "f68140ca44f163a03d3a625d1f2005a6edef96cb";
- sha256 = "09lm8i119xlsxxk0c64rnp8iw0crr90v7m8iwi9r31qdmxrdxpmg";
- };
-
- extraBuildInputs = [ libusb1 ];
-
- meta = {
- description = "Binary addon for steam controller.";
- platforms = platforms.all;
- maintainers = with maintainers; [ edwtjo ];
- };
-
- };
-
- steam-launcher = buildKodiAddon {
-
- pname = "steam-launcher";
- namespace = "script.steam.launcher";
- version = "3.5.1";
-
- src = fetchFromGitHub rec {
- owner = "teeedubb";
- repo = owner + "-xbmc-repo";
- rev = "8260bf9b464846a1f1965da495d2f2b7ceb81d55";
- sha256 = "1fj3ry5s44nf1jzxk4bmnpa4b9p23nrpmpj2a4i6xf94h7jl7p5k";
- };
-
- propagatedBuildInputs = [ steam ];
-
- meta = {
- homepage = "https://forum.kodi.tv/showthread.php?tid=157499";
- description = "Launch Steam in Big Picture Mode from Kodi";
- longDescription = ''
- This add-on will close/minimise Kodi, launch Steam in Big
- Picture Mode and when Steam BPM is exited (either by quitting
- Steam or returning to the desktop) Kodi will
- restart/maximise. Running pre/post Steam scripts can be
- configured via the addon.
- '';
- maintainers = with maintainers; [ edwtjo ];
- };
- };
-
- pdfreader = buildKodiAddon rec {
- pname = "pdfreader";
- namespace = "plugin.image.pdf";
- version = "2.0.2";
-
- src = fetchFromGitHub {
- owner = "i96751414";
- repo = "plugin.image.pdfreader";
- rev = "v${version}";
- sha256 = "0nkqhlm1gyagq6xpdgqvd5qxyr2ngpml9smdmzfabc8b972mwjml";
- };
-
- meta = {
- homepage = "https://forum.kodi.tv/showthread.php?tid=187421";
- description = "A comic book reader";
- maintainers = with maintainers; [ edwtjo ];
- };
- };
-
- pvr-hts = buildKodiBinaryAddon rec {
-
- pname = "pvr-hts";
- namespace = "pvr.hts";
- version = "8.2.2";
-
- src = fetchFromGitHub {
- owner = "kodi-pvr";
- repo = "pvr.hts";
- rev = "${version}-${rel}";
- sha256 = "0jnn9gfjl556acqjf92wzzn371gxymhbbi665nqgg2gjcan0a49q";
- };
-
- meta = {
- homepage = "https://github.com/kodi-pvr/pvr.hts";
- description = "Kodi's Tvheadend HTSP client addon";
- platforms = platforms.all;
- maintainers = with maintainers; [ cpages ];
- };
-
- };
-
- pvr-hdhomerun = buildKodiBinaryAddon rec {
-
- pname = "pvr-hdhomerun";
- namespace = "pvr.hdhomerun";
- version = "7.1.0";
-
- src = fetchFromGitHub {
- owner = "kodi-pvr";
- repo = "pvr.hdhomerun";
- rev = "${version}-${rel}";
- sha256 = "0gbwjssnd319csq2kwlyjj1rskg19m1dxac5dl2dymvx5hn3zrgm";
- };
-
- meta = {
- homepage = "https://github.com/kodi-pvr/pvr.hdhomerun";
- description = "Kodi's HDHomeRun PVR client addon";
- platforms = platforms.all;
- maintainers = with maintainers; [ titanous ];
- };
-
- extraBuildInputs = [ jsoncpp libhdhomerun ];
-
- };
-
- pvr-iptvsimple = buildKodiBinaryAddon rec {
-
- pname = "pvr-iptvsimple";
- namespace = "pvr.iptvsimple";
- version = "7.4.2";
-
- src = fetchFromGitHub {
- owner = "kodi-pvr";
- repo = "pvr.iptvsimple";
- rev = "${version}-${rel}";
- sha256 = "062i922qi0izkvn7v47yhyy2cf3fa7xc3k95b1gm9abfdwkk8ywr";
- };
-
- meta = {
- homepage = "https://github.com/kodi-pvr/pvr.iptvsimple";
- description = "Kodi's IPTV Simple client addon";
- platforms = platforms.all;
- maintainers = with maintainers; [ ];
- license = licenses.gpl2Plus;
- };
-
- extraBuildInputs = [ zlib pugixml ];
- };
-
- osmc-skin = buildKodiAddon rec {
-
- pname = "osmc-skin";
- namespace = "skin.osmc";
- version = "18.0.0";
-
- src = fetchFromGitHub {
- owner = "osmc";
- repo = namespace;
- rev = "40a6c318641e2cbeac58fb0e7dde9c2beac737a0";
- sha256 = "1l7hyfj5zvjxjdm94y325bmy1naak455b9l8952sb0gllzrcwj6s";
- };
-
- meta = {
- homepage = "https://github.com/osmc/skin.osmc";
- description = "The default skin for OSMC";
- platforms = platforms.all;
- maintainers = with maintainers; [ worldofpeace ];
- license = licenses.cc-by-nc-sa-30;
- };
- };
-
- yatp = python3Packages.toPythonModule (buildKodiAddon rec {
- pname = "yatp";
- namespace = "plugin.video.yatp";
- version = "3.3.2";
-
- src = fetchFromGitHub {
- owner = "romanvm";
- repo = "kodi.yatp";
- rev = "v.${version}";
- sha256 = "12g1f57sx7dy6wy7ljl7siz2qs1kxcmijcg7xx2xpvmq61x9qa2d";
- };
-
- patches = [ ./yatp/dont-monkey.patch ];
-
- propagatedBuildInputs = [
- simpleplugin
- python3Packages.requests
- python3Packages.libtorrent-rasterbar
- ];
-
- meta = {
- homepage = src.meta.homepage;
- description = "Yet Another Torrent Player: libtorrent-based torrent streaming for Kodi";
- license = licenses.gpl3;
- broken = true; # requires port to python3
- };
- });
-
- inputstream-adaptive = buildKodiBinaryAddon rec {
-
- pname = "inputstream-adaptive";
- namespace = "inputstream.adaptive";
- version = "2.6.7";
-
- src = fetchFromGitHub {
- owner = "peak3d";
- repo = "inputstream.adaptive";
- rev = "${version}-${rel}";
- sha256 = "1pwqmbr78wp12jn6rwv63npdfc456adwz0amlxf6gvgg43li6p7s";
- };
-
- extraBuildInputs = [ expat ];
-
- extraRuntimeDependencies = [ glib nspr nss stdenv.cc.cc.lib ];
-
- extraInstallPhase = let n = namespace; in ''
- ln -s $out/lib/addons/${n}/libssd_wv.so $out/${addonDir}/${n}/libssd_wv.so
- '';
-
- meta = {
- homepage = "https://github.com/peak3d/inputstream.adaptive";
- description = "Kodi inputstream addon for several manifest types";
- platforms = platforms.all;
- maintainers = with maintainers; [ sephalon ];
- };
- };
-
- vfs-sftp = buildKodiBinaryAddon rec {
- pname = namespace;
- namespace = "vfs.sftp";
- version = "2.0.0";
-
- src = fetchFromGitHub {
- owner = "xbmc";
- repo = namespace;
- rev = "${version}-${rel}";
- sha256 = "06w74sh8yagrrp7a7rjaz3xrh1j3wdqald9c4b72c33gpk5997dk";
- };
-
- meta = with lib; {
- description = "SFTP Virtual Filesystem add-on for Kodi";
- license = licenses.gpl2Plus;
- platforms = platforms.all;
- maintainers = with maintainers; [ minijackson ];
- };
-
- extraBuildInputs = [ openssl libssh zlib ];
- };
-
- vfs-libarchive = buildKodiBinaryAddon rec {
- pname = namespace;
- namespace = "vfs.libarchive";
- version = "2.0.0";
-
- src = fetchFromGitHub {
- owner = "xbmc";
- repo = namespace;
- rev = "${version}-${rel}";
- sha256 = "1q62p1i6rvqk2zv6f1cpffkh95lgclys2xl4dwyhj3acmqdxd9i5";
- };
-
- meta = with lib; {
- description = "LibArchive Virtual Filesystem add-on for Kodi";
- license = licenses.gpl2Plus;
- platforms = platforms.all;
- maintainers = with maintainers; [ minijackson ];
- };
-
- extraBuildInputs = [ libarchive lzma bzip2 zlib lz4 lzo openssl ];
- };
-}; in self
diff --git a/pkgs/applications/video/kodi/wrapper.nix b/pkgs/applications/video/kodi/wrapper.nix
index 2b4abbb500af..86164682138d 100644
--- a/pkgs/applications/video/kodi/wrapper.nix
+++ b/pkgs/applications/video/kodi/wrapper.nix
@@ -1,5 +1,10 @@
{ lib, makeWrapper, buildEnv, kodi, addons }:
+let
+ # linux distros are supposed to provide pillow and pycryptodome
+ requiredPythonPackages = with kodi.pythonPackages; [ pillow pycryptodome] ++ addons;
+in
+
buildEnv {
name = "${kodi.name}-env";
@@ -13,7 +18,7 @@ buildEnv {
for exe in kodi{,-standalone}
do
makeWrapper ${kodi}/bin/$exe $out/bin/$exe \
- --prefix PYTHONPATH : ${kodi.pythonPackages.makePythonPath addons} \
+ --prefix PYTHONPATH : ${kodi.pythonPackages.makePythonPath requiredPythonPackages} \
--prefix KODI_HOME : $out/share/kodi \
--prefix LD_LIBRARY_PATH ":" "${lib.makeLibraryPath
(lib.concatMap
diff --git a/pkgs/applications/video/kodi/yatp/dont-monkey.patch b/pkgs/applications/video/kodi/yatp/dont-monkey.patch
deleted file mode 100644
index 62d5d0c0d4c0..000000000000
--- a/pkgs/applications/video/kodi/yatp/dont-monkey.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-diff --git a/plugin.video.yatp/server.py b/plugin.video.yatp/server.py
-index 1adcbb5..488b72c 100644
---- a/plugin.video.yatp/server.py
-+++ b/plugin.video.yatp/server.py
-@@ -20,24 +20,8 @@ addon = Addon()
- _ = addon.initialize_gettext()
- addon.log_notice('Starting Torrent Server...')
-
--# A monkey-patch to set the necessary librorrent version
--librorrent_addon = Addon('script.module.libtorrent')
--orig_custom_version = librorrent_addon.get_setting('custom_version', False)
--orig_set_version = librorrent_addon.get_setting('set_version', False)
--librorrent_addon.set_setting('custom_version', 'true')
--if addon.libtorrent_version == '1.0.9':
-- librorrent_addon.set_setting('set_version', '4')
--elif addon.libtorrent_version == '1.1.0':
-- librorrent_addon.set_setting('set_version', '5')
--elif addon.libtorrent_version == '1.1.1':
-- librorrent_addon.set_setting('set_version', '6')
--else:
-- librorrent_addon.set_setting('set_version', '0')
--
- from libs.server import wsgi_app
-
--librorrent_addon.set_setting('custom_version', orig_custom_version)
--librorrent_addon.set_setting('set_version', orig_set_version)
- # ======
-
- if addon.enable_limits:
diff --git a/pkgs/applications/video/obs-studio/default.nix b/pkgs/applications/video/obs-studio/default.nix
index 9fdb78c70382..caeffa56b178 100644
--- a/pkgs/applications/video/obs-studio/default.nix
+++ b/pkgs/applications/video/obs-studio/default.nix
@@ -17,6 +17,7 @@
, libv4l
, x264
, curl
+, wayland
, xorg
, makeWrapper
, pkg-config
@@ -67,6 +68,7 @@ in mkDerivation rec {
qtx11extras
qtsvg
speex
+ wayland
x264
libvlc
makeWrapper
diff --git a/pkgs/development/interpreters/bats/default.nix b/pkgs/development/interpreters/bats/default.nix
index aa3abc655343..01d1b61cb801 100644
--- a/pkgs/development/interpreters/bats/default.nix
+++ b/pkgs/development/interpreters/bats/default.nix
@@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "bats";
- version = "1.2.1";
+ version = "1.3.0";
src = fetchzip {
url = "https://github.com/bats-core/bats-core/archive/v${version}.tar.gz";
- hash = "sha256-grB/rJaDU0fuw4Hm3/9nI2px8KZnSWqRjTJPd7Mmb7s=";
+ hash = "sha256-+dboExOx2YELxV8Cwk9SVwk9G3p8EoP0LdaJ3o7GT6c=";
};
nativeBuildInputs = [ makeWrapper ];
@@ -22,6 +22,9 @@ stdenv.mkDerivation rec {
inherit doCheck;
checkPhase = ''
+ # TODO: cut if https://github.com/bats-core/bats-core/issues/418 allows
+ sed -i '/test works even if PATH is reset/a skip' test/bats.bats
+
# test generates file with absolute shebang dynamically
substituteInPlace test/install.bats --replace \
"/usr/bin/env bash" "${bash}/bin/bash"
diff --git a/pkgs/development/interpreters/rakudo/default.nix b/pkgs/development/interpreters/rakudo/default.nix
index 99a812905d42..358b8663196b 100644
--- a/pkgs/development/interpreters/rakudo/default.nix
+++ b/pkgs/development/interpreters/rakudo/default.nix
@@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "rakudo";
- version = "2020.12";
+ version = "2021.02.1";
src = fetchurl {
url = "https://www.rakudo.org/dl/rakudo/rakudo-${version}.tar.gz";
- sha256 = "1g3ciwhlac85d6l2kqslw8pm4bjjd1z79m1c5ll0fxmr6awgpk67";
+ sha256 = "1xwqx4357bw7h5pdmwxm5wxh8wjvrcdk4rvr3wyrhg1wzy5qvsn8";
};
buildInputs = [ icu zlib gmp perl ];
diff --git a/pkgs/development/interpreters/rakudo/moarvm.nix b/pkgs/development/interpreters/rakudo/moarvm.nix
index f833c153b964..e5baacf5c295 100644
--- a/pkgs/development/interpreters/rakudo/moarvm.nix
+++ b/pkgs/development/interpreters/rakudo/moarvm.nix
@@ -3,11 +3,11 @@
stdenv.mkDerivation rec {
pname = "moarvm";
- version = "2020.12";
+ version = "2021.02";
src = fetchurl {
url = "https://www.moarvm.org/releases/MoarVM-${version}.tar.gz";
- sha256 = "18iys1bdb92asggrsz7sg1hh76j7kq63c3fgg33fnla18qf4z488";
+ sha256 = "08ri9mvbk97qfxcy6lj4cb7j3a789ck052m2vqfhis3vkrkw780r";
};
buildInputs = [ perl ] ++ lib.optionals stdenv.isDarwin [ CoreServices ApplicationServices ];
diff --git a/pkgs/development/interpreters/rakudo/nqp.nix b/pkgs/development/interpreters/rakudo/nqp.nix
index b4b41fa88046..cd60bb3b7900 100644
--- a/pkgs/development/interpreters/rakudo/nqp.nix
+++ b/pkgs/development/interpreters/rakudo/nqp.nix
@@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "nqp";
- version = "2020.12";
+ version = "2021.02";
src = fetchurl {
url = "https://github.com/raku/nqp/releases/download/${version}/nqp-${version}.tar.gz";
- sha256 = "13h64d41fwggc3lg4bpllg4jrp64clm7nmnw4g2jyjl47cy5ni7x";
+ sha256 = "1vyl6x811f8mbdnp34yj6kfmfpxp2yfrr8cqf1w47rzmr741sjyj";
};
buildInputs = [ perl ];
diff --git a/pkgs/development/libraries/science/math/primesieve/default.nix b/pkgs/development/libraries/science/math/primesieve/default.nix
index d99026bc5659..d4f16d230e60 100644
--- a/pkgs/development/libraries/science/math/primesieve/default.nix
+++ b/pkgs/development/libraries/science/math/primesieve/default.nix
@@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "primesieve";
- version = "7.5";
+ version = "7.6";
nativeBuildInputs = [cmake];
src = fetchurl {
url = "https://github.com/kimwalisch/primesieve/archive/v${version}.tar.gz";
- sha256 = "0g60br3p8di92jx3pr2bb51xh15gg57l7qvwzwn7xf7l585hgi7v";
+ sha256 = "sha256-SFZp6Pmmx05SiUfSdN9wXxPKrydtRg0PA3uNvAycCpk=";
};
meta = with lib; {
diff --git a/pkgs/development/python-modules/ajsonrpc/default.nix b/pkgs/development/python-modules/ajsonrpc/default.nix
new file mode 100644
index 000000000000..e5a81d9cfa6e
--- /dev/null
+++ b/pkgs/development/python-modules/ajsonrpc/default.nix
@@ -0,0 +1,24 @@
+{ lib, pythonOlder, buildPythonPackage, fetchPypi, pytestCheckHook }:
+
+buildPythonPackage rec {
+ pname = "ajsonrpc";
+ version = "1.1.0";
+
+ disabled = pythonOlder "3.5";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1b5r8975wdnk3qnc1qjnn4lkxmqcir3brbwnxml9ii90dnsw408a";
+ };
+
+ checkInputs = [ pytestCheckHook ];
+
+ pythonImportsCheck = [ "ajsonrpc" ];
+
+ meta = with lib; {
+ description = "Async JSON-RPC 2.0 protocol + asyncio server";
+ homepage = "https://github.com/pavlov99/ajsonrpc";
+ license = licenses.mit;
+ maintainers = with maintainers; [ oxzi ];
+ };
+}
diff --git a/pkgs/development/python-modules/azure-mgmt-netapp/default.nix b/pkgs/development/python-modules/azure-mgmt-netapp/default.nix
index ec1caa5c3e4a..35dc7ef05aba 100644
--- a/pkgs/development/python-modules/azure-mgmt-netapp/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-netapp/default.nix
@@ -6,13 +6,13 @@
}:
buildPythonPackage rec {
- version = "1.0.0";
+ version = "2.0.0";
pname = "azure-mgmt-netapp";
disabled = isPy27;
src = fetchPypi {
inherit pname version;
- sha256 = "e2c0cecd634c0a106e389f39ad767bfd1d718d90692e4e3c9664b1fe9a792ade";
+ sha256 = "ff3b663e36c961e86fc0cdbd6f9fb9fb863d3e7db9035fe713af7299e809ee5e";
extension = "zip";
};
diff --git a/pkgs/development/python-modules/ftfy/default.nix b/pkgs/development/python-modules/ftfy/default.nix
index dbc363172288..403ca5247923 100644
--- a/pkgs/development/python-modules/ftfy/default.nix
+++ b/pkgs/development/python-modules/ftfy/default.nix
@@ -2,36 +2,31 @@
, buildPythonPackage
, isPy3k
, fetchPypi
-, html5lib
, wcwidth
-, setuptools
-, pytest
+, pytestCheckHook
}:
buildPythonPackage rec {
pname = "ftfy";
- version = "5.8";
+ version = "5.9";
disabled = !isPy3k;
src = fetchPypi {
inherit pname version;
- sha256 = "081p5z20dirrf1i3nshylc31qd5mbxibjc7gzj8x4isbiizpdisi";
+ sha256 = "8c4fb2863c0b82eae2ab3cf353d9ade268dfbde863d322f78d6a9fd5cefb31e9";
};
propagatedBuildInputs = [
- html5lib
wcwidth
- setuptools
];
checkInputs = [
- pytest
+ pytestCheckHook
];
- # We suffix PATH like this because the tests want the ftfy executable
- checkPhase = ''
- PATH=$out/bin:$PATH pytest
+ preCheck = ''
+ export PATH=$out/bin:$PATH
'';
meta = with lib; {
diff --git a/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix b/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
index 8f67fed79d7a..ccc8aa83975f 100644
--- a/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
@@ -11,11 +11,11 @@
buildPythonPackage rec {
pname = "google-cloud-bigquery-datatransfer";
- version = "3.0.0";
+ version = "3.0.1";
src = fetchPypi {
inherit pname version;
- sha256 = "0hmsqvs2srmqcwmli48vd5vw829zax3pwj63fsxig6sdhjlf6j7j";
+ sha256 = "c5669410018eb41cecf6f9c90136d24d0ca9ed141bda8fbb3d52cd3de7162960";
};
propagatedBuildInputs = [ google-api-core libcst proto-plus ];
diff --git a/pkgs/development/python-modules/google-cloud-bigquery/default.nix b/pkgs/development/python-modules/google-cloud-bigquery/default.nix
index 2aa615a221f1..6f2e6c473a34 100644
--- a/pkgs/development/python-modules/google-cloud-bigquery/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigquery/default.nix
@@ -17,11 +17,11 @@
buildPythonPackage rec {
pname = "google-cloud-bigquery";
- version = "2.11.0";
+ version = "2.12.0";
src = fetchPypi {
inherit pname version;
- sha256 = "d8f8464188e3eb03925a4f4acbf4e8fbfbde84a06145bd8a52c6b736113713ae";
+ sha256 = "484bb733e5dd14bb82d28480a5d7f540b8ee59f081fcf32782546b717180d1b8";
};
propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/mergedeep/default.nix b/pkgs/development/python-modules/mergedeep/default.nix
index cdd19beb68d9..46de34050239 100644
--- a/pkgs/development/python-modules/mergedeep/default.nix
+++ b/pkgs/development/python-modules/mergedeep/default.nix
@@ -2,7 +2,7 @@
buildPythonPackage rec {
pname = "mergedeep";
- version = "1.3.1";
+ version = "1.3.4";
disabled = isPy27;
# PyPI tarball doesn't include tests directory
@@ -10,7 +10,7 @@ buildPythonPackage rec {
owner = "clarketm";
repo = "mergedeep";
rev = "v${version}";
- sha256 = "1ryccb64hg438y1wsjlfp4ciq05q4c6khwhllwdnndm8cbkbrgph";
+ sha256 = "1msvvdzk33sxzgyvs4fs8dlsrsi7fjj038z83s0yw5h8m8d78469";
};
checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/minidump/default.nix b/pkgs/development/python-modules/minidump/default.nix
index 346430d23926..60440ff4b488 100644
--- a/pkgs/development/python-modules/minidump/default.nix
+++ b/pkgs/development/python-modules/minidump/default.nix
@@ -5,11 +5,11 @@
buildPythonPackage rec {
pname = "minidump";
- version = "0.0.13";
+ version = "0.0.15";
src = fetchPypi {
inherit pname version;
- sha256 = "1w93yh2dz7llxjgv0jn7gf9praz7d5952is7idgh0lsyj67ri2ms";
+ sha256 = "sha256-IVlzAsnl1KhErxWPi96hUFlIX4IN3Y9t8OicckdYUv0=";
};
# Upstream doesn't have tests
diff --git a/pkgs/development/python-modules/pyinsteon/default.nix b/pkgs/development/python-modules/pyinsteon/default.nix
index cd8c566c4654..cfe5112ab221 100644
--- a/pkgs/development/python-modules/pyinsteon/default.nix
+++ b/pkgs/development/python-modules/pyinsteon/default.nix
@@ -17,14 +17,14 @@
buildPythonPackage rec {
pname = "pyinsteon";
- version = "1.0.9";
+ version = "1.0.10";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = pname;
repo = pname;
rev = version;
- sha256 = "sha256-+3tA+YdpTKDt7uOSl6Z1G8jTjpBJ8S9gjiQTacQSFTc=";
+ sha256 = "sha256-8b/PvMFHvYGVWw6ycLnL8n972cn+1QW/VTMiblMPam4=";
};
propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pymitv/default.nix b/pkgs/development/python-modules/pymitv/default.nix
index ffaabb04a291..32f90d07dcb4 100644
--- a/pkgs/development/python-modules/pymitv/default.nix
+++ b/pkgs/development/python-modules/pymitv/default.nix
@@ -7,12 +7,12 @@
buildPythonPackage rec {
pname = "pymitv";
- version = "1.4.3";
+ version = "1.5.0";
disabled = pythonOlder "3.5";
src = fetchPypi {
inherit pname version;
- sha256 = "0jbs1zhqpnsyad3pd8cqy1byv8m5bq17ydc6crmrfkjbp6xvvg3x";
+ sha256 = "sha256-0n4IS5W3nvYwKdl6FVf4upRrFDGdYHohsaXadFy8d8w=";
};
propagatedBuildInputs = [ requests ];
diff --git a/pkgs/development/tools/rust/rust-analyzer/default.nix b/pkgs/development/tools/rust/rust-analyzer/default.nix
index 642f2e936e19..09e24775a351 100644
--- a/pkgs/development/tools/rust/rust-analyzer/default.nix
+++ b/pkgs/development/tools/rust/rust-analyzer/default.nix
@@ -1,4 +1,4 @@
-{ pkgs, callPackage }:
+{ pkgs, callPackage, CoreServices }:
{
rust-analyzer-unwrapped = callPackage ./generic.nix rec {
@@ -6,6 +6,8 @@
version = "unstable-${rev}";
sha256 = "150gydm0mg72bbhgjjks8qc5ldiqyzhai9z4yfh4f1s2bwdfh3yf";
cargoSha256 = "10l0lk5p11002q59dqa5yrrz6n6s11i7bmr1wnl141bxqvm873q2";
+
+ inherit CoreServices;
};
rust-analyzer = callPackage ./wrapper.nix {} {
diff --git a/pkgs/development/tools/rust/rust-analyzer/generic.nix b/pkgs/development/tools/rust/rust-analyzer/generic.nix
index ecca83f89a4e..ddb834af6c38 100644
--- a/pkgs/development/tools/rust/rust-analyzer/generic.nix
+++ b/pkgs/development/tools/rust/rust-analyzer/generic.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv, fetchFromGitHub, rustPlatform, darwin, cmake
+{ lib, stdenv, fetchFromGitHub, rustPlatform, CoreServices, cmake
+, libiconv
, useMimalloc ? false
, doCheck ? true
@@ -22,8 +23,10 @@ rustPlatform.buildRustPackage {
nativeBuildInputs = lib.optional useMimalloc cmake;
- buildInputs = lib.optionals stdenv.hostPlatform.isDarwin
- [ darwin.apple_sdk.frameworks.CoreServices ];
+ buildInputs = lib.optionals stdenv.isDarwin [
+ CoreServices
+ libiconv
+ ];
RUST_ANALYZER_REV = rev;
diff --git a/pkgs/tools/X11/alttab/default.nix b/pkgs/tools/X11/alttab/default.nix
index 34c17a7b5180..591edff2add7 100644
--- a/pkgs/tools/X11/alttab/default.nix
+++ b/pkgs/tools/X11/alttab/default.nix
@@ -1,5 +1,5 @@
-{ lib, stdenv, fetchFromGitHub, autoconf, automake, pkg-config, ronn, libpng, uthash
-, xorg }:
+{ lib, stdenv, coreutils, fetchFromGitHub, autoconf, automake, pkg-config, procps, ronn,
+libpng, uthash , which, xnee, xorg, python3Packages }:
stdenv.mkDerivation rec {
version = "1.6.0";
@@ -35,10 +35,22 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
+ doCheck = true;
+
+ checkInputs = [
+ coreutils
+ procps
+ python3Packages.xvfbwrapper
+ which
+ xnee
+ xorg.xeyes
+ xorg.xprop
+ ];
+
meta = with lib; {
homepage = "https://github.com/sagb/alttab";
description = "X11 window switcher designed for minimalistic window managers or standalone X11 session";
- license = licenses.gpl3;
+ license = licenses.gpl3Plus;
platforms = platforms.all;
maintainers = [ maintainers.sgraf ];
};
diff --git a/pkgs/tools/admin/google-cloud-sdk/default.nix b/pkgs/tools/admin/google-cloud-sdk/default.nix
index 1d585514f7e0..1d70fa24fb5a 100644
--- a/pkgs/tools/admin/google-cloud-sdk/default.nix
+++ b/pkgs/tools/admin/google-cloud-sdk/default.nix
@@ -21,18 +21,18 @@ let
sources = name: system: {
x86_64-darwin = {
url = "${baseUrl}/${name}-darwin-x86_64.tar.gz";
- sha256 = "sha256-aHFwcynt4xQ0T1J+OTSxgttU9W3VFJAqCwmQSdVg8Fk=";
+ sha256 = "09jhcv0ysq37k06b4rw3f9w33spvkkxx7fydraikm3zzvy28l58x";
};
x86_64-linux = {
url = "${baseUrl}/${name}-linux-x86_64.tar.gz";
- sha256 = "sha256-MfldToK7ZfdWZiZnI1qKI1o/dSiUcysxzUkTYMVZ5u4=";
+ sha256 = "1971fz8cv69y7kvirgw9n0xr7z9b1yyh4y43mg10lvv3glx46xcy";
};
}.${system};
in stdenv.mkDerivation rec {
pname = "google-cloud-sdk";
- version = "328.0.0";
+ version = "332.0.0";
src = fetchurl (sources "${pname}-${version}" stdenv.hostPlatform.system);
@@ -81,7 +81,8 @@ in stdenv.mkDerivation rec {
# setup bash completion
mkdir -p $out/share/bash-completion/completions
- mv $out/google-cloud-sdk/completion.bash.inc $out/share/bash-completion/completions/gcloud.inc
+ mv $out/google-cloud-sdk/completion.bash.inc $out/share/bash-completion/completions/gcloud
+ ln -s $out/share/bash-completion/completions/gcloud $out/share/bash-completion/completions/gsutil
# This directory contains compiled mac binaries. We used crcmod from
# nixpkgs instead.
diff --git a/pkgs/tools/admin/turbovnc/default.nix b/pkgs/tools/admin/turbovnc/default.nix
index 16ae53d25b91..33d248ffde88 100644
--- a/pkgs/tools/admin/turbovnc/default.nix
+++ b/pkgs/tools/admin/turbovnc/default.nix
@@ -1,6 +1,7 @@
{ lib
, stdenv
, fetchFromGitHub
+, nixosTests
# Dependencies
, cmake
@@ -101,6 +102,8 @@ stdenv.mkDerivation rec {
--prefix PATH : ${lib.makeBinPath [ openssh ]}
'';
+ passthru.tests.turbovnc-headless-server = nixosTests.turbovnc-headless-server;
+
meta = {
homepage = "https://turbovnc.org/";
license = lib.licenses.gpl2Plus;
diff --git a/pkgs/tools/audio/mpd-mpris/default.nix b/pkgs/tools/audio/mpd-mpris/default.nix
index af4000dfa448..b90ab80befdc 100644
--- a/pkgs/tools/audio/mpd-mpris/default.nix
+++ b/pkgs/tools/audio/mpd-mpris/default.nix
@@ -29,6 +29,6 @@ buildGoModule rec {
homepage = "https://github.com/natsukagami/mpd-mpris";
license = licenses.mit;
maintainers = with maintainers; [ doronbehar ];
- platforms = platforms.linux;
+ platforms = platforms.unix;
};
}
diff --git a/pkgs/tools/cd-dvd/cdi2iso/default.nix b/pkgs/tools/cd-dvd/cdi2iso/default.nix
index 9df7ab7657f1..26768747a46c 100644
--- a/pkgs/tools/cd-dvd/cdi2iso/default.nix
+++ b/pkgs/tools/cd-dvd/cdi2iso/default.nix
@@ -1,4 +1,4 @@
-{lib, stdenv, fetchurl}:
+{ lib, stdenv, fetchurl }:
stdenv.mkDerivation rec {
pname = "cdi2iso";
@@ -9,9 +9,13 @@ stdenv.mkDerivation rec {
sha256 = "0fj2fxhpr26z649m0ph71378c41ljflpyk89g87x8r1mc4rbq3kh";
};
+ postPatch = ''
+ substituteInPlace Makefile --replace "gcc" "${stdenv.cc.targetPrefix}cc"
+ '';
+
installPhase = ''
- mkdir -p $out/bin/
- cp cdi2iso $out/bin/
+ mkdir -p $out/bin
+ cp cdi2iso $out/bin
'';
meta = with lib; {
@@ -19,6 +23,6 @@ stdenv.mkDerivation rec {
homepage = "https://sourceforge.net/projects/cdi2iso.berlios";
license = licenses.gpl2;
maintainers = with maintainers; [ hrdinka ];
- platforms = platforms.linux;
+ platforms = platforms.all;
};
}
diff --git a/pkgs/tools/compression/dejsonlz4/default.nix b/pkgs/tools/compression/dejsonlz4/default.nix
index 9e6f95aecb8e..07b6a5979a4f 100644
--- a/pkgs/tools/compression/dejsonlz4/default.nix
+++ b/pkgs/tools/compression/dejsonlz4/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
};
buildPhase = ''
- gcc -Wall -o dejsonlz4 src/dejsonlz4.c src/lz4.c
+ ${stdenv.cc.targetPrefix}cc -o dejsonlz4 src/dejsonlz4.c src/lz4.c
'';
installPhase = ''
@@ -23,6 +23,6 @@ stdenv.mkDerivation rec {
homepage = "https://github.com/avih/dejsonlz4";
license = licenses.bsd2;
maintainers = with maintainers; [ mt-caret ];
- platforms = platforms.linux;
+ platforms = platforms.all;
};
}
diff --git a/pkgs/tools/compression/zdelta/builder.sh b/pkgs/tools/compression/zdelta/builder.sh
deleted file mode 100644
index 03db413181d7..000000000000
--- a/pkgs/tools/compression/zdelta/builder.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-source $stdenv/setup
-
-installPhase() {
- mkdir -p $out/bin
- cp -p zdc zdu $out/bin
-}
-
-genericBuild
diff --git a/pkgs/tools/compression/zdelta/default.nix b/pkgs/tools/compression/zdelta/default.nix
index 46760c913060..b30a43f33c13 100644
--- a/pkgs/tools/compression/zdelta/default.nix
+++ b/pkgs/tools/compression/zdelta/default.nix
@@ -1,16 +1,24 @@
-{lib, stdenv, fetchurl}:
+{ lib, stdenv, fetchurl }:
stdenv.mkDerivation rec {
- name = "zdelta-2.1";
- builder = ./builder.sh;
+ pname = "zdelta";
+ version = "2.1";
+
src = fetchurl {
- url = "${meta.homepage}/downloads/${name}.tar.gz";
- sha256 = "0k6y0r9kv5qiglnr2j4a0yvfynjkvm0pyv8ly28j0pr3w6rbxrh3";
+ url = "https://web.archive.org/web/20160316212948/http://cis.poly.edu/zdelta/downloads/zdelta-2.1.tar.gz";
+ sha256 = "sha256-WiQKWxJkINIwRBcdiuVLMDiupQ8gOsiXOEZvHDa5iFg=";
};
+ makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp -p zdc zdu $out/bin
+ '';
+
meta = with lib; {
- homepage = "http://cis.poly.edu/zdelta";
- platforms = platforms.linux;
+ homepage = "https://web.archive.org/web/20160316212948/http://cis.poly.edu/zdelta/";
+ platforms = platforms.all;
license = licenses.zlib;
};
}
diff --git a/pkgs/tools/filesystems/catcli/default.nix b/pkgs/tools/filesystems/catcli/default.nix
index 1552505701df..be9349daa27c 100644
--- a/pkgs/tools/filesystems/catcli/default.nix
+++ b/pkgs/tools/filesystems/catcli/default.nix
@@ -25,6 +25,6 @@ buildPythonApplication rec {
homepage = "https://github.com/deadc0de6/catcli";
license = licenses.gpl3;
maintainers = with maintainers; [ petersjt014 ];
- platforms = platforms.linux;
+ platforms = platforms.all;
};
}
diff --git a/pkgs/tools/filesystems/cpcfs/default.nix b/pkgs/tools/filesystems/cpcfs/default.nix
index 2aa63208e008..a439e29358f7 100644
--- a/pkgs/tools/filesystems/cpcfs/default.nix
+++ b/pkgs/tools/filesystems/cpcfs/default.nix
@@ -36,6 +36,6 @@ stdenv.mkDerivation rec {
homepage = "https://github.com/derikz/cpcfs/" ;
license = licenses.bsd2;
maintainers = [ ];
- platforms = platforms.linux;
+ platforms = platforms.all;
};
}
diff --git a/pkgs/tools/filesystems/idsk/default.nix b/pkgs/tools/filesystems/idsk/default.nix
index 12a0af7ea4d3..0b7ae339053c 100644
--- a/pkgs/tools/filesystems/idsk/default.nix
+++ b/pkgs/tools/filesystems/idsk/default.nix
@@ -24,6 +24,6 @@ stdenv.mkDerivation rec {
homepage = "https://github.com/cpcsdk/idsk" ;
license = licenses.mit;
maintainers = [ ];
- platforms = platforms.linux;
+ platforms = platforms.all;
};
}
diff --git a/pkgs/tools/graphics/epstool/default.nix b/pkgs/tools/graphics/epstool/default.nix
index 8052434ff0b8..6910f458a17d 100644
--- a/pkgs/tools/graphics/epstool/default.nix
+++ b/pkgs/tools/graphics/epstool/default.nix
@@ -9,6 +9,12 @@ stdenv.mkDerivation rec {
sha256 = "1pfgqbipwk36clhma2k365jkpvyy75ahswn8jczzys382jalpwgk";
};
+ makeFlags = [
+ "CC=${stdenv.cc.targetPrefix}cc"
+ "CLINK=${stdenv.cc.targetPrefix}cc"
+ "LINK=${stdenv.cc.targetPrefix}cc"
+ ];
+
installPhase = ''
make EPSTOOL_ROOT=$out install
'';
@@ -20,6 +26,6 @@ stdenv.mkDerivation rec {
homepage = "http://pages.cs.wisc.edu/~ghost/gsview/epstool.htm";
license = licenses.gpl2;
maintainers = [ maintainers.asppsa ];
- platforms = platforms.linux;
+ platforms = platforms.all;
};
}
diff --git a/pkgs/tools/graphics/imgurbash2/default.nix b/pkgs/tools/graphics/imgurbash2/default.nix
index 8b79e3373a68..30848d7d0dc9 100644
--- a/pkgs/tools/graphics/imgurbash2/default.nix
+++ b/pkgs/tools/graphics/imgurbash2/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "A shell script that uploads images to imgur";
license = licenses.mit;
- platforms = platforms.linux;
+ platforms = platforms.all;
maintainers = with maintainers; [ abbradar ];
homepage = "https://github.com/ram-on/imgurbash2";
};
diff --git a/pkgs/tools/graphics/spirv-cross/default.nix b/pkgs/tools/graphics/spirv-cross/default.nix
index cb5a37527bf6..19359698f02e 100644
--- a/pkgs/tools/graphics/spirv-cross/default.nix
+++ b/pkgs/tools/graphics/spirv-cross/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
description = "A tool designed for parsing and converting SPIR-V to other shader languages";
homepage = "https://github.com/KhronosGroup/SPIRV-Cross";
changelog = "https://github.com/KhronosGroup/SPIRV-Cross/releases/tag/${version}";
- platforms = platforms.linux;
+ platforms = platforms.all;
license = licenses.asl20;
maintainers = with maintainers; [ Flakebi ];
};
diff --git a/pkgs/tools/misc/abduco/default.nix b/pkgs/tools/misc/abduco/default.nix
index dbba2193b14c..9493df1c66c4 100644
--- a/pkgs/tools/misc/abduco/default.nix
+++ b/pkgs/tools/misc/abduco/default.nix
@@ -1,23 +1,23 @@
{ lib, stdenv, fetchFromGitHub, writeText, conf ? null }:
-with lib;
-
stdenv.mkDerivation rec {
- name = "abduco-2018-05-16";
+ pname = "abduco";
+ version = "2020-04-30";
src = fetchFromGitHub {
owner = "martanne";
repo = "abduco";
- rev = "8f80aa8044d7ecf0e43a0294a09007d056b20e4c";
- sha256 = "0wqcif633nbgnznn46j0sng9l0wncppw1x1c42f75b4p9hrph203";
+ rev = "8c32909a159aaa9484c82b71f05b7a73321eb491";
+ sha256 = "0a3p8xljhpk7zh203s75248blfir15smgw5jmszwbmdpy4mqzd53";
};
- configFile = optionalString (conf!=null) (writeText "config.def.h" conf);
- preBuild = optionalString (conf!=null) "cp ${configFile} config.def.h";
+ preBuild = lib.optionalString (conf != null)
+ "cp ${writeText "config.def.h" conf} config.def.h";
+ installFlags = [ "install-completion" ];
CFLAGS = lib.optionalString stdenv.isDarwin "-D_DARWIN_C_SOURCE";
- meta = {
+ meta = with lib; {
homepage = "http://brain-dump.org/projects/abduco";
license = licenses.isc;
description = "Allows programs to be run independently from its controlling terminal";
diff --git a/pkgs/tools/misc/apparix/default.nix b/pkgs/tools/misc/apparix/default.nix
index 7d8de2c14367..d446a2cf0af6 100644
--- a/pkgs/tools/misc/apparix/default.nix
+++ b/pkgs/tools/misc/apparix/default.nix
@@ -15,6 +15,6 @@ stdenv.mkDerivation rec {
description = "Add directory bookmarks, distant listing, and distant editing to the command line";
maintainers = with maintainers; [ lethalman ];
license = licenses.gpl2;
- platforms = platforms.linux;
+ platforms = platforms.all;
};
}
diff --git a/pkgs/tools/misc/bash_unit/default.nix b/pkgs/tools/misc/bash_unit/default.nix
index 2fd93cb33b97..7541281eeb67 100644
--- a/pkgs/tools/misc/bash_unit/default.nix
+++ b/pkgs/tools/misc/bash_unit/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "Bash unit testing enterprise edition framework for professionals";
maintainers = with maintainers; [ pamplemousse ];
- platforms = platforms.linux;
+ platforms = platforms.all;
license = licenses.gpl3Plus;
};
}
diff --git a/pkgs/tools/misc/bbe/default.nix b/pkgs/tools/misc/bbe/default.nix
index fb62b8be8947..5cd7326d7b17 100644
--- a/pkgs/tools/misc/bbe/default.nix
+++ b/pkgs/tools/misc/bbe/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
description = "A sed-like editor for binary files";
homepage = "http://bbe-.sourceforge.net/";
license = licenses.gpl2Plus;
- platforms = platforms.linux;
+ platforms = platforms.all;
maintainers = [ maintainers.hhm ];
};
}
diff --git a/pkgs/tools/misc/bcunit/default.nix b/pkgs/tools/misc/bcunit/default.nix
index bc3bbc8276dd..099ae294bec9 100644
--- a/pkgs/tools/misc/bcunit/default.nix
+++ b/pkgs/tools/misc/bcunit/default.nix
@@ -25,6 +25,6 @@ stdenv.mkDerivation rec {
homepage = "https://gitlab.linphone.org/BC/public/bcunit";
license = licenses.lgpl2Plus;
maintainers = with maintainers; [ raskin jluttine ];
- platforms = platforms.linux;
+ platforms = platforms.all;
};
}
diff --git a/pkgs/tools/misc/fdtools/default.nix b/pkgs/tools/misc/fdtools/default.nix
index d096f903bd1a..2a2f44d81821 100644
--- a/pkgs/tools/misc/fdtools/default.nix
+++ b/pkgs/tools/misc/fdtools/default.nix
@@ -23,6 +23,9 @@ in stdenv.mkDerivation {
sed -e 's|gcc|$CC|' \
conf-compile/defaults/host_link.sh \
> conf-compile/host_link.sh
+ sed -e 's|gcc|$CC|' \
+ conf-compile/defaults/host_compile.sh \
+ > conf-compile/host_compile.sh
echo "${skawarePackages.skalibs.lib}/lib/skalibs/sysdeps" \
> conf-compile/depend_skalibs_sysdeps
diff --git a/pkgs/tools/misc/git-fire/default.nix b/pkgs/tools/misc/git-fire/default.nix
index bba1bd65a54d..15dc34cd5267 100644
--- a/pkgs/tools/misc/git-fire/default.nix
+++ b/pkgs/tools/misc/git-fire/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation {
'';
homepage = "https://github.com/qw3rtman/git-fire";
license = licenses.mit;
- platforms = platforms.linux;
+ platforms = platforms.all;
maintainers = [ maintainers.swflint ];
};
}
diff --git a/pkgs/tools/misc/ministat/default.nix b/pkgs/tools/misc/ministat/default.nix
index 68670599c1ee..0cd3ff3a5c1f 100644
--- a/pkgs/tools/misc/ministat/default.nix
+++ b/pkgs/tools/misc/ministat/default.nix
@@ -26,6 +26,6 @@ stdenv.mkDerivation rec {
homepage = "https://git.decadent.org.uk/gitweb/?p=ministat.git";
license = licenses.beerware;
maintainers = [ maintainers.dezgeg ];
- platforms = platforms.linux;
+ platforms = platforms.all;
};
}
diff --git a/pkgs/tools/misc/sfeed/default.nix b/pkgs/tools/misc/sfeed/default.nix
index 57e49c887454..93ef69ea2ea5 100644
--- a/pkgs/tools/misc/sfeed/default.nix
+++ b/pkgs/tools/misc/sfeed/default.nix
@@ -27,6 +27,6 @@ stdenv.mkDerivation rec {
'';
license = licenses.isc;
maintainers = [ maintainers.matthiasbeyer ];
- platforms = platforms.linux;
+ platforms = platforms.all;
};
}
diff --git a/pkgs/tools/misc/usbview/default.nix b/pkgs/tools/misc/usbview/default.nix
new file mode 100644
index 000000000000..2f417ea86de5
--- /dev/null
+++ b/pkgs/tools/misc/usbview/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoreconfHook
+, pkg-config
+, gtk3
+}:
+
+stdenv.mkDerivation rec {
+ pname = "usbview";
+ version = "2.0";
+
+ src = fetchFromGitHub {
+ owner = "gregkh";
+ repo = "usbview";
+ rev = "v${version}";
+ sha256 = "1cw5jjpidjn34rxdjslpdlj99k4dqaq1kz6mplv5hgjdddijvn5p";
+ };
+
+ nativeBuildInputs = [
+ autoreconfHook
+ pkg-config
+ ];
+
+ buildInputs = [
+ gtk3
+ ];
+
+ meta = with lib; {
+ description = "USB viewer for Linux";
+ license = licenses.gpl2Only;
+ homepage = "http://www.kroah.com/linux-usb/";
+ maintainers = with maintainers; [ shamilton ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/pkgs/tools/misc/vimer/default.nix b/pkgs/tools/misc/vimer/default.nix
index 1fbb85f07516..bbab2d64bb00 100644
--- a/pkgs/tools/misc/vimer/default.nix
+++ b/pkgs/tools/misc/vimer/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
'';
license = licenses.mit;
maintainers = [ maintainers.matthiasbeyer ];
- platforms = platforms.linux;
+ platforms = platforms.all;
};
}
diff --git a/pkgs/tools/networking/altermime/default.nix b/pkgs/tools/networking/altermime/default.nix
index c28df4614592..703af40864ae 100644
--- a/pkgs/tools/networking/altermime/default.nix
+++ b/pkgs/tools/networking/altermime/default.nix
@@ -1,12 +1,11 @@
-{ lib, stdenv, fetchurl }:
+{ lib, gccStdenv, fetchurl }:
-stdenv.mkDerivation rec {
- baseName = "altermime";
- name = "${baseName}-${version}";
+gccStdenv.mkDerivation rec {
+ pname = "altermime";
version = "0.3.11";
src = fetchurl {
- url = "https://pldaniels.com/${baseName}/${name}.tar.gz";
+ url = "https://pldaniels.com/${pname}/${pname}-${version}.tar.gz";
sha256 = "15zxg6spcmd35r6xbidq2fgcg2nzyv1sbbqds08lzll70mqx4pj7";
};
@@ -19,14 +18,14 @@ stdenv.mkDerivation rec {
];
postPatch = ''
- sed -i Makefile -e "s@/usr/local@$out@"
- mkdir -p "$out/bin"
+ mkdir -p $out/bin
+ substituteInPlace Makefile --replace "/usr/local" "$out"
'';
meta = with lib; {
description = "MIME alteration tool";
maintainers = [ maintainers.raskin ];
- platforms = platforms.linux;
+ platforms = platforms.all;
license.fullName = "alterMIME LICENSE";
downloadPage = "https://pldaniels.com/altermime/";
};
diff --git a/pkgs/tools/networking/dhcping/default.nix b/pkgs/tools/networking/dhcping/default.nix
index d4255d46096a..f1f8cd8b5e4b 100644
--- a/pkgs/tools/networking/dhcping/default.nix
+++ b/pkgs/tools/networking/dhcping/default.nix
@@ -27,6 +27,6 @@ stdenv.mkDerivation rec {
'';
homepage = "http://www.mavetju.org/unix/general.php";
license = licenses.bsd2;
- platforms = platforms.linux;
+ platforms = platforms.unix;
};
}
diff --git a/pkgs/tools/networking/httperf/default.nix b/pkgs/tools/networking/httperf/default.nix
index f5c888dc4bb6..ea567f10d488 100644
--- a/pkgs/tools/networking/httperf/default.nix
+++ b/pkgs/tools/networking/httperf/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
homepage = "https://github.com/httperf/httperf";
maintainers = with maintainers; [ nand0p ];
license = licenses.gpl2;
- platforms = platforms.linux;
+ platforms = platforms.all;
};
}
diff --git a/pkgs/tools/networking/kapp/default.nix b/pkgs/tools/networking/kapp/default.nix
index dfb641348714..2ff2fd8daec1 100644
--- a/pkgs/tools/networking/kapp/default.nix
+++ b/pkgs/tools/networking/kapp/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildGoModule, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub, installShellFiles }:
buildGoModule rec {
pname = "kapp";
version = "0.36.0";
@@ -14,6 +14,15 @@ buildGoModule rec {
subPackages = [ "cmd/kapp" ];
+ nativeBuildInputs = [ installShellFiles ];
+
+ postInstall = ''
+ for shell in bash fish zsh; do
+ $out/bin/kapp completion $shell > kapp.$shell
+ installShellCompletion kapp.$shell
+ done
+ '';
+
meta = with lib; {
description = "CLI tool that encourages Kubernetes users to manage bulk resources with an application abstraction for grouping";
homepage = "https://get-kapp.io";
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index ec2c7d39df0c..380e8914272b 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -3325,6 +3325,8 @@ in
usbsdmux = callPackage ../development/tools/misc/usbsdmux { };
+ usbview = callPackage ../tools/misc/usbview { };
+
anthy = callPackage ../tools/inputmethods/anthy { };
evdevremapkeys = callPackage ../tools/inputmethods/evdevremapkeys { };
@@ -11087,7 +11089,9 @@ in
rustracerd = callPackage ../development/tools/rust/racerd {
inherit (darwin.apple_sdk.frameworks) Security;
};
- inherit (callPackage ../development/tools/rust/rust-analyzer { })
+ inherit (callPackage ../development/tools/rust/rust-analyzer {
+ inherit (darwin.apple_sdk.frameworks) CoreServices;
+ })
rust-analyzer-unwrapped rust-analyzer;
rust-bindgen = callPackage ../development/tools/rust/bindgen { };
rust-cbindgen = callPackage ../development/tools/rust/cbindgen {
diff --git a/pkgs/top-level/kodi-packages.nix b/pkgs/top-level/kodi-packages.nix
new file mode 100644
index 000000000000..f9b20dd2bc7e
--- /dev/null
+++ b/pkgs/top-level/kodi-packages.nix
@@ -0,0 +1,113 @@
+{ lib, newScope, kodi }:
+
+with lib;
+
+let self = rec {
+
+ addonDir = "/share/kodi/addons";
+ rel = "Matrix";
+
+ callPackage = newScope self;
+
+ inherit kodi;
+
+ # Convert derivation to a kodi module. Stolen from ../../../top-level/python-packages.nix
+ toKodiAddon = drv: drv.overrideAttrs (oldAttrs: {
+ # Use passthru in order to prevent rebuilds when possible.
+ passthru = (oldAttrs.passthru or {}) // {
+ kodiAddonFor = kodi;
+ requiredKodiAddons = requiredKodiAddons drv.propagatedBuildInputs;
+ };
+ });
+
+ # Check whether a derivation provides a Kodi addon.
+ hasKodiAddon = drv: drv ? kodiAddonFor && drv.kodiAddonFor == kodi;
+
+ # Get list of required Kodi addons given a list of derivations.
+ requiredKodiAddons = drvs:
+ let
+ modules = filter hasKodiAddon drvs;
+ in
+ unique (modules ++ concatLists (catAttrs "requiredKodiAddons" modules));
+
+ # package update scripts
+
+ addonUpdateScript = callPackage ../applications/video/kodi-packages/addon-update-script { };
+
+ # package builders
+
+ buildKodiAddon = callPackage ../applications/video/kodi/build-kodi-addon.nix { };
+
+ buildKodiBinaryAddon = callPackage ../applications/video/kodi/build-kodi-binary-addon.nix { };
+
+ # regular packages
+
+ kodi-platform = callPackage ../applications/video/kodi-packages/kodi-platform { };
+
+ # addon packages
+
+ controllers = {
+ default = callPackage ../applications/video/kodi-packages/controllers { controller = "default"; };
+
+ dreamcast = callPackage ../applications/video/kodi-packages/controllers { controller = "dreamcast"; };
+
+ gba = callPackage ../applications/video/kodi-packages/controllers { controller = "gba"; };
+
+ genesis = callPackage ../applications/video/kodi-packages/controllers { controller = "genesis"; };
+
+ mouse = callPackage ../applications/video/kodi-packages/controllers { controller = "mouse"; };
+
+ n64 = callPackage ../applications/video/kodi-packages/controllers { controller = "n64"; };
+
+ nes = callPackage ../applications/video/kodi-packages/controllers { controller = "nes"; };
+
+ ps = callPackage ../applications/video/kodi-packages/controllers { controller = "ps"; };
+
+ snes = callPackage ../applications/video/kodi-packages/controllers { controller = "snes"; };
+ };
+
+ joystick = callPackage ../applications/video/kodi-packages/joystick { };
+
+ netflix = callPackage ../applications/video/kodi-packages/netflix { };
+
+ svtplay = callPackage ../applications/video/kodi-packages/svtplay { };
+
+ steam-controller = callPackage ../applications/video/kodi-packages/steam-controller { };
+
+ steam-launcher = callPackage ../applications/video/kodi-packages/steam-launcher { };
+
+ pdfreader = callPackage ../applications/video/kodi-packages/pdfreader { };
+
+ pvr-hts = callPackage ../applications/video/kodi-packages/pvr-hts { };
+
+ pvr-hdhomerun = callPackage ../applications/video/kodi-packages/pvr-hdhomerun { };
+
+ pvr-iptvsimple = callPackage ../applications/video/kodi-packages/pvr-iptvsimple { };
+
+ osmc-skin = callPackage ../applications/video/kodi-packages/osmc-skin { };
+
+ vfs-sftp = callPackage ../applications/video/kodi-packages/vfs-sftp { };
+
+ vfs-libarchive = callPackage ../applications/video/kodi-packages/vfs-libarchive { };
+
+ # addon packages (dependencies)
+
+ certifi = callPackage ../applications/video/kodi-packages/certifi { };
+
+ chardet = callPackage ../applications/video/kodi-packages/chardet { };
+
+ idna = callPackage ../applications/video/kodi-packages/idna { };
+
+ inputstream-adaptive = callPackage ../applications/video/kodi-packages/inputstream-adaptive { };
+
+ inputstreamhelper = callPackage ../applications/video/kodi-packages/inputstreamhelper { };
+
+ myconnpy = callPackage ../applications/video/kodi-packages/myconnpy { };
+
+ requests = callPackage ../applications/video/kodi-packages/requests { };
+
+ signals = callPackage ../applications/video/kodi-packages/signals { };
+
+ urllib3 = callPackage ../applications/video/kodi-packages/urllib3 { };
+
+}; in self
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 47573d3b5e7d..2b35c242edb3 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -340,6 +340,8 @@ in {
ajpy = callPackage ../development/python-modules/ajpy { };
+ ajsonrpc = callPackage ../development/python-modules/ajsonrpc { };
+
alabaster = callPackage ../development/python-modules/alabaster { };
alarmdecoder = callPackage ../development/python-modules/alarmdecoder { };