nix-dotfiles/home/programs/newsboat/default.nix

147 lines
3.9 KiB
Nix
Raw Permalink Normal View History

{ config, pkgs, lib, ... }:
2022-03-07 16:01:52 +01:00
let
cfg = config.programs.newsboat;
# package = cfg.package;
package = pkgs.newsboat;
2022-03-07 16:01:52 +01:00
defaultBrowser = "google-chrome-stable %u";
videoViewer = "mpv %u";
in {
imports = [ ./sources.nix ];
2022-03-07 16:01:52 +01:00
programs.newsboat = {
enable = true;
autoReload = true;
maxItems = 50;
2022-03-22 16:36:46 +01:00
browser = ''"${defaultBrowser}"'';
2022-03-07 16:01:52 +01:00
extraConfig = lib.strings.concatStringsSep "\n" [
2024-08-09 15:23:15 +02:00
''
auto-reload no
''
2022-03-07 16:01:52 +01:00
''
macro m set browser "${videoViewer}"; open-in-browser ; set browser "${defaultBrowser}"
macro l set browser "${defaultBrowser}"; open-in-browser ; set browser "${defaultBrowser}"
''
# Unbind keys
''
unbind-key ENTER
unbind-key j
unbind-key k
unbind-key J
unbind-key K
''
# Bind keys - vim style
''
bind-key j down
bind-key k up
bind-key l open
bind-key h quit
''
# Theme
''
color background default default
color listnormal default default
color listnormal_unread default default
color listfocus black cyan
color listfocus_unread black cyan
color info default black
color article default default
''
# Highlights
''
highlight all "---.*---" yellow
highlight feedlist ".*(0/0))" black
highlight article "(^Feed:.*|^Title:.*|^Author:.*)" cyan default bold
highlight article "(^Link:.*|^Date:.*)" default default
highlight article "https?://[^ ]+" green default
highlight article "^(Title):.*$" blue default
highlight article "\\[[0-9][0-9]*\\]" magenta default bold
highlight article "\\[image\\ [0-9]+\\]" green default bold
highlight article "\\[embedded flash: [0-9][0-9]*\\]" green default bold
highlight article ":.*\\(link\\)$" cyan default
highlight article ":.*\\(image\\)$" blue default
highlight article ":.*\\(embedded flash\\)$" magenta default
''
];
};
systemd.user.slices.app-newsboat = {
Unit = {
Description = "Newsboat automation";
Documentation = [ "man:newsboat(1)" ];
};
};
# TODO: wait for internet
systemd.user.services.newsboat-fetch-articles = {
Unit = {
Description = "Automatically fetch new articles for newsboat";
Documentation = [ "man:newsboat(1)" ];
};
Service = {
Type = "oneshot";
Slice = "app-newsboat.slice";
CPUSchedulingPolicy = "idle";
IOSchedulingClass = "idle";
ExecStart = "${lib.getExe pkgs.flock} %t/newsboat.lock ${lib.getExe package} --execute=reload";
};
};
systemd.user.timers.newsboat-fetch-articles = {
Unit = {
Description = "Automatically fetch new articles for newsboat";
Documentation = [ "man:newsboat(1)" ];
After = [ "network.target" ];
};
Timer = {
Unit = "newsboat-fetch-articles.service";
OnCalendar = lib.mkDefault "daily";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
systemd.user.services.newsboat-vacuum = {
Unit = {
Description = "Automatically clean newsboat cache";
Documentation = [ "man:newsboat(1)" ];
};
Service = {
Type = "oneshot";
Slice = "app-newsboat.slice";
CPUSchedulingPolicy = "idle";
IOSchedulingClass = "idle";
ExecStart = "${lib.getExe pkgs.flock} %t/newsboat.lock ${lib.getExe package} --vacuum";
};
};
systemd.user.timers.newsboat-vacuum = {
Unit = {
Description = "Automatically clean newsboat cache";
Documentation = [ "man:newsboat(1)" ];
};
Timer = {
Unit = "newsboat-vacuum.service";
OnCalendar = lib.mkDefault "weekly";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
2022-03-07 16:01:52 +01:00
}