mirror of
https://github.com/nix-community/home-manager
synced 2024-11-23 11:39:46 +01:00
news: add module
This new module adds a "news" feature to Home Manager. See #52. Many thanks to @nonsequitur and @uvNikita for suggestions and improvements.
This commit is contained in:
parent
39fc16954b
commit
ab0338f6ae
2 changed files with 147 additions and 0 deletions
|
@ -11,6 +11,7 @@ let
|
|||
./home-environment.nix
|
||||
./manual.nix
|
||||
./misc/gtk.nix
|
||||
./misc/news.nix
|
||||
./misc/pam.nix
|
||||
./programs/bash.nix
|
||||
./programs/beets.nix
|
||||
|
|
146
modules/misc/news.nix
Normal file
146
modules/misc/news.nix
Normal file
|
@ -0,0 +1,146 @@
|
|||
{ 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.
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue