(define-configuration buffer
    ((default-modes
         (pushnew 'nyxt/mode/emacs:emacs-mode %slot-value%))
     (default-modes
         (pushnew 'nyxt/mode/blocker:blocker-mode %slot-value%))))

(define-configuration status-buffer
    ((glyph-mode-presentation-p t)
     (display-tabs-by-last-access-p t)))

(define-configuration :emacs-mode ((glyph "ε")))
(define-configuration :force-https-mode ((glyph "ϕ")))
(define-configuration :user-script-mode ((glyph "u")))
(define-configuration :blocker-mode ((glyph "β")))
(define-configuration :proxy-mode ((glyph "π")))
(define-configuration :reduce-tracking-mode ((glyph "τ")))
(define-configuration :certificate-exception-mode ((glyph "χ")))
(define-configuration :style-mode ((glyph "ϕ")))
(define-configuration :cruise-control-mode ((glyph "σ")))

(define-configuration :document-mode
    "Extend with custom keybinds"
  ((keyscheme-map
    (keymaps:define-keyscheme-map "custom" (list :import %slot-value%)
      nyxt/keyscheme:emacs (list
                            "C-c u" 'copy-username
                            "C-c p" 'copy-password)))))

(define-configuration :autofill-mode
    "Add autofill functions for passwords"
  ((autofills
    (list
     (nyxt/mode/autofill:make-autofill
      :name "name"
      :fill "Evie Litherland-Smith")
     (nyxt/mode/autofill:make-autofill
      :name "email"
      :fill "evie@xenia.me.uk")))))

(defvar *my-search-engines*
  (list
   '("rust" "https://doc.rust-lang.org/std/index.html?search=~a" "https://doc.rust-lang.org/std/index.html")
   '("crates" "https://crates.io/search?q=~a" "https://crates.io/")
   '("python" "https://docs.python.org/3/search.html?q=~a" "https://docs.python.org/3")
   '("pypi" "https://pypi.org/search/?q=~a" "https://pypi.org/")
   '("mynix" "https://mynixos.com/search?q=~a" "https://mynixos.com/")
   '("nixwiki" "https://nixos.wiki/index.php?search=~a&go=Go" "https://nixos.wiki/")
   '("archwiki" "https://wiki.archlinux.org/index.php?search=~a" "https://wiki.archlinux.org/")
   '("github" "https://github.com/search?utf8=✓&q=~a&type=repositories" "https://github.com/")
   '("doi" "https://dx.doi.org/~a" "https://dx.doi.org/")
   '("wiki" "https://en.wikipedia.org/w/index.php?search=~a" "https://en.wikipedia.org/")
   '("ddg" "https://duckduckgo.com/?q=~a" "https://duckduckgo.com/"))
  "List of search engines.")

(define-configuration context-buffer
    "Go through the search engines above and make-search-engine out of them."
  ((search-engines
    (mapcar (lambda (engine) (apply 'make-search-engine engine))
            *my-search-engines*))))

(define-configuration browser
    ((restore-session-on-startup-p nil)))

(setf (uiop/os:getenv "GTK_THEME") "Adwaita:dark")