about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/tools/misc/fastfetch/default.nix123
-rw-r--r--pkgs/top-level/all-packages.nix8
2 files changed, 131 insertions, 0 deletions
diff --git a/pkgs/tools/misc/fastfetch/default.nix b/pkgs/tools/misc/fastfetch/default.nix
new file mode 100644
index 0000000000000..39250dfca49bd
--- /dev/null
+++ b/pkgs/tools/misc/fastfetch/default.nix
@@ -0,0 +1,123 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, chafa
+, cmake
+, dbus
+, dconf
+, glib
+, imagemagick_light
+, libglvnd
+, libpulseaudio
+, libxcb
+, libXrandr
+, makeBinaryWrapper
+, networkmanager
+, nix-update-script
+, ocl-icd
+, opencl-headers
+, pciutils
+, pkg-config
+, rpm
+, sqlite
+, testers
+, vulkan-loader
+, wayland
+, xfce
+, zlib
+, AppKit
+, Cocoa
+, CoreDisplay
+, CoreVideo
+, CoreWLAN
+, DisplayServices
+, Foundation
+, IOBluetooth
+, MediaRemote
+, OpenCL
+, moltenvk
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "fastfetch";
+  version = "1.12.2";
+
+  src = fetchFromGitHub {
+    owner = "fastfetch-cli";
+    repo = "fastfetch";
+    rev = finalAttrs.version;
+    hash = "sha256-l9fIm7+dBsOqGoFUYtpYESAjDy3496rDTUDQjbNU4U0=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    makeBinaryWrapper
+    pkg-config
+  ];
+
+  buildInputs = [
+    chafa
+    imagemagick_light
+    sqlite
+  ]
+  ++ lib.optionals stdenv.isLinux [
+    dbus
+    dconf
+    glib
+    libglvnd
+    libpulseaudio
+    libxcb
+    libXrandr
+    networkmanager
+    ocl-icd
+    opencl-headers
+    pciutils
+    rpm
+    vulkan-loader
+    wayland
+    xfce.xfconf
+    zlib
+  ]
+  ++ lib.optionals stdenv.isDarwin [
+    AppKit
+    Cocoa
+    CoreDisplay
+    CoreVideo
+    CoreWLAN
+    DisplayServices
+    Foundation
+    IOBluetooth
+    MediaRemote
+    OpenCL
+    moltenvk
+  ];
+
+  cmakeFlags = [
+    "-DCMAKE_INSTALL_SYSCONFDIR=${placeholder "out"}/etc"
+  ];
+
+  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";
+    inherit (finalAttrs.src.meta) homepage;
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ gerg-l khaneliman ];
+    platforms = lib.platforms.all;
+    mainProgram = "fastfetch";
+  };
+})
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index cc48e816f647d..5f936b3b92061 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1678,6 +1678,14 @@ with pkgs;
 
   etlegacy = callPackage ../games/etlegacy { lua = lua5_4; };
 
+  fastfetch = darwin.apple_sdk_11_0.callPackage ../tools/misc/fastfetch {
+    inherit (darwin.apple_sdk_11_0.frameworks)
+    AppKit Cocoa CoreDisplay CoreVideo CoreWLAN DisplayServices
+    Foundation IOBluetooth MediaRemote OpenCL;
+
+    inherit (darwin) moltenvk;
+  };
+
   fscan = callPackage ../tools/security/fscan { };
 
   copier = callPackage ../tools/misc/copier { };