Pgp and qt / pipewire problem under kde plasma

I am a veteran Linux user but am new to nixos. Eventually I want to use a very simple setup - wayland+labwc+kitty, but for now I’m using kde plasma. When I try to open a pdf document, for example with okular, I get the following errors echoed to the shell:

qt.multimedia.symbolsresolver: Couldn’t load pipewire-0.3 library
qt.multimedia.symbolsresolver: Couldn’t resolve pipewire-0.3 symbols
Trying to enable pgp signatures, but pgp not enabled in this build

However, when I examine my system, pipewire-0.3 libraries are indeed present in the nix-store, and I have tried several ways to enable pgp in my /etc/nixos/configuration.nix file, all to no avail.

I do not actually need any of the above to work, or to go away for that matter, since I can indeed open pdf documents and read them just fine. But I find it unsettling that there is so much conflicting documentation and none of the suggestions actually work.

If anyone actually knows how to fix these things, please let me know…

How did you install KDE? Share the exact code you used. And libraries being present “in the store” is irrelevant btw, the The application in question needs to be linked against the specific libraries that it’s expecting.

This means that the program in question is built without PGP support, for me this looks more like a warning, not an error.

Thanks for the reply. I wanted to make my nixos trial as dead simple as possible, so used the graphical installer and selected kde plasma. This is all there is in /etc/nixos/configuration.nix:

services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;

which was evidently created that way (I didn’t do it). Basically everything worked out of the box, so I didn’t give it much more thought and just concentrated on adding in a few more things to my build, and in setting the stage to eventually migrate to labwc.

In that case, how did you install okular?

Those few more things may well be the issue, share everything in configuration.nix. That will let us reproduce the issue as well.

Use a markdown code block while you’re at it, then discourse will make a little scrollable box that is correctly formatted (and highlighted if you specify nix as the highlighting hint).

I didn’t. I.e.,

$ cat /etc/nixos/configuration.nix | grep okular

$

Needs some cleaning and probably doesn’t read well, but here is my config file, fwiw:

# Edit this configuration file to define what should be installed on
# your system.  Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{ config, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];

  ################################################################
  # Bootloader
  ################################################################
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  ################################################################################
  # NETWORKING SECTION ###########################################################
  ################################################################################

  networking.hostName = "laptop";  #"nixos"; # Define your hostname.
  #networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.

  # Configure network proxy if necessary
  # networking.proxy.default = "http://user:password@proxy:port/";
  # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";

  # Enable networking
  networking.networkmanager.enable = true;

  ###########################################
  # TIME ZONE and setup #####################
  ###########################################
 
  # Set your time zone.
  time.timeZone = "America/New_York";

  # Select internationalisation properties.
  i18n.defaultLocale = "en_US.UTF-8";

  i18n.extraLocaleSettings = {
    LC_ADDRESS = "en_US.UTF-8";
    LC_IDENTIFICATION = "en_US.UTF-8";
    LC_MEASUREMENT = "en_US.UTF-8";
    LC_MONETARY = "en_US.UTF-8";
    LC_NAME = "en_US.UTF-8";
    LC_NUMERIC = "en_US.UTF-8";
    LC_PAPER = "en_US.UTF-8";
    LC_TELEPHONE = "en_US.UTF-8";
    LC_TIME = "en_US.UTF-8";
  };

  ####################################################################
  # SERVICES SECTION #################################################
  ####################################################################

  # Enable the X11 windowing system ##################################
  # You can disable this if you're only using the Wayland session.
  #services.xserver.enable = true;

  #services.xserver = {
  #  enable = true;
  #  #windowManager.qtile.enable = true;
  #  displayManager.sessionCommands = ''
  #  xwallpaper --zoom ~/Downloads/background1.jpg
  #  xset r rate 200 35 &
  #  '';
  #  };
  #services.picom = {
  #  enable = true;
  #  backend = "glx";
  #  fade = true;
  #  };
  
  # Configure keymap in X11
  #services.xserver.xkb = {
  #  layout = "us";
  #  variant = "";
  #};

  # Enable Desktop Environments ######################################
  #services.displayManager.sddm.wayland.enable = true;
  services.displayManager.sddm.enable = true;
  services.desktopManager.plasma6.enable = true;
  #services.xserver.windowManager.openbox.enable = true;

  # Enable locate ####################################################
  services.locate.enable = true;
  services.locate.package = pkgs.mlocate;

  # Enable CUPS ##################################################
  services.printing.enable = true;

  #services.pipewire.systemWide = true;
  #services.pipewire.pulse.enable = true;

  #users.users.myservice1.extraGroups = [ "pipewire" ];
  #systemd.services.myservice2.serviceConfig.SupplementaryGroups = [ "pipewire" ];
 
  # Enable sound with pipewire ####################################
  services.pulseaudio.enable = false;
  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
    wireplumber.enable = true;
    # If you want to use JACK applications, uncomment this
    #jack.enable = true;

    # use the example session manager (no others are packaged yet so this is enabled by default,
    # no need to redefine it in your config for now)
    #media-session.enable = true;
  };

  # Enable touchpad support (enabled default in most desktopManager).
  #services.xserver.libinput.enable = true;

  # Enable the OpenSSH daemon #######################################
  # services.openssh.enable = true;

  services.gvfs.enable = true;
  services.udisks2.enable = true;


  # SMART CARD STUFF #################################################
  services.pcscd.enable = true;
  environment.etc."pkcs11/modules/opensc-pkcs11".text = ''
    module: ${pkgs.opensc}/lib/opensc-pkcs11.so
    critical: yes
  '';
  security.pki.certificateFiles = [
    /home/djg/Downloads/Certificates_PKCS7_v5_14_DoD/GROUPREPLACE_CAs.pem
  ];


  ##########################################################################
  # Define a user account. Don't forget to set a password with ‘passwd’.
  ##########################################################################
  users.users.djg = {
    isNormalUser = true;
    description = "me";
    extraGroups = [ "networkmanager" "wheel" "storage" ];
    packages = with pkgs; [
    tree
    kdePackages.kate
    ];
  };

  ###########################################################################
  # "programs" SECTION ######################################################
  ###########################################################################

  #programs.labwc.enable = true;

  # THIS IS HOW ALIASES GET DEFINED IN NIXOS... ###############################
  programs.bash = {
    enable = true;
    shellAliases = {
      ll = "ls -l";
      rebuild = "sudo nixos-rebuild switch";
      # Add your custom aliases here:
      c = "clear";
      lt = "ls -ltr";
      lsal = "ls -al";
      more = "less";
   };
  };

  # Install firefox ##########################################################
  programs.firefox = {
    enable = true;
    policies = {
      SecurityDevices = {
        p11-kit-proxy = "${pkgs.p11-kit}/lib/p11-kit-proxy.so";
      };
    };
  };

  # Wrapper script to tell to Chrome/Chromium to use p11-kit-proxy to load
  # security devices, so they can be used for TLS client auth.
  # Each user needs to run this themselves, it does not work on a system level
  # due to a bug in Chromium:
  #
  # https://bugs.chromium.org/p/chromium/issues/detail?id=16387
  #(writeShellScriptBin "setup-browser-eid" ''
  #  NSSDB="''${HOME}/.pki/nssdb"
  #  mkdir -p ''${NSSDB}
  #   ${nssTools}/bin/modutil -force -dbdir sql:$NSSDB -add p11-kit-proxy \
  #    -libfile ${p11-kit}/lib/p11-kit-proxy.so
  #'')

  #programs.vim.enable = true;

  ############################################################################################################
  # PACKAGES #################################################################################################
  ############################################################################################################

  # Allow unfree packages
  nixpkgs.config.allowUnfree = true;

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
    vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
    wget
    emacs
    emacs-nox 
    neofetch
    mlocate
    kicad
    inetutils
    #openbox
    #openbox-menu
    #obconf
    #xscreensaver
    #xwallpaper
    #labwc
    #waylock
    #labwc-tweaks
    #labwc-menu-generator
    pcmanfm
    texliveFull
    texlivePackages.newtx
    texlivePackages.newtxtt
    texlivePackages.newtxsf
    texlivePackages.latex-fonts
    net-tools
    iproute2
    networkmanagerapplet
    busybox
    htop
    btop
    lshw
    vlc
    google-chrome
    gcc
    gfortran
    gedit
    hsetroot
    feh
    #xv
    #imagemagick
    #xxdiff
    virtualbox
    octaveFull
    git
    #rxvt-unicode
    kitty
    tmux
    lm_sensors
    pcsclite
    ccid
    opensc
    pcsc-tools
    openssl
    p11-kit
    nssTools
  ];

  #######################################################################
  # FONTS ###############################################################
  #######################################################################

  # fonts.packages = with pkgs; [
  #   jetbrains-mono
  # ];

  #######################################################################
  # Some programs need SUID wrappers, can be configured further or are
  # started in user sessions.
  #######################################################################
  programs.mtr.enable = true;
  programs.gnupg.agent = {
    enable = true;
    pinentryPackage = pkgs.pinentry-qt;
    enableSSHSupport = true;
  };
  #programs.gnupg.agent.pinentryPackage = pkgs.pinentry-qt; 


  ########################################################################
  # PORTS / FIREWALL #####################################################
  ########################################################################

  # Open ports in the firewall.
  # networking.firewall.allowedTCPPorts = [ ... ];
  # networking.firewall.allowedUDPPorts = [ ... ];
  # Or disable the firewall altogether.
  networking.firewall.enable = true;


  ##################
  # END ############
  ##################
  
  # This value determines the NixOS release from which the default
  # settings for stateful data, like file locations and database versions
  # on your system were taken. It‘s perfectly fine and recommended to leave
  # this value at the release version of the first install of this system.
  # Before changing this value read the documentation for this option
  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
  system.stateVersion = "25.11"; # Did you read the comment?

}

Can you share the output of which okular and realpath $(which okular)?

$ which okular
/run/current-system/sw/bin/okular

$ realpath $(which okular)

/nix/store/rkakzfh4q616vdxdyflii60a0hkjqyc8-okular-25.08.3/bin/okular

Huh I guess it’s added here:

Report it as a bug in the gh repo then?

1 Like

FWIW, since it’s all working, it’s probably just a subtle packaging bug in okular. Most likely some optional libraries aren’t included that okular can use to e.g. show signature info for signed files or play media.

So yeah, file an issue.