From 9984b638b55adea11ba90412346fbb8220f05682 Mon Sep 17 00:00:00 2001 From: yavko Date: Tue, 7 Feb 2023 22:30:47 -0800 Subject: [PATCH 1/5] feat(nix): initial nix feature flags impl --- README.md | 1 + flake.nix | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index eb1a206..de951ca 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ Here is an example nix flake that uses Ironbar. enable = true; config = {}; style = ""; + package = inputs.ironbar.packageBuilder ["features"]; }; } ]; diff --git a/flake.nix b/flake.nix index 4e129d4..97966d6 100644 --- a/flake.nix +++ b/flake.nix @@ -31,6 +31,15 @@ ]; }; mkRustToolchain = pkgs: pkgs.rust-bin.stable.latest.default; + defaultFeatures = [ + "http" + "config+all" + "clock" + "music+all" + "sys_info" + "tray" + "workspaces+all" + ]; in { overlays.default = final: prev: let rust = mkRustToolchain final; @@ -40,26 +49,29 @@ rustc = rust; }; in { - ironbar = rustPlatform.buildRustPackage { + ironbar = features: rustPlatform.buildRustPackage { pname = "ironbar"; version = self.rev or "dirty"; src = builtins.path { name = "ironbar"; path = prev.lib.cleanSource ./.; }; + buildNoDefaultFeatures = true; + buildFeatures = features; cargoDeps = rustPlatform.importCargoLock {lockFile = ./Cargo.lock;}; cargoLock.lockFile = ./Cargo.lock; nativeBuildInputs = with prev; [pkg-config]; buildInputs = with prev; [gtk3 gdk-pixbuf gtk-layer-shell libxkbcommon openssl]; }; }; + packageBuilder = genSystems(system: self.packages.${system}.ironbar); packages = genSystems ( system: let pkgs = pkgsFor system; in (self.overlays.default pkgs pkgs) // { - default = self.packages.${system}.ironbar; + default = self.packages.${system}.ironbar defaultFeatures; } ); devShells = genSystems (system: let @@ -87,7 +99,7 @@ ... }: let cfg = config.programs.ironbar; - defaultIronbarPackage = self.packages.${pkgs.hostPlatform.system}.default; + defaultIronbarPackage = self.packages.${pkgs.hostPlatform.system}.default defaultFeatures; jsonFormat = pkgs.formats.json {}; in { options.programs.ironbar = { From b2749fee928e0607e2b53f5f850b177978e6bcbe Mon Sep 17 00:00:00 2001 From: yavko Date: Tue, 7 Feb 2023 22:32:21 -0800 Subject: [PATCH 2/5] style(nix): fmt flake.nix --- flake.nix | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/flake.nix b/flake.nix index 97966d6..3b6c5da 100644 --- a/flake.nix +++ b/flake.nix @@ -31,15 +31,15 @@ ]; }; mkRustToolchain = pkgs: pkgs.rust-bin.stable.latest.default; - defaultFeatures = [ - "http" - "config+all" - "clock" - "music+all" - "sys_info" - "tray" - "workspaces+all" - ]; + defaultFeatures = [ + "http" + "config+all" + "clock" + "music+all" + "sys_info" + "tray" + "workspaces+all" + ]; in { overlays.default = final: prev: let rust = mkRustToolchain final; @@ -49,22 +49,23 @@ rustc = rust; }; in { - ironbar = features: rustPlatform.buildRustPackage { - pname = "ironbar"; - version = self.rev or "dirty"; - src = builtins.path { - name = "ironbar"; - path = prev.lib.cleanSource ./.; + ironbar = features: + rustPlatform.buildRustPackage { + pname = "ironbar"; + version = self.rev or "dirty"; + src = builtins.path { + name = "ironbar"; + path = prev.lib.cleanSource ./.; + }; + buildNoDefaultFeatures = true; + buildFeatures = features; + cargoDeps = rustPlatform.importCargoLock {lockFile = ./Cargo.lock;}; + cargoLock.lockFile = ./Cargo.lock; + nativeBuildInputs = with prev; [pkg-config]; + buildInputs = with prev; [gtk3 gdk-pixbuf gtk-layer-shell libxkbcommon openssl]; }; - buildNoDefaultFeatures = true; - buildFeatures = features; - cargoDeps = rustPlatform.importCargoLock {lockFile = ./Cargo.lock;}; - cargoLock.lockFile = ./Cargo.lock; - nativeBuildInputs = with prev; [pkg-config]; - buildInputs = with prev; [gtk3 gdk-pixbuf gtk-layer-shell libxkbcommon openssl]; - }; }; - packageBuilder = genSystems(system: self.packages.${system}.ironbar); + packageBuilder = genSystems (system: self.packages.${system}.ironbar); packages = genSystems ( system: let pkgs = pkgsFor system; From b1475a1affd2f101f1f707ab1a0e8e5509a1d99f Mon Sep 17 00:00:00 2001 From: yavko Date: Mon, 27 Feb 2023 20:25:06 -0800 Subject: [PATCH 3/5] feat(nix): use cargo default features --- flake.nix | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.nix b/flake.nix index 3b6c5da..3e7488a 100644 --- a/flake.nix +++ b/flake.nix @@ -31,15 +31,15 @@ ]; }; mkRustToolchain = pkgs: pkgs.rust-bin.stable.latest.default; - defaultFeatures = [ - "http" - "config+all" - "clock" - "music+all" - "sys_info" - "tray" - "workspaces+all" - ]; + # defaultFeatures = [ + # "http" + # "config+all" + # "clock" + # "music+all" + # "sys_info" + # "tray" + # "workspaces+all" + # ]; in { overlays.default = final: prev: let rust = mkRustToolchain final; @@ -57,7 +57,7 @@ name = "ironbar"; path = prev.lib.cleanSource ./.; }; - buildNoDefaultFeatures = true; + buildNoDefaultFeatures = if features == [] then false else true; buildFeatures = features; cargoDeps = rustPlatform.importCargoLock {lockFile = ./Cargo.lock;}; cargoLock.lockFile = ./Cargo.lock; @@ -72,7 +72,7 @@ in (self.overlays.default pkgs pkgs) // { - default = self.packages.${system}.ironbar defaultFeatures; + default = self.packages.${system}.ironbar []; } ); devShells = genSystems (system: let @@ -100,7 +100,7 @@ ... }: let cfg = config.programs.ironbar; - defaultIronbarPackage = self.packages.${pkgs.hostPlatform.system}.default defaultFeatures; + defaultIronbarPackage = self.packages.${pkgs.hostPlatform.system}.default []; jsonFormat = pkgs.formats.json {}; in { options.programs.ironbar = { From 3a44d74cf3bcadd147309438bde061120afb713e Mon Sep 17 00:00:00 2001 From: yavko Date: Tue, 28 Feb 2023 19:06:07 -0800 Subject: [PATCH 4/5] style(nix): fmt flake.nix --- flake.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 3e7488a..b9d4336 100644 --- a/flake.nix +++ b/flake.nix @@ -57,7 +57,10 @@ name = "ironbar"; path = prev.lib.cleanSource ./.; }; - buildNoDefaultFeatures = if features == [] then false else true; + buildNoDefaultFeatures = + if features == [] + then false + else true; buildFeatures = features; cargoDeps = rustPlatform.importCargoLock {lockFile = ./Cargo.lock;}; cargoLock.lockFile = ./Cargo.lock; From 54b9b28c75b2fe300e2bad1436d315da1950953e Mon Sep 17 00:00:00 2001 From: yavko Date: Tue, 28 Feb 2023 19:11:18 -0800 Subject: [PATCH 5/5] fix: make readme more concise --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index de951ca..afd0639 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Here is an example nix flake that uses Ironbar. enable = true; config = {}; style = ""; - package = inputs.ironbar.packageBuilder ["features"]; + package = inputs.ironbar.packageBuilder ["feature" "another_feature"]; }; } ];