1
0
Fork 0
mirror of https://github.com/Zedfrigg/ironbar.git synced 2025-07-01 10:41:03 +02:00

feat(nix): initial nix feature flags impl

This commit is contained in:
yavko 2023-02-07 22:30:47 -08:00
parent 7c36f5cb0c
commit 9984b638b5
No known key found for this signature in database
GPG key ID: F07D19A32407F857
2 changed files with 16 additions and 3 deletions

View file

@ -59,6 +59,7 @@ Here is an example nix flake that uses Ironbar.
enable = true; enable = true;
config = {}; config = {};
style = ""; style = "";
package = inputs.ironbar.packageBuilder ["features"];
}; };
} }
]; ];

View file

@ -31,6 +31,15 @@
]; ];
}; };
mkRustToolchain = pkgs: pkgs.rust-bin.stable.latest.default; mkRustToolchain = pkgs: pkgs.rust-bin.stable.latest.default;
defaultFeatures = [
"http"
"config+all"
"clock"
"music+all"
"sys_info"
"tray"
"workspaces+all"
];
in { in {
overlays.default = final: prev: let overlays.default = final: prev: let
rust = mkRustToolchain final; rust = mkRustToolchain final;
@ -40,26 +49,29 @@
rustc = rust; rustc = rust;
}; };
in { in {
ironbar = rustPlatform.buildRustPackage { ironbar = features: rustPlatform.buildRustPackage {
pname = "ironbar"; pname = "ironbar";
version = self.rev or "dirty"; version = self.rev or "dirty";
src = builtins.path { src = builtins.path {
name = "ironbar"; name = "ironbar";
path = prev.lib.cleanSource ./.; path = prev.lib.cleanSource ./.;
}; };
buildNoDefaultFeatures = true;
buildFeatures = features;
cargoDeps = rustPlatform.importCargoLock {lockFile = ./Cargo.lock;}; cargoDeps = rustPlatform.importCargoLock {lockFile = ./Cargo.lock;};
cargoLock.lockFile = ./Cargo.lock; cargoLock.lockFile = ./Cargo.lock;
nativeBuildInputs = with prev; [pkg-config]; nativeBuildInputs = with prev; [pkg-config];
buildInputs = with prev; [gtk3 gdk-pixbuf gtk-layer-shell libxkbcommon openssl]; buildInputs = with prev; [gtk3 gdk-pixbuf gtk-layer-shell libxkbcommon openssl];
}; };
}; };
packageBuilder = genSystems(system: self.packages.${system}.ironbar);
packages = genSystems ( packages = genSystems (
system: let system: let
pkgs = pkgsFor system; pkgs = pkgsFor system;
in in
(self.overlays.default pkgs pkgs) (self.overlays.default pkgs pkgs)
// { // {
default = self.packages.${system}.ironbar; default = self.packages.${system}.ironbar defaultFeatures;
} }
); );
devShells = genSystems (system: let devShells = genSystems (system: let
@ -87,7 +99,7 @@
... ...
}: let }: let
cfg = config.programs.ironbar; cfg = config.programs.ironbar;
defaultIronbarPackage = self.packages.${pkgs.hostPlatform.system}.default; defaultIronbarPackage = self.packages.${pkgs.hostPlatform.system}.default defaultFeatures;
jsonFormat = pkgs.formats.json {}; jsonFormat = pkgs.formats.json {};
in { in {
options.programs.ironbar = { options.programs.ironbar = {