86 lines
2.6 KiB
Nix
86 lines
2.6 KiB
Nix
{
|
|
description = "A Wayland status bar for Sway, built with Quickshell";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
# Upstream Quickshell, tracked directly so we get layer-surface fixes
|
|
# (e.g. clean buffers on output transform / rotation) ahead of nixpkgs.
|
|
quickshell = {
|
|
url = "git+https://git.outfoxxed.me/quickshell/quickshell";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs = { self, nixpkgs, quickshell }:
|
|
let
|
|
systems = [ "x86_64-linux" "aarch64-linux" ];
|
|
forAllSystems = f:
|
|
nixpkgs.lib.genAttrs systems (system: f nixpkgs.legacyPackages.${system});
|
|
in
|
|
{
|
|
packages = forAllSystems (pkgs:
|
|
let
|
|
# Quickshell from the upstream flake rather than nixpkgs.
|
|
qsPkg = quickshell.packages.${pkgs.system}.default;
|
|
|
|
# Runtime tools the bar relies on: discover.sh (one-shot hardware
|
|
# probe) and the periodic `df` for disk usage. Everything else is
|
|
# read from /proc and /sys directly in QML.
|
|
runtimeInputs = [
|
|
qsPkg
|
|
pkgs.bash
|
|
pkgs.coreutils # df, cat
|
|
];
|
|
|
|
# Self-contained font set so Nerd Font glyphs always render,
|
|
# regardless of the host's installed fonts.
|
|
fontsConf = pkgs.makeFontsConf {
|
|
fontDirectories = [
|
|
pkgs.nerd-fonts.jetbrains-mono
|
|
pkgs.nerd-fonts.symbols-only
|
|
pkgs.inter
|
|
];
|
|
};
|
|
|
|
bar = pkgs.writeShellApplication {
|
|
name = "quickshell-bar";
|
|
inherit runtimeInputs;
|
|
text = ''
|
|
export FONTCONFIG_FILE=${fontsConf}
|
|
exec quickshell --path ${self} "$@"
|
|
'';
|
|
};
|
|
in
|
|
{
|
|
default = bar;
|
|
quickshell-bar = bar;
|
|
});
|
|
|
|
apps = forAllSystems (pkgs: {
|
|
default = {
|
|
type = "app";
|
|
program = "${self.packages.${pkgs.system}.default}/bin/quickshell-bar";
|
|
};
|
|
});
|
|
|
|
devShells = forAllSystems (pkgs: {
|
|
default = pkgs.mkShell {
|
|
packages = [
|
|
quickshell.packages.${pkgs.system}.default
|
|
pkgs.bash
|
|
pkgs.coreutils
|
|
pkgs.nerd-fonts.jetbrains-mono
|
|
pkgs.inter
|
|
pkgs.qt6.qtdeclarative # qmlls / qmlformat for editing
|
|
];
|
|
shellHook = ''
|
|
echo "quickshell $(quickshell --version 2>/dev/null | head -1)"
|
|
echo "Run the bar with: quickshell --path ."
|
|
'';
|
|
};
|
|
});
|
|
|
|
formatter = forAllSystems (pkgs: pkgs.nixpkgs-fmt);
|
|
};
|
|
}
|