nixpkgs/pkgs/by-name/fa/fastfetch/package.nix

162 lines
3.4 KiB
Nix

{ lib
, stdenv
, fetchFromGitHub
, chafa
, cmake
, darwin
, dbus
, dconf
, ddcutil
, glib
, hwdata
, imagemagick_light
, libXrandr
, libglvnd
, libpulseaudio
, libselinux
, libsepol
, libxcb
, makeBinaryWrapper
, networkmanager
, nix-update-script
, ocl-icd
, opencl-headers
, overrideSDK
, pcre
, pcre2
, pkg-config
, python3
, rpm
, sqlite
, testers
, util-linux
, vulkan-loader
, wayland
, xfce
, xorg
, yyjson
, zlib
, rpmSupport ? false
, vulkanSupport ? true
, waylandSupport ? true
, x11Support ? true
}:
let
stdenv' = if stdenv.isDarwin then overrideSDK stdenv "11.0" else stdenv;
in
stdenv'.mkDerivation (finalAttrs: {
pname = "fastfetch";
version = "2.9.2";
src = fetchFromGitHub {
owner = "fastfetch-cli";
repo = "fastfetch";
rev = finalAttrs.version;
hash = "sha256-SEt/qw8ixlgRY2+fqyCmhqzLVoAw/BMl//JqQxbuB0s=";
};
outputs = [ "out" "man" ];
nativeBuildInputs = [
cmake
makeBinaryWrapper
pkg-config
python3
];
buildInputs = [
chafa
imagemagick_light
pcre
pcre2
sqlite
yyjson
] ++ lib.optionals stdenv.isLinux [
dbus
dconf
ddcutil
glib
hwdata
libpulseaudio
libselinux
libsepol
networkmanager
ocl-icd
opencl-headers
util-linux
zlib
] ++ lib.optionals rpmSupport [
rpm
] ++ lib.optionals vulkanSupport [
vulkan-loader
] ++ lib.optionals waylandSupport [
wayland
] ++ lib.optionals x11Support [
libXrandr
libglvnd
libxcb
xorg.libXau
xorg.libXdmcp
xorg.libXext
] ++ lib.optionals (x11Support && (!stdenv.isDarwin)) [
xfce.xfconf
] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk_11_0.frameworks; [
Apple80211
AppKit
AVFoundation
Cocoa
CoreDisplay
CoreVideo
CoreWLAN
DisplayServices
IOBluetooth
MediaRemote
OpenCL
SystemConfiguration
darwin.moltenvk
]);
cmakeFlags = [
(lib.cmakeOptionType "filepath" "CMAKE_INSTALL_SYSCONFDIR" "${placeholder "out"}/etc")
(lib.cmakeBool "ENABLE_DIRECTX_HEADERS" false)
(lib.cmakeBool "ENABLE_DRM" false)
(lib.cmakeBool "ENABLE_IMAGEMAGICK6" false)
(lib.cmakeBool "ENABLE_OSMESA" false)
(lib.cmakeBool "ENABLE_SYSTEM_YYJSON" true)
(lib.cmakeBool "ENABLE_GLX" x11Support)
(lib.cmakeBool "ENABLE_RPM" rpmSupport)
(lib.cmakeBool "ENABLE_VULKAN" x11Support)
(lib.cmakeBool "ENABLE_WAYLAND" waylandSupport)
(lib.cmakeBool "ENABLE_X11" x11Support)
(lib.cmakeBool "ENABLE_XCB" x11Support)
(lib.cmakeBool "ENABLE_XCB_RANDR" x11Support)
(lib.cmakeBool "ENABLE_XFCONF" (x11Support && (!stdenv.isDarwin)))
(lib.cmakeBool "ENABLE_XRANDR" x11Support)
];
postInstall = ''
wrapProgram $out/bin/fastfetch \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath finalAttrs.buildInputs}"
wrapProgram $out/bin/flashfetch \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath finalAttrs.buildInputs}"
'';
passthru = {
updateScript = nix-update-script { };
tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
command = "fastfetch -v | cut -d '(' -f 1";
version = "fastfetch ${finalAttrs.version}";
};
};
meta = {
description = "Like neofetch, but much faster because written in C";
homepage = "https://github.com/fastfetch-cli/fastfetch";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ gerg-l khaneliman ];
platforms = lib.platforms.all;
mainProgram = "fastfetch";
};
})