jiebi/CodeConvo huggingface dataset:
}; }; <ins> ClassRefresh = buildPerlPackage { pname = "Class-Refresh"; version = "0.07"; src = fetchurl { url = "mirror://cpan/authors/id/D/DO/DOY/Class-Refresh-0.07.tar.gz"; hash = "sha256-47ADU1XLs1oq7j8iNojVeJRqenxXCs05iyjN2x/UvrM="; }; buildInputs = [ TestFatal TestRequires ]; propagatedBuildInputs = [ ClassLoad ClassUnload DevelOverrideGlobalRequire TryTiny ]; meta = { homepage = "http://metacpan.org/release/Class-Refresh"; description = "Refresh your classes during runtime"; license = with lib.licenses; [ artistic1 gpl1Plus ]; }; }; </ins> ClassReturnValue = buildPerlPackage { pname = "Class-ReturnValue"; version = "0.55";
}; }; <ins> PerlLanguageServer = buildPerlPackage { pname = "Perl-LanguageServer"; version = "2.5.0"; src = fetchurl { url = "mirror://cpan/authors/id/G/GR/GRICHTER/Perl-LanguageServer-2.5.0.tar.gz"; hash = "sha256-LQYcIkepqAT1JMkSuIN6mxivz6AZkpShcRsVD1oTmQQ="; }; propagatedBuildInputs = [ AnyEvent AnyEventAIO ClassRefresh CompilerLexer Coro DataDump HashSafeKeys IOAIO JSON Moose PadWalker ]; meta = { description = "Language Server and Debug Protocol Adapter for Perl"; license = lib.licenses.artistic2; }; }; </ins> perlldap = buildPerlPackage { pname = "perl-ldap"; version = "0.68";
# The credentials should be stored in a secure keychain already, so the benefit of this is questionable # in the first place. rm -rf $out/lib/vscode/resources/app/node_modules/vscode-encrypt <ins> # Unbundle libglvnd as VSCode doesn't include libGLESv2.so.2 which is necessary for GPU acceleration rm -rf $out/lib/vscode/libGLESv2.so </ins> '') + '' runHook postInstall '';
gappsWrapperArgs+=( # Add gio to PATH so that moving files to the trash works when not using a desktop environment --prefix PATH : ${glib.bin}/bin <ins> --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libglvnd ]} </ins> --add-flags "''${NIXOS_OZONE_WL:+''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" --add-flags ${lib.escapeShellArg commandLineArgs} )
<ins> { lib , rustPlatform , fetchFromGitHub , pkg-config , libsodium , sqlite , nix-update-script , testers , rustdesk-server }: rustPlatform.buildRustPackage rec { pname = "rustdesk-server"; version = "1.1.8"; src = fetchFromGitHub { owner = "rustdesk"; repo = "rustdesk-server"; rev = version; hash = "sha256-KzIylbPe+YN513UNFuisvDAIe4kICGYDUrfURDOw/no="; }; cargoLock = { lockFile = ./Cargo.lock; outputHashes = { "async-speed-limit-0.3.1" = "sha256-iOel6XA07RPrBjQAFLnxXX4VBpDrYZaqQc9clnsOorI="; "confy-0.4.0" = "sha256-e91cvEixhpPzIthAxzTa3fDY6eCsHUy/eZQAqs7QTDo="; "tokio-socks-0.5.1" = "sha256-inmAJk0fAlsVNIwfD/M+htwIdQHwGSTRrEy6N/mspMI="; }; }; nativeBuildInputs = [ pkg-config ]; buildInputs = [ libsodium sqlite ]; passthru = { updateScript = nix-update-script { }; tests.version = testers.testVersion { inherit version; package = rustdesk-server; command = "hbbr --version"; }; }; meta = with lib; { description = "RustDesk Server Program"; homepage = "https://github.com/rustdesk/rustdesk-server"; changelog = "https://github.com/rustdesk/rustdesk-server/releases/tag/${version}"; license = licenses.agpl3Only; platforms = platforms.unix; maintainers = with maintainers; [ gaelreyrol ]; }; } </ins>
<ins> { config, lib, pkgs, ... }: let cfg = config.services.goxlr-utility; in with lib; { options = { services.goxlr-utility = { enable = mkOption { default = false; type = types.bool; description = lib.mdDoc '' Whether to enable goxlr-utility for controlling your TC-Helicon GoXLR or GoXLR Mini ''; }; package = mkPackageOptionMD pkgs "goxlr-utility" { }; autoStart.xdg = mkOption { default = true; type = with types; bool; description = lib.mdDoc '' Start the daemon automatically using XDG autostart. Sets `xdg.autostart.enable = true` if not already enabled. ''; }; }; }; config = mkIf config.services.goxlr-utility.enable { services.udev.packages = [ cfg.package ]; xdg.autostart.enable = mkIf cfg.autoStart.xdg true; environment.systemPackages = mkIf cfg.autoStart.xdg [ cfg.package (pkgs.makeAutostartItem { name = "goxlr-utility"; package = cfg.package; }) ]; }; meta.maintainers = with maintainers; [ errnoh ]; } </ins>
<ins> { lib , fetchFromGitHub , rustPlatform , installShellFiles , pkg-config , libpulseaudio , dbus , speechd }: rustPlatform.buildRustPackage rec { pname = "goxlr-utility"; version = "0.12.6"; src = fetchFromGitHub { owner = "GoXLR-on-Linux"; repo = "goxlr-utility"; rev = "v${version}"; hash = "sha256-vvaKCsqncRhag8IrS0AIfNqNHGU2WIvFaYISEVfUB2Y="; }; cargoHash = "sha256-Z57H5YeVYqlOaLRLaizVw8xTLstdjyXutnN7OgaUYOE="; buildInputs = [ libpulseaudio dbus speechd ]; nativeBuildInputs = [ pkg-config installShellFiles rustPlatform.bindgenHook ]; buildFeatures = [ "tts" ]; postInstall = '' install -Dm644 "50-goxlr.rules" "$out/etc/udev/rules.d/50-goxlr.rules" install -Dm644 "daemon/resources/goxlr-utility.png" "$out/share/icons/hicolor/48x48/apps/goxlr-utility.png" install -Dm644 "daemon/resources/goxlr-utility.svg" "$out/share/icons/hicolor/scalable/apps/goxlr-utility.svg" install -Dm644 "daemon/resources/goxlr-utility-large.png" "$out/share/pixmaps/goxlr-utility.png" install -Dm644 "daemon/resources/goxlr-utility.desktop" "$out/share/applications/goxlr-utility.desktop" substituteInPlace $out/share/applications/goxlr-utility.desktop  --replace /usr/bin $out/bin  --replace goxlr-launcher goxlr-daemon completions_dir=$(dirname $(find target -name 'goxlr-client.bash' | head -n 1)) installShellCompletion --bash $completions_dir/goxlr-client.bash installShellCompletion --fish $completions_dir/goxlr-client.fish installShellCompletion --zsh  $completions_dir/_goxlr-client completions_dir=$(dirname $(find target -name 'goxlr-daemon.bash' | head -n 1)) installShellCompletion --bash $completions_dir/goxlr-daemon.bash installShellCompletion --fish $completions_dir/goxlr-daemon.fish installShellCompletion --zsh  $completions_dir/_goxlr-daemon ''; meta = with lib; { description = "An unofficial GoXLR App replacement for Linux, Windows and MacOS"; homepage = "https://github.com/GoXLR-on-Linux/goxlr-utility"; license = licenses.mit; maintainers = with maintainers; [ errnoh ]; }; } </ins>
sed -e "1s@.*@#! ${lua}/bin/lua$LUA_SUFFIX@" -i "$out"/bin/* substituteInPlace $out/etc/luarocks/*  --replace '${lua.luaOnBuild}' '${lua}' <ins> '' + lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' installShellCompletion --cmd luarocks  --bash <($out/bin/luarocks completion bash)  --fish <($out/bin/luarocks completion fish)  --zsh <($out/bin/luarocks completion zsh) installShellCompletion --cmd luarocks-admin  --bash <($out/bin/luarocks-admin completion bash)  --fish <($out/bin/luarocks-admin completion fish)  --zsh <($out/bin/luarocks-admin completion zsh) '' + '' </ins> for i in "$out"/bin/*; do test -L "$i" || { wrapProgram "$i"
lib.optionals (finalAttrs.pname == "luarocks-nix") [ file nix-prefetch-git ])} } done <del> '' + lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' installShellCompletion --cmd luarocks  --bash <($out/bin/luarocks completion bash)  --fish <($out/bin/luarocks completion fish)  --zsh <($out/bin/luarocks completion zsh) </del> ''; propagatedBuildInputs = [ zip unzip cmake ];
<ins> { lib , stdenv , fetchFromGitHub , buildNpmPackage }: buildNpmPackage rec { pname = "mw"; version = "unstable-2023-08-04"; src = fetchFromGitHub { owner = "mark-when"; repo = "mw"; rev = "a8676da1c7812a051456fabcb980c52a72f6e75e"; hash = "sha256-i95WuTH8qY+0PYQA9kOykQL+4d4oB2Hlvg9sfGtDeCo="; }; npmDepsHash = "sha256-D1hTaoM4j81qrrLMoKJ7OxJTfRoht3/yqgJs95EFxY4="; # correctly substitute the usage message postPatch = '' substituteInPlace src/index.ts  --replace  '.usage("$0' '.usage("mw' ''; meta = { changelog = "https://github.com/mark-when/mw/blob/${src.rev}/CHANGELOG.md"; description = "Markwhen CLI"; homepage = "https://github.com/mark-when/mw"; license = lib.licenses.mit; longDescription = '' Markwhen is an interactive text-to-timeline tool. Write markdown-ish text and it gets converted into a nice looking cascading timeline. ''; mainProgram = "mw"; maintainers = with lib.maintainers; [ dit7ya ]; }; } </ins>
src = fetchurl { url = "https://www.expressvpn.works/clients/linux/expressvpn_${version}-1_amd64.deb"; <del> hash = "sha256-lyDjG346FrgT7SZbsWET+Hexl9Un6mzMukfO2PwlInA="; </del> <ins> hash = "sha256-cDZ9R+MA3FXEto518bH4/c1X4W9XxgTvXns7zisylew="; </ins> }; nativeBuildInputs = [ dpkg autoPatchelfHook ];
## Importing packages from Quicklisp {#lisp-importing-packages-from-quicklisp} <del> The library is able to very quickly import all the packages distributed by Quicklisp by parsing its `releases.txt` and `systems.txt` files. These files are available from [http://beta.quicklisp.org/dist/quicklisp.txt]. </del> <ins> To save some work of writing Nix expressions, there is a script that imports all the packages distributed by Quicklisp into `imported.nix`. This works by parsing its `releases.txt` and `systems.txt` files, which are published every couple of months on [quicklisp.org](http://beta.quicklisp.org/dist/quicklisp.txt). </ins> The import process is implemented in the `import` directory as Common Lisp <del> functions in the `org.lispbuilds.nix` ASDF system. To run the script, one can </del> <ins> code in the `org.lispbuilds.nix` ASDF system. To run the script, one can </ins> execute `ql-import.lisp`: ``` <ins> cd pkgs/development/lisp-modules </ins> nix-shell --run 'sbcl --script ql-import.lisp' ``` The script will: 1. Download the latest Quicklisp `systems.txt` and `releases.txt` files <del> 2. Generate an SQLite database of all QL systems in `packages.sqlite` </del> <ins> 2. Generate a temporary SQLite database of all QL systems in `packages.sqlite` </ins> 3. Generate an `imported.nix` file from the database <del> The maintainer's job there is to: </del> <ins> (The `packages.sqlite` file can be deleted at will, because it is regenerated each time the script runs.) </ins> <del> 1. Re-run the `ql-import.lisp` script 2. Add missing native dependencies in `ql.nix` 3. For packages that still don't build, package them manually in `packages.nix` </del> <ins> The maintainer's job is to: 1. Re-run the `ql-import.lisp` script when there is a new Quicklisp release 2. [Add any missing native dependencies](#lisp-quicklisp-adding-native-dependencies) in `ql.nix` 3. For packages that still don't build, [package them manually](#lisp-defining-packages-inside) in `packages.nix` </ins> Also, the `imported.nix` file **must not be edited manually**! It should only be <del> generated as described in this section. </del> <ins> generated as described in this section (by running `ql-import.lisp`). </ins> ### Adding native dependencies {#lisp-quicklisp-adding-native-dependencies}
The previous implementation of `lisp-modules` didn't fully trust the Quicklisp data, because there were times where the dependencies specified were not <del> complete, and caused broken builds. It instead used a `nix-shell` environment to </del> <ins> complete and caused broken builds. It instead used a `nix-shell` environment to </ins> discover real dependencies by using the ASDF APIs. The current implementation has chosen to trust this data, because it's faster to
During Quicklisp import: <del> - `+` in names are converted to `_plus{_,}`: `cl+ssl`->`cl_plus_ssl`, `alexandria+`->`alexandria_plus` - `.` to `_dot_`: `iolib.base`->`iolib_dot_base` </del> <ins> - `+` in names is converted to `_plus{_,}`: `cl+ssl`->`cl_plus_ssl`, `alexandria+`->`alexandria_plus` - `.` in names is converted to `_dot_`: `iolib.base`->`iolib_dot_base` </ins> - names starting with a number have a `_` prepended (`3d-vectors`->`_3d-vectors`) - `_` in names is converted to `__` for reversibility ## Defining packages manually inside Nixpkgs {#lisp-defining-packages-inside} <del> New packages, that for some reason are not in Quicklisp, and so cannot be auto-imported, can be written in the `packages.nix` file. </del> <ins> Packages that for some reason are not in Quicklisp, and so cannot be auto-imported, or don't work straight from the import, are defined in the `packages.nix` file. </ins> In that file, use the `build-asdf-system` function, which is a wrapper around `mkDerivation` for building ASDF systems. Various other hacks are present, such as `build-with-compile-into-pwd` for systems which create files during <del> compilation. </del> <ins> compilation (such as cl-unicode). </ins> <del> The `build-asdf-system` function is documented with comments in `nix-cl.nix`. Also, `packages.nix` is full of examples of how to use it. </del> <ins> The `build-asdf-system` function is documented [here](#lisp-defining-packages-outside). Also, `packages.nix` is full of examples of how to use it. </ins> ## Defining packages manually outside Nixpkgs {#lisp-defining-packages-outside} Lisp derivations (`abcl`, `sbcl` etc.) also export the `buildASDFSystem` <del> function, which is the same as `build-asdf-system`, except for the `lisp` argument which is set to the given CL implementation. </del> <ins> function, which is similar to `build-asdf-system` from `packages.nix`, but is part of the public API. It takes the following arguments: - `pname`: the package name - `version`: the package version - `src`: the package source - `patches`: patches to apply to the source before build - `nativeLibs`: native libraries used by CFFI and grovelling - `javaLibs`: Java libraries for ABCL - `lispLibs`: dependencies on other packages build with `buildASDFSystem` - `systems`: list of systems to build </ins> It can be used to define packages outside Nixpkgs, and, for example, add them <del> into the package scope with `withOverrides` which will be discussed later on. </del> <ins> into the package scope with `withOverrides`. </ins> ### Including an external package in scope {#lisp-including-external-pkg-in-scope}
}) ``` <del> ## Overriding packages in scope {#lisp-overriding-packages-in-scope} Packages can be woven into a new scope by using `withOverrides`: ``` let sbcl' = sbcl.withOverrides (self: super: { alexandria = super.alexandria.overrideLispAttrs (oldAttrs: rec { pname = "alexandria"; version = "1.4"; src = fetchFromGitLab { domain = "gitlab.common-lisp.net"; owner = "alexandria"; repo = "alexandria"; rev = "v${version}"; hash = "sha256-1Hzxt65dZvgOFIljjjlSGgKYkj+YBLwJCACi5DZsKmQ="; }; }); }); in builtins.elemAt sbcl'.pkgs.bordeaux-threads.lispLibs 0 ``` </del> ### Dealing with slashy systems {#lisp-dealing-with-slashy-systems} Slashy (secondary) systems should not exist in their own packages! Instead, they
}) ``` <del> See the respective section on using `withOverrides` for how to weave it back into `ecl.pkgs`. </del> <ins> See the [respective section](#lisp-including-external-pkg-in-scope) on using `withOverrides` for how to weave it back into `ecl.pkgs`. </ins> Note that sometimes the slashy systems might not only have more dependencies than the main one, but create a circular dependency between `.asd`
implementations (`abcl`, `ecl`, `sbcl` etc.): ``` <del> sbcl.withPackages (ps: [ ps.alexandria ps.bordeaux-threads ]) </del> <ins> nix-shell -p 'sbcl.withPackages (ps: [ ps.alexandria ps.bordeaux-threads ])' </ins> ``` <del> Such a wrapper can then be executed like this: </del> <ins> Such a wrapper can then be used like this: </ins> ``` <del> result/bin/sbcl </del> <ins> $ sbcl * (load (sb-ext:posix-getenv "ASDF")) * (asdf:load-system 'alexandria) * (asdf:load-system 'bordeaux-threads) </ins> ``` ### Loading ASDF {#lisp-loading-asdf}
<ins> { lib , stdenv , fetchFromGitHub , cargo , desktop-file-utils , meson , ninja , pkg-config , rustPlatform , rustc , wrapGAppsHook4 , cairo , gdk-pixbuf , glib , gtk4 , libadwaita , pango , pipewire , wireplumber }: stdenv.mkDerivation rec { pname = "pwvucontrol"; version = "0.2"; src = fetchFromGitHub { owner = "saivert"; repo = "pwvucontrol"; rev = version; hash = "sha256-jBvMLewBZi4LyX//YUyJQjqPvxnKqlpuLZAm9zpDMrA="; }; cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; outputHashes = { "libspa-0.6.0" = "sha256-CVLQ9JXRMo78/kay1TpRgRuk5v/Z5puPVMzLA30JRk8="; "wireplumber-0.1.0" = "sha256-wkku9vqIMdV+HTkWCPXKH2KM1Xzf0xApC5zrVmgxhsA="; }; }; nativeBuildInputs = [ cargo desktop-file-utils meson ninja pkg-config rustPlatform.bindgenHook rustPlatform.cargoSetupHook rustc wrapGAppsHook4 ]; buildInputs = [ cairo gdk-pixbuf glib gtk4 libadwaita pango pipewire wireplumber ]; meta = with lib; { description = "Pipewire Volume Control"; homepage = "https://github.com/saivert/pwvucontrol"; license = licenses.gpl3Plus; maintainers = with maintainers; [ figsoda ]; mainProgram = "pwvucontrol"; platforms = platforms.linux; }; } </ins>
<del> { lib, stdenv, fetchFromGitHub, autoreconfHook, alsa-lib, fftw, libpulseaudio, ncurses, iniparser }: </del> <ins> { lib , stdenv , fetchFromGitHub , autoreconfHook , alsa-lib , fftw , iniparser , libpulseaudio , ncurses , pkgconf }: </ins> stdenv.mkDerivation rec { pname = "cava"; <del> version = "0.9.0"; </del> <ins> version = "0.9.1"; src = fetchFromGitHub { owner = "karlstav"; repo = "cava"; rev = version; hash = "sha256-W/2B9iTcO2F2vHQzcbg/6pYBwe+rRNfADdOiw4NY9Jk="; }; </ins> buildInputs = [ alsa-lib
iniparser ]; <del> src = fetchFromGitHub { owner = "karlstav"; repo = "cava"; rev = version; sha256 = "sha256-mIgkvgVcbRdE29lSLojIzIsnwZgnQ+B2sgScDWrLyd8="; }; </del> <ins> nativeBuildInputs = [ autoreconfHook pkgconf ]; </ins> <del> nativeBuildInputs = [ autoreconfHook ]; </del> <ins> preAutoreconf = '' echo ${version} > version ''; </ins> meta = with lib; { description = "Console-based Audio Visualizer for Alsa";
- `screen`'s module has been cleaned, and will now require you to set `programs.screen.enable` in order to populate `screenrc` and add the program to the environment. <del> - `linuxPackages_testing_bcachefs` is now fully deprecated by `linuxPackages_testing`, and is therefore no longer available. </del> <ins> - `linuxPackages_testing_bcachefs` is now fully deprecated by `linuxPackages_latest`, and is therefore no longer available. </ins> - NixOS now installs a stub ELF loader that prints an informative error message when users attempt to run binaries not made for NixOS. - This can be disabled through the `environment.stub-ld.enable` option.
# Function for waiting for device(s) to appear. waitDevice() { local device="$1" <del> # Split device string using ':' as a delimiter as bcachefs # uses this for multi-device filesystems, i.e. /dev/sda1:/dev/sda2:/dev/sda3 local IFS=':' </del> <ins> # Split device string using ':' as a delimiter, bcachefs uses # this for multi-device filesystems, i.e. /dev/sda1:/dev/sda2:/dev/sda3 local IFS # bcachefs is the only known use for this at the moment # Preferably, the 'UUID=' syntax should be enforced, but # this is kept for compatibility reasons if [ "$fsType" = bcachefs ]; then IFS=':'; fi </ins> # USB storage devices tend to appear with some delay.  It would be # great if we had a way to synchronously wait for them, but
inherit assertions; # needed for systemd-remount-fs system.fsPackages = [ pkgs.bcachefs-tools ]; <del> # FIXME: Remove this line when the default kernel has bcachefs </del> <ins> # FIXME: Remove this line when the LTS (default) kernel is at least version 6.7 </ins> boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; <del> systemd.services = lib.mapAttrs' (mkUnits "") (lib.filterAttrs (n: fs: (fs.fsType == "bcachefs") && (!utils.fsNeededForBoot fs)) config.fileSystems); </del> <ins> services.udev.packages = [ pkgs.bcachefs-tools ]; systemd = { packages = [ pkgs.bcachefs-tools ]; services = lib.mapAttrs' (mkUnits "") (lib.filterAttrs (n: fs: (fs.fsType == "bcachefs") && (!utils.fsNeededForBoot fs)) config.fileSystems); }; </ins> } (lib.mkIf ((lib.elem "bcachefs" config.boot.initrd.supportedFilesystems) || (bootFs != {})) {
udev ] ++ lib.optional fuseSupport fuse3; <ins> # FIXME: Try enabling this once the default linux kernel is at least 6.7 </ins> doCheck = false; # needs bcachefs module loaded on builder checkFlags = [ "BCACHEFS_TEST_USE_VALGRIND=no" ]; makeFlags = [ <del> "DESTDIR=${placeholder "out"}" "PREFIX=" </del> <ins> "PREFIX=${placeholder "out"}" </ins> "VERSION=${finalAttrs.version}" "INITRAMFS_DIR=${placeholder "out"}/etc/initramfs-tools" ];
rm tests/test_fuse.py ''; <ins> # Tries to install to the 'systemd-minimal' and 'udev' nix installation paths installFlags = [ "PKGCONFIG_SERVICEDIR=$(out)/lib/systemd/system" "PKGCONFIG_UDEVDIR=$(out)/lib/udev" ]; postInstall = '' substituteInPlace $out/libexec/bcachefsck_all  --replace "/usr/bin/python3" "${python3}/bin/python3" ''; </ins> passthru = { tests = { smoke-test = nixosTests.bcachefs;
''; linux_latest_hardened = linuxPackages_latest_hardened; <del> # Added 2023-11-18 linuxPackages_testing_bcachefs = throw "'linuxPackages_testing_bcachefs' has been removed, please use 'linuxPackages_testing', or any other linux kernel with bcachefs support"; linux_testing_bcachefs = throw "'linux_testing_bcachefs' has been removed, please use 'linux_testing', or any other linux kernel with bcachefs support"; </del> <ins> # Added 2023-11-18, modified 2024-01-09 linuxPackages_testing_bcachefs = throw "'linuxPackages_testing_bcachefs' has been removed, please use 'linuxPackages_latest', any kernel version at least 6.7, or any other linux kernel with bcachefs support"; linux_testing_bcachefs = throw "'linux_testing_bcachefs' has been removed, please use 'linux_latest', any kernel version at least 6.7, or any other linux kernel with bcachefs support"; </ins> lld_6 = throw "lld_6 has been removed from nixpkgs"; # Added 2024-01-08 lld_7 = throw "lld_7 has been removed from nixpkgs"; # Added 2023-11-19
<ins> { lib , stdenv , fetchFromGitHub }: # Testing this requires a Thinkpad or the presence of /proc/acpi/ibm/fan stdenv.mkDerivation (finalAttrs: { pname = "zcfan"; version = "1.2.1"; src = fetchFromGitHub { owner = "cdown"; repo = "zcfan"; rev = finalAttrs.version; hash = "sha256-XngchR06HP2iExKJVe+XKBDgsv98AEYWOkl1a/Hktgs="; }; postPatch = '' substituteInPlace Makefile  --replace "/usr/local" $out ''; doInstallCheck = true; installCheckPhase = '' runHook preInstallCheck $out/bin/${finalAttrs.pname} -h runHook postInstallCheck ''; meta = with lib; { description = "A zero-configuration fan daemon for ThinkPads"; homepage = "https://github.com/cdown/zcfan"; changelog = "https://github.com/cdown/zcfan/tags/${finalAttrs.version}"; license = licenses.mit; maintainers = with maintainers; [ kashw2 ]; platforms = platforms.linux; }; }) </ins>
github = "Detegr"; githubId = 724433; }; <ins> detroyejr = { name = "Jonathan De Troye"; email = "detroyejr@outlook.com"; github = "detroyejr"; githubId = 12815411; }; </ins> Dettorer = { name = "Paul Hervot"; email = "paul.hervot@dettorer.net";