I showed you my source code, pls respond
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
6.3 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. #+TITLE: Dotfiles
  2. #+AUTHOR: Christopher James Hayward
  3. #+EMAIL: chris@chrishayward.xyz
  4. #+PROPERTY: header-args:emacs-lisp :tangle init.el :comments org
  5. #+PROPERTY: header-args :results silent :eval no-export
  6. #+OPTIONS: num:nil toc:nil todo:nil tasks:nil tags:nil
  7. #+OPTIONS: skip:nil author:nil email:nil creator:nil timestamp:nil
  8. #+ATTR_ORG: :width 420px
  9. #+ATTR_HTML: :width 420px
  10. #+ATTR_LATEX: :width 420px
  11. [[./docs/images/desktop-alt.png]]
  12. Portable [[https://gnu.org/software/emacs][GNU/Emacs]][fn:1] dotfiles. Built for Life, Liberty, and the Open Road.
  13. + 100% Literate
  14. + 100% Immutable
  15. + 100% Reproducible
  16. * Init
  17. This project makes heavy use of modern features and libraries. Since [[https://orgmode.org/worg/org-contrib/babel/intro.html][Org-babel]][fn:2]'s used during the initialization, [[https://orgmode.org][Org-mode]][fn:3] must load prior to importing any custom modules. My solution includes the introduction of some early intitialization code written in [[https://gnu.org/software/emacs/manual/html_node/elisp/index.html][Emacs Lisp]][fn:4].
  18. #+begin_src emacs-lisp
  19. (load-file "~/.emacs.d/bin/options.el")
  20. (load-file "~/.emacs.d/bin/cleanup.el")
  21. (load-file "~/.emacs.d/bin/packages.el")
  22. #+end_src
  23. ** Load host definition
  24. Begin the process by loading any host specific option overrides. The host configuration tangles, and loads (if it exist) using the systems name. If a host definition doesn't exist the default values remain.
  25. #+begin_src emacs-lisp
  26. (let ((host-file (concat dotfiles/home "/hosts/" system-name ".org")))
  27. (when (file-exists-p host-file)
  28. (org-babel-load-file host-file)))
  29. #+end_src
  30. ** Load enabled modules
  31. All of the modules in ~dotfiles/modules~ load after the host overrides. By default, all of the packages defined in ~dotfiles/modules-p~ load. Override this behaviour in a host configuration file.
  32. #+begin_src emacs-lisp
  33. (dolist (m dotfiles/modules)
  34. (let ((mod-file (concat dotfiles/home "/modules/" (symbol-name m) ".org")))
  35. (when (file-exists-p mod-file)
  36. (org-babel-load-file mod-file))))
  37. #+end_src
  38. * Hosts
  39. Each host machines configuration loaded immediately after declaring the options, before applying any configuration. This allows system to system control while remaining immutable. Override any of the available options configurations in a host file. Here's some examples to get started:
  40. + [[file:hosts/localhost.org][Termux]]
  41. + [[file:hosts/gamingpc.org][Gamingpc]]
  42. + [[file:hosts/raspberry.org][Raspberry]]
  43. + [[file:hosts/acernitro.org][Acernitro]]
  44. + [[file:hosts/virtualbox.org][Virtualbox]]
  45. * Modules
  46. Breaking down the project into logical units or chapters to keep the code more maintainable and organized. This is also a fundamental requirement to achieve the goal of modularity. Here are all of the available modules, also listed in the variable ~dotfiles/modules-p~.
  47. + [[file:modules/core.org][Core]]
  48. + [[file:modules/editor.org][Editor]]
  49. + [[file:modules/email.org][Email]]
  50. + [[file:modules/encryption.org][Encryption]]
  51. + [[file:modules/shell.org][Shell]]
  52. + [[file:modules/desktop.org][Desktop]]
  53. + [[file:modules/writing.org][Writing]]
  54. + [[file:modules/website.org][Website]]
  55. + [[file:modules/capture.org][Capture]]
  56. + [[file:modules/projects.org][Projects]]
  57. + [[file:modules/development.org][Development]]
  58. + [[file:modules/interface.org][Interface]]
  59. + [[file:modules/dashboard.org][Dashboard]]
  60. * Options
  61. Here's a complete list of all of the options configurable for each host, and their default values.
  62. + All variables prefixed with ~dotfiles/~
  63. + Initialized prior to loading of packages or hosts
  64. | Name | Default | Description |
  65. |----------------------------+---------------------+---------------------------------------------------------|
  66. | dotfiles/home | ~/.emacs.d | Original value of `user-emacs-directory'. |
  67. | dotfiles/cache | ~/.cache/emacs | Redirection target of `user-emacs-directory'. |
  68. |----------------------------+---------------------+---------------------------------------------------------|
  69. | dotfiles/browser | $BROWSER | Default system web browser. |
  70. | dotfiles/language | $LANG | Default system dictionary language. |
  71. |----------------------------+---------------------+---------------------------------------------------------|
  72. | dotfiles/modules-p | (...) | All of the available modules. |
  73. | dotfiles/modules | dotfiles/modules-p | ALl of the enabled modules. |
  74. |----------------------------+---------------------+---------------------------------------------------------|
  75. | dotfiles/font | Fira Code | Unified system font family. |
  76. | dotfiles/font-size | 96 | Unified system font size. |
  77. |----------------------------+---------------------+---------------------------------------------------------|
  78. | dotfiles/idle | 0.0 | Delay time before offering suggestions and completions. |
  79. |----------------------------+---------------------+---------------------------------------------------------|
  80. | dotfiles/leader-key | SPC | All powerful leader key. |
  81. | dotfiles/leader-key-global | C-(dotfiles/leader) | Global prefix for the leader key. |
  82. |----------------------------+---------------------+---------------------------------------------------------|
  83. | dotfiles/projects | ~/.local/source | Location of source code projects. |
  84. | dotfiles/passwords | ~/.password-store | Location of local password store. |
  85. |----------------------------+---------------------+---------------------------------------------------------|
  86. | dotfiles/public-key | (...) | GPG key to encrypt org files for. |
  87. * Resources
  88. [fn:1] https://gnu.org/software/emacs
  89. [fn:2] https://orgmode.org/worg/org-contrib/babel/intro.html
  90. [fn:3] https://orgmode.org
  91. [fn:4] https://gnu.org/software/emacs/manual/html_node/elisp/index.html
  92. [fn:5] https://en.wikipedia.org/wiki/Chicken_or_the_egg