diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-10-20 22:09:03 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-10-20 22:09:03 +0000 |
commit | 50c21d167f7114fa1dbd95e5c4fb30eeb1a2d02e (patch) | |
tree | f2556b911180125ccbb7ed0e78a54e92da89adce /nixpkgs/pkgs/tools/system/dell-command-configure/default.nix | |
parent | 4c16d4548a98563c9d9ad76f4e5b2202864ccd54 (diff) | |
parent | cfc75eec4603c06503ae750f88cf397e00796ea8 (diff) | |
download | nixlib-50c21d167f7114fa1dbd95e5c4fb30eeb1a2d02e.tar nixlib-50c21d167f7114fa1dbd95e5c4fb30eeb1a2d02e.tar.gz nixlib-50c21d167f7114fa1dbd95e5c4fb30eeb1a2d02e.tar.bz2 nixlib-50c21d167f7114fa1dbd95e5c4fb30eeb1a2d02e.tar.lz nixlib-50c21d167f7114fa1dbd95e5c4fb30eeb1a2d02e.tar.xz nixlib-50c21d167f7114fa1dbd95e5c4fb30eeb1a2d02e.tar.zst nixlib-50c21d167f7114fa1dbd95e5c4fb30eeb1a2d02e.zip |
Merge commit 'cfc75eec4603c06503ae750f88cf397e00796ea8'
Conflicts: nixpkgs/pkgs/build-support/rust/build-rust-package/default.nix
Diffstat (limited to 'nixpkgs/pkgs/tools/system/dell-command-configure/default.nix')
-rw-r--r-- | nixpkgs/pkgs/tools/system/dell-command-configure/default.nix | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/system/dell-command-configure/default.nix b/nixpkgs/pkgs/tools/system/dell-command-configure/default.nix new file mode 100644 index 000000000000..2374d36421f7 --- /dev/null +++ b/nixpkgs/pkgs/tools/system/dell-command-configure/default.nix @@ -0,0 +1,108 @@ +{ + stdenv, + lib, + fetchurl, + dpkg, + autoPatchelfHook, + patchelfUnstable, + openssl, +}: + +# Use techniques described in https://web.archive.org/web/20220904051329/https://tapesoftware.net/replace-symbol/ + +# Adapted from https://github.com/KenMacD/etc-nixos/blob/d3d28085586358a62b2bb4b427eb21aad05b5b23/dcc/default.nix + +# Used https://github.com/NixOS/nixpkgs/pull/84926 as a template +# then converted to use autoPatchelfHook instead, and link with +# the dependencies from other pkgs. + +let + version = "4.8.0-494"; + + unpacked = stdenv.mkDerivation rec { + inherit version; + pname = "dell-command-configure-unpacked"; + + src = fetchurl { + url = + "https://dl.dell.com/FOLDER08911312M/1/command-configure_${version}.ubuntu20_amd64.tar.gz"; + # The CDN blocks the Curl user-agent, so set to blank instead. + curlOpts = ''-A=""''; + hash = "sha256-l5oHgDkFBF6llNsHufTmuDzjkhGmXHYXlOJ4hvZfRoE="; + }; + + dontBuild = true; + + nativeBuildInputs = [ dpkg ]; + + unpackPhase = '' + tar -xzf ${src} + dpkg-deb -x command-configure_${version}.ubuntu20_amd64.deb command-configure + dpkg-deb -x srvadmin-hapi_9.5.0_amd64.deb srvadmin-hapi + ''; + + installPhase = '' + mkdir $out + cp -r . $out + ''; + }; + + # Contains a fopen() wrapper for finding the firmware package + wrapperLibName = "wrapper-lib.so"; + wrapperLib = stdenv.mkDerivation { + pname = "dell-command-configure-unpacked-wrapper-lib"; + inherit version; + + src = ./.; + + postPatch = '' + ls -al + substitute wrapper-lib.c lib.c \ + --subst-var-by to "${unpacked}/srvadmin-hapi/opt/dell/srvadmin/etc/omreg.d/omreg-hapi.cfg" + cc -fPIC -shared lib.c -o ${wrapperLibName} + ''; + installPhase = '' + install -D ${wrapperLibName} -t $out/lib + ''; + }; + +in stdenv.mkDerivation rec { + inherit version; + pname = "dell-command-configure"; + + buildInputs = [ openssl stdenv.cc.cc.lib ]; + nativeBuildInputs = [ autoPatchelfHook ]; + dontConfigure = true; + + src = unpacked; + + installPhase = '' + install -D -t $out/lib -m644 -v command-configure/opt/dell/dcc/libhapiintf.so + install -D -t $out/lib -m644 -v command-configure/opt/dell/dcc/libsmbios_c.so.2 + install -D -t $out/bin -m755 -v command-configure/opt/dell/dcc/cctk + install -D -t $out/bin -m755 -v srvadmin-hapi/opt/dell/srvadmin/sbin/dchcfg + for lib in $(find srvadmin-hapi/opt/dell/srvadmin/lib64 -type l); do + install -D -t $out/lib -m644 -v $lib + done + ''; + + postFixup = '' + echo fopen fopen_wrapper > fopen_name_map + echo access access_wrapper > access_name_map + ${patchelfUnstable}/bin/patchelf \ + --rename-dynamic-symbols fopen_name_map \ + --rename-dynamic-symbols access_name_map \ + --add-needed ${wrapperLibName} \ + --set-rpath ${lib.makeLibraryPath [ wrapperLib ]} \ + $out/lib/* + ''; + + meta = with lib; { + description = "Configure BIOS settings on Dell laptops."; + homepage = + "https://www.dell.com/support/article/us/en/19/sln311302/dell-command-configure"; + license = licenses.unfree; + maintainers = with maintainers; [ ryangibb ]; + platforms = [ "x86_64-linux" ]; + }; +} |