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.
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:
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.
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).
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?
}
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.