fnott: remove global properties generation

Rationale:

As of release 1.1.2[1], the configuration ini file supports
declaration of the `[main]` header as an alternative to global
properties by enumerating all sections and mapping each to the
respective parsing function. Global properties will still be parsed
correctly by fnott however generation adds unnecessary complexity to
the module. This commit removes the need for global properties
generation.

Changes:

- Fixed the FIXME at L118.

- Cleaned up unneeded let bindings.

- Changed the generation method to use the `pkgs.formats.ini` from
  pkgs-lib instead of the raw `generators` library. This was done for
  consistency and clarity as the `pkgs.formats.ini` is still required
  for type declaration and uses `generators` internally.

- Removed `global-properties` testcase.

- Updated `example-settings` testcase.

[1] - https://codeberg.org/dnkl/fnott/releases/tag/1.1.2
main
polykernel 3 years ago committed by Robert Helgesson
parent da8a78eec9
commit 46a69810cb
No known key found for this signature in database
GPG Key ID: 36BDAA14C2797E89
  1. 23
      modules/services/fnott.nix
  2. 1
      tests/modules/services/fnott/default.nix
  3. 5
      tests/modules/services/fnott/example-settings-expected.ini
  4. 2
      tests/modules/services/fnott/global-properties-expected.ini
  5. 24
      tests/modules/services/fnott/global-properties.nix

@ -8,15 +8,7 @@ let
concatStringsSep' = sep: list:
concatStringsSep sep (filter (x: x != "") list);
mkKeyValue = generators.mkKeyValueDefault { } "=";
genINI = generators.toINI { };
iniFormatType = with types;
let
iniAtom = types.nullOr (types.oneOf [ bool int float str ]) // {
description = "INI atom (null, bool, int, float or string)";
};
in attrsOf (attrsOf iniAtom);
iniFormat = pkgs.formats.ini { };
in {
options = {
services.fnott = {
@ -58,7 +50,7 @@ in {
};
settings = mkOption {
type = iniFormatType;
type = iniFormat.type;
default = { };
description = ''
Configuration written to
@ -114,14 +106,7 @@ in {
};
};
xdg.configFile."fnott/fnott.ini" = {
# FIXME: Remove after next version release (https://codeberg.org/dnkl/fnott/pulls/24).
text = concatStringsSep' "\n" [
(optionalString (cfg.settings ? main) ''
${concatStringsSep "\n" (mapAttrsToList mkKeyValue cfg.settings.main)}
'')
(genINI (removeAttrs cfg.settings [ "main" ]))
];
};
xdg.configFile."fnott/fnott.ini".source =
iniFormat.generate "fnott.ini" cfg.settings;
};
}

@ -1,5 +1,4 @@
{
fnott-example-settings = ./example-settings.nix;
fnott-global-properties = ./global-properties.nix;
fnott-systemd-user-service = ./systemd-user-service.nix;
}

@ -1,6 +1,7 @@
notification-margin=5
[low]
timeout=5
title-color=ffffff
title-font=Dina:weight=bold:slant=italic
[main]
notification-margin=5

@ -1,2 +0,0 @@
max-icon-size=32
notification-margin=5

@ -1,24 +0,0 @@
{ config, lib, pkgs, ... }:
# FIXME: Deprecate on next version release of fnott (https://codeberg.org/dnkl/fnott/pulls/24).
{
config = {
services.fnott = {
enable = true;
package = config.lib.test.mkStubPackage { };
settings = {
main = {
max-icon-size = 32;
notification-margin = 5;
};
};
};
nmt.script = ''
assertFileContent \
home-files/.config/fnott/fnott.ini \
${./global-properties-expected.ini}
'';
};
}
Loading…
Cancel
Save