From 9be2a579a3a30cd6ffcdec4fe865368dc8daab12 Mon Sep 17 00:00:00 2001 From: Tomodachi94 Date: Fri, 6 Dec 2024 08:29:25 +0000 Subject: [PATCH] home/liferea: init module --- home/common/desktop-standalone-packages.nix | 1 - home/linux/default.nix | 1 + home/linux/liferea/default.nix | 8 +++ home/linux/liferea/module.nix | 77 +++++++++++++++++++++ home/linux/xdg.nix | 4 -- 5 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 home/linux/liferea/default.nix create mode 100644 home/linux/liferea/module.nix diff --git a/home/common/desktop-standalone-packages.nix b/home/common/desktop-standalone-packages.nix index 12c2687..8a383df 100644 --- a/home/common/desktop-standalone-packages.nix +++ b/home/common/desktop-standalone-packages.nix @@ -4,7 +4,6 @@ pkgs.discord pkgs.obsidian pkgs.spotube - pkgs.liferea bitwarden-dmenu.packages.${pkgs.system}.bwmenu ]; } diff --git a/home/linux/default.nix b/home/linux/default.nix index 31780d2..b67f9b4 100644 --- a/home/linux/default.nix +++ b/home/linux/default.nix @@ -15,6 +15,7 @@ ./i3status-rust ./kdeconnect.nix ./kitty + ./liferea ./network-manager-applet.nix ./volnoti.nix ./xdg.nix diff --git a/home/linux/liferea/default.nix b/home/linux/liferea/default.nix new file mode 100644 index 0000000..836b1b9 --- /dev/null +++ b/home/linux/liferea/default.nix @@ -0,0 +1,8 @@ +{ config, ... }: +{ + imports = [ ./module.nix ]; + + programs.liferea = { + enable = config.local.system.linux && config.local.eagerSetup.installGraphicalApps; + }; +} diff --git a/home/linux/liferea/module.nix b/home/linux/liferea/module.nix new file mode 100644 index 0000000..70a22e2 --- /dev/null +++ b/home/linux/liferea/module.nix @@ -0,0 +1,77 @@ +{ pkgs, lib, config, ... }: +let + cfg = config.programs.liferea; +in +{ + + options.programs.liferea = { + enable = lib.mkEnableOption "Liferea, a Linux feed reader"; + package = lib.mkPackageOption pkgs "liferea" { }; + + style = lib.mkOption { + type = lib.types.lines; + default = ""; + description = "Text to be written to {file}`$XDG_CONFIG_DIR/liferea/style.css`."; + }; + + settings = lib.mkOption { + type = lib.types.submodule { + freeformType = lib.types.attrsOf lib.types.anything; + options = {}; + }; + default = {}; + description = '' + Liferea settings. + + These values are passed directly to the dconf `/org/gnome/liferea` + subkey. + + Canonical list of settings: + https://github.com/lwindolf/liferea/blob/master/net.sf.liferea.gschema.xml.in + ''; + }; + + plugins = lib.mkOption { + type = lib.types.listOf lib.types.package; + default = [ ]; + description = '' + A list of packages containing Liferea plugins. + + The packages will be combined into one directory and placed + into {file}`$XDG_DATA_DIR/liferea/plugins/`. + + Each package should have a file with the .plugin extension + at its root, following the default format. + + More information: + https://github.com/lwindolf/liferea/blob/master/plugins/README.md + ''; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ cfg.package ]; + + xdg.mimeApps.defaultAssociations = { + # FIXME: Is the absolute path necessary when we append to home.packages? + # Also: Is this too eager? + "application/rss+xml" = "${cfg.package}/share/applications/net.sourceforge.liferea.desktop"; + "application/atom+xml" = "${cfg.package}/share/applications/net.sourceforge.liferea.desktop"; + "application/rdf+xml" = "${cfg.package}/share/applications/net.sourceforge.liferea.desktop"; + "x-scheme-handler/feed" = "${cfg.package}/share/applications/net.sourceforge.liferea.desktop"; + }; + + dconf.settings."org/gnome/liferea" = cfg.settings; + + xdg.configFile."liferea/style.css" = lib.mkIf (cfg.style != "") { + text = cfg.style; + }; + + xdg.dataFile."liferea/plugins" = lib.mkIf (cfg.plugins != [ ]) { + source = pkgs.symlinkJoin { + name = "liferea-plugins"; + paths = cfg.plugins; + }; + }; + }; +} diff --git a/home/linux/xdg.nix b/home/linux/xdg.nix index fec96c4..cf49dba 100644 --- a/home/linux/xdg.nix +++ b/home/linux/xdg.nix @@ -11,10 +11,6 @@ # TODO: Split into modules and conditionally enable these rules if the application is enabled "x-scheme-handler/https" = "/etc/profiles/per-user/me/share/applications/librewolf.desktop"; "x-scheme-handler/http" = "/etc/profiles/per-user/me/share/applications/librewolf.desktop"; - "application/rss+xml" = "${pkgs.liferea}/share/applications/net.sourceforge.liferea.desktop"; - "application/atom+xml" = "${pkgs.liferea}/share/applications/net.sourceforge.liferea.desktop"; - "application/rdf+xml" = "${pkgs.liferea}/share/applications/net.sourceforge.liferea.desktop"; - "x-scheme-handler/feed" = "${pkgs.liferea}/share/applications/net.sourceforge.liferea.desktop"; }; }; configFile."user-dirs.locale" = lib.mkIf config.local.system.linux {