I have a flake that builds a rust webserver. I’d like it to have access to youtube-dl at runtime. I’ve put youtube-dl into all the buildInputs, but its still not available when the app tries to invoke it. What am I missing? My flake.nix:
{
description = "zknotes, a web based zettelkasten";
inputs = {
flake-utils.url = "github:numtide/flake-utils";
naersk.url = "github:nmattia/naersk";
};
outputs = { self, nixpkgs, flake-utils, naersk }:
let
makeElmPkg = { pkgs, additionalInputs ? [ ], pythonPackages ? (ps: [ ]) }:
pkgs.stdenv.mkDerivation {
name = "zknotes-elm";
src = ./.;
buildPhase = pkgs.elmPackages.fetchElmDeps {
elmPackages = import ./elm/elm-srcs.nix;
elmVersion = "0.19.1";
registryDat = ./elm/registry.dat;
} + ''
cd elm
elm-optimize-level-2 src/Main.elm --output=dist/main.js
'';
installPhase = ''
mkdir $out
cp -r dist/* $out
'';
buildInputs = with pkgs;
[
elmPackages.elm
elmPackages.elm-optimize-level-2
] ++ additionalInputs;
};
in
flake-utils.lib.eachDefaultSystem (
system: let
pname = "zknotes";
pkgs = nixpkgs.legacyPackages."${system}";
naersk-lib = naersk.lib."${system}";
elm-stuff = makeElmPkg { inherit pkgs; };
rust-stuff = naersk-lib.buildPackage {
pname = pname;
root = ./.;
nativeBuildInputs = with pkgs; [
cargo
rustc
youtube-dl
];
buildInputs = with pkgs; [
sqlite
pkgconfig
openssl.dev
youtube-dl
];
};
in
rec {
inherit pname;
# `nix build`
packages.${pname} = pkgs.stdenv.mkDerivation {
nativeBuildInputs = [ pkgs.makeWrapper pkgs.youtube-dl ];
buildInputs = with pkgs; [ youtube-dl ];
name = pname;
src = ./.;
# building the 'out' folder
installPhase = ''
mkdir -p $out/share/zknotes/static
mkdir $out/bin
cp -r $src/server/static $out/share/zknotes
cp ${elm-stuff}/main.js $out/share/zknotes/static
cp -r ${rust-stuff}/bin $out
mv $out/bin/zknotes-server $out/bin/.zknotes-server
makeWrapper $out/bin/.zknotes-server $out/bin/zknotes-server --set ZKNOTES_STATIC_PATH $out/share/zknotes/static;
'';
};
defaultPackage = packages.${pname};
# `nix run`
apps.${pname} = flake-utils.lib.mkApp {
drv = packages.${pname};
};
defaultApp = apps.${pname};
# `nix develop`
devShell = pkgs.mkShell {
nativeBuildInputs = with pkgs; [
cargo
cargo-watch
rustc
rustfmt
rust-analyzer
sqlite
pkgconfig
openssl.dev
elm2nix
elmPackages.elm
elmPackages.elm-analyse
elmPackages.elm-doc-preview
elmPackages.elm-format
elmPackages.elm-live
elmPackages.elm-test
elmPackages.elm-upgrade
elmPackages.elm-xref
elmPackages.elm-language-server
elmPackages.elm-verify-examples
elmPackages.elmi-to-json
elmPackages.elm-optimize-level-2
];
};
}
);
}