147 lines
3.7 KiB
Nix
147 lines
3.7 KiB
Nix
|
{ config, lib, pkgs, ... }:
|
||
|
|
||
|
with lib;
|
||
|
|
||
|
let
|
||
|
|
||
|
cfg = config.news;
|
||
|
|
||
|
entryModule = types.submodule ({ config, ... }: {
|
||
|
options = {
|
||
|
id = mkOption {
|
||
|
internal = true;
|
||
|
type = types.str;
|
||
|
description = ''
|
||
|
A unique entry identifier. By default it is a base16
|
||
|
formatted hash of the entry message.
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
time = mkOption {
|
||
|
internal = true;
|
||
|
type = types.str;
|
||
|
example = "2017-07-10T21:55:04+00:00";
|
||
|
description = ''
|
||
|
News entry time stamp in ISO-8601 format. Must be in UTC
|
||
|
(ending in '+00:00').
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
condition = mkOption {
|
||
|
internal = true;
|
||
|
default = true;
|
||
|
description = "Whether the news entry should be active.";
|
||
|
};
|
||
|
|
||
|
message = mkOption {
|
||
|
internal = true;
|
||
|
type = types.str;
|
||
|
description = "The news entry content.";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = {
|
||
|
id = mkDefault (builtins.hashString "sha256" config.message);
|
||
|
};
|
||
|
});
|
||
|
|
||
|
in
|
||
|
|
||
|
{
|
||
|
options = {
|
||
|
news = {
|
||
|
display = mkOption {
|
||
|
type = types.enum [ "silent" "notify" "show" ];
|
||
|
default = "notify";
|
||
|
description = ''
|
||
|
How unread and relevant news should be presented when
|
||
|
running <command>home-manager build</command> and
|
||
|
<command>home-manager switch</command>.
|
||
|
|
||
|
</para><para>
|
||
|
|
||
|
The options are
|
||
|
|
||
|
<variablelist>
|
||
|
<varlistentry>
|
||
|
<term><literal>silent</literal></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Do not print anything during build or switch. The
|
||
|
<command>home-manager news</command> command still
|
||
|
works for viewing the entries.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><literal>notify</literal></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The number of unread and relevant news entries will be
|
||
|
printed to standard output. The <command>home-manager
|
||
|
news</command> command can later be used to view the
|
||
|
entries.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><literal>show</literal></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
A pager showing unread news entries is opened.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
</variablelist>
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
entries = mkOption {
|
||
|
internal = true;
|
||
|
type = types.listOf entryModule;
|
||
|
default = [];
|
||
|
description = "News entries.";
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = {
|
||
|
news.entries = [
|
||
|
{
|
||
|
time = "2017-09-01T10:56:28+00:00";
|
||
|
message = ''
|
||
|
Hello! This is a news entry and it represents an
|
||
|
experimental new feature of Home Manager. The idea is to
|
||
|
inform you when something of importance happens in Home
|
||
|
Manager or its modules.
|
||
|
|
||
|
We will try to not disturb you about the same news more than
|
||
|
once so the next time you run
|
||
|
|
||
|
home-manager switch
|
||
|
|
||
|
or
|
||
|
|
||
|
home-manager build
|
||
|
|
||
|
it should not notify you about this text again.
|
||
|
|
||
|
News items may be conditional and will then only show if the
|
||
|
condition holds, for example if they are relevant to your
|
||
|
configuration.
|
||
|
|
||
|
If you want to see all relevant news then please use the
|
||
|
|
||
|
home-manager news
|
||
|
|
||
|
command.
|
||
|
|
||
|
Since this is an experimental feature any positive or
|
||
|
negative feedback would be greatly appreciated. For example,
|
||
|
by commenting in https://git.io/v5BJL.
|
||
|
'';
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
}
|