fix: respect directory parameter in machines_dir
The machines_dir() function was hardcoding "machines" without considering
the directory parameter from buildClan/clan configuration. This caused
update-hardware-config and other commands to write files to the wrong
location when a custom directory was specified (e.g., directory = ./clan).
Solution:
1. Added relativeDirectory to inventoryClass in Nix, computed where both
self and directory have consistent store paths during evaluation
2. Updated machines_dir() to use this pre-computed relative path from Nix
via flake.select("clanInternals.inventoryClass.relativeDirectory")
Fixes: https://git.clan.lol/clan/clan-core/issues/2906
This commit is contained in:
@@ -222,6 +222,18 @@ in
|
||||
inventoryClass =
|
||||
let
|
||||
flakeInputs = config.self.inputs;
|
||||
# Compute the relative directory path
|
||||
selfStr = toString config.self;
|
||||
dirStr = toString directory;
|
||||
relativeDirectory =
|
||||
if selfStr == dirStr then
|
||||
""
|
||||
else if lib.hasPrefix selfStr dirStr then
|
||||
lib.removePrefix (selfStr + "/") dirStr
|
||||
else
|
||||
# This shouldn't happen in normal usage, but can occur when
|
||||
# the flake is copied (e.g., in tests). Fall back to empty string.
|
||||
"";
|
||||
in
|
||||
{
|
||||
_module.args = {
|
||||
@@ -230,7 +242,12 @@ in
|
||||
imports = [
|
||||
../inventoryClass/default.nix
|
||||
{
|
||||
inherit inventory directory flakeInputs;
|
||||
inherit
|
||||
inventory
|
||||
directory
|
||||
flakeInputs
|
||||
relativeDirectory
|
||||
;
|
||||
exportsModule = config.exportsModule;
|
||||
}
|
||||
(
|
||||
|
||||
@@ -81,6 +81,14 @@ in
|
||||
directory = mkOption {
|
||||
type = types.path;
|
||||
};
|
||||
relativeDirectory = mkOption {
|
||||
type = types.str;
|
||||
internal = true;
|
||||
description = ''
|
||||
The relative directory path from the flake root to the clan directory.
|
||||
Empty string if directory equals the flake root.
|
||||
'';
|
||||
};
|
||||
machines = mkOption {
|
||||
type = types.attrsOf (submodule ({
|
||||
options = {
|
||||
|
||||
Reference in New Issue
Block a user