stylix: don't split autoloaded modules into a separate derivation (#631)

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 anywhere 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" ];

Reviewed-by: Daniel Thwaites <danthwaites30@btinternet.com>
Reviewed-by: NAHO <90870942+trueNAHO@users.noreply.github.com>
This commit is contained in:
Alexey Lebedeff 2024-11-17 17:40:52 +01:00 committed by GitHub
parent cf5be812bd
commit 9b61cc39b2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 30 additions and 8 deletions

View file

@ -57,3 +57,25 @@ 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/<some-module>/nixos.nix" ];
```

View file

@ -1,4 +1,4 @@
{ lib }: { lib, inputs }:
# string -> [ path ] # string -> [ path ]
# List include path for either nixos modules or hm modules # List include path for either nixos modules or hm modules
@ -8,7 +8,7 @@ for:
(path: kind: (path: kind:
if kind == "directory" if kind == "directory"
then let then let
file = "${../modules}/${path}/${for}.nix"; file = "${inputs.self}/modules/${path}/${for}.nix";
in if builtins.pathExists file then [ file ] else [ ] in if builtins.pathExists file then [ file ] else [ ]
else [ ]) else [ ])
(builtins.readDir ../modules)) (builtins.readDir "${inputs.self}/modules"))

View file

@ -3,7 +3,7 @@ inputs:
{ lib, ... }: { lib, ... }:
let let
autoload = import ../autoload.nix { inherit lib; } "darwin"; autoload = import ../autoload.nix { inherit lib inputs; } "darwin";
in { in {
imports = [ imports = [
../pixel.nix ../pixel.nix

View file

@ -3,7 +3,7 @@ inputs:
{ lib, ... }: { lib, ... }:
let let
autoload = import ../autoload.nix { inherit lib; } "hm"; autoload = import ../autoload.nix { inherit lib inputs; } "hm";
in { in {
imports = [ imports = [
../pixel.nix ../pixel.nix

View file

@ -3,7 +3,7 @@ inputs:
{ lib, ... }: { lib, ... }:
let let
autoload = import ../autoload.nix { inherit lib; } "nixos"; autoload = import ../autoload.nix { inherit lib inputs; } "nixos";
in { in {
imports = [ imports = [
../pixel.nix ../pixel.nix

View file

@ -30,12 +30,12 @@ let
(name: _: (name: _:
let testbed = { let testbed = {
inherit name; inherit name;
module = "${../modules}/${name}/testbed.nix"; module = "${inputs.self}/modules/${name}/testbed.nix";
}; };
in in
lib.optional (builtins.pathExists testbed.module) testbed lib.optional (builtins.pathExists testbed.module) testbed
) )
(builtins.readDir ../modules)); (builtins.readDir "${inputs.self}/modules"));
makeTestbed = makeTestbed =
testbed: stylix: testbed: stylix: