Skip to content

Commit

Permalink
Remove non-default settings when hydrating
Browse files Browse the repository at this point in the history
  • Loading branch information
thomasjm committed Sep 25, 2024
1 parent 73a8a0c commit 1e98605
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 1 deletion.
2 changes: 1 addition & 1 deletion modules/base/nixos-options-to-settings-schema.nix
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ let
evalString = str: builtins.scopedImport {} (builtins.toFile "expr.nix" str);

convertDefaultValue = value:
if value._type == "literalExpression" then builtins.toJSON (evalString value.text)
if value._type == "literalExpression" then evalString value.text
else builtins.throw "Can't handle this default value: ${toString value}.";

in
Expand Down
4 changes: 4 additions & 0 deletions nix/makeEnvironment.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,18 @@ with lib;

let
evaluated = (callPackage ./evaluate-config.nix { inherit pkgsStable pkgsMaster; }) config;
removeNonDefaultSettings = callPackage ./remove-non-default-settings.nix {};

builtExporters = evaluated.config.builtExporters;
builtKernels = mapAttrs (_: kernel:
kernel.overrideAttrs (old: {
passthru = old.passthru // {
name = "kernels." + kernel.name;

# channel = kernel.channel;
channel = "codedown";

settings = removeNonDefaultSettings kernel.settingsSchema kernel.settings;
};
})) evaluated.config.builtKernels;
builtLanguageServers = evaluated.config.builtLanguageServers;
Expand Down
26 changes: 26 additions & 0 deletions nix/remove-non-default-settings.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{ lib }:

settingsSchema:

settings:

with lib;

let
evalString = str: builtins.scopedImport {} (builtins.toFile "expr.nix" str);

getSettingsRow = schemaItem: value:
if value != schemaItem.defaultValue
then { name = concatStringsSep "." schemaItem.target; inherit value; }
else null
;

tryGetSettingsRow = schemaItem:
if hasAttrByPath schemaItem.target settings
then getSettingsRow schemaItem (getAttrFromPath schemaItem.target settings)
else null
;

in

listToAttrs (filter (x: x != null) (map tryGetSettingsRow settingsSchema))

0 comments on commit 1e98605

Please sign in to comment.