diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/profiles/common.nix | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/modules/profiles/common.nix b/modules/profiles/common.nix index c941d636..0be2be96 100644 --- a/modules/profiles/common.nix +++ b/modules/profiles/common.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, pkgs, lib, ... }: with lib; @@ -15,6 +15,17 @@ with lib; ''; }; + enableGlobalNixpkgsConfig = mkOption { + type = types.bool; + default = false; + description = '' + Enabling this links <literal>nixos-config</literal> to be used by + <literal>nixpkgs-config</literal>, which essentially means that + attributes defined in <option>nixpkgs.config</option> are also in effect + for user environments. + ''; + }; + channelName = mkOption { type = types.str; default = "vuizvui"; @@ -46,13 +57,21 @@ with lib; ]; nix.nixPath = let + nixpkgs = import ../../nixpkgs-path.nix; rootChannelsPath = "/nix/var/nix/profiles/per-user/root/channels"; channelPath = "${rootChannelsPath}/${config.vuizvui.channelName}"; - in mkIf config.vuizvui.modifyNixPath (mkOverride 90 [ - "vuizvui=${channelPath}" - "nixpkgs=${channelPath}/nixpkgs" - "nixos-config=/etc/nixos/configuration.nix" - rootChannelsPath - ]); + nixosConfig = "/etc/nixos/configuration.nix"; + nixpkgsConfig = "nixpkgs-config=${pkgs.writeText "nixpkgs-config.nix" '' + (import ${nixpkgs}/nixos/lib/eval-config.nix { + modules = [ ${nixosConfig} ]; + }).config.nixpkgs.config + ''}"; + nixPath = [ + "vuizvui=${channelPath}" + "nixpkgs=${channelPath}/nixpkgs" + "nixos-config=${nixosConfig}" + rootChannelsPath + ] ++ optional config.vuizvui.enableGlobalNixpkgsConfig nixpkgsConfig; + in mkIf config.vuizvui.modifyNixPath (mkOverride 90 nixPath); }; } |