(Edited since the issue is now different)
Problem Statement
- I am really confused whether
expressvpnd
(the daemon) exists on my system. It exists in path and can attempt to call resolv.conf (unsuccessfully), but the symlink in the derivation path is seemingly broken. - If the symlink is broken, I don’t understand why it is broken.
- Ultimately I want to resolve the
Unable to locate executable
error.
Context
I enabled expressvpn in systemPackages (in configuration.nix), and also made services.expressvpn.enabe = true;
.
- The package module pulls from this nix nixpkgs/pkgs/by-name/ex/expressvpn/package.nix at 130595eba61081acde9001f43de3248d8888ac4a · NixOS/nixpkgs · GitHub
- The service module is declared in this nix nixpkgs/nixos/modules/services/networking/expressvpn.nix at 130595eba61081acde9001f43de3248d8888ac4a · NixOS/nixpkgs · GitHub.
- After successful rebuilding, I’m getting this error in service daemon:
Jan 12 11:30:18 nixos (ressvpnd)[54917]: expressvpn.service: Unable to locate executable '/nix/store/c8by89d26phzmc6ly810l73nnncshdkm-expressvpn-3.52.0.2/bin/expressvpnd': No such file or directory
Jan 12 11:30:18 nixos (ressvpnd)[54917]: expressvpn.service: Failed at step EXEC spawning /nix/store/c8by89d26phzmc6ly810l73nnncshdkm-expressvpn-3.52.0.2/bin/expressvpnd: No such file or directory
- I did a
find
in nix store and there are several derivation paths and the last one matches what’s in the service module:
/nix/store/gyq6ppbvq5rw4qb72i3fgsf5gi7c0l1b-expressvpn-3.52.0.2/bin/expressvpnd
/nix/store/2d27sgbl19ny767xf28gfslr9885206z-expressvpn-3.52.0.2/bin/expressvpnd
/nix/store/rz5sk0rx1bq9i9r3vxvibcy9kzn31wk1-expressvpn-3.52.0.2/bin/expressvpnd
/nix/store/c8by89d26phzmc6ly810l73nnncshdkm-expressvpn-3.52.0.2/bin/expressvpnd
When I run $ nix why-depends /run/current-system nixpkgs#expressvpn
I get:
/nix/store/1c2r77p0vvv45b2ys8pwa02dy7khqxqa-nixos-system-nixos-25.05.20241229.88195a9
└───/nix/store/60ij0q992f0bpqf6w7qjssyi3x8zcsya-system-path
└───/nix/store/c8by89d26phzmc6ly810l73nnncshdkm-expressvpn-3.52.0.2
It is the same derivation path referenced by the service module.
However, when I run ldd /nix/store/c8by89d26phzmc6ly810l73nnncshdkm-expressvpn-3.52.0.2/bin/expressvpnd
I get:
ldd: /nix/store/c8by89d26phzmc6ly810l73nnncshdkm-expressvpn-3.52.0.2/bin/expressvpnd: No such file or directory
I looked into the folder /nix/store/c8by89d26phzmc6ly810l73nnncshdkm-expressvpn-3.52.0.2/bin
and expressvpnd
is a symlink to /nix/store/ig1yy714l57mpq7np6625bm9rxjw118y-expressvpn-3.52.0.2/bin/expressvpnd
, but the target executable does not exist.
I am trying to figure out why the service module cannot find this derivation path.
Additional context:
When I run expressvpnd
I get:
cp: cannot stat '/host/etc/resolv.conf': No such file or directory
/etc/ CLOSE_NOWRITE,CLOSE ld.so.cache
cp: cannot create regular file '/host/etc/resolv.conf': No such file or directory
But I can locate resolv.conf
in /etc/
(dumb question /host/etc
= /etc
right?)
Then strace -f expressvpnd
shows the same No such file or directory
error.
Thanks!