Hi, I am relatively new to NixOS and am having some trouble with gstreamer. I installed gstreamer via
nix-env -iA gst_all_1.gstreamer
I expected this to give me access to the
gst-launch-1.0 command; however, this is not the case.
When investigating I found a ‘/nix/store/*-gstreamer-1.16.2-dev/bin’ was were the executables were placed, but this does not get included in the path.
Do I need to do something to use packages that end with “-dev”?
I also found a gst_all_1.gstreamer.dev packages, but it links to the same .drv file. What is this?
I tried searching for documentation on outputs with “-dev” or “.dev” packages but couldn’t find much of anything. I initially used the stable channel but had the same issue so I am currently running the unstable channel. I am on amd64 hardware running NixOS.
If someone could point me towards what I need to get the gstreamer applications working it would be greatly appreciated.
If you want the
gst-launch-1.0 the executable exists in
nix-env -iA gst_all_1.gstreamer.dev # the .dev is a different package output
and that’s why you’ve found traces of this program at a path like
gstreamer-1.16.2-dev/bin, the gstreamer package is a split package. It a similar concept to how like development headers can exists in different packages in debian.
I figured this out with a tool called
❯ nix-locate bin/gst-launch-1.0 ~
(wineStaging.out) 406 x /nix/store/p2dccbybqlzsbm8wgxg8aqj74pqc8w4y-gstreamer-1.16.0-dev/bin/gst-launch-1.0
gst_all_1.gstreamer.dev 406 x /nix/store/2p9ki5pl8apf0k762qy9apbdd2sj85x5-gstreamer-1.16.0-dev/bin/gst-launch-1.0
You may be also wondering this:
“Why is it that when I install gst_all_1.gstreamer it’s not a package with the binary I wanted?”.
This is because how the outputs are configured in the
See the following snippet from the gstreamer expression
outputs = [ "out" "dev" "devdoc" ];
outputBin = "dev";
the first string in the attribute
outputs is what will be installed default when you do
nix-env -iA gst_all_1.gstreamer, so
out. But there’s an attribute
outputBin = "dev", this means the output where the binaries (bin) are located is not the default install-able output
This is explained in depth in NixOS - Nixpkgs 21.05 manual and NixOS - Nixpkgs 21.05 manual.
Thanks for your detailed response. However, I tried installing gstreamer.dev with
nix-env -iA nixos.gst_all_1.gstreamer.dev
but the gst-launch-1.0 executable was still not available. I was still able to track it down in the nix store though. I also installed nix-index and it agrees with you that it should be in gst_all_1.gstreamer.dev, any Ideas?
On the other hand, your explanation was very helpful. I had found those sections of the docs but was struggling to connect it to the nix expressions for gstreamer. Thanks.