(setopt load-prefer-newer t) ;; Always load newest byte code
(setopt package-archives '(("melpa" . "https://melpa.org/packages/")
                           ("gnu" . "https://elpa.gnu.org/packages/")
                           ("nongnu" . "https://elpa.nongnu.org/nongnu/")))
(setopt package-archive-priorities '(("gnu"    . 99)
                                     ("nongnu" . 80)
                                     ("melpa"  . 70)))
(setopt use-package-always-ensure t)
(package-initialize)

;; (use-package ef-themes
;;   :config
;;   (ef-themes-select 'ef-day))
  
(load-theme 'modus-operandi)


;; For nix and guix
(add-to-list 'exec-path "/home/alex/.guix-profile/bin")
(add-to-list 'exec-path "/home/alex/.  :if (eq system-type 'darwin)nix-profile/bin")

(when (eq system-type 'windows-nt)
  ;; On some windows computers, there are encoding issues with consult-fd
  (setopt current-language-environment "French")
  (prefer-coding-system 'utf-8)
)
;; Better user experience
(setopt line-number-mode t
        column-number-mode t)


;; Window dividers for better visual separation
(setopt window-divider-default-places 'right-only
        window-divider-default-right-width 1)

;; automatic backup
(setopt auto-save-default t
        auto-save-interval 300
        auto-save-timeout 30
        make-backup-files t
        vc-make-backup-files t 
        kept-old-versions 10
        kept-new-versions 10)

;; /smoother scrollingt (setopt not needed for mac)
(setopt  pixel-scroll-precision-use-momentum nil) 
(setopt pixel-scroll-precision-mode t)

;; Replace selected text when typing
(setopt delete-selection-mode t)

;; Performance settings
(setopt gc-cons-threshold 100000000        ; 100MB
        read-process-output-max (* 1024 1024)) ; 1MB

;; Hide files from dired
(setopt dired-omit-files (concat "\\`[.]\\'"
                                 "\\|\\(?:\\.js\\)?\\.meta\\'"
                                 "\\|\\.\\(?:elc|a\\|o\\|pyc\\|pyo\\|swp\\|class\\)\\'"
                                 "\\|^\\.DS_Store\\'"
                                 "\\|^\\.\\(?:svn\\|git\\)\\'"
                                 "\\|^\\.ccls-cache\\'"
                                 "\\|^__pycache__\\'"
                                 "\\|^\\.project\\(?:ile\\)?\\'"
                                 "\\|^flycheck_.*"
                                 "\\|^flymake_.*"))


(add-hook 'after-init-hook  #'recentf-mode)
(add-hook 'after-init-hook  #'savehist-mode)
(add-hook 'after-init-hook  #'save-place-mode)
(add-hook 'after-init-hook  #'show-paren-mode) ; Highlight parenthesis match
(add-hook 'after-init-hook  #'winner-mode) ; Undo window closing
(add-hook 'after-init-hook  #'display-time-mode) ; Time in modeline
(add-hook 'after-init-hook  #'window-divider-mode) ; Resize windows with the mouse
(add-hook 'kill-emacs-hook  #'recentf-cleanup)
(add-hook 'dired-mode-hook  #'dired-omit-mode)  ; Dired buffers: Automatically hide file details (permissions, size,
(add-hook 'dired-mode-hook  #'dired-hide-details-mode)

(provide 'init-start)