2023-03-29 01:45:40 -07:00
|
|
|
{
|
|
|
|
gtk3,
|
|
|
|
gdk-pixbuf,
|
2023-04-22 16:47:04 -07:00
|
|
|
librsvg,
|
|
|
|
webp-pixbuf-loader,
|
|
|
|
gobject-introspection,
|
|
|
|
glib-networking,
|
|
|
|
glib,
|
|
|
|
shared-mime-info,
|
|
|
|
gsettings-desktop-schemas,
|
|
|
|
wrapGAppsHook,
|
2023-03-29 01:45:40 -07:00
|
|
|
gtk-layer-shell,
|
2023-04-22 16:47:04 -07:00
|
|
|
gnome,
|
2023-03-29 01:45:40 -07:00
|
|
|
libxkbcommon,
|
2024-11-16 17:19:49 +00:00
|
|
|
libdbusmenu-gtk3,
|
2024-02-18 17:32:51 +00:00
|
|
|
libpulseaudio,
|
2024-11-17 23:46:02 +00:00
|
|
|
libinput,
|
|
|
|
libevdev,
|
2023-03-29 01:45:40 -07:00
|
|
|
openssl,
|
2024-03-30 23:43:30 +00:00
|
|
|
luajit,
|
|
|
|
luajitPackages,
|
2023-03-29 01:45:40 -07:00
|
|
|
pkg-config,
|
2024-07-30 14:01:49 -04:00
|
|
|
installShellFiles,
|
2024-11-18 21:27:05 +00:00
|
|
|
adwaita-icon-theme,
|
2023-04-22 16:47:04 -07:00
|
|
|
hicolor-icon-theme,
|
2023-03-29 01:45:40 -07:00
|
|
|
lib,
|
|
|
|
version ? "git",
|
|
|
|
features ? [],
|
2025-05-29 23:35:29 +10:00
|
|
|
naersk,
|
2023-07-26 22:22:52 +01:00
|
|
|
}: let
|
2025-05-04 13:30:24 +03:00
|
|
|
hasFeature = f: features == [] || builtins.elem f features;
|
2025-05-29 23:35:29 +10:00
|
|
|
flags = let
|
|
|
|
noDefault =
|
|
|
|
if features == []
|
|
|
|
then ""
|
|
|
|
else "--no-default-features";
|
2024-04-17 22:04:43 +01:00
|
|
|
|
2025-05-29 23:35:29 +10:00
|
|
|
featuresStr =
|
|
|
|
if features == []
|
|
|
|
then ""
|
|
|
|
else ''-F "${builtins.concatStringsSep "," features}"'';
|
|
|
|
in [
|
|
|
|
noDefault
|
|
|
|
featuresStr
|
|
|
|
];
|
|
|
|
lgi = luajitPackages.lgi;
|
|
|
|
gappsWrapperArgs =
|
|
|
|
''
|
|
|
|
# Thumbnailers
|
|
|
|
--prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
|
|
|
|
--prefix XDG_DATA_DIRS : "${librsvg}/share"
|
|
|
|
--prefix XDG_DATA_DIRS : "${webp-pixbuf-loader}/share"
|
|
|
|
--prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
|
|
|
|
|
|
|
|
# gtk-launch
|
|
|
|
--suffix PATH : "${lib.makeBinPath [gtk3]}"
|
|
|
|
''
|
|
|
|
+ lib.optionalString (hasFeature "cairo") ''
|
|
|
|
--prefix LUA_PATH : "./?.lua;${lgi}/share/lua/5.1/?.lua;${lgi}/share/lua/5.1/?/init.lua;${luajit}/share/lua/5.1/\?.lua;${luajit}/share/lua/5.1/?/init.lua"
|
|
|
|
--prefix LUA_CPATH : "./?.so;${lgi}/lib/lua/5.1/?.so;${luajit}/lib/lua/5.1/?.so;${luajit}/lib/lua/5.1/loadall.so"
|
|
|
|
'';
|
|
|
|
in
|
|
|
|
naersk.buildPackage {
|
2023-07-26 22:22:52 +01:00
|
|
|
inherit version;
|
2024-04-17 21:43:46 +01:00
|
|
|
|
2023-07-26 22:22:52 +01:00
|
|
|
pname = "ironbar";
|
2024-04-17 21:43:46 +01:00
|
|
|
|
2025-05-04 13:30:24 +03:00
|
|
|
src = let
|
|
|
|
fs = lib.fileset;
|
|
|
|
root = ../.;
|
|
|
|
nixRelated = fs.fileFilter (file: file.hasExt "nix" || file.name == "flake.lock") root;
|
|
|
|
cicdRelated = fs.unions [
|
|
|
|
(lib.path.append root "Dockerfile")
|
|
|
|
(lib.path.append root ".github")
|
|
|
|
];
|
|
|
|
ideRelated = fs.unions [
|
|
|
|
(lib.path.append root ".idea")
|
|
|
|
];
|
2025-05-29 23:35:29 +10:00
|
|
|
in
|
|
|
|
fs.toSource {
|
|
|
|
inherit root;
|
|
|
|
# NOTE: can possibly filter out more
|
|
|
|
fileset = fs.difference root (
|
|
|
|
fs.unions [
|
|
|
|
nixRelated
|
|
|
|
cicdRelated
|
|
|
|
ideRelated
|
|
|
|
]
|
|
|
|
);
|
|
|
|
};
|
2024-04-17 21:43:46 +01:00
|
|
|
|
|
|
|
nativeBuildInputs = [
|
2025-05-04 13:30:24 +03:00
|
|
|
pkg-config
|
|
|
|
wrapGAppsHook
|
|
|
|
gobject-introspection
|
|
|
|
installShellFiles
|
2024-04-17 21:43:46 +01:00
|
|
|
];
|
2024-03-30 23:43:30 +00:00
|
|
|
|
2025-05-04 13:30:24 +03:00
|
|
|
buildInputs =
|
|
|
|
[
|
|
|
|
gtk3
|
|
|
|
gdk-pixbuf
|
|
|
|
glib
|
|
|
|
gtk-layer-shell
|
|
|
|
glib-networking
|
|
|
|
shared-mime-info
|
|
|
|
adwaita-icon-theme
|
|
|
|
hicolor-icon-theme
|
|
|
|
gsettings-desktop-schemas
|
|
|
|
libxkbcommon
|
|
|
|
]
|
|
|
|
++ lib.optionals (hasFeature "http") [openssl]
|
|
|
|
++ lib.optionals (hasFeature "tray") [libdbusmenu-gtk3]
|
|
|
|
++ lib.optionals (hasFeature "volume") [libpulseaudio]
|
|
|
|
++ lib.optionals (hasFeature "cairo") [luajit]
|
2025-05-29 23:35:29 +10:00
|
|
|
++ lib.optionals (hasFeature "keyboard") [
|
|
|
|
libinput
|
|
|
|
libevdev
|
|
|
|
];
|
2025-05-04 13:30:24 +03:00
|
|
|
|
|
|
|
propagatedBuildInputs = [gtk3];
|
2024-03-30 23:43:30 +00:00
|
|
|
|
2025-05-29 23:35:29 +10:00
|
|
|
cargoBuildOptions = old: old ++ flags;
|
2024-04-17 22:04:43 +01:00
|
|
|
|
|
|
|
preFixup = ''
|
|
|
|
gappsWrapperArgs+=(
|
|
|
|
${gappsWrapperArgs}
|
2023-07-26 22:22:52 +01:00
|
|
|
)
|
|
|
|
'';
|
2024-04-17 21:43:46 +01:00
|
|
|
|
2024-07-30 14:01:49 -04:00
|
|
|
postInstall = ''
|
|
|
|
installShellCompletion --cmd ironbar \
|
|
|
|
--bash target/completions/ironbar.bash \
|
|
|
|
--fish target/completions/ironbar.fish \
|
|
|
|
--zsh target/completions/_ironbar
|
|
|
|
'';
|
|
|
|
|
2023-07-26 22:22:52 +01:00
|
|
|
passthru = {
|
|
|
|
updateScript = gnome.updateScript {
|
2025-05-29 23:35:29 +10:00
|
|
|
packageName = "ironbar";
|
|
|
|
attrPath = "gnome.ironbar";
|
2023-07-26 22:22:52 +01:00
|
|
|
};
|
|
|
|
};
|
2024-04-17 21:43:46 +01:00
|
|
|
|
2025-05-29 23:35:29 +10:00
|
|
|
meta = {
|
2023-07-26 22:22:52 +01:00
|
|
|
homepage = "https://github.com/JakeStanger/ironbar";
|
2025-05-04 13:30:24 +03:00
|
|
|
description = "Customisable gtk-layer-shell wlroots/sway bar written in rust.";
|
2025-05-29 23:35:29 +10:00
|
|
|
license = lib.licenses.mit;
|
|
|
|
platforms = lib.platforms.linux;
|
2023-07-26 22:22:52 +01:00
|
|
|
mainProgram = "ironbar";
|
2023-04-22 16:47:04 -07:00
|
|
|
};
|
2025-05-29 23:35:29 +10:00
|
|
|
}
|