{ config, pkgs, ... }: { home.packages = [ pkgs.nyxt ]; xdg = { configFile = { "nyxt/config.lisp".text = let fonts = config.stylix.fonts; scheme = config.lib.stylix.scheme; in '' ;; Import custom configuration (nyxt::load-lisp "${./config.lisp}") ;; Define custom theme (define-configuration browser ((theme (make-instance 'theme:theme :dark-p t :font-family "${fonts.sansSerif.name}" :monospace-font-family "${fonts.monospace.name}" :background-color "${scheme.withHashtag.base00}" :on-background-color "${scheme.withHashtag.base05}" :primary-color "${scheme.withHashtag.base02}" :on-primary-color "${scheme.withHashtag.base05}" :secondary-color "${scheme.withHashtag.base03}" :on-secondary-color "${scheme.withHashtag.base05}" :accent-color "${scheme.withHashtag.base0D}" :on-accent-color "${scheme.withHashtag.base01}" :action-color "${scheme.withHashtag.cyan}" :on-action-color "${scheme.withHashtag.base01}" :success-color "${scheme.withHashtag.green}" :on-success-color "${scheme.withHashtag.base01}" :highlight-color "${scheme.withHashtag.magenta}" :on-highlight-color "${scheme.withHashtag.base01}" :warning-color "${scheme.withHashtag.yellow}" :on-warning-color "${scheme.withHashtag.base01}" :codeblock-color "${scheme.withHashtag.base02}" :on-codeblock-color "${scheme.withHashtag.base05}")))) ''; }; dataFile."nyxt/bookmarks.lisp".text = let # Make a string of lisp-style list of strings, from nix-style # list convertTags = tags: "(" + (builtins.foldl' (x: y: x + " \"" + y + "\"") "" tags) + " )"; # Take bookmarks as returned from JSON file and convert to NYXT # expected format convertBookmark = { name, tags, url, }: "(:url \"${url}\" :title \"${name}\" :tags ${convertTags tags})\n"; in ( # Fold all entries in bookmarks.json into single string of NYXT # format bookmarks, each entry on a new line and with 2 space # indentation, just for visual clarity if reading the outputted # file "(\n" + (builtins.foldl' (x: y: x + " " + convertBookmark y) "" ( builtins.fromJSON (builtins.readFile ./bookmarks.json) )) + ")" ); }; }