{ config, lib, pkgs, username, ... }: let cfg = config.os.srv.i2p; in { options.os.srv.i2p = { enable = lib.mkEnableOption "enables i2pd"; enableBrowser = lib.mkEnableOption "enables mullvad browser and creates a desktop entry"; }; config = lib.mkMerge [ (lib.mkIf cfg.enable { services.i2pd = { enable = true; bandwidth = 1024; logLevel = "info"; upnp.enable = true; proto = { i2pControl.enable = true; http.enable = true; httpProxy.enable = true; socksProxy = { enable = true; outproxyEnable = true; }; sam.enable = true; }; yggdrasil = { enable = true; # address = ""; }; ssu2 = { enable = true; # published = true; }; }; }) (lib.mkIf cfg.enableBrowser { home-manager.users.${username} = { home.packages = [ pkgs.mullvad-browser ]; xdg.desktopEntries = { i2p-browser = { name = "i2p Browser"; genericName = "Web Browser"; exec = "${pkgs.mullvad-browser}/bin/mullvad-browser -p i2p"; }; }; }; }) ]; }