diff --git a/flake.nix b/flake.nix index 50a9457..d9f55ee 100644 --- a/flake.nix +++ b/flake.nix @@ -117,6 +117,7 @@ in { audiobooks = "read.${baseName}"; + bookmarks = "keep.${baseName}"; books = "books.${baseName}"; budget = "money.${baseName}"; content = "cloud.${baseName}"; diff --git a/platforms/nixos/modules/nmasur/presets/services/karakeep.nix b/platforms/nixos/modules/nmasur/presets/services/karakeep.nix new file mode 100644 index 0000000..3ec55ed --- /dev/null +++ b/platforms/nixos/modules/nmasur/presets/services/karakeep.nix @@ -0,0 +1,46 @@ +{ + config, + lib, + ... +}: + +let + cfg = config.nmasur.presets.services.karakeep; + inherit (config.nmasur.settings) hostnames; +in + +{ + options.nmasur.presets.services.karakeep.enable = lib.mkEnableOption "Karakeep bookmark manager"; + + config = lib.mkIf cfg.enable { + services.karakeep = { + enable = true; + meilisearch.enable = true; + extraEnvironment = { + PORT = "5599"; + DISABLE_SIGNUPS = "true"; + DISABLE_NEW_RELEASE_CHECK = "true"; + CRAWLER_FULL_PAGE_SCREENSHOT = "true"; + CRAWLER_FULL_PAGE_ARCHIVE = "true"; + }; + }; + + nmasur.presets.services.caddy.routes = [ + { + match = [ { host = [ hostnames.bookmarks ]; } ]; + handle = [ + { + handler = "reverse_proxy"; + upstreams = [ + { dial = "localhost:${config.services.karakeep.extraEnvironment.PORT}"; } + ]; + } + ]; + } + ]; + + # Configure Cloudflare DNS to point to this machine + services.cloudflare-dyndns.domains = [ hostnames.bookmarks ]; + + }; +} diff --git a/platforms/nixos/modules/nmasur/profiles/communications.nix b/platforms/nixos/modules/nmasur/profiles/communications.nix index 6d8a934..a0e5b61 100644 --- a/platforms/nixos/modules/nmasur/profiles/communications.nix +++ b/platforms/nixos/modules/nmasur/profiles/communications.nix @@ -27,6 +27,7 @@ in gitea.enable = lib.mkDefault true; grafana.enable = lib.mkDefault true; influxdb2.enable = lib.mkDefault true; + karakeep.enable = lib.mkDefault true; litestream.enable = lib.mkDefault true; mathesar.enable = lib.mkDefault true; minecraft-server.enable = lib.mkDefault true;