From 22422ce68e797d042c9b473b64f274653bd93719 Mon Sep 17 00:00:00 2001 From: Alexey Lebedeff Date: Sat, 16 Nov 2024 10:27:17 +0100 Subject: [PATCH] Don't split autoloaded modules into a separate derivation Apparently `../modules` is creating a separate derivation that contains only that folder, so it's now separate from the flake source. But this transient derivation isn't mentioned explicitly in the flake outputs. It makes it impossible to target those modules in `disabledModules` directive. For example, after this change is applied, users can solve issues like https://github.com/danth/stylix/issues/577 locally, by just adding the following snippet to their configuration: disabledModules = [ "${inputs.stylix}/modules/regreet/nixos.nix" ]; --- docs/src/tricks.md | 25 +++++++++++++++++++++++++ stylix/autoload.nix | 6 +++--- stylix/darwin/default.nix | 2 +- stylix/hm/default.nix | 2 +- stylix/nixos/default.nix | 2 +- 5 files changed, 31 insertions(+), 6 deletions(-) diff --git a/docs/src/tricks.md b/docs/src/tricks.md index c25e34859..6c938c652 100644 --- a/docs/src/tricks.md +++ b/docs/src/tricks.md @@ -57,3 +57,28 @@ Which is neatly implemented as a single function in `lib.stylix.pixel`: }; } ``` + +## Completely disabling some stylix targets + +Nixpkgs module system sometimes works in non-intuitive ways, e.g. parts +of the configuration guarded by `lib.mkIf` are still being descended +into. This means that every **loaded** (and not enabled) module must +be compatible with others - in the sense that **every** option that is +mentioned in the disabled parts of the configuration still needs to be +defined somewhere. + +Sometimes that can be a problem, when your particular configuration +diverges enough from what stylix expects. In that case you can try +stubbing all the missing options in your configuration. + +Or in a much clearer fashion you can just disable offending stylix targets +by adding the following `disableModules` line next to importing stylix +itself: + +```nix + imports = [ + flake.inputs.stylix.nixosModules.stylix + ]; + disabledModules = [ "${flake.inputs.stylix}/modules//nixos.nix" ]; + +``` diff --git a/stylix/autoload.nix b/stylix/autoload.nix index bfb2fe687..8610ebcac 100644 --- a/stylix/autoload.nix +++ b/stylix/autoload.nix @@ -1,4 +1,4 @@ -{ lib }: +{ lib, inputs }: # string -> [ path ] # List include path for either nixos modules or hm modules @@ -8,7 +8,7 @@ for: (path: kind: if kind == "directory" then let - file = "${../modules}/${path}/${for}.nix"; + file = "${inputs.self}/modules/${path}/${for}.nix"; in if builtins.pathExists file then [ file ] else [ ] else [ ]) - (builtins.readDir ../modules)) + (builtins.readDir "${inputs.self}/modules")) diff --git a/stylix/darwin/default.nix b/stylix/darwin/default.nix index 19e7c6e12..a4eca70ca 100644 --- a/stylix/darwin/default.nix +++ b/stylix/darwin/default.nix @@ -3,7 +3,7 @@ inputs: { lib, ... }: let - autoload = import ../autoload.nix { inherit lib; } "darwin"; + autoload = import ../autoload.nix { inherit lib inputs; } "darwin"; in { imports = [ ../pixel.nix diff --git a/stylix/hm/default.nix b/stylix/hm/default.nix index a5cae1774..225ea275d 100644 --- a/stylix/hm/default.nix +++ b/stylix/hm/default.nix @@ -3,7 +3,7 @@ inputs: { lib, ... }: let - autoload = import ../autoload.nix { inherit lib; } "hm"; + autoload = import ../autoload.nix { inherit lib inputs; } "hm"; in { imports = [ ../pixel.nix diff --git a/stylix/nixos/default.nix b/stylix/nixos/default.nix index 56c4741b5..eba040588 100644 --- a/stylix/nixos/default.nix +++ b/stylix/nixos/default.nix @@ -3,7 +3,7 @@ inputs: { lib, ... }: let - autoload = import ../autoload.nix { inherit lib; } "nixos"; + autoload = import ../autoload.nix { inherit lib inputs; } "nixos"; in { imports = [ ../pixel.nix