let pins = import ./npins; nilla = import pins.nilla; frontend_pkgs = pkgs: [ pkgs.nodejs_24 pkgs.eslint_d pkgs.eslint pkgs.typescript pkgs.typescript-language-server pkgs.package-version-server ]; backend_pkgs = pkgs: fenix: [ pkgs.pkg-config pkgs.openssl.dev pkgs.openssl.out pkgs.bacon pkgs.devenv pkgs.reuse pkgs.sqlx-cli (fenix.complete.withComponents [ "cargo" "clippy" "rust-src" "rustc" "rustfmt" "rust-analyzer" ]) ]; in nilla.create ( { config, lib }: { config = { inputs = { nixpkgs = { src = pins.nixpkgs; settings.overlays = [ config.inputs.fenix.result.overlays.default ]; }; fenix.src = pins.fenix; }; shells.default = { systems = [ "x86_64-linux" ]; shell = { pkgs, mkShell, fenix }: mkShell { packages = (frontend_pkgs pkgs) ++ (backend_pkgs pkgs fenix); }; }; shells.frontend = { systems = [ "x86_64-linux" ]; shell = { pkgs, mkShell }: mkShell { packages = frontend_pkgs pkgs; }; }; shells.backend = { systems = [ "x86_64-linux" ]; shell = { pkgs, mkShell, fenix }: mkShell { env.PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig"; env.LD_LIBRARY_PATH = "${pkgs.openssl.out}/lib"; packages = backend_pkgs pkgs fenix; }; }; }; } )