Files
att_menu/flake.nix
T
2026-07-26 21:16:55 +02:00

88 lines
2.5 KiB
Nix

{
description = "att_menu a bottom desktop panel for wlroots compositors, built on Quickshell";
inputs = {
# Pinned to the current NixOS stable release.
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
};
outputs =
{ self, nixpkgs }:
let
systems = [
"x86_64-linux"
"aarch64-linux"
];
forAllSystems = fn: nixpkgs.lib.genAttrs systems (system: fn nixpkgs.legacyPackages.${system});
in
{
packages = forAllSystems (pkgs: rec {
default = att_menu;
att_menu = pkgs.stdenvNoCC.mkDerivation {
pname = "att_menu";
version = "0.1.0";
src = ./.;
nativeBuildInputs = [ pkgs.makeWrapper ];
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/att_menu
cp -r shell.qml config components modules services $out/share/att_menu/
makeWrapper ${pkgs.lib.getExe' pkgs.quickshell "qs"} $out/bin/att_menu \
--add-flags "--path $out/share/att_menu" \
--suffix PATH : ${
pkgs.lib.makeBinPath [
# loginctl and systemctl back the default power actions. The
# session's own PATH is searched first, so a compositor's
# swaymsg/hyprctl/niri is still picked up for logging out.
pkgs.systemd
]
} \
--suffix XDG_DATA_DIRS : "${pkgs.adwaita-icon-theme}/share:${pkgs.hicolor-icon-theme}/share"
runHook postInstall
'';
meta = {
description = "Bottom desktop panel for wlroots compositors, built on Quickshell";
mainProgram = "att_menu";
platforms = pkgs.lib.platforms.linux;
};
};
});
apps = forAllSystems (pkgs: {
default = {
type = "app";
program = pkgs.lib.getExe self.packages.${pkgs.stdenv.hostPlatform.system}.att_menu;
};
});
devShells = forAllSystems (pkgs: {
default = pkgs.mkShell {
packages = [
pkgs.quickshell
# qmlls / qmlformat for editing the QML in place.
pkgs.qt6.qtdeclarative
];
shellHook = ''
echo "att_menu dev shell run the panel from the working tree with:"
echo " qs --path ."
'';
};
});
formatter = forAllSystems (pkgs: pkgs.nixfmt-tree);
};
}