{ config, pkgs, fonts, accentColourName, ... }: { home.packages = [pkgs.nyxt]; xdg = { configFile = { "nyxt/config.lisp".text = let sc = config.scheme.withHashtag; 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 "${sc.base00}" :on-background-color "${sc.base05}" :primary-color "${sc.base02}" :on-primary-color "${sc.base05}" :secondary-color "${sc.base03}" :on-secondary-color "${sc.base05}" :accent-color "${sc.${accentColourName}}" :on-accent-color "${sc.base01}" :action-color "${sc.cyan}" :on-action-color "${sc.base01}" :success-color "${sc.green}" :on-success-color "${sc.base01}" :highlight-color "${sc.magenta}" :on-highlight-color "${sc.base01}" :warning-color "${sc.yellow}" :on-warning-color "${sc.base01}" :codeblock-color "${sc.base02}" :on-codeblock-color "${sc.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))) + ")" ); }; }