| 
									
										
										
										
											2022-12-11 16:28:50 +01:00
										 |  |  | # RSS aggregator and reader | 
					
						
							|  |  |  | { config, lib, pkgs, ... }: | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  |   cfg = config.my.services.freshrss; | 
					
						
							| 
									
										
										
										
											2023-11-07 23:13:51 +01:00
										 |  |  |   inherit (config.networking) domain; | 
					
						
							| 
									
										
										
										
											2022-12-11 16:28:50 +01:00
										 |  |  | in | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   options.my.services.freshrss = with lib; { | 
					
						
							|  |  |  |     enable = lib.mkEnableOption "FreshRSS feed reader"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     package = mkOption { | 
					
						
							|  |  |  |       type = types.package; | 
					
						
							|  |  |  |       default = pkgs.freshrss; | 
					
						
							|  |  |  |       description = "Which FreshRSS package to use."; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     defaultUser = mkOption { | 
					
						
							|  |  |  |       type = types.str; | 
					
						
							|  |  |  |       default = "admin"; | 
					
						
							|  |  |  |       description = "Default username for FreshRSS."; | 
					
						
							|  |  |  |       example = "eva"; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     passwordFile = mkOption { | 
					
						
							|  |  |  |       type = types.path; | 
					
						
							|  |  |  |       description = "Password for the defaultUser for FreshRSS."; | 
					
						
							|  |  |  |       example = "/run/secrets/freshrss"; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     language = mkOption { | 
					
						
							|  |  |  |       type = types.str; | 
					
						
							|  |  |  |       default = "en"; | 
					
						
							|  |  |  |       description = "Default language for FreshRSS."; | 
					
						
							|  |  |  |       example = "de"; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   config = lib.mkIf cfg.enable { | 
					
						
							|  |  |  |     services.freshrss = { | 
					
						
							|  |  |  |       enable = true; | 
					
						
							| 
									
										
										
										
											2023-02-23 19:59:25 +01:00
										 |  |  |       baseUrl = "https://news.${domain}"; | 
					
						
							|  |  |  |       inherit (cfg) language passwordFile defaultUser; | 
					
						
							| 
									
										
										
										
											2022-12-11 16:28:50 +01:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Set up a Nginx virtual host. | 
					
						
							|  |  |  |     services.nginx = { | 
					
						
							|  |  |  |       virtualHosts."freshrss" = { | 
					
						
							|  |  |  |         serverName = "news.${domain}"; | 
					
						
							|  |  |  |         forceSSL = true; | 
					
						
							|  |  |  |         useACMEHost = domain; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     webapps.apps.freshrss = { | 
					
						
							|  |  |  |       dashboard = { | 
					
						
							| 
									
										
										
										
											2022-12-25 12:15:35 +01:00
										 |  |  |         name = "News"; | 
					
						
							| 
									
										
										
										
											2022-12-11 16:28:50 +01:00
										 |  |  |         category = "app"; | 
					
						
							|  |  |  |         icon = "newspaper"; | 
					
						
							| 
									
										
										
										
											2023-11-12 20:39:44 +01:00
										 |  |  |         url = "https://news.${domain}"; | 
					
						
							| 
									
										
										
										
											2022-12-11 16:28:50 +01:00
										 |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | } |