diff --git a/doc/manual.xml b/doc/manual.xml index 8cecb01fc227..b0490ec74aee 100644 --- a/doc/manual.xml +++ b/doc/manual.xml @@ -19,7 +19,7 @@ - + Builders diff --git a/doc/stdenv/platform-notes.chapter.md b/doc/stdenv/platform-notes.chapter.md new file mode 100644 index 000000000000..03e61e333f8b --- /dev/null +++ b/doc/stdenv/platform-notes.chapter.md @@ -0,0 +1,62 @@ +# Platform Notes {#chap-platform-notes} + +## Darwin (macOS) {#sec-darwin} + +Some common issues when packaging software for Darwin: + +- The Darwin `stdenv` uses clang instead of gcc. When referring to the compiler `$CC` or `cc` will work in both cases. Some builds hardcode gcc/g++ in their build scripts, that can usually be fixed with using something like `makeFlags = [ "CC=cc" ];` or by patching the build scripts. + + ```nix + stdenv.mkDerivation { + name = "libfoo-1.2.3"; + # ... + buildPhase = '' + $CC -o hello hello.c + ''; + } + ``` + +- On Darwin, libraries are linked using absolute paths, libraries are resolved by their `install_name` at link time. Sometimes packages won’t set this correctly causing the library lookups to fail at runtime. This can be fixed by adding extra linker flags or by running `install_name_tool -id` during the `fixupPhase`. + + ```nix + stdenv.mkDerivation { + name = "libfoo-1.2.3"; + # ... + makeFlags = lib.optional stdenv.isDarwin "LDFLAGS=-Wl,-install_name,$(out)/lib/libfoo.dylib"; + } + ``` + +- Even if the libraries are linked using absolute paths and resolved via their `install_name` correctly, tests can sometimes fail to run binaries. This happens because the `checkPhase` runs before the libraries are installed. + + This can usually be solved by running the tests after the `installPhase` or alternatively by using `DYLD_LIBRARY_PATH`. More information about this variable can be found in the *dyld(1)* manpage. + + ``` + dyld: Library not loaded: /nix/store/7hnmbscpayxzxrixrgxvvlifzlxdsdir-jq-1.5-lib/lib/libjq.1.dylib + Referenced from: /private/tmp/nix-build-jq-1.5.drv-0/jq-1.5/tests/../jq + Reason: image not found + ./tests/jqtest: line 5: 75779 Abort trap: 6 + ``` + + ```nix + stdenv.mkDerivation { + name = "libfoo-1.2.3"; + # ... + doInstallCheck = true; + installCheckTarget = "check"; + } + ``` + +- Some packages assume xcode is available and use `xcrun` to resolve build tools like `clang`, etc. This causes errors like `xcode-select: error: no developer tools were found at '/Applications/Xcode.app'` while the build doesn’t actually depend on xcode. + + ```nix + stdenv.mkDerivation { + name = "libfoo-1.2.3"; + # ... + prePatch = '' + substituteInPlace Makefile \ + --replace '/usr/bin/xcrun clang' clang + ''; + } + ``` + + The package `xcbuild` can be used to build projects that really depend on Xcode. However, this replacement is not 100% compatible with Xcode and can occasionally cause issues. diff --git a/doc/stdenv/platform-notes.xml b/doc/stdenv/platform-notes.xml deleted file mode 100644 index cc8efaece129..000000000000 --- a/doc/stdenv/platform-notes.xml +++ /dev/null @@ -1,83 +0,0 @@ - - Platform Notes -
- Darwin (macOS) - - - Some common issues when packaging software for Darwin: - - - - - - The Darwin stdenv uses clang instead of gcc. When referring to the compiler $CC or cc will work in both cases. Some builds hardcode gcc/g++ in their build scripts, that can usually be fixed with using something like makeFlags = [ "CC=cc" ]; or by patching the build scripts. - - -stdenv.mkDerivation { - name = "libfoo-1.2.3"; - # ... - buildPhase = '' - $CC -o hello hello.c - ''; -} - - - - - On Darwin, libraries are linked using absolute paths, libraries are resolved by their install_name at link time. Sometimes packages won't set this correctly causing the library lookups to fail at runtime. This can be fixed by adding extra linker flags or by running install_name_tool -id during the fixupPhase. - - -stdenv.mkDerivation { - name = "libfoo-1.2.3"; - # ... - makeFlags = lib.optional stdenv.isDarwin "LDFLAGS=-Wl,-install_name,$(out)/lib/libfoo.dylib"; -} - - - - - Even if the libraries are linked using absolute paths and resolved via their install_name correctly, tests can sometimes fail to run binaries. This happens because the checkPhase runs before the libraries are installed. - - - This can usually be solved by running the tests after the installPhase or alternatively by using DYLD_LIBRARY_PATH. More information about this variable can be found in the - dyld - 1 manpage. - - -dyld: Library not loaded: /nix/store/7hnmbscpayxzxrixrgxvvlifzlxdsdir-jq-1.5-lib/lib/libjq.1.dylib -Referenced from: /private/tmp/nix-build-jq-1.5.drv-0/jq-1.5/tests/../jq -Reason: image not found -./tests/jqtest: line 5: 75779 Abort trap: 6 - - -stdenv.mkDerivation { - name = "libfoo-1.2.3"; - # ... - doInstallCheck = true; - installCheckTarget = "check"; -} - - - - - Some packages assume xcode is available and use xcrun to resolve build tools like clang, etc. This causes errors like xcode-select: error: no developer tools were found at '/Applications/Xcode.app' while the build doesn't actually depend on xcode. - - -stdenv.mkDerivation { - name = "libfoo-1.2.3"; - # ... - prePatch = '' - substituteInPlace Makefile \ - --replace '/usr/bin/xcrun clang' clang - ''; -} - - - The package xcbuild can be used to build projects that really depend on Xcode. However, this replacement is not 100% compatible with Xcode and can occasionally cause issues. - - - -
-
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index c31a20e54088..89e2ee272284 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -186,6 +186,7 @@ in k3s = handleTest ./k3s.nix {}; kafka = handleTest ./kafka.nix {}; keepalived = handleTest ./keepalived.nix {}; + keepassxc = handleTest ./keepassxc.nix {}; kerberos = handleTest ./kerberos/default.nix {}; kernel-latest = handleTest ./kernel-latest.nix {}; kernel-lts = handleTest ./kernel-lts.nix {}; diff --git a/nixos/tests/keepassxc.nix b/nixos/tests/keepassxc.nix new file mode 100644 index 000000000000..98902187f6ac --- /dev/null +++ b/nixos/tests/keepassxc.nix @@ -0,0 +1,34 @@ +import ./make-test-python.nix ({ pkgs, ...} : + +{ + name = "keepassxc"; + meta = with pkgs.lib.maintainers; { + maintainers = [ turion ]; + }; + + machine = { ... }: + + { + imports = [ + ./common/user-account.nix + ./common/x11.nix + ]; + + services.xserver.enable = true; + test-support.displayManager.auto.user = "alice"; + environment.systemPackages = [ pkgs.keepassxc ]; + }; + + enableOCR = true; + + testScript = { nodes, ... }: '' + start_all() + machine.wait_for_x() + + # start KeePassXC window + machine.execute("su - alice -c keepassxc &") + + machine.wait_for_text("KeePassXC ${pkgs.keepassxc.version}") + machine.screenshot("KeePassXC") + ''; +}) diff --git a/pkgs/applications/misc/coolreader/default.nix b/pkgs/applications/misc/coolreader/default.nix index d3f3eb6fcf5a..5b310373eeef 100644 --- a/pkgs/applications/misc/coolreader/default.nix +++ b/pkgs/applications/misc/coolreader/default.nix @@ -3,13 +3,13 @@ mkDerivation rec { pname = "coolreader"; - version = "3.2.49"; + version = "3.2.51"; src = fetchFromGitHub { owner = "buggins"; repo = pname; rev = "cr${version}"; - sha256 = "10i3w4zjlilz3smjzbwm50d91ns3w0wlgmsf38fn2lv76zczv8ia"; + sha256 = "sha256-rRWZHkuSNhAHwxKjpRgcNXO9vs/MDAgEuhRs8mRPjP4="; }; nativeBuildInputs = [ cmake pkg-config ]; diff --git a/pkgs/applications/misc/keepassx/community.nix b/pkgs/applications/misc/keepassx/community.nix index c7e87dbbfd44..af259c199d89 100644 --- a/pkgs/applications/misc/keepassx/community.nix +++ b/pkgs/applications/misc/keepassx/community.nix @@ -34,6 +34,8 @@ , withKeePassNetworking ? true , withKeePassTouchID ? true , withKeePassFDOSecrets ? true + +, nixosTests }: with lib; @@ -118,6 +120,8 @@ stdenv.mkDerivation rec { wrapQtApp $out/Applications/KeePassXC.app/Contents/MacOS/KeePassXC ''; + passthru.tests = nixosTests.keepassxc; + meta = { description = "Password manager to store your passwords safely and auto-type them into your everyday websites and applications"; longDescription = "A community fork of KeePassX, which is itself a port of KeePass Password Safe. The goal is to extend and improve KeePassX with new features and bugfixes to provide a feature-rich, fully cross-platform and modern open-source password manager. Accessible via native cross-platform GUI, CLI, and browser integration with the KeePassXC Browser Extension (https://github.com/keepassxreboot/keepassxc-browser)."; diff --git a/pkgs/applications/misc/reddsaver/default.nix b/pkgs/applications/misc/reddsaver/default.nix index 86208c484a0e..bdb589d8f95e 100644 --- a/pkgs/applications/misc/reddsaver/default.nix +++ b/pkgs/applications/misc/reddsaver/default.nix @@ -8,22 +8,22 @@ rustPlatform.buildRustPackage rec { pname = "reddsaver"; - version = "0.3.0"; + version = "0.3.1"; src = fetchFromGitHub { owner = "manojkarthick"; repo = "reddsaver"; rev = "v${version}"; - sha256 = "0wiyzbl9vqx5aq3lpaaqkm3ivj77lqd8bmh8ipgshdflgm1z6yvp"; + sha256 = "0kww3abgvxr7azr7yb8aiw28fz13qb4sn3x7nnz1ihmd4yczi9fg"; }; - cargoSha256 = "0kw5gk7pf4xkmjffs2jxm6sc4chybns88cii2wlgpyvgn4c3cwaa"; + cargoSha256 = "09xm22vgmd3dc0wr6n3jczxvhwpcsijwfbv50dz1lnsx57g8mgmd"; nativeBuildInputs = [ pkg-config ]; buildInputs = [ openssl ] ++ lib.optional stdenv.isDarwin Security; - # package does not contain tests as of v0.3.0 + # package does not contain tests as of v0.3.1 docCheck = false; meta = with lib; { diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix b/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix index b8aaabca0fb0..f6bea3c83574 100644 --- a/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix +++ b/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix @@ -41,11 +41,11 @@ stdenv.mkDerivation rec { pname = "evolution"; - version = "3.38.3"; + version = "3.38.4"; src = fetchurl { url = "mirror://gnome/sources/evolution/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "1kfshljvkpbh965rjlyy1qjjm0ic3rdxisyy9c5jjvv2qlk65b3z"; + sha256 = "NB+S0k4rRMJ4mwA38aiU/xZUh9qksAuA+uMTii4Fr9Q="; }; nativeBuildInputs = [ diff --git a/pkgs/applications/science/medicine/aliza/default.nix b/pkgs/applications/science/medicine/aliza/default.nix index e8e764ef26d0..0d827e2ad107 100644 --- a/pkgs/applications/science/medicine/aliza/default.nix +++ b/pkgs/applications/science/medicine/aliza/default.nix @@ -3,11 +3,11 @@ with lib; stdenv.mkDerivation { pname = "aliza"; - version = "1.98.32"; + version = "1.98.43"; src = fetchurl { # See https://www.aliza-dicom-viewer.com/download - url = "https://drive.google.com/uc?export=download&id=1nggavPhY_633T-AW9PdkcAgbWtzv3QKG"; - sha256 = "00vbgv8ca9ckgkicyyngrb01yhhcqc8hygg2bls7b44c47hcc8zz"; + url = "https://drive.google.com/uc?export=download&id=1HiDYUVN30oSWZWt3HBp7gNRBCLLtJM1I"; + sha256 = "0d70q67j2q0wdn4m2fxljqb97jwmscqgg3rm1rkb77fi2ik206ra"; name = "aliza.rpm"; }; diff --git a/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix b/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix index 93a036228c3e..82c40fc429d5 100644 --- a/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix +++ b/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "gnome-getting-started-docs"; - version = "3.38.0"; + version = "3.38.1"; src = fetchurl { url = "mirror://gnome/sources/gnome-getting-started-docs/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "0ficf4i4njqrx3dn5rdkvpvcys5mwfma4zkgfmfkq964jxpwzqvw"; + sha256 = "EPviPyw85CdTmk4wekYWlNOHCyMgBGT3BbfYGvmTyFk="; }; passthru = { diff --git a/pkgs/development/compilers/gleam/default.nix b/pkgs/development/compilers/gleam/default.nix index 78a335f1b7be..4f724929232d 100644 --- a/pkgs/development/compilers/gleam/default.nix +++ b/pkgs/development/compilers/gleam/default.nix @@ -2,13 +2,13 @@ rustPlatform.buildRustPackage rec { pname = "gleam"; - version = "0.13.2"; + version = "0.14.0"; src = fetchFromGitHub { owner = "gleam-lang"; repo = pname; rev = "v${version}"; - sha256 = "sha256-ka1GxukX3HR40fMeiiXHguyPKrpGngG2tXDColR7eQA="; + sha256 = "sha256-ujQ7emfGhzpRGeZ6RGZ57hFX4aIflTcwE9IEUMYb/ZI="; }; nativeBuildInputs = [ pkg-config ]; @@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec { buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security ]; - cargoSha256 = "sha256-/l54ezS68loljKNh7AdYMIuCiyIbsMI3jqD9ktjZLfc="; + cargoSha256 = "sha256-/SudEQynLkLl7Y731Uqm9AkEugTCnq4PFFRQcwz+qL8="; meta = with lib; { description = "A statically typed language for the Erlang VM"; diff --git a/pkgs/development/libraries/gtk/4.x.nix b/pkgs/development/libraries/gtk/4.x.nix index 8eb35d467e19..b05e9ea03933 100644 --- a/pkgs/development/libraries/gtk/4.x.nix +++ b/pkgs/development/libraries/gtk/4.x.nix @@ -55,7 +55,7 @@ assert cupsSupport -> cups != null; stdenv.mkDerivation rec { pname = "gtk4"; - version = "4.0.2"; + version = "4.0.3"; outputs = [ "out" "dev" ] ++ lib.optional withGtkDoc "devdoc"; outputBin = "dev"; @@ -67,7 +67,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://gnome/sources/gtk/${lib.versions.majorMinor version}/gtk-${version}.tar.xz"; - sha256 = "115w3mzwm1xsi1q85qvwfm2yxpsjs2rcajgddzbnwhjicyn0frv2"; + sha256 = "18mJNyV5C1C9mjuyeIVtnVQ7RLa5uVHXtg573swTGJA="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/aqualogic/default.nix b/pkgs/development/python-modules/aqualogic/default.nix index dbd29f3d1102..a6081858afb5 100644 --- a/pkgs/development/python-modules/aqualogic/default.nix +++ b/pkgs/development/python-modules/aqualogic/default.nix @@ -7,13 +7,13 @@ buildPythonPackage rec { pname = "aqualogic"; - version = "2.3"; + version = "2.5"; src = fetchFromGitHub { owner = "swilson"; repo = pname; rev = version; - sha256 = "0101lni458y88yrw1wri3pz2cn5jlxln03pa3q2pxaybcyklb9qk"; + sha256 = "sha256-yxd+A5dsB9gBwVlPNjz+IgDHKTktNky84bWZMhA/xa4="; }; propagatedBuildInputs = [ pyserial ]; diff --git a/pkgs/development/python-modules/launchpadlib/default.nix b/pkgs/development/python-modules/launchpadlib/default.nix index 6c5112312bb3..e39e313baa7f 100644 --- a/pkgs/development/python-modules/launchpadlib/default.nix +++ b/pkgs/development/python-modules/launchpadlib/default.nix @@ -10,6 +10,7 @@ , six , testresources , wadllib +, pytestCheckHook }: buildPythonPackage rec { @@ -32,6 +33,8 @@ buildPythonPackage rec { wadllib ]; + checkInputs = [ pytestCheckHook ]; + preCheck = '' export HOME=$TMPDIR ''; @@ -41,7 +44,7 @@ buildPythonPackage rec { meta = with lib; { description = "Script Launchpad through its web services interfaces. Officially supported"; homepage = "https://help.launchpad.net/API/launchpadlib"; - license = licenses.lgpl3; + license = licenses.lgpl3Only; maintainers = [ maintainers.marsam ]; }; } diff --git a/pkgs/development/python-modules/pyalmond/default.nix b/pkgs/development/python-modules/pyalmond/default.nix new file mode 100644 index 000000000000..59a9339c2649 --- /dev/null +++ b/pkgs/development/python-modules/pyalmond/default.nix @@ -0,0 +1,32 @@ +{ lib +, aiohttp +, buildPythonPackage +, fetchFromGitHub +, pythonOlder +}: + +buildPythonPackage rec { + pname = "pyalmond"; + version = "0.0.3"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "stanford-oval"; + repo = pname; + rev = "v${version}"; + sha256 = "0d1w83lr7k2wxcs846iz4mjyqn1ximnw6155kgl515v10fqyrhgk"; + }; + + propagatedBuildInputs = [ aiohttp ]; + + # Tests require a running Almond instance + doCheck = false; + pythonImportsCheck = [ "pyalmond" ]; + + meta = with lib; { + description = "Python client for the Almond API"; + homepage = "https://github.com/stanford-oval/pyalmond"; + license = with licenses; [ bsd3 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/pyflume/default.nix b/pkgs/development/python-modules/pyflume/default.nix new file mode 100644 index 000000000000..a1d36670a396 --- /dev/null +++ b/pkgs/development/python-modules/pyflume/default.nix @@ -0,0 +1,45 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, pytestCheckHook +, pythonOlder +, pyjwt +, ratelimit +, pytz +, requests +, requests-mock +}: + +buildPythonPackage rec { + pname = "pyflume"; + version = "0.6.2"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "ChrisMandich"; + repo = "PyFlume"; + rev = "v${version}"; + sha256 = "0i181c8722j831bjlcjwv5ccy20hl8zzlv7bfp8w0976gdmv4iz8"; + }; + + propagatedBuildInputs = [ + pyjwt + ratelimit + pytz + requests + ]; + + checkInputs = [ + requests-mock + pytestCheckHook + ]; + + pythonImportsCheck = [ "pyflume" ]; + + meta = with lib; { + description = "Python module to work with Flume sensors"; + homepage = "https://github.com/ChrisMandich/PyFlume"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/pymitv/default.nix b/pkgs/development/python-modules/pymitv/default.nix new file mode 100644 index 000000000000..ffaabb04a291 --- /dev/null +++ b/pkgs/development/python-modules/pymitv/default.nix @@ -0,0 +1,30 @@ +{ lib +, buildPythonPackage +, fetchPypi +, pythonOlder +, requests +}: + +buildPythonPackage rec { + pname = "pymitv"; + version = "1.4.3"; + disabled = pythonOlder "3.5"; + + src = fetchPypi { + inherit pname version; + sha256 = "0jbs1zhqpnsyad3pd8cqy1byv8m5bq17ydc6crmrfkjbp6xvvg3x"; + }; + + propagatedBuildInputs = [ requests ]; + + # Projec thas no tests + doCheck = false; + pythonImportsCheck = [ "pymitv" ]; + + meta = with lib; { + description = "Python client the Mi Tv 3"; + homepage = "https://github.com/simse/pymitv"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/python-twitch-client/default.nix b/pkgs/development/python-modules/python-twitch-client/default.nix new file mode 100644 index 000000000000..30f6ab9a0a71 --- /dev/null +++ b/pkgs/development/python-modules/python-twitch-client/default.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, pytestCheckHook +, pythonOlder +, requests +, responses +}: + +buildPythonPackage rec { + pname = "python-twitch-client"; + version = "0.7.1"; + disabled = pythonOlder "3.6"; + + src = fetchFromGitHub { + owner = "tsifrer"; + repo = pname; + rev = version; + sha256 = "10wwkam3dw0nqr3v9xzigx1zjlrnrhzr7jvihddvzi84vjb6j443"; + }; + + propagatedBuildInputs = [ requests ]; + + checkInputs = [ + pytestCheckHook + responses + ]; + + pythonImportsCheck = [ "twitch" ]; + + meta = with lib; { + description = "Python wrapper for the Twitch API"; + homepage = "https://github.com/tsifrer/python-twitch-client"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/pyvolumio/default.nix b/pkgs/development/python-modules/pyvolumio/default.nix new file mode 100644 index 000000000000..da3ac35c4622 --- /dev/null +++ b/pkgs/development/python-modules/pyvolumio/default.nix @@ -0,0 +1,32 @@ +{ lib +, aiohttp +, buildPythonPackage +, fetchFromGitHub +, pythonOlder +}: + +buildPythonPackage rec { + pname = "pyvolumio"; + version = "0.1.3"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "OnFreund"; + repo = "PyVolumio"; + rev = "v${version}"; + sha256 = "0x2dzmd9lwnak2iy6v54y24qjq37y3nlfhsvx7hddgv8jj1klvap"; + }; + + propagatedBuildInputs = [ aiohttp ]; + + # Project has no tests + doCheck = false; + pythonImportsCheck = [ "pyvolumio" ]; + + meta = with lib; { + description = "Python module to control Volumio"; + homepage = "https://github.com/OnFreund/PyVolumio"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/ratelimit/default.nix b/pkgs/development/python-modules/ratelimit/default.nix new file mode 100644 index 000000000000..f706d043bf86 --- /dev/null +++ b/pkgs/development/python-modules/ratelimit/default.nix @@ -0,0 +1,34 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, pytestCheckHook +}: + +buildPythonPackage rec { + pname = "ratelimit"; + version = "2.2.1"; + + src = fetchFromGitHub { + owner = "tomasbasham"; + repo = pname; + rev = "v${version}"; + sha256 = "04hy3hhh5xdqcsz0lx8j18zbj88kh5ik4wyi5d3a5sfy2hx70in2"; + }; + + postPatch = '' + sed -i "/--cov/d" pytest.ini + ''; + + checkInputs = [ pytestCheckHook ]; + + pytestFlagsArray = [ "tests" ]; + + pythonImportsCheck = [ "ratelimit" ]; + + meta = with lib; { + description = "Python API Rate Limit Decorator"; + homepage = "https://github.com/tomasbasham/ratelimit"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/tahoma-api/default.nix b/pkgs/development/python-modules/tahoma-api/default.nix new file mode 100644 index 000000000000..440218223117 --- /dev/null +++ b/pkgs/development/python-modules/tahoma-api/default.nix @@ -0,0 +1,30 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, requests +}: + +buildPythonPackage rec { + pname = "tahoma-api"; + version = "0.0.17"; + + src = fetchFromGitHub { + owner = "philklei"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-YwOKSBlN4lNyS+hfdbQDUq1gc14FBof463ofxtUVLC4="; + }; + + propagatedBuildInputs = [ requests ]; + + # Project has no tests + doCheck = false; + pythonImportsCheck = [ "tahoma_api" ]; + + meta = with lib; { + description = "Python module to interface with Tahoma REST API"; + homepage = "https://github.com/philklei/tahoma-api/"; + license = with licenses; [ asl20 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/tuyaha/default.nix b/pkgs/development/python-modules/tuyaha/default.nix new file mode 100644 index 000000000000..a53124783d18 --- /dev/null +++ b/pkgs/development/python-modules/tuyaha/default.nix @@ -0,0 +1,30 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, requests +}: + +buildPythonPackage rec { + pname = "tuyaha"; + version = "0.0.10"; + + src = fetchFromGitHub { + owner = "PaulAnnekov"; + repo = pname; + rev = version; + sha256 = "0n08mqrz76zv1cyqky6ibs6im1fqcywkiyvfmfabml0vzvr43awf"; + }; + + propagatedBuildInputs = [ requests ]; + + # Project has no tests + doCheck = false; + pythonImportsCheck = [ "tuyaha" ]; + + meta = with lib; { + description = "Python module with the Tuya API"; + homepage = "https://github.com/PaulAnnekov/tuyaha"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/wiffi/default.nix b/pkgs/development/python-modules/wiffi/default.nix new file mode 100644 index 000000000000..a3da3f2f027e --- /dev/null +++ b/pkgs/development/python-modules/wiffi/default.nix @@ -0,0 +1,32 @@ +{ lib +, aiohttp +, buildPythonPackage +, fetchFromGitHub +, pythonOlder +}: + +buildPythonPackage rec { + pname = "wiffi"; + version = "1.0.1"; + disabled = pythonOlder "3.6"; + + src = fetchFromGitHub { + owner = "mampfes"; + repo = "python-wiffi"; + rev = version; + sha256 = "1bsx8dcmbkajh7hdgxg6wdnyxz4bfnd45piiy3yzyvszfdyvxw0f"; + }; + + propagatedBuildInputs = [ aiohttp ]; + + # Project has no tests + doCheck = false; + pythonImportsCheck = [ "wiffi" ]; + + meta = with lib; { + description = "Python module to interface with STALL WIFFI devices"; + homepage = "https://github.com/mampfes/python-wiffi"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/xknx/default.nix b/pkgs/development/python-modules/xknx/default.nix index 221076fae84c..841348339a71 100644 --- a/pkgs/development/python-modules/xknx/default.nix +++ b/pkgs/development/python-modules/xknx/default.nix @@ -11,14 +11,14 @@ buildPythonPackage rec { pname = "xknx"; - version = "0.16.3"; + version = "0.17.0"; disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "XKNX"; repo = pname; rev = version; - sha256 = "sha256-toB66woREkFUv3J14wwquRo+uAOgXKO+cwFgyw4Mma8="; + sha256 = "sha256-fzLqkeCfeLNu13R9cp1XVh8fE2B3L47UDpuWOod33gU="; }; propagatedBuildInputs = [ diff --git a/pkgs/games/enigma/default.nix b/pkgs/games/enigma/default.nix new file mode 100644 index 000000000000..131bd00e1857 --- /dev/null +++ b/pkgs/games/enigma/default.nix @@ -0,0 +1,32 @@ +{ lib, stdenv, fetchurl, makeWrapper, pkg-config, gettext, imagemagick, curl, libpng, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, xercesc, xdg-utils, hicolor-icon-theme }: +stdenv.mkDerivation rec { + pname = "enigma"; + version = "1.30-alpha"; + + src = fetchurl { + url = "https://github.com/Enigma-Game/Enigma/releases/download/${version}/${pname}-${version}.tar.gz"; + sha256 = "1zyk3j43gzfr1lhc6g13j7qai5f33fv5xm5735nnznaqvaz17949"; + }; + + nativeBuildInputs = [ pkg-config gettext makeWrapper imagemagick ]; + buildInputs = [ SDL2 SDL2_image SDL2_mixer SDL2_ttf libpng xercesc curl xdg-utils ]; + + # For some reason (might be related to the alpha status), some includes + # which are required by lib-src/enigma-core are not picked up by the + # configure script. Hence we add them manually. + CPPFLAGS = "-I${SDL2.dev}/include/SDL2 -I${SDL2_ttf}/include/SDL2 -I${SDL2_image}/include/SDL2 -I${SDL2_mixer}/include/SDL2"; + + postInstall = '' + rm -r $out/include + wrapProgram $out/bin/enigma --prefix PATH : "${lib.makeBinPath [ xdg-utils ]}" + ''; + + meta = with lib; { + description = "Puzzle game inspired by Oxyd on the Atari ST and Rock'n'Roll on the Amiga"; + license = with licenses; [ gpl2 free ]; # source + bundles libs + art + platforms = platforms.unix; + broken = stdenv.targetPlatform.isDarwin; + maintainers = with maintainers; [ iblech ]; + homepage = "https://www.nongnu.org/enigma/"; + }; +} diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index fe0d0a160229..a4e480c45507 100644 --- a/pkgs/servers/home-assistant/component-packages.nix +++ b/pkgs/servers/home-assistant/component-packages.nix @@ -23,7 +23,7 @@ "alarmdecoder" = ps: with ps; [ adext ]; "alert" = ps: with ps; [ ]; "alexa" = ps: with ps; [ aiohttp-cors ]; - "almond" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pyalmond + "almond" = ps: with ps; [ aiohttp-cors pyalmond ]; "alpha_vantage" = ps: with ps; [ ]; # missing inputs: alpha_vantage "amazon_polly" = ps: with ps; [ boto3 ]; "ambiclimate" = ps: with ps; [ aiohttp-cors ambiclimate ]; @@ -264,7 +264,7 @@ "flick_electric" = ps: with ps; [ ]; # missing inputs: PyFlick "flo" = ps: with ps; [ aioflo ]; "flock" = ps: with ps; [ ]; - "flume" = ps: with ps; [ ]; # missing inputs: pyflume + "flume" = ps: with ps; [ pyflume ]; "flunearyou" = ps: with ps; [ ]; # missing inputs: pyflunearyou "flux" = ps: with ps; [ ]; "flux_led" = ps: with ps; [ flux-led ]; @@ -815,7 +815,7 @@ "systemmonitor" = ps: with ps; [ psutil ]; "tado" = ps: with ps; [ python-tado ]; "tag" = ps: with ps; [ ]; - "tahoma" = ps: with ps; [ ]; # missing inputs: tahoma-api + "tahoma" = ps: with ps; [ tahoma-api ]; "tank_utility" = ps: with ps; [ ]; # missing inputs: tank_utility "tankerkoenig" = ps: with ps; [ ]; # missing inputs: pytankerkoenig "tapsaff" = ps: with ps; [ ]; # missing inputs: tapsaff @@ -865,13 +865,13 @@ "travisci" = ps: with ps; [ ]; # missing inputs: TravisPy "trend" = ps: with ps; [ numpy ]; "tts" = ps: with ps; [ aiohttp-cors mutagen ]; - "tuya" = ps: with ps; [ ]; # missing inputs: tuyaha + "tuya" = ps: with ps; [ tuyaha ]; "twentemilieu" = ps: with ps; [ ]; # missing inputs: twentemilieu "twilio" = ps: with ps; [ aiohttp-cors twilio ]; "twilio_call" = ps: with ps; [ aiohttp-cors twilio ]; "twilio_sms" = ps: with ps; [ aiohttp-cors twilio ]; "twinkly" = ps: with ps; [ ]; # missing inputs: twinkly-client - "twitch" = ps: with ps; [ ]; # missing inputs: python-twitch-client + "twitch" = ps: with ps; [ python-twitch-client ]; "twitter" = ps: with ps; [ ]; # missing inputs: TwitterAPI "ubus" = ps: with ps; [ ]; "ue_smart_radio" = ps: with ps; [ ]; @@ -911,7 +911,7 @@ "vlc_telnet" = ps: with ps; [ ]; # missing inputs: python-telnet-vlc "voicerss" = ps: with ps; [ ]; "volkszaehler" = ps: with ps; [ volkszaehler ]; - "volumio" = ps: with ps; [ ]; # missing inputs: pyvolumio + "volumio" = ps: with ps; [ pyvolumio ]; "volvooncall" = ps: with ps; [ ]; # missing inputs: volvooncall "vultr" = ps: with ps; [ vultr ]; "w800rf32" = ps: with ps; [ ]; # missing inputs: pyW800rf32 @@ -928,7 +928,7 @@ "websocket_api" = ps: with ps; [ aiohttp-cors ]; "wemo" = ps: with ps; [ ]; # missing inputs: pywemo "whois" = ps: with ps; [ python-whois ]; - "wiffi" = ps: with ps; [ ]; # missing inputs: wiffi + "wiffi" = ps: with ps; [ wiffi ]; "wilight" = ps: with ps; [ pywilight ]; "wink" = ps: with ps; [ aiohttp-cors pubnubsub-handler python-wink ]; "wirelesstag" = ps: with ps; [ ]; # missing inputs: wirelesstagpy @@ -950,7 +950,7 @@ "xiaomi" = ps: with ps; [ ha-ffmpeg ]; "xiaomi_aqara" = ps: with ps; [ pyxiaomigateway aiohttp-cors netdisco zeroconf ]; "xiaomi_miio" = ps: with ps; [ construct python-miio ]; - "xiaomi_tv" = ps: with ps; [ ]; # missing inputs: pymitv + "xiaomi_tv" = ps: with ps; [ pymitv ]; "xmpp" = ps: with ps; [ slixmpp ]; "xs1" = ps: with ps; [ ]; # missing inputs: xs1-api-client "yale_smart_alarm" = ps: with ps; [ yalesmartalarmclient ]; diff --git a/pkgs/tools/nix/nix-output-monitor/default.nix b/pkgs/tools/nix/nix-output-monitor/default.nix index b177b9a233ad..1aa6117c2959 100644 --- a/pkgs/tools/nix/nix-output-monitor/default.nix +++ b/pkgs/tools/nix/nix-output-monitor/default.nix @@ -1,21 +1,21 @@ { mkDerivation, ansi-terminal, async, attoparsec, base, containers -, directory, HUnit, mtl, nix-derivation, process, relude, lib -, stm, text, time, unix, fetchFromGitHub +, cassava, directory, HUnit, mtl, nix-derivation, process, relude, lib +, stm, terminal-size, text, time, unix, wcwidth, fetchFromGitHub }: mkDerivation { pname = "nix-output-monitor"; - version = "0.1.0.2"; + version = "1.0.1.0"; src = fetchFromGitHub { owner = "maralorn"; repo = "nix-output-monitor"; - sha256 = "0r4348cbmnpawbfa20qw3wnywiqp0jkl5svzl27jrm2yk2g51509"; - rev = "5bf7534"; + sha256 = "10a3sn5isdb9q13yzdclng35jwfaf4lxrkdxwbhwms1k2ll08qk6"; + rev = "1.0.1.0"; }; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ - ansi-terminal async attoparsec base containers directory mtl - nix-derivation relude stm text time unix + ansi-terminal async attoparsec base cassava containers directory mtl + nix-derivation relude stm terminal-size text time unix wcwidth ]; executableHaskellDepends = [ ansi-terminal async attoparsec base containers directory mtl diff --git a/pkgs/tools/system/gdu/default.nix b/pkgs/tools/system/gdu/default.nix index 7b0b45fedb03..1051d48b8a5c 100644 --- a/pkgs/tools/system/gdu/default.nix +++ b/pkgs/tools/system/gdu/default.nix @@ -6,13 +6,13 @@ buildGoModule rec { pname = "gdu"; - version = "4.6.2"; + version = "4.6.3"; src = fetchFromGitHub { owner = "dundee"; repo = pname; rev = "v${version}"; - sha256 = "sha256-q26NnHSnJ8vVWHwXtFJ90/8xr772x/gW6BRG29wsIeI="; + sha256 = "sha256-vz8qqsFc1CETnrqStLyiGZ6w0jy+y5GlwQQgxdyJ5aY="; }; vendorSha256 = "sha256-kIMd0xzQ+c+jCpX2+qdD/GcFEirR15PMInbEV184EBU="; diff --git a/pkgs/tools/system/tre-command/default.nix b/pkgs/tools/system/tre-command/default.nix index 638caa3c62bc..f9e0e80478d6 100644 --- a/pkgs/tools/system/tre-command/default.nix +++ b/pkgs/tools/system/tre-command/default.nix @@ -2,16 +2,16 @@ rustPlatform.buildRustPackage rec { pname = "tre-command"; - version = "0.3.3"; + version = "0.3.4"; src = fetchFromGitHub { owner = "dduan"; repo = "tre"; rev = "v${version}"; - sha256 = "10c8mpqzpw7m3vrm2vl2rx678z3c37hxpqyh3fn83dlh9f4f0j87"; + sha256 = "0syvhpnw9c5csxv8c4gdfwif9a9vl4rjkwj4mfglgxk227k1y53q"; }; - cargoSha256 = "0jd6cfs2zi2n34kirpsy12l76whaqwm1pkqa57w1ms5z658z07wj"; + cargoSha256 = "056wlxz8hzky8315rnn65nh7dd2yhx5323y3hq64g6aqj52vd734"; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 843d513b1f88..6346ea8f3feb 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2263,6 +2263,8 @@ in enca = callPackage ../tools/text/enca { }; + enigma = callPackage ../games/enigma {}; + ent = callPackage ../tools/misc/ent { }; envconsul = callPackage ../tools/system/envconsul { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index d67b31e9c3d1..88b66b1420e9 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5231,6 +5231,8 @@ in { pyalgotrade = callPackage ../development/python-modules/pyalgotrade { }; + pyalmond = callPackage ../development/python-modules/pyalmond { }; + pyamf = callPackage ../development/python-modules/pyamf { }; pyamg = callPackage ../development/python-modules/pyamg { }; @@ -5462,6 +5464,8 @@ in { pyflakes = callPackage ../development/python-modules/pyflakes { }; + pyflume = callPackage ../development/python-modules/pyflume { }; + pyfma = callPackage ../development/python-modules/pyfma { }; pyfribidi = callPackage ../development/python-modules/pyfribidi { }; @@ -5694,6 +5698,8 @@ in { pymetno = callPackage ../development/python-modules/pymetno { }; + pymitv = callPackage ../development/python-modules/pymitv { }; + pymodbus = callPackage ../development/python-modules/pymodbus { }; pymongo = callPackage ../development/python-modules/pymongo { }; @@ -6487,6 +6493,8 @@ in { python-toolbox = callPackage ../development/python-modules/python-toolbox { }; + python-twitch-client = callPackage ../development/python-modules/python-twitch-client { }; + python-twitter = callPackage ../development/python-modules/python-twitter { }; python-u2flib-host = callPackage ../development/python-modules/python-u2flib-host { }; @@ -6600,6 +6608,8 @@ in { pyvmomi = callPackage ../development/python-modules/pyvmomi { }; + pyvolumio = callPackage ../development/python-modules/pyvolumio { }; + pyvoro = callPackage ../development/python-modules/pyvoro { }; pywal = callPackage ../development/python-modules/pywal { }; @@ -6739,6 +6749,8 @@ in { rasterio = callPackage ../development/python-modules/rasterio { gdal = pkgs.gdal_2; }; # gdal 3.0 not supported yet + ratelimit = callPackage ../development/python-modules/ratelimit { }; + ratelimiter = callPackage ../development/python-modules/ratelimiter { }; raven = callPackage ../development/python-modules/raven { }; @@ -7679,6 +7691,8 @@ in { tag-expressions = callPackage ../development/python-modules/tag-expressions { }; + tahoma-api = callPackage ../development/python-modules/tahoma-api { }; + tarman = callPackage ../development/python-modules/tarman { }; tasklib = callPackage ../development/python-modules/tasklib { }; @@ -7983,6 +7997,8 @@ in { tumpa = callPackage ../development/python-modules/tumpa { }; + tuyaha = callPackage ../development/python-modules/tuyaha { }; + tvdb_api = callPackage ../development/python-modules/tvdb_api { }; tvnamer = callPackage ../development/python-modules/tvnamer { }; @@ -8356,6 +8372,8 @@ in { widgetsnbextension = callPackage ../development/python-modules/widgetsnbextension { }; + wiffi = callPackage ../development/python-modules/wiffi { }; + willow = callPackage ../development/python-modules/willow { }; winacl = callPackage ../development/python-modules/winacl { };