diff --git a/flake.nix b/flake.nix index 7a0b02c..e5b0a02 100644 --- a/flake.nix +++ b/flake.nix @@ -30,7 +30,7 @@ in { # Home-Manager modules — import in nixos-config via: # imports = [ inputs.m3ta-home.homeManagerModules.default ]; - homeManagerModules = import ./modules inputs; + homeManagerModules = import ./modules { inherit inputs; selfPath = self.outPath; }; # Library functions — use in nixos-config via: # m3ta-lib = inputs.m3ta-home.lib; diff --git a/modules/default.nix b/modules/default.nix index f662a1e..67b4380 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -5,17 +5,17 @@ # # Individual modules declare their own options (mkEnableOption etc.) # and are activated by mkHome's import mechanism. -inputs: let +{ + inputs, + selfPath, +}: let lib = inputs.nixpkgs.lib; - - # Collect all .nix files recursively from a directory - collectModules = dir: - builtins.filterSource (path: _type: - lib.hasSuffix ".nix" (builtins.baseNameOf path)) - dir; in { default = { imports = [ + # Paths — must be first, provides m3ta-home.paths.srcRoot + ./paths.nix + # Profiles ./../profiles/base ./../profiles/contexts/desktop @@ -29,5 +29,8 @@ in { ./../users/m3tam3re/identities/private.nix ./../users/m3tam3re/identities/work.nix ]; + + # Set the source root for asset path resolution + m3ta-home.paths.srcRoot = selfPath; }; } diff --git a/modules/paths.nix b/modules/paths.nix new file mode 100644 index 0000000..a580810 --- /dev/null +++ b/modules/paths.nix @@ -0,0 +1,13 @@ +# modules/paths.nix — Provides m3ta-home source paths for pure evaluation mode. +# +# Relative paths with ../.. break in the Nix store during pure evaluation. +# This module exposes the flake source root so other modules can reference +# assets via config.m3ta-home.paths.srcRoot. +{lib, ...}: { + options.m3ta-home.paths = { + srcRoot = lib.mkOption { + type = lib.types.path; + description = "Root path of the m3ta-home flake source (set by flake.nix)."; + }; + }; +} diff --git a/profiles/contexts/desktop/theme/wallpapers.nix b/profiles/contexts/desktop/theme/wallpapers.nix index f6d4bd5..2be2657 100644 --- a/profiles/contexts/desktop/theme/wallpapers.nix +++ b/profiles/contexts/desktop/theme/wallpapers.nix @@ -11,8 +11,8 @@ in { config = mkIf cfg { xdg.configFile."hypr/wallpapers" = { - # Wallpapers stored in m3ta-home/assets/wallpapers/ - source = ./../../../../assets/wallpapers; + # Use the flake source root for pure evaluation compatibility + source = "${config.m3ta-home.paths.srcRoot}/assets/wallpapers"; recursive = true; }; };