nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 kdePackages,
6 qt6,
7 cmake,
8 libqalculate,
9 muparser,
10 libarchive,
11 python3Packages,
12 nix-update-script,
13 pkg-config,
14}:
15
16stdenv.mkDerivation (finalAttrs: {
17 pname = "albert";
18 version = "33.0.1";
19
20 src = fetchFromGitHub {
21 owner = "albertlauncher";
22 repo = "albert";
23 tag = "v${finalAttrs.version}";
24 hash = "sha256-zHLyvFzLR7Ryk6eoD+Lp+w4bIj7MAeREK0YzRXYnx6c=";
25 fetchSubmodules = true;
26 };
27
28 nativeBuildInputs = [
29 cmake
30 pkg-config
31 qt6.wrapQtAppsHook
32 ];
33
34 buildInputs = [
35 kdePackages.qtkeychain
36 libqalculate
37 libarchive
38 muparser
39 ]
40 ++ (with qt6; [
41 qt5compat
42 qtbase
43 qtdeclarative
44 qtscxml
45 qtsvg
46 qttools
47 qtwayland
48 ])
49 ++ (with python3Packages; [
50 python
51 pybind11
52 ]);
53
54 postPatch = ''
55 find -type f -name CMakeLists.txt -exec sed -i {} -e '/INSTALL_RPATH/d' \;
56
57 substituteInPlace src/app/qtpluginprovider.cpp \
58 --replace-fail "QStringList install_paths;" "QStringList install_paths;${"\n"}install_paths << QFileInfo(\"$out/lib\").canonicalFilePath();"
59 '';
60
61 postFixup = ''
62 for i in $out/{bin/.albert-wrapped,lib/albert/plugins/*.so}; do
63 patchelf $i --add-rpath $out/lib/albert
64 done
65 '';
66
67 passthru = {
68 updateScript = nix-update-script { };
69 };
70
71 meta = {
72 description = "Fast and flexible keyboard launcher";
73 longDescription = ''
74 Albert is a desktop agnostic launcher. Its goals are usability and beauty,
75 performance and extensibility. It is written in C++ and based on the Qt
76 framework.
77 '';
78 homepage = "https://albertlauncher.github.io";
79 changelog = "https://github.com/albertlauncher/albert/blob/${finalAttrs.src.rev}/CHANGELOG.md";
80 # See: https://github.com/NixOS/nixpkgs/issues/279226
81 license = lib.licenses.unfree;
82 maintainers = with lib.maintainers; [
83 synthetica
84 eljamm
85 ];
86 mainProgram = "albert";
87 platforms = lib.platforms.linux;
88 };
89})