From 57cd5068787de5571cc6dd60431a0fa255d12a1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Berk=20=C3=96zk=C3=BCt=C3=BCk?= Date: Fri, 23 Jun 2023 21:09:40 +0200 Subject: [PATCH] Fix `settings..cabalFlags` implementation (#178) * Fix cabalFlags implementation * Improve impl; add test * update changelog --------- Co-authored-by: Sridhar Ratnakumar --- CHANGELOG.md | 2 +- nix/modules/project/settings/all.nix | 9 ++++----- test/simple/flake.nix | 5 +++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bad6b0..90cebe4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ - `flake.haskellFlakeProjectModules`: Dropped all defaults, except the `output` module, which now exports `packages` and `settings`. Added a `defaults.projectModules.output` option that allows the user to override this module, or directly access the generated module. - Add `project.config.defaults.settings.default` defining sensible defaults for local packages. - Add `project.config.defaults.enable` to turn off all default settings en masse. - - Regressions in this PR: #169 + - Regressions in this PR: #169, #178 ## 0.3.0 (May 22, 2023) diff --git a/nix/modules/project/settings/all.nix b/nix/modules/project/settings/all.nix index d8df7e8..a2bb119 100644 --- a/nix/modules/project/settings/all.nix +++ b/nix/modules/project/settings/all.nix @@ -199,12 +199,11 @@ in ''; impl = flags: drv: let - enabled = lib.filterAttrs (_: v: v) flags; - disabled = lib.filterAttrs (_: v: !v) flags; - enableCabalFlags = fs: drv: builtins.foldl' enableCabalFlag drv fs; - disableCabalFlags = fs: drv: builtins.foldl' disableCabalFlag drv fs; + fns = lib.flip lib.mapAttrsToList flags (flag: enabled: + (if enabled then enableCabalFlag else disableCabalFlag) flag + ); in - lib.pipe drv [ enableCabalFlag disableCabalFlag ]; + lib.pipe drv fns; }; patches = { type = types.listOf types.path; diff --git a/test/simple/flake.nix b/test/simple/flake.nix index 10e26a9..2a16c79 100644 --- a/test/simple/flake.nix +++ b/test/simple/flake.nix @@ -52,6 +52,11 @@ # the 'foo' package, we must override it here using `lib.mkForce`. foo.source = lib.mkForce (inputs.haskell-multi-nix + /foo); }; + settings = { + foo = { + cabalFlags.blah = true; + }; + }; devShell = { tools = hp: { # Adding a tool should make it available in devshell.