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.
❯ 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 gstreamer package.
See the following snippet from the gstreamer expression
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 out but dev.
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.