about summary refs log tree commit diff
path: root/pkgs/by-name/op
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/op')
-rw-r--r--pkgs/by-name/op/opcua-commander/package.nix2
-rw-r--r--pkgs/by-name/op/open-scq30/package.nix2
-rw-r--r--pkgs/by-name/op/open-webui/package.nix137
-rw-r--r--pkgs/by-name/op/open62541/package.nix173
-rw-r--r--pkgs/by-name/op/openapi-changes/package.nix2
-rw-r--r--pkgs/by-name/op/openasar/package.nix2
-rw-r--r--pkgs/by-name/op/opencomposite/package.nix12
-rw-r--r--pkgs/by-name/op/openfga-cli/package.nix8
-rw-r--r--pkgs/by-name/op/openfga/package.nix8
-rw-r--r--pkgs/by-name/op/opengv/package.nix2
-rw-r--r--pkgs/by-name/op/openh264/package.nix2
-rw-r--r--pkgs/by-name/op/openmesh/package.nix30
-rw-r--r--pkgs/by-name/op/openorienteering-mapper/package.nix2
-rw-r--r--pkgs/by-name/op/openpgp-card-tools/package.nix46
-rw-r--r--pkgs/by-name/op/openpomodoro-cli/package.nix2
-rw-r--r--pkgs/by-name/op/opensearch-cli/package.nix2
-rw-r--r--pkgs/by-name/op/opensnitch-ui/package.nix2
-rw-r--r--pkgs/by-name/op/opensnitch/package.nix4
-rw-r--r--pkgs/by-name/op/openswitcher/package.nix4
-rw-r--r--pkgs/by-name/op/opentelemetry-cpp/package.nix2
-rw-r--r--pkgs/by-name/op/openturns/package.nix1
-rw-r--r--pkgs/by-name/op/openvas-scanner/package.nix4
-rw-r--r--pkgs/by-name/op/openvr/package.nix2
-rw-r--r--pkgs/by-name/op/openvswitch/generic.nix2
-rw-r--r--pkgs/by-name/op/ophcrack-cli/package.nix73
-rw-r--r--pkgs/by-name/op/opshin/package.nix2
26 files changed, 493 insertions, 35 deletions
diff --git a/pkgs/by-name/op/opcua-commander/package.nix b/pkgs/by-name/op/opcua-commander/package.nix
index aecae5070ed8b..9cbf043832bd7 100644
--- a/pkgs/by-name/op/opcua-commander/package.nix
+++ b/pkgs/by-name/op/opcua-commander/package.nix
@@ -35,7 +35,7 @@ buildNpmPackage rec {
   '';
 
   meta = with lib; {
-    description = "A opcua client with blessed (ncurses)";
+    description = "Opcua client with blessed (ncurses)";
     homepage = "https://github.com/node-opcua/opcua-commander";
     license = licenses.mit;
     maintainers = with maintainers; [ jonboh ];
diff --git a/pkgs/by-name/op/open-scq30/package.nix b/pkgs/by-name/op/open-scq30/package.nix
index 7ab3452bd2df8..3e2e41a15e98d 100644
--- a/pkgs/by-name/op/open-scq30/package.nix
+++ b/pkgs/by-name/op/open-scq30/package.nix
@@ -64,7 +64,7 @@ rustPlatform.buildRustPackage rec {
   '';
 
   meta = with lib; {
-    description = "Cross platform application for controlling settings of Soundcore headphones.";
+    description = "Cross platform application for controlling settings of Soundcore headphones";
     homepage = "https://github.com/Oppzippy/OpenSCQ30";
     changelog = "https://github.com/Oppzippy/OpenSCQ30/blob/${src.rev}/CHANGELOG.md";
     license = licenses.gpl3Only;
diff --git a/pkgs/by-name/op/open-webui/package.nix b/pkgs/by-name/op/open-webui/package.nix
new file mode 100644
index 0000000000000..1292ff3c27923
--- /dev/null
+++ b/pkgs/by-name/op/open-webui/package.nix
@@ -0,0 +1,137 @@
+{
+  lib,
+  buildNpmPackage,
+  fetchFromGitHub,
+  python3,
+  nixosTests,
+}:
+let
+  pname = "open-webui";
+  version = "0.3.5";
+
+  src = fetchFromGitHub {
+    owner = "open-webui";
+    repo = "open-webui";
+    rev = "v${version}";
+    hash = "sha256-copxy9fgHTHfF14bh9ddF4eTWx2GP2Mkw3lr+1NKKkI=";
+  };
+
+  frontend = buildNpmPackage {
+    inherit pname version src;
+
+    npmDepsHash = "sha256-whddW3ThC/zlttqhV3wf15roaCgp0H/BELWLs9/c5Jc=";
+
+    # Disabling `pyodide:fetch` as it downloads packages during `buildPhase`
+    # Until this is solved, running python packages from the browser will not work.
+    postPatch = ''
+      substituteInPlace package.json \
+        --replace-fail "npm run pyodide:fetch && vite build" "vite build" \
+    '';
+
+    env.CYPRESS_INSTALL_BINARY = "0"; # disallow cypress from downloading binaries in sandbox
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out/share
+      cp -a build $out/share/open-webui
+
+      runHook postInstall
+    '';
+  };
+in
+python3.pkgs.buildPythonApplication rec {
+  inherit pname version src;
+  pyproject = true;
+
+  # Not force-including the frontend build directory as frontend is managed by the `frontend` derivation above.
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail ', build = "open_webui/frontend"' ""
+  '';
+
+  env.HATCH_BUILD_NO_HOOKS = true;
+
+  pythonRelaxDeps = true;
+
+  pythonRemoveDeps = [
+    # using `opencv4`
+    "opencv-python-headless"
+    # using `psycopg2` instead
+    "psycopg2-binary"
+  ];
+
+  dependencies = with python3.pkgs; [
+    aiohttp
+    apscheduler
+    argon2-cffi
+    bcrypt
+    beautifulsoup4
+    black
+    boto3
+    chromadb
+    docx2txt
+    duckduckgo-search
+    extract-msg
+    fake-useragent
+    fastapi
+    faster-whisper
+    flask
+    flask-cors
+    fpdf2
+    google-generativeai
+    langchain
+    langchain-chroma
+    langchain-community
+    langfuse
+    markdown
+    opencv4
+    openpyxl
+    pandas
+    passlib
+    peewee
+    peewee-migrate
+    psycopg2
+    pydub
+    pyjwt
+    pymysql
+    pypandoc
+    pypdf
+    python-jose
+    python-multipart
+    python-pptx
+    python-socketio
+    pytube
+    pyxlsb
+    rank-bm25
+    rapidocr-onnxruntime
+    requests
+    sentence-transformers
+    unstructured
+    uvicorn
+    validators
+    xlrd
+    youtube-transcript-api
+  ];
+
+  build-system = with python3.pkgs; [ hatchling ];
+
+  nativeBuildInputs = [ python3.pkgs.pythonRelaxDepsHook ];
+
+  pythonImportsCheck = [ "open_webui" ];
+
+  makeWrapperArgs = [ "--set FRONTEND_BUILD_DIR ${frontend}/share/open-webui" ];
+
+  passthru.tests = {
+    inherit (nixosTests) open-webui;
+  };
+
+  meta = {
+    description = "Full-stack of open-webui. open-webui is a user-friendly WebUI for LLMs (Formerly Ollama WebUI)";
+    homepage = "https://github.com/open-webui/open-webui";
+    changelog = "https://github.com/open-webui/open-webui/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ shivaraj-bh ];
+    mainProgram = "open-webui";
+  };
+}
diff --git a/pkgs/by-name/op/open62541/package.nix b/pkgs/by-name/op/open62541/package.nix
new file mode 100644
index 0000000000000..49099e7b0e73a
--- /dev/null
+++ b/pkgs/by-name/op/open62541/package.nix
@@ -0,0 +1,173 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, check
+, libxcrypt
+, subunit
+, python3Packages
+, nix-update-script
+
+, withDoc ? false
+, graphviz-nox
+
+, withExamples ? false
+
+, withEncryption ? false # or "openssl" or "mbedtls"
+, openssl
+, mbedtls
+
+# for passthru.tests only
+, open62541
+}:
+
+let
+  encryptionBackend = {
+    inherit openssl mbedtls;
+  }."${withEncryption}" or (throw "Unsupported encryption backend: ${withEncryption}");
+in
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "open62541";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    owner = "open62541";
+    repo = "open62541";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-An8Yg6VSelNV/7poLEOjeiIb0+eMoQWG7sYqhytEKMA=";
+    fetchSubmodules = true;
+  };
+
+  cmakeFlags = [
+    (lib.cmakeFeature "OPEN62541_VERSION" finalAttrs.src.rev)
+    (lib.cmakeFeature "UA_NAMESPACE_ZERO" "FULL")
+    (lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic))
+
+    # Note comment near doCheck
+    (lib.cmakeBool "UA_BUILD_UNIT_TESTS" finalAttrs.finalPackage.doCheck)
+    (lib.cmakeBool "UA_ENABLE_ALLOW_REUSEADDR" finalAttrs.finalPackage.doCheck)
+
+    (lib.cmakeBool "UA_BUILD_EXAMPLES" withExamples)
+  ] ++ lib.optionals (withEncryption != false) [
+    (lib.cmakeFeature "UA_ENABLE_ENCRYPTION" (lib.toUpper withEncryption))
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    python3Packages.python
+  ] ++ lib.optionals withDoc (with python3Packages; [
+    sphinx
+    sphinx_rtd_theme
+    graphviz-nox
+  ]);
+
+  buildInputs = lib.optional (withEncryption != false) encryptionBackend;
+
+  buildFlags = [ "all" ] ++ lib.optional withDoc "doc";
+
+  # Tests must normally be disabled because they require
+  # -DUA_ENABLE_ALLOW_REUSEADDR=ON. The option must not be used in production,
+  # since it is a security risk.
+  # See https://github.com/open62541/open62541/issues/6407
+  doCheck = false;
+
+  checkInputs = [
+    check
+    libxcrypt
+    subunit
+  ];
+
+  # Tests must run sequentially to avoid port collisions on localhost
+  enableParallelChecking = false;
+
+  preCheck = let
+    disabledTests = [
+      # error "Could not create a raw Ethernet socket (are you root?)"
+      "check_eventloop_eth"
+
+      # Cannot set socket option IP_ADD_MEMBERSHIP
+      "check_pubsub_publish"
+      "check_pubsub_publish_json"
+      "check_pubsub_connection_udp"
+      "check_pubsub_get_state"
+      "check_pubsub_publisherid"
+      "check_pubsub_subscribe"
+      "check_pubsub_publishspeed"
+      "check_pubsub_subscribe_config_freeze"
+      "check_pubsub_subscribe_rt_levels"
+      "check_pubsub_multiple_subscribe_rt_levels"
+      "check_pubsub_config_freeze"
+      "check_pubsub_publish_rt_levels"
+
+      # Could not find the interface
+      "check_pubsub_connection_ethernet"
+      "check_pubsub_connection_ethernet_etf"
+      "check_pubsub_publish_ethernet_etf"
+      "check_pubsub_informationmodel"
+      "check_pubsub_informationmodel_methods"
+    ];
+    regex = "^(${builtins.concatStringsSep "|" disabledTests})\$";
+  in lib.optionalString (disabledTests != []) ''
+    checkFlagsArray+=(ARGS="-E ${lib.escapeRegex regex}")
+  '';
+
+  postInstall = lib.optionalString withDoc ''
+    # excluded files, see doc/CMakeLists.txt
+    rm -r doc/{_sources/,CMakeFiles/,cmake_install.cmake}
+
+    # doc is not installed automatically
+    mkdir -p $out/share/doc/open62541
+    cp -r doc/ $out/share/doc/open62541/html
+  '' + lib.optionalString withExamples ''
+    # install sources of examples
+    mkdir -p $out/share/open62541
+    cp -r ../examples $out/share/open62541
+
+    ${lib.optionalString (!stdenv.hostPlatform.isWindows) ''
+    # remove .exe suffix
+    mv -v $out/bin/ua_server_ctt.exe $out/bin/ua_server_ctt
+    ''}
+
+    # remove duplicate libraries in build/bin/, which cause forbidden
+    # references to /build/ in ua_server_ctt
+    rm -r bin/libopen62541*
+  '';
+
+  passthru.updateScript = nix-update-script { };
+
+  passthru.tests = let
+    open62541Full = encBackend: (open62541.overrideAttrs (_: {
+      doCheck = true;
+    })).override {
+      withDoc = true;
+      # if withExamples, one of the example currently fails to build
+      #withExamples = true;
+      withEncryption = encBackend;
+    };
+  in {
+    open62541WithTests = finalAttrs.finalPackage.overrideAttrs (_: { doCheck = true; });
+    open62541Full = open62541Full false;
+    open62541Full-openssl = open62541Full "openssl";
+    open62541Full-mbedtls = open62541Full "mbedtls";
+  };
+
+  meta = with lib; {
+    description = "Open source implementation of OPC UA";
+    longDescription = ''
+      open62541 (http://open62541.org) is an open source and free implementation
+      of OPC UA (OPC Unified Architecture) written in the common subset of the
+      C99 and C++98 languages.
+      The library is usable with all major compilers and provides the necessary
+      tools to implement dedicated OPC UA clients and servers, or to integrate
+      OPC UA-based communication into existing applications.
+    '';
+    homepage = "https://www.open62541.org";
+    changelog = "https://github.com/open62541/open62541/releases/tag/v${finalAttrs.version}";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ panicgh ];
+    platforms = platforms.linux;
+  };
+})
diff --git a/pkgs/by-name/op/openapi-changes/package.nix b/pkgs/by-name/op/openapi-changes/package.nix
index efeee6ce34131..0020856ee9751 100644
--- a/pkgs/by-name/op/openapi-changes/package.nix
+++ b/pkgs/by-name/op/openapi-changes/package.nix
@@ -32,7 +32,7 @@ buildGoModule rec {
   vendorHash = "sha256-gaBVwrSaIwe1eh8voq928cxM/d0urVUF0OUwWZb2fR8=";
 
   meta = with lib; {
-    description = "The world's sexiest OpenAPI breaking changes detector";
+    description = "World's sexiest OpenAPI breaking changes detector";
     homepage = "https://pb33f.io/openapi-changes/";
     changelog = "https://github.com/pb33f/openapi-changes/releases/tag/v${version}";
     license = licenses.gpl3;
diff --git a/pkgs/by-name/op/openasar/package.nix b/pkgs/by-name/op/openasar/package.nix
index a03e3205ffc39..da858575ab06c 100644
--- a/pkgs/by-name/op/openasar/package.nix
+++ b/pkgs/by-name/op/openasar/package.nix
@@ -55,7 +55,7 @@ stdenv.mkDerivation (finalAttrs: {
   };
 
   meta = with lib; {
-    description = "Open-source alternative of Discord desktop's \"app.asar\".";
+    description = "Open-source alternative of Discord desktop's \"app.asar\"";
     homepage = "https://openasar.dev";
     license = licenses.agpl3Only;
     maintainers = with maintainers; [
diff --git a/pkgs/by-name/op/opencomposite/package.nix b/pkgs/by-name/op/opencomposite/package.nix
index 8e58c90dfdf6e..5607d55a0be6c 100644
--- a/pkgs/by-name/op/opencomposite/package.nix
+++ b/pkgs/by-name/op/opencomposite/package.nix
@@ -17,13 +17,13 @@
 
 stdenv.mkDerivation {
   pname = "opencomposite";
-  version = "0-unstable-2024-05-08";
+  version = "0-unstable-2024-06-01";
 
   src = fetchFromGitLab {
     owner = "znixian";
     repo = "OpenOVR";
-    rev = "5ddd6024efafa82c7a432c9dd8a67e3d5c3f9b38";
-    hash = "sha256-m6Xhi6xlDWiVqtYyxpQP2vp5JsB2EKsoXkmd0IYtPQ8=";
+    rev = "49c4b89579fd49c5b40b72924d6593fcd47c5065";
+    hash = "sha256-Aubf1tupyXzmff3ho/yKx9B3uJ8I0aoZi9zRV3A89Pc=";
   };
 
   nativeBuildInputs = [
@@ -41,8 +41,10 @@ stdenv.mkDerivation {
   ];
 
   cmakeFlags = [
-    "-DUSE_SYSTEM_OPENXR=ON"
-    "-DUSE_SYSTEM_GLM=ON"
+    (lib.cmakeBool "USE_SYSTEM_OPENXR" true)
+    (lib.cmakeBool "USE_SYSTEM_GLM" true)
+    # debug logging macros cause format-security warnings
+    (lib.cmakeFeature "CMAKE_CXX_FLAGS" "-Wno-error=format-security")
   ];
 
   installPhase = ''
diff --git a/pkgs/by-name/op/openfga-cli/package.nix b/pkgs/by-name/op/openfga-cli/package.nix
index 1cdbfaca786dd..4c08f32b3f749 100644
--- a/pkgs/by-name/op/openfga-cli/package.nix
+++ b/pkgs/by-name/op/openfga-cli/package.nix
@@ -7,7 +7,7 @@
 
 let
   pname = "openfga-cli";
-  version = "0.4.0";
+  version = "0.4.1";
 in
 
 buildGoModule {
@@ -17,10 +17,10 @@ buildGoModule {
     owner = "openfga";
     repo = "cli";
     rev = "v${version}";
-    hash = "sha256-nwzUBzu8c8kuSTbjwOB1mCFMLF1zoUReXofXeBOAO1U=";
+    hash = "sha256-Eex2Bts0A6Lu5M626idVK3lqVCX+2WosD8YrQP4DuC8=";
   };
 
-  vendorHash = "sha256-3fElvsy248lRwmIKWv8ac6BLJ1y5Qyr+kKh/1vprmvo=";
+  vendorHash = "sha256-cr9Y72ilUZxAjOIopx7VmZVtE8TxJhxdKSJIj6NawRI=";
 
   nativeBuildInputs = [ installShellFiles ];
 
@@ -46,7 +46,7 @@ buildGoModule {
   '';
 
   meta = {
-    description = "A cross-platform CLI to interact with an OpenFGA server";
+    description = "Cross-platform CLI to interact with an OpenFGA server";
     homepage = "https://github.com/openfga/cli";
     license = lib.licenses.asl20;
     mainProgram = "fga";
diff --git a/pkgs/by-name/op/openfga/package.nix b/pkgs/by-name/op/openfga/package.nix
index 3b034bb11643d..e4421c334df0f 100644
--- a/pkgs/by-name/op/openfga/package.nix
+++ b/pkgs/by-name/op/openfga/package.nix
@@ -7,7 +7,7 @@
 
 let
   pname = "openfga";
-  version = "1.5.3";
+  version = "1.5.4";
 in
 
 buildGoModule {
@@ -17,10 +17,10 @@ buildGoModule {
     owner = "openfga";
     repo = "openfga";
     rev = "v${version}";
-    hash = "sha256-+ECfBG0Z1XnopMPbq9jngcZ3lcSFOIomWo5iD0T1teQ=";
+    hash = "sha256-0K4z5CPNx+MVJ1PeB8rmO8+6hDGZ3ZALTFBWwR2Xl1k=";
   };
 
-  vendorHash = "sha256-MyoqdmNtpsoT08BKA9DPlpldIEXb82qzeXnW4KQXTiE=";
+  vendorHash = "sha256-sihNWuxwptBrVO9sXD2YNP20mgwYU2y4NSb8wqVWmCk=";
 
   nativeBuildInputs = [ installShellFiles ];
 
@@ -49,7 +49,7 @@ buildGoModule {
   '';
 
   meta = {
-    description = "A high performance and flexible authorization/permission engine built for developers and inspired by Google Zanzibar";
+    description = "High performance and flexible authorization/permission engine built for developers and inspired by Google Zanzibar";
     homepage = "https://openfga.dev/";
     license = lib.licenses.asl20;
     mainProgram = "openfga";
diff --git a/pkgs/by-name/op/opengv/package.nix b/pkgs/by-name/op/opengv/package.nix
index ffe10a4d732bb..a0025a29dba77 100644
--- a/pkgs/by-name/op/opengv/package.nix
+++ b/pkgs/by-name/op/opengv/package.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: {
   ];
 
   meta = {
-    description = "A collection of computer vision methods for solving geometric vision problems";
+    description = "Collection of computer vision methods for solving geometric vision problems";
     homepage = "https://github.com/laurentkneip/opengv";
     license = lib.licenses.bsd2;
     longDescription = ''OpenGV is a collection of computer vision methods for solving
diff --git a/pkgs/by-name/op/openh264/package.nix b/pkgs/by-name/op/openh264/package.nix
index 0ece02c3a2b3d..c8eed276e1039 100644
--- a/pkgs/by-name/op/openh264/package.nix
+++ b/pkgs/by-name/op/openh264/package.nix
@@ -39,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     homepage = "https://www.openh264.org";
-    description = "A codec library which supports H.264 encoding and decoding";
+    description = "Codec library which supports H.264 encoding and decoding";
     changelog = "https://github.com/cisco/openh264/releases/tag/${finalAttrs.src.rev}";
     license = with lib.licenses; [ bsd2 ];
     maintainers = with lib.maintainers; [ AndersonTorres ];
diff --git a/pkgs/by-name/op/openmesh/package.nix b/pkgs/by-name/op/openmesh/package.nix
new file mode 100644
index 0000000000000..c391517d60441
--- /dev/null
+++ b/pkgs/by-name/op/openmesh/package.nix
@@ -0,0 +1,30 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitLab,
+  cmake,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "openmesh";
+  version = "11.0.0";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.vci.rwth-aachen.de:9000";
+    owner = "OpenMesh";
+    repo = "OpenMesh";
+    rev = "OpenMesh-${lib.versions.majorMinor finalAttrs.version}";
+    fetchSubmodules = true;
+    sha256 = "sha256-1FmAieCaskKaaAWjgEXr/CWpFxrhB2Rca1sXpxLrQHw=";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = with lib; {
+    homepage = "https://www.graphics.rwth-aachen.de/software/openmesh/";
+    description = "Generic and efficient polygon mesh data structure";
+    maintainers = with maintainers; [ yzx9 ];
+    platforms = platforms.all;
+    license = licenses.bsd3;
+  };
+})
diff --git a/pkgs/by-name/op/openorienteering-mapper/package.nix b/pkgs/by-name/op/openorienteering-mapper/package.nix
index eef5c0f917911..4a1519337034d 100644
--- a/pkgs/by-name/op/openorienteering-mapper/package.nix
+++ b/pkgs/by-name/op/openorienteering-mapper/package.nix
@@ -84,7 +84,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://www.openorienteering.org/apps/mapper/";
-    description = "An orienteering mapmaking program";
+    description = "Orienteering mapmaking program";
     changelog = "https://github.com/OpenOrienteering/mapper/releases/tag/v${version}";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ mpickering sikmir ];
diff --git a/pkgs/by-name/op/openpgp-card-tools/package.nix b/pkgs/by-name/op/openpgp-card-tools/package.nix
new file mode 100644
index 0000000000000..a0dbd7e10a253
--- /dev/null
+++ b/pkgs/by-name/op/openpgp-card-tools/package.nix
@@ -0,0 +1,46 @@
+{ lib
+, stdenv
+, rustPlatform
+, fetchFromGitea
+, pkg-config
+, pcsclite
+, testers
+, openpgp-card-tools
+, darwin
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "openpgp-card-tools";
+  version = "0.11.2";
+
+  src = fetchFromGitea {
+    domain = "codeberg.org";
+    owner = "openpgp-card";
+    repo = "openpgp-card-tools";
+    rev = "v${version}";
+    hash = "sha256-4PRUBzVy1sb15sYsbitBrOfQnsdbGKoR2OA4EjSc8B8=";
+  };
+
+  cargoHash = "sha256-Jm1181WQfYZPKnu0f2om/hxkJ8Bm5AA/3IwBgZkpF0I=";
+
+  nativeBuildInputs = [ pkg-config rustPlatform.bindgenHook ];
+
+  buildInputs = [ pcsclite ] ++ lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.PCSC
+    darwin.apple_sdk.frameworks.Security
+  ];
+
+  passthru = {
+    tests.version = testers.testVersion {
+      package = openpgp-card-tools;
+    };
+  };
+
+  meta = with lib; {
+    description = "Tool for inspecting and configuring OpenPGP cards";
+    homepage = "https://codeberg.org/openpgp-card/openpgp-card-tools";
+    license = with licenses ;[ asl20 /* OR */ mit ];
+    maintainers = with maintainers; [ nickcao ];
+    mainProgram = "oct";
+  };
+}
diff --git a/pkgs/by-name/op/openpomodoro-cli/package.nix b/pkgs/by-name/op/openpomodoro-cli/package.nix
index 5e29d1e1c7734..e977bbcfba567 100644
--- a/pkgs/by-name/op/openpomodoro-cli/package.nix
+++ b/pkgs/by-name/op/openpomodoro-cli/package.nix
@@ -23,7 +23,7 @@ buildGoModule rec {
   ];
 
   meta = with lib; {
-    description = "A command-line Pomodoro tracker which uses the Open Pomodoro Format";
+    description = "Command-line Pomodoro tracker which uses the Open Pomodoro Format";
     homepage = "https://github.com/open-pomodoro/openpomodoro-cli";
     changelog = "https://github.com/open-pomodoro/openpomodoro-cli/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/by-name/op/opensearch-cli/package.nix b/pkgs/by-name/op/opensearch-cli/package.nix
index ce0a671358045..0cfe572a02f80 100644
--- a/pkgs/by-name/op/opensearch-cli/package.nix
+++ b/pkgs/by-name/op/opensearch-cli/package.nix
@@ -27,7 +27,7 @@ buildGoModule rec {
   '';
 
   meta = {
-    description = "A full-featured command line interface (CLI) for OpenSearch.";
+    description = "Full-featured command line interface (CLI) for OpenSearch";
     homepage = "https://github.com/opensearch-project/opensearch-cli";
     license = lib.licenses.asl20;
     mainProgram = "opensearch-cli";
diff --git a/pkgs/by-name/op/opensnitch-ui/package.nix b/pkgs/by-name/op/opensnitch-ui/package.nix
index a22767daacdc2..7628df552c76d 100644
--- a/pkgs/by-name/op/opensnitch-ui/package.nix
+++ b/pkgs/by-name/op/opensnitch-ui/package.nix
@@ -66,7 +66,7 @@ python3Packages.buildPythonApplication rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "An application firewall";
+    description = "Application firewall";
     mainProgram = "opensnitch-ui";
     homepage = "https://github.com/evilsocket/opensnitch/wiki";
     license = licenses.gpl3Only;
diff --git a/pkgs/by-name/op/opensnitch/package.nix b/pkgs/by-name/op/opensnitch/package.nix
index df8647bdeb054..dec178c4031c6 100644
--- a/pkgs/by-name/op/opensnitch/package.nix
+++ b/pkgs/by-name/op/opensnitch/package.nix
@@ -1,13 +1,11 @@
 { buildGoModule
 , fetchFromGitHub
-, fetchpatch
 , protobuf
 , go-protobuf
 , pkg-config
 , libnetfilter_queue
 , libnfnetlink
 , lib
-, coreutils
 , iptables
 , makeWrapper
 , protoc-gen-go-grpc
@@ -91,7 +89,7 @@ buildGoModule rec {
   };
 
   meta = with lib; {
-    description = "An application firewall";
+    description = "Application firewall";
     mainProgram = "opensnitchd";
     homepage = "https://github.com/evilsocket/opensnitch/wiki";
     license = licenses.gpl3Only;
diff --git a/pkgs/by-name/op/openswitcher/package.nix b/pkgs/by-name/op/openswitcher/package.nix
index fb47a9f95a5a8..2e9eb94f069bf 100644
--- a/pkgs/by-name/op/openswitcher/package.nix
+++ b/pkgs/by-name/op/openswitcher/package.nix
@@ -14,14 +14,14 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "openswitcher";
-  version = "0.10.0";
+  version = "0.11.0";
   format = "other";
 
   src = fetchFromSourcehut {
     owner = "~martijnbraam";
     repo = "pyatem";
     rev = version;
-    hash = "sha256-O+f1vVwfGJjLem25hsYE1Q1V4vzjrc0HxTBUCANCEwE=";
+    hash = "sha256-VBuOnUVB6n8ahVtunubgao9jHPu9ncX0dhDT0PdSFhU=";
   };
 
   outputs = [
diff --git a/pkgs/by-name/op/opentelemetry-cpp/package.nix b/pkgs/by-name/op/opentelemetry-cpp/package.nix
index 5bc1a46ad6ce7..dcb01890a0c32 100644
--- a/pkgs/by-name/op/opentelemetry-cpp/package.nix
+++ b/pkgs/by-name/op/opentelemetry-cpp/package.nix
@@ -69,7 +69,7 @@ stdenv.mkDerivation (finalAttrs: {
   passthru.updateScript = nix-update-script { };
 
   meta = {
-    description = "The OpenTelemetry C++ Client Library";
+    description = "OpenTelemetry C++ Client Library";
     homepage = "https://github.com/open-telemetry/opentelemetry-cpp";
     license = [ lib.licenses.asl20 ];
     maintainers = with lib.maintainers; [ jfroche ];
diff --git a/pkgs/by-name/op/openturns/package.nix b/pkgs/by-name/op/openturns/package.nix
index 152714133fa7a..e6f3fb3a5ff7f 100644
--- a/pkgs/by-name/op/openturns/package.nix
+++ b/pkgs/by-name/op/openturns/package.nix
@@ -7,7 +7,6 @@
   darwin,
   dlib,
   fetchFromGitHub,
-  fetchpatch,
   hdf5,
   hmat-oss,
   ipopt,
diff --git a/pkgs/by-name/op/openvas-scanner/package.nix b/pkgs/by-name/op/openvas-scanner/package.nix
index f732a8226ce17..3b75b44a6ef81 100644
--- a/pkgs/by-name/op/openvas-scanner/package.nix
+++ b/pkgs/by-name/op/openvas-scanner/package.nix
@@ -31,13 +31,13 @@
 
 stdenv.mkDerivation rec {
   pname = "openvas-scanner";
-  version = "23.3.0";
+  version = "23.4.1";
 
   src = fetchFromGitHub {
     owner = "greenbone";
     repo = "openvas-scanner";
     rev = "refs/tags/v${version}";
-    hash = "sha256-CkwDhHPdTbXNrqY/obg1rOtGB1HC+fUwZ5+5d82vlV4=";
+    hash = "sha256-D0HQ00NCep0hAQ+dDWoinIxivloqgjPbp2lUunTxoyM=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/op/openvr/package.nix b/pkgs/by-name/op/openvr/package.nix
index 418004909ae6e..7d309065df9ee 100644
--- a/pkgs/by-name/op/openvr/package.nix
+++ b/pkgs/by-name/op/openvr/package.nix
@@ -61,7 +61,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     broken = stdenv.isDarwin;
-    description = "An API and runtime that allows access to VR hardware from multiple vendors without requiring that applications have specific knowledge of the hardware they are targeting";
+    description = "API and runtime that allows access to VR hardware from multiple vendors without requiring that applications have specific knowledge of the hardware they are targeting";
     homepage = "https://github.com/ValveSoftware/openvr";
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ Scrumplex ];
diff --git a/pkgs/by-name/op/openvswitch/generic.nix b/pkgs/by-name/op/openvswitch/generic.nix
index 9833661ef5cdc..b3c00ab18203e 100644
--- a/pkgs/by-name/op/openvswitch/generic.nix
+++ b/pkgs/by-name/op/openvswitch/generic.nix
@@ -121,7 +121,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     changelog = "https://www.openvswitch.org/releases/NEWS-${version}.txt";
-    description = "A multilayer virtual switch";
+    description = "Multilayer virtual switch";
     longDescription = ''
       Open vSwitch is a production quality, multilayer virtual switch
       licensed under the open source Apache 2.0 license. It is
diff --git a/pkgs/by-name/op/ophcrack-cli/package.nix b/pkgs/by-name/op/ophcrack-cli/package.nix
new file mode 100644
index 0000000000000..bbc7b8e199788
--- /dev/null
+++ b/pkgs/by-name/op/ophcrack-cli/package.nix
@@ -0,0 +1,73 @@
+{ lib
+, stdenv
+, fetchurl
+, fetchpatch
+, autoreconfHook
+, libtool
+, zlib
+, pkg-config
+, openssl
+, freetype
+, expat
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ophcrack";
+  version = "3.8.0";
+
+  src = fetchurl {
+    url = "https://sourceforge.net/projects/ophcrack/files/ophcrack/3.8.0/ophcrack-3.8.0.tar.bz2";
+    hash = "sha256-BIpt9XmDo6WjGsfE7BLfFqpJ5lKilnbZPU75WdUK7uA=";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    libtool
+    expat
+  ];
+
+  buildInputs = [
+    zlib
+    openssl
+    freetype
+    pkg-config
+  ];
+
+  patches = [
+    (fetchpatch {
+      url = "https://salsa.debian.org/pkg-security-team/ophcrack/-/raw/c60118b40802e1162dcebfe5f881cf973b2334d3/debian/patches/fix_spelling_error.diff";
+      hash = "sha256-Fc044hTU4Mtdym+HukGAwGzaLm7aVzV9KpvHvFUG2Sc=";
+    })
+    (fetchpatch {
+      url = "https://salsa.debian.org/pkg-security-team/ophcrack/-/raw/e19d993a7dbf131d13128366e2aac270a685befc/debian/patches/qmake_crossbuild.diff";
+      hash = "sha256-sOKXOBpAYGLacU6IxjRzy3HCnGm4DFowDL2qP+DzG8M=";
+    })
+  ];
+
+  configureFlags = [
+    "--with-libssl=yes"
+    "--disable-gui"
+  ];
+
+  buildPhase = ''
+    runHook preBuild
+
+    make
+
+    runHook postBuild
+  '';
+
+  postInstall = ''
+    mv $out/bin/ophcrack $out/bin/ophcrack-cli
+  '';
+
+  meta = with lib; {
+    description = "Free Windows password cracker based on rainbow tables";
+    homepage = "https://ophcrack.sourceforge.io";
+    license = with licenses; [ gpl2Plus ];
+    maintainers = with maintainers; [ tochiaha ];
+    mainProgram = "ophcrack-cli";
+    platforms = platforms.all;
+  };
+}
+
diff --git a/pkgs/by-name/op/opshin/package.nix b/pkgs/by-name/op/opshin/package.nix
index 12fd3671cfee6..d7fdf72a8163d 100644
--- a/pkgs/by-name/op/opshin/package.nix
+++ b/pkgs/by-name/op/opshin/package.nix
@@ -28,7 +28,7 @@ python3.pkgs.buildPythonApplication rec {
   ];
 
   meta = with lib; {
-    description = "A simple pythonic programming language for Smart Contracts on Cardano";
+    description = "Simple pythonic programming language for Smart Contracts on Cardano";
     homepage = "https://opshin.dev";
     license = licenses.mit;
     maintainers = with maintainers; [ t4ccer ];