4 ms·
Can you help me understand why devenv is needed instead of a shell like this/what is gained? { pkgs }: pkgs.mkShell { nativeBuildInputs = wi
by MuffinFlavored 7mo ago
Can you help me understand why devenv is needed instead of a shell like this/what is gained?
{ pkgs }:
pkgs.mkShell {
nativeBuildInputs = with pkgs; [
# build tools
cmake
ninja
gnumake
pkg-config
];
buildInputs = with pkgs; [
# java
jdk8
# compilers
gcc
clang
llvmPackages.libcxx
# libraries
capstone
icu
openssl_3
libusb1
libftdi
zlib
# scripting
(python3.withPackages (ps: with ps; [
requests
pyelftools
]))
];
# capstone headers are in include/capstone/ but blutter expects include/
shellHook = ''
export CPATH="${pkgs.capstone}/include/capstone:$CPATH"
export CPLUS_INCLUDE_PATH="${pkgs.capstone}/include/capstone:$CPLUS_INCLUDE_PATH"
'';
}
- nehalem 7mo agoTo be honest, I don’t know. I just enjoy the simplicity of devenv. It’s the right amount of user friendly.
- fermuch 7mo agodevenv also has tasks/services. For example you need to start redis, then your db, then seed it, and only then start the server. All of that could be aliases, yeah, but if you define them as aliases you can have them all up with `devenv up`. It even supports dependencies between tasks ("only run the db after migrations ran")
- shakow 7mo ago“Needed” is too strong, but this does not provide services, does not provide project-specific scripts, does not setup LSP, does not setup git hooks, can't automatically dockerize your build, does not support multiple profiles (e.g. local and CI), etc.
- Cyph0n 7mo agoIt is a more user friendly abstraction on top of Nix. Most people don’t want or need to understand the specifics of Nix or the Nix language. Btw, I say this as a huge fan and heavy user of both Nix and NixOS.
- rgoulter 7mo agodevenv lets you express shells as modules. Modules let you express the system in smaller, composable, reusable parts rather than express everything in one big file. (There are other popular tools which support modules: NixOS, home-manager, flake-parts). That devenv also provides "batteries included" modules for popular languages (including linters, LSPs) is also a benefit.
- JamesSwift 7mo agoThe UX is the big benefit, especially on teams who may not even know what nix is. I held off on exposing my nix setups for a long time, but devenv has made it possible to check things in without losing a ton of time to tech support.