From b7e84fa6048007cda7e6c8226e28bc2db90f792a Mon Sep 17 00:00:00 2001 From: Jacob Janzen Date: Sat, 28 Sep 2024 00:01:09 -0500 Subject: add file extensions to files --- common/.config/emacs/feed.el.org | 38 +++ common/.config/emacs/feed.org | 38 --- common/.config/emacs/force-custom-file.el.org | 8 + common/.config/emacs/force-custom-file.org | 8 - common/.config/emacs/init.el.org | 25 ++ common/.config/emacs/init.org | 25 -- common/.config/emacs/languages.el.org | 141 ++++++++++ common/.config/emacs/languages.org | 141 ---------- common/.config/emacs/package-setup.el.org | 25 ++ common/.config/emacs/package-setup.org | 25 -- common/.config/emacs/tools.el.org | 391 ++++++++++++++++++++++++++ common/.config/emacs/tools.org | 391 -------------------------- common/.config/emacs/user-interface.el.org | 131 +++++++++ common/.config/emacs/user-interface.org | 131 --------- nixos/.flake/flake.nix.org | 34 +++ nixos/.flake/flake.org | 34 --- nixos/.flake/home/clang-format.nix.org | 15 + nixos/.flake/home/clang-format.org | 15 - nixos/.flake/home/core.nix.org | 25 ++ nixos/.flake/home/core.org | 25 -- nixos/.flake/home/cursor.nix.org | 13 + nixos/.flake/home/cursor.org | 13 - nixos/.flake/home/fonts.nix.org | 14 + nixos/.flake/home/fonts.org | 14 - nixos/.flake/home/hyprland.nix.org | 175 ++++++++++++ nixos/.flake/home/hyprland.org | 175 ------------ nixos/.flake/home/programs/core.nix.org | 46 +++ nixos/.flake/home/programs/core.org | 46 --- nixos/.flake/home/programs/fastfetch.nix.org | 84 ++++++ nixos/.flake/home/programs/fastfetch.org | 84 ------ nixos/.flake/home/programs/foot.nix.org | 42 +++ nixos/.flake/home/programs/foot.org | 42 --- nixos/.flake/home/programs/git.nix.org | 18 ++ nixos/.flake/home/programs/git.org | 18 -- nixos/.flake/home/programs/hyprlock.nix.org | 42 +++ nixos/.flake/home/programs/hyprlock.org | 42 --- nixos/.flake/home/programs/ncmpcpp.nix.org | 28 ++ nixos/.flake/home/programs/ncmpcpp.org | 28 -- nixos/.flake/home/programs/neovim.nix.org | 32 +++ nixos/.flake/home/programs/neovim.org | 32 --- nixos/.flake/home/programs/ssh.nix.org | 13 + nixos/.flake/home/programs/ssh.org | 13 - nixos/.flake/home/programs/waybar.nix.org | 149 ++++++++++ nixos/.flake/home/programs/waybar.org | 149 ---------- nixos/.flake/home/programs/zsh.nix.org | 87 ++++++ nixos/.flake/home/programs/zsh.org | 87 ------ nixos/.flake/home/scripts.nix.org | 43 +++ nixos/.flake/home/scripts.org | 43 --- nixos/.flake/home/services/core.nix.org | 19 ++ nixos/.flake/home/services/core.org | 19 -- nixos/.flake/home/services/emacs.nix.org | 14 + nixos/.flake/home/services/emacs.org | 14 - nixos/.flake/home/services/mako.nix.org | 13 + nixos/.flake/home/services/mako.org | 13 - nixos/.flake/home/services/mpd.nix.org | 21 ++ nixos/.flake/home/services/mpd.org | 21 -- nixos/.flake/home/services/syncthing.nix.org | 12 + nixos/.flake/home/services/syncthing.org | 12 - nixos/.flake/system/boot.nix.org | 11 + nixos/.flake/system/boot.org | 11 - nixos/.flake/system/core.nix.org | 21 ++ nixos/.flake/system/core.org | 21 -- nixos/.flake/system/desktop.nix.org | 108 +++++++ nixos/.flake/system/desktop.org | 108 ------- nixos/.flake/system/locale.nix.org | 11 + nixos/.flake/system/locale.org | 11 - nixos/.flake/system/network.nix.org | 48 ++++ nixos/.flake/system/network.org | 48 ---- nixos/.flake/system/users.nix.org | 14 + nixos/.flake/system/users.org | 14 - 70 files changed, 1911 insertions(+), 1911 deletions(-) create mode 100644 common/.config/emacs/feed.el.org delete mode 100644 common/.config/emacs/feed.org create mode 100644 common/.config/emacs/force-custom-file.el.org delete mode 100644 common/.config/emacs/force-custom-file.org create mode 100644 common/.config/emacs/init.el.org delete mode 100644 common/.config/emacs/init.org create mode 100644 common/.config/emacs/languages.el.org delete mode 100644 common/.config/emacs/languages.org create mode 100644 common/.config/emacs/package-setup.el.org delete mode 100644 common/.config/emacs/package-setup.org create mode 100644 common/.config/emacs/tools.el.org delete mode 100644 common/.config/emacs/tools.org create mode 100644 common/.config/emacs/user-interface.el.org delete mode 100644 common/.config/emacs/user-interface.org create mode 100644 nixos/.flake/flake.nix.org delete mode 100644 nixos/.flake/flake.org create mode 100644 nixos/.flake/home/clang-format.nix.org delete mode 100644 nixos/.flake/home/clang-format.org create mode 100644 nixos/.flake/home/core.nix.org delete mode 100644 nixos/.flake/home/core.org create mode 100644 nixos/.flake/home/cursor.nix.org delete mode 100644 nixos/.flake/home/cursor.org create mode 100644 nixos/.flake/home/fonts.nix.org delete mode 100644 nixos/.flake/home/fonts.org create mode 100644 nixos/.flake/home/hyprland.nix.org delete mode 100644 nixos/.flake/home/hyprland.org create mode 100644 nixos/.flake/home/programs/core.nix.org delete mode 100644 nixos/.flake/home/programs/core.org create mode 100644 nixos/.flake/home/programs/fastfetch.nix.org delete mode 100644 nixos/.flake/home/programs/fastfetch.org create mode 100644 nixos/.flake/home/programs/foot.nix.org delete mode 100644 nixos/.flake/home/programs/foot.org create mode 100644 nixos/.flake/home/programs/git.nix.org delete mode 100644 nixos/.flake/home/programs/git.org create mode 100644 nixos/.flake/home/programs/hyprlock.nix.org delete mode 100644 nixos/.flake/home/programs/hyprlock.org create mode 100644 nixos/.flake/home/programs/ncmpcpp.nix.org delete mode 100644 nixos/.flake/home/programs/ncmpcpp.org create mode 100644 nixos/.flake/home/programs/neovim.nix.org delete mode 100644 nixos/.flake/home/programs/neovim.org create mode 100644 nixos/.flake/home/programs/ssh.nix.org delete mode 100644 nixos/.flake/home/programs/ssh.org create mode 100644 nixos/.flake/home/programs/waybar.nix.org delete mode 100644 nixos/.flake/home/programs/waybar.org create mode 100644 nixos/.flake/home/programs/zsh.nix.org delete mode 100644 nixos/.flake/home/programs/zsh.org create mode 100644 nixos/.flake/home/scripts.nix.org delete mode 100644 nixos/.flake/home/scripts.org create mode 100644 nixos/.flake/home/services/core.nix.org delete mode 100644 nixos/.flake/home/services/core.org create mode 100644 nixos/.flake/home/services/emacs.nix.org delete mode 100644 nixos/.flake/home/services/emacs.org create mode 100644 nixos/.flake/home/services/mako.nix.org delete mode 100644 nixos/.flake/home/services/mako.org create mode 100644 nixos/.flake/home/services/mpd.nix.org delete mode 100644 nixos/.flake/home/services/mpd.org create mode 100644 nixos/.flake/home/services/syncthing.nix.org delete mode 100644 nixos/.flake/home/services/syncthing.org create mode 100644 nixos/.flake/system/boot.nix.org delete mode 100644 nixos/.flake/system/boot.org create mode 100644 nixos/.flake/system/core.nix.org delete mode 100644 nixos/.flake/system/core.org create mode 100644 nixos/.flake/system/desktop.nix.org delete mode 100644 nixos/.flake/system/desktop.org create mode 100644 nixos/.flake/system/locale.nix.org delete mode 100644 nixos/.flake/system/locale.org create mode 100644 nixos/.flake/system/network.nix.org delete mode 100644 nixos/.flake/system/network.org create mode 100644 nixos/.flake/system/users.nix.org delete mode 100644 nixos/.flake/system/users.org diff --git a/common/.config/emacs/feed.el.org b/common/.config/emacs/feed.el.org new file mode 100644 index 0000000..d93d32e --- /dev/null +++ b/common/.config/emacs/feed.el.org @@ -0,0 +1,38 @@ +#+title: Emacs RSS Feed + +#+begin_src org :tangle ~/.config/emacs/feed.org :mkdirp yes + ,* Blogs + :PROPERTIES: + :ID: elfeed + :END: + ,** Journalism :journalism: + ,*** [[https://waxy.org/feed/][Waxy.org]] + ,*** [[https://pluralistic.net/feed/][Cory Doctorow]] :technology:software:fiction: + ,** Computer Science :cs: + ,*** [[https://a.exozy.me/index.xml][Some Random Website]] :math:algorithms:fiction: + ,** Technology :technology: + ,*** [[https://ciechanow.ski/atom.xml][Bartosz Ciechanowshki]] + ,*** [[https://www.citationneeded.news/rss/][Citation Needed]] + ,*** [[https://www.lilysthings.org/blog/rss.xml][The Cool Blog]] + ,** Software :software: + ,*** [[https://ersei.net/en/blog.atom][Ersei]] + ,*** [[https://lilysthings.org/blog/rss.xml][Lily's Things]] + ,*** [[https://ntietz.com/atom.xml][Technically a Blog]] + ,*** [[https://alexwlchan.net/atom.xml][Alex Chan]] + ,*** [[https://eaton-works.com/feed.atom][Eaton Works]] :hacking: + ,*** [[https://computer.rip/rss.xml][Computer's Are Bad]] :technology: + ,*** [[https://mark.stosberg.com/rss/][Mark Stosberg]] :biking: + ,*** [[https://maia.crimew.gay/feed.xml][Maia Crimew]] :internet:hacking: + ,*** [[https://drewdevault.com/blog/index.xml][Drew DeVault]] + ,** Comics :comic: + ,*** [[https://xkcd.com/atom.xml][XKCD]] + ,** People I know + ,*** [[https://www.weavingwatersexpedition.com/news?format=rss][Weaving Waters Expedition]] :journalism: + ,*** [[https://pinkish.bearblog.dev/feed/][Pinkish]] :software: + ,*** [[https://jjanzen.ca/rss.xml][Me]] :software:review: + ,** Internet Infrastructure :internet:software: + ,*** [[https://daniel.haxx.se/blog/feed/][cURL]] + ,*** [[https://blog.archive.org/feed/][Archive.org]] + ,** Reviews :review: + ,*** [[https://mountainofink.com/?format=rss][Mountain of Ink]] +#+end_src diff --git a/common/.config/emacs/feed.org b/common/.config/emacs/feed.org deleted file mode 100644 index d93d32e..0000000 --- a/common/.config/emacs/feed.org +++ /dev/null @@ -1,38 +0,0 @@ -#+title: Emacs RSS Feed - -#+begin_src org :tangle ~/.config/emacs/feed.org :mkdirp yes - ,* Blogs - :PROPERTIES: - :ID: elfeed - :END: - ,** Journalism :journalism: - ,*** [[https://waxy.org/feed/][Waxy.org]] - ,*** [[https://pluralistic.net/feed/][Cory Doctorow]] :technology:software:fiction: - ,** Computer Science :cs: - ,*** [[https://a.exozy.me/index.xml][Some Random Website]] :math:algorithms:fiction: - ,** Technology :technology: - ,*** [[https://ciechanow.ski/atom.xml][Bartosz Ciechanowshki]] - ,*** [[https://www.citationneeded.news/rss/][Citation Needed]] - ,*** [[https://www.lilysthings.org/blog/rss.xml][The Cool Blog]] - ,** Software :software: - ,*** [[https://ersei.net/en/blog.atom][Ersei]] - ,*** [[https://lilysthings.org/blog/rss.xml][Lily's Things]] - ,*** [[https://ntietz.com/atom.xml][Technically a Blog]] - ,*** [[https://alexwlchan.net/atom.xml][Alex Chan]] - ,*** [[https://eaton-works.com/feed.atom][Eaton Works]] :hacking: - ,*** [[https://computer.rip/rss.xml][Computer's Are Bad]] :technology: - ,*** [[https://mark.stosberg.com/rss/][Mark Stosberg]] :biking: - ,*** [[https://maia.crimew.gay/feed.xml][Maia Crimew]] :internet:hacking: - ,*** [[https://drewdevault.com/blog/index.xml][Drew DeVault]] - ,** Comics :comic: - ,*** [[https://xkcd.com/atom.xml][XKCD]] - ,** People I know - ,*** [[https://www.weavingwatersexpedition.com/news?format=rss][Weaving Waters Expedition]] :journalism: - ,*** [[https://pinkish.bearblog.dev/feed/][Pinkish]] :software: - ,*** [[https://jjanzen.ca/rss.xml][Me]] :software:review: - ,** Internet Infrastructure :internet:software: - ,*** [[https://daniel.haxx.se/blog/feed/][cURL]] - ,*** [[https://blog.archive.org/feed/][Archive.org]] - ,** Reviews :review: - ,*** [[https://mountainofink.com/?format=rss][Mountain of Ink]] -#+end_src diff --git a/common/.config/emacs/force-custom-file.el.org b/common/.config/emacs/force-custom-file.el.org new file mode 100644 index 0000000..8b8a418 --- /dev/null +++ b/common/.config/emacs/force-custom-file.el.org @@ -0,0 +1,8 @@ +#+title: Emacs Force the Usage of a =custom.el= File + +Force the usage of a =custom.el= file for customizations instead of placing them in =init.el=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/force-custom-file.el :mkdirp yes + (setq custom-file (concat user-emacs-directory "custom.el")) + (when (file-exists-p custom-file) + (load custom-file)) +#+end_src diff --git a/common/.config/emacs/force-custom-file.org b/common/.config/emacs/force-custom-file.org deleted file mode 100644 index 8b8a418..0000000 --- a/common/.config/emacs/force-custom-file.org +++ /dev/null @@ -1,8 +0,0 @@ -#+title: Emacs Force the Usage of a =custom.el= File - -Force the usage of a =custom.el= file for customizations instead of placing them in =init.el=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/force-custom-file.el :mkdirp yes - (setq custom-file (concat user-emacs-directory "custom.el")) - (when (file-exists-p custom-file) - (load custom-file)) -#+end_src diff --git a/common/.config/emacs/init.el.org b/common/.config/emacs/init.el.org new file mode 100644 index 0000000..74566c3 --- /dev/null +++ b/common/.config/emacs/init.el.org @@ -0,0 +1,25 @@ +#+title: Emacs Configuration +Load [[./force-custom-file.org][force-custom-file.el]] to ensure that =init.el= is not polluted by customizations. +#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el :mkdirp yes + (load "~/.config/emacs/force-custom-file.el") +#+end_src + +Load [[./package-setup.org][package-setup.el]] to allow for package installation. +#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el :mkdirp yes + (load "~/.config/emacs/package-setup.el") +#+end_src + +Load [[./user-interface.org][user-interface.el]] to clean up Emacs' user interface and make it look the way I like. +#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el :mkdirp yes + (load "~/.config/emacs/user-interface.el") +#+end_src + +Load [[./tools.org][tools.el]] to add functionality to Emacs. +#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el :mkdirp yes + (load "~/.config/emacs/tools.el") +#+end_src + +Load [[./languages.org][languages.el]] to add language and language server protocol support. +#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el :mkdirp yes + (load "~/.config/emacs/languages.el") +#+end_src diff --git a/common/.config/emacs/init.org b/common/.config/emacs/init.org deleted file mode 100644 index 74566c3..0000000 --- a/common/.config/emacs/init.org +++ /dev/null @@ -1,25 +0,0 @@ -#+title: Emacs Configuration -Load [[./force-custom-file.org][force-custom-file.el]] to ensure that =init.el= is not polluted by customizations. -#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el :mkdirp yes - (load "~/.config/emacs/force-custom-file.el") -#+end_src - -Load [[./package-setup.org][package-setup.el]] to allow for package installation. -#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el :mkdirp yes - (load "~/.config/emacs/package-setup.el") -#+end_src - -Load [[./user-interface.org][user-interface.el]] to clean up Emacs' user interface and make it look the way I like. -#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el :mkdirp yes - (load "~/.config/emacs/user-interface.el") -#+end_src - -Load [[./tools.org][tools.el]] to add functionality to Emacs. -#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el :mkdirp yes - (load "~/.config/emacs/tools.el") -#+end_src - -Load [[./languages.org][languages.el]] to add language and language server protocol support. -#+begin_src emacs-lisp :tangle ~/.config/emacs/init.el :mkdirp yes - (load "~/.config/emacs/languages.el") -#+end_src diff --git a/common/.config/emacs/languages.el.org b/common/.config/emacs/languages.el.org new file mode 100644 index 0000000..0c4fe7b --- /dev/null +++ b/common/.config/emacs/languages.el.org @@ -0,0 +1,141 @@ +#+title: Emacs Programming Language Setup + +* Shell Script +Run =eglot= on shell script files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (add-hook 'sh-mode-hook 'jj/eglot-setup) +#+end_src + +* C +Run =eglot= on C and C++ files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (add-hook 'c-mode-hook 'jj/eglot-setup) + (add-hook 'c++-mode-hook 'jj/eglot-setup) + (add-hook 'cc-mode-hook 'jj/eglot-setup) +#+end_src + +Run =eglot= on CMake files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (use-package cmake-mode + :init + (add-hook 'cmake-mode-hook 'jj/eglot-setup)) +#+end_src + +Turn off C mode in =lex= and =yacc= files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (add-to-list 'auto-mode-alist '("\\.l$" . prog-mode)) + (add-to-list 'auto-mode-alist '("\\.y$" . prog-mode)) +#+end_src + +* Web +Run =eglot= on HTML files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (add-hook 'html-mode-hook 'jj/eglot-setup) +#+end_src + +Run =eglot= on CSS files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (add-hook 'css-mode-hook 'jj/eglot-setup) +#+end_src + +Run =eglot= on JavaScript files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (add-hook 'js-json-mode-hook 'jj/eglot-setup) + (add-hook 'js-mode-hook 'jj/eglot-setup) +#+end_src + +* Python +Run =eglot= on Python files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (add-hook 'python-mode-hook 'jj/eglot-setup) +#+end_src + +* Go +Install Go support and run =eglot= on Go files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (use-package go-mode + :init + (add-hook 'go-mode-hook 'jj/eglot-setup)) +#+end_src + +Get documentation for Go variables, functions, and arguments. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (use-package go-eldoc + :init + (add-hook 'go-mode-hook 'go-eldoc-setup)) +#+end_src + +Automatically generate tests in Go. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (use-package go-gen-test) +#+end_src + +Get refactoring tools from =go-guru=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (use-package go-guru + :hook (go-mode . go-guru-hl-identifier-mode)) +#+end_src + +* Lua +Install Lua support and run =eglot= on Lua files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (use-package lua-mode + :init + (add-hook 'lua-mode-hook 'jj/eglot-setup)) +#+end_src + +Better Lisp editing with =lispy=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (use-package lispy + :hook (emacs-lisp-mode . lispy-mode)) + (use-package lispyville + :after lispy + :hook (lispy-mode . lispyville-mode)) +#+end_src + +Better parentheses handling in lisp with =parinfer-rust-mode=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (use-package parinfer-rust-mode + :hook (emacs-lisp-mode . parinfer-rust-mode) + :init + (setq parinfer-rust-auto-download t)) +#+end_src + +* Markdown +Install Markdown support and run =eglot= on Markdown files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (use-package markdown-mode + :init + (add-hook 'markdown-mode-hook 'jj/eglot-setup)) +#+end_src + +* LaTeX +Run =eglot= on TeX files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (add-hook 'tex-mode-hook 'jj/eglot-setup) +#+end_src + +Use AUCTeX for extra LaTeX integration. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (use-package auctex + :config + (add-hook 'LaTeX-mode-hook 'jj/eglot-setup) + (add-hook 'LaTeX-mode-hook + (lambda () + (put 'LaTeX-mode 'eglot-language-id "latex")))) +#+end_src + +Use CDLaTeX for environment and macro insertion. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (use-package cdlatex + :config + (add-hook 'LaTeX-mode-hook #'turn-on-cdlatex)) +#+end_src + +* YAML +Install YAML support and run =eglot= on YAML files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes + (use-package yaml-mode + :init + (add-hook 'yaml-mode-hook 'jj/eglot-setup)) +#+end_src diff --git a/common/.config/emacs/languages.org b/common/.config/emacs/languages.org deleted file mode 100644 index 0c4fe7b..0000000 --- a/common/.config/emacs/languages.org +++ /dev/null @@ -1,141 +0,0 @@ -#+title: Emacs Programming Language Setup - -* Shell Script -Run =eglot= on shell script files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (add-hook 'sh-mode-hook 'jj/eglot-setup) -#+end_src - -* C -Run =eglot= on C and C++ files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (add-hook 'c-mode-hook 'jj/eglot-setup) - (add-hook 'c++-mode-hook 'jj/eglot-setup) - (add-hook 'cc-mode-hook 'jj/eglot-setup) -#+end_src - -Run =eglot= on CMake files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (use-package cmake-mode - :init - (add-hook 'cmake-mode-hook 'jj/eglot-setup)) -#+end_src - -Turn off C mode in =lex= and =yacc= files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (add-to-list 'auto-mode-alist '("\\.l$" . prog-mode)) - (add-to-list 'auto-mode-alist '("\\.y$" . prog-mode)) -#+end_src - -* Web -Run =eglot= on HTML files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (add-hook 'html-mode-hook 'jj/eglot-setup) -#+end_src - -Run =eglot= on CSS files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (add-hook 'css-mode-hook 'jj/eglot-setup) -#+end_src - -Run =eglot= on JavaScript files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (add-hook 'js-json-mode-hook 'jj/eglot-setup) - (add-hook 'js-mode-hook 'jj/eglot-setup) -#+end_src - -* Python -Run =eglot= on Python files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (add-hook 'python-mode-hook 'jj/eglot-setup) -#+end_src - -* Go -Install Go support and run =eglot= on Go files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (use-package go-mode - :init - (add-hook 'go-mode-hook 'jj/eglot-setup)) -#+end_src - -Get documentation for Go variables, functions, and arguments. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (use-package go-eldoc - :init - (add-hook 'go-mode-hook 'go-eldoc-setup)) -#+end_src - -Automatically generate tests in Go. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (use-package go-gen-test) -#+end_src - -Get refactoring tools from =go-guru=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (use-package go-guru - :hook (go-mode . go-guru-hl-identifier-mode)) -#+end_src - -* Lua -Install Lua support and run =eglot= on Lua files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (use-package lua-mode - :init - (add-hook 'lua-mode-hook 'jj/eglot-setup)) -#+end_src - -Better Lisp editing with =lispy=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (use-package lispy - :hook (emacs-lisp-mode . lispy-mode)) - (use-package lispyville - :after lispy - :hook (lispy-mode . lispyville-mode)) -#+end_src - -Better parentheses handling in lisp with =parinfer-rust-mode=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (use-package parinfer-rust-mode - :hook (emacs-lisp-mode . parinfer-rust-mode) - :init - (setq parinfer-rust-auto-download t)) -#+end_src - -* Markdown -Install Markdown support and run =eglot= on Markdown files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (use-package markdown-mode - :init - (add-hook 'markdown-mode-hook 'jj/eglot-setup)) -#+end_src - -* LaTeX -Run =eglot= on TeX files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (add-hook 'tex-mode-hook 'jj/eglot-setup) -#+end_src - -Use AUCTeX for extra LaTeX integration. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (use-package auctex - :config - (add-hook 'LaTeX-mode-hook 'jj/eglot-setup) - (add-hook 'LaTeX-mode-hook - (lambda () - (put 'LaTeX-mode 'eglot-language-id "latex")))) -#+end_src - -Use CDLaTeX for environment and macro insertion. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (use-package cdlatex - :config - (add-hook 'LaTeX-mode-hook #'turn-on-cdlatex)) -#+end_src - -* YAML -Install YAML support and run =eglot= on YAML files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes - (use-package yaml-mode - :init - (add-hook 'yaml-mode-hook 'jj/eglot-setup)) -#+end_src diff --git a/common/.config/emacs/package-setup.el.org b/common/.config/emacs/package-setup.el.org new file mode 100644 index 0000000..6ed238c --- /dev/null +++ b/common/.config/emacs/package-setup.el.org @@ -0,0 +1,25 @@ +#+title: Emacs Package Setup +Install =straight= for better package management. +#+begin_src emacs-lisp :tangle ~/.config/emacs/package-setup.el :mkdirp yes + (defvar bootstrap-version) + (let ((bootstrap-file + (expand-file-name + "straight/repos/straight.el/bootstrap.el" + (or (bound-and-true-p straight-base-dir) + user-emacs-directory))) + (bootstrap-version 7)) + (unless (file-exists-p bootstrap-file) + (with-current-buffer + (url-retrieve-synchronously + "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el" + 'silent 'inhibit-cookies) + (goto-char (point-max)) + (eval-print-last-sexp))) + (load bootstrap-file nil 'nomessage)) +#+end_src + +Install =use-package= for declarative package installation. Make =use-package= default to =ensure t= so that packages are enabled if they are declared. +#+begin_src emacs-lisp :tangle ~/.config/emacs/package-setup.el :mkdirp yes + (straight-use-package 'use-package) + (setq straight-use-package-by-default t) +#+end_src diff --git a/common/.config/emacs/package-setup.org b/common/.config/emacs/package-setup.org deleted file mode 100644 index 6ed238c..0000000 --- a/common/.config/emacs/package-setup.org +++ /dev/null @@ -1,25 +0,0 @@ -#+title: Emacs Package Setup -Install =straight= for better package management. -#+begin_src emacs-lisp :tangle ~/.config/emacs/package-setup.el :mkdirp yes - (defvar bootstrap-version) - (let ((bootstrap-file - (expand-file-name - "straight/repos/straight.el/bootstrap.el" - (or (bound-and-true-p straight-base-dir) - user-emacs-directory))) - (bootstrap-version 7)) - (unless (file-exists-p bootstrap-file) - (with-current-buffer - (url-retrieve-synchronously - "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el" - 'silent 'inhibit-cookies) - (goto-char (point-max)) - (eval-print-last-sexp))) - (load bootstrap-file nil 'nomessage)) -#+end_src - -Install =use-package= for declarative package installation. Make =use-package= default to =ensure t= so that packages are enabled if they are declared. -#+begin_src emacs-lisp :tangle ~/.config/emacs/package-setup.el :mkdirp yes - (straight-use-package 'use-package) - (setq straight-use-package-by-default t) -#+end_src diff --git a/common/.config/emacs/tools.el.org b/common/.config/emacs/tools.el.org new file mode 100644 index 0000000..d52c1b6 --- /dev/null +++ b/common/.config/emacs/tools.el.org @@ -0,0 +1,391 @@ +#+title: Emacs Tool Setup + +* Vi Keybindings +Use =vi= keybindings with =evil=. Set the undo system to =undo-fu=. Wrapped lines can be moved between with =j= and =k=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package evil + :init + (setq evil-want-keybinding nil) + :config + (evil-mode) + (evil-global-set-key 'motion "j" 'evil-next-visual-line) + (evil-global-set-key 'motion "k" 'evil-previous-visual-line) + (evil-global-set-key 'motion (kbd "RET") nil) + :custom + (evil-undo-system 'undo-fu)) +#+end_src + +Use =evil-collection= to include =vi= keybindings in extra modes. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package evil-collection + :after evil + :config + (evil-collection-init)) +#+end_src + +* Undo +Better undo with =undo-fu=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package undo-fu) +#+end_src + +Make undo persistent when closing Emacs with =undo-fu-session=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package undo-fu-session + :init (undo-fu-session-global-mode 1)) +#+end_src + +* Lookup +Better lookup with =dumb-jump=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package dumb-jump + :init (add-hook 'xref-backend-functions #'dumb-jump-xref-activate)) +#+end_src + +* Version Control +Install Magit for Git integration. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package magit) +#+end_src + +* Remote Editing +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes +(setq tramp-default-method "ssh") +#+end_src + +* Document Viewing +Replace =DocView= with a better document viewer from =pdf-tools=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package pdf-tools + :config + (pdf-tools-install) + :init + (add-hook 'pdf-view-mode-hook #'(lambda () (display-line-numbers-mode -1))) + (add-hook 'TeX-after-compilation-finished-functions + #'TeX-revert-document-buffer) + :config + (setq TeX-view-program-selection '((output-pdf "PDF Tools")) + TeX-view-program-list '(("PDF Tools" TeX-pdf-tools-sync-view)) + TeX-source-correlate-start-server t)) +#+end_src + +Save place in PDFs with =saveplace-pdf-view=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package saveplace-pdf-view + :config (save-place-mode 1)) +#+end_src + +* Org-Mode +Ensure that =org= is set up before any of this. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package org) +#+end_src +Set my =org-mode= directory. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (setq org-directory "~/org") +#+end_src + +Hide emphasis markers because I can see if something is *bold*, /italic/, or =monospace= without needing to see the markers. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (setq org-hide-emphasis-markers t) +#+end_src + +Set up nicer looking bullet points. +- they look like circles +- instead of hyphens +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (font-lock-add-keywords 'org-mode + '(("^ *\\([-]\\) " + (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•")))))) +#+end_src + +Set up fonts. Don't use =monospace= by default. Do use it where necessary though. Also, make different heading levels different sizes. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (add-hook 'org-mode-hook 'variable-pitch-mode) + (custom-set-faces + `(variable-pitch ((t :font ,jj/var-font))) + `(fixed-pitch ((t :font ,jj/mono-font))) + '(org-block ((t (:inherit fixed-pitch)))) + '(org-code ((t (:inherit (shadow fixed-pitch))))) + '(org-document-info-keyword ((t (:inherit (shadow fixed-pitch))))) + '(org-meta-line ((t (:inherit (font-lock-comment-face fixed-pitch))))) + '(org-verbatim ((t (:inherit (shadow fixed-pitch))))) + '(org-table ((t (:inherit (shadow fixed-pitch))))) + '(org-document-title ((t (:inherit title :height 2.0 :underline nil)))) + '(org-level-1 ((t (:inherit outline-1 :weight: bold :height 1.75)))) + '(org-level-2 ((t (:inherit outline-2 :weight: bold :height 1.5)))) + '(org-level-2 ((t (:inherit outline-3 :weight: bold :height 1.25)))) + '(org-level-2 ((t (:inherit outline-4 :weight: bold :height 1.1)))) + '(org-level-4 ((t (:inherit outline-4 :height 1.1)))) + '(org-level-5 ((t (:inherit outline-5 :height 1.0)))) + ) +#+end_src + +Wrap lines and centre the view to make for a nicer reading experience. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package visual-fill-column) + (add-hook 'org-mode-hook 'visual-line-mode) + (add-hook 'org-mode-hook #'(lambda () (display-line-numbers-mode -1))) + (defun jj/org-mode-visual-fill () + (setq visual-fill-column-width 100 + visual-fill-column-center-text t) + (visual-fill-column-mode 1)) + (add-hook 'org-mode-hook #'jj/org-mode-visual-fill) +#+end_src + +Increase the size of LaTeX previews. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (setq org-format-latex-options (plist-put org-format-latex-options :scale 2.0)) +#+end_src + +Follow links with the return key. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (setq org-return-follows-link t) +#+end_src + +Tangle on save. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (defun org-babel-tangle-config () + (when (string-suffix-p ".org" (buffer-file-name)) + (org-babel-tangle))) + (add-hook 'org-mode-hook + (lambda () + (add-hook 'after-save-hook #'org-babel-tangle-config))) +#+end_src + +Enable Org Crypt. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (org-crypt-use-before-save-magic) + (setq org-tags-exclude-from-inheritance '("crypt")) + (setq org-crypt-key nil) + (setq auto-save-default nil) +#+end_src + +* Shell +Use =eshell= as an integrated shell. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package eshell) + (global-set-key (kbd "C-c e") 'eshell) +#+end_src + +* Language Servers +Add =eglot= keybindings. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (global-set-key (kbd "C-c r") 'eglot-rename) + (global-set-key (kbd "C-c a") 'eglot-code-actions) +#+end_src + +Install =tree-sitter=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package tree-sitter) + (use-package tree-sitter-langs) +#+end_src + +Define function to set up =eglot= automatically. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (defun jj/eglot-setup () + (eglot-ensure) + (tree-sitter-mode 1) + (tree-sitter-hl-mode 1)) +#+end_src + +* Completions +Use company for completions with no delay, starting immediately after first character is typed. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package company + :config + (add-hook 'after-init-hook 'global-company-mode) + (setq company-idle-delay 0 + company-minimum-prefix-length 1 + company-selection-wrap-around t)) +#+end_src + +Use =vertico= as a completion user interface. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package vertico + :custom + (vertico-cycle t) + :init + (vertico-mode)) +#+end_src + +Use =orderless= to allow typing any portion of a word that you want to search for. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package orderless + :ensure t + :custom + (completion-styles '(orderless basic)) + (completion-category-overrides '((file (styles basic partial-completion))))) +#+end_src + +Get descriptions of items in =vertico= with =marginalia=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package marginalia + :bind (:map minibuffer-local-map + ("M-A" . marginalia-cycle)) + :init + (marginalia-mode)) +#+end_src + +Get nerd font icons in completions. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package nerd-icons-completion + :config + (nerd-icons-completion-mode)) +#+end_src + +Use consult with =vertico= for extra functionality to various functions. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package consult + :bind ( + ("C-c M-x" . consult-mode-command) + ("C-c h" . consult-history) + ("C-c k" . consult-kmacro) + ("C-c m" . consult-man) + ("C-c i" . consult-info) + ([remap Info-search] . consult-info) + ("C-x M-:" . consult-complex-command) + ("C-x b" . consult-buffer) + ("C-x 4 b" . consult-buffer-other-window) + ("C-x 5 b" . consult-buffer-other-frame) + ("C-x t b" . consult-buffer-other-tab) + ("C-x r b" . consult-bookmark) + ("C-x p b" . consult-project-buffer) + ("M-#" . consult-register-load) + ("M-'" . consult-register-store) + ("C-M-#" . consult-register) + ("M-y" . consult-yank-pop) + ("M-g e" . consult-compile-error) + ("M-g f" . consult-flycheck) + ("M-g g" . consult-goto-line) + ("M-g M-g" . consult-goto-line) + ("M-g o" . consult-outline) + ("M-g m" . consult-mark) + ("M-g k" . consult-global-mark) + ("M-g i" . consult-imenu) + ("M-g I" . consult-imenu-multi) + ("M-s d" . consult-fd) + ("M-s c" . consult-locate) + ("M-s g" . consult-grep) + ("M-s G" . consult-git-grep) + ("M-s r" . consult-ripgrep) + ("M-s l" . consult-line) + ("M-s L" . consult-line-multi) + ("M-s k" . consult-keep-lines) + ("M-s u" . consult-focus-lines) + ("M-s e" . consult-isearch-history) + :map isearch-mode-map + ("M-e" . consult-isearch-history) + ("M-s e" . consult-isearch-history) + ("M-s l" . consult-line) + ("M-s L" . consult-line-multi) + :map minibuffer-local-map + ("M-s" . consult-history) + ("M-r" . consult-history)) + :hook (completion-list-mode . consult-preview-at-point-mode) + :init + (setq register-preview-delay 0.5 + register-preview-function #'consult-register-format) + (advice-add #'register-preview :override #'consult-register-window) + (setq xref-show-xrefs-function #'consult-xref + xref-show-definitions-function #'consult-xref) + :config + (consult-customize + consult-theme :preview-key '(:debounce 0.2 any) + consult-ripgrep consult-git-grep consult-grep + consult-bookmark consult-recent-file consult-xref + consult--source-bookmark consult--source-file-register + consult--source-recent-file consult--source-project-recent-file + :preview-key '(:debounce 0.4 any)) + (setq consult-narrow-key "<")) +#+end_src + +Use Flycheck for syntax checking. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package flycheck + :config + (add-hook 'after-init-hook #'global-flycheck-mode)) +#+end_src + +Use Flyspell for spell checking. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (dolist (hook '(text-mode-hook)) + (add-hook hook (lambda () (flyspell-mode 1)))) + (use-package flyspell-correct + :after flyspell + :bind (:map flyspell-mode-map ("C-;" . flyspell-correct-wrapper))) +#+end_src + +* Snippets +Use =yasnippet= for snippets so I don't need to type as much. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package yasnippet + :init + (yas-global-mode 1) + :config + (global-set-key (kbd "C-c s") 'yas-insert-snippet)) +#+end_src + +Install snippet collection for =yasnippet=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package yasnippet-snippets) +#+end_src + +* Formatting +Automatically format with Apheleia and =clang-format=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package apheleia + :init (apheleia-global-mode +1)) + (use-package clang-format) +#+end_src + +* RSS +Use Emacs as an RSS feed with =elfeed=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package elfeed + :config + (global-set-key (kbd "C-c f") 'elfeed) + (global-set-key (kbd "C-c M-f") 'elfeed-update)) +#+end_src + +Make =elfeed= more powerful with =elfeed-goodies=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package elfeed-goodies + :after elfeed + :config + (elfeed-goodies/setup)) +#+end_src + +Store my feed in Org-mode [[./feed.org][here]]. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package elfeed-org + :config + (elfeed-org) + (setq rmh-elfeed-org-files (list "~/.config/emacs/feed.org"))) +#+end_src + +* Deft +Use the Deft package to manage notes. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package deft + :config + (global-set-key (kbd "C-c d") 'deft) + (setq deft-directory "~/notes/" + deft-default-extension "org")) +#+end_src + +* Reference Management +Use Biblio and Citar to manage citations. +#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes + (use-package biblio) + (use-package citar + :custom + (citar-bibliography '("~/bib/references.bib")) + :hook + (LaTeX-mode . citar-capf-setup) + (org-mode . citar-capf-setup)) + (use-package citar-embark + :after citar embark + :no-require + :config (citar-embark-mode)) +#+end_src diff --git a/common/.config/emacs/tools.org b/common/.config/emacs/tools.org deleted file mode 100644 index d52c1b6..0000000 --- a/common/.config/emacs/tools.org +++ /dev/null @@ -1,391 +0,0 @@ -#+title: Emacs Tool Setup - -* Vi Keybindings -Use =vi= keybindings with =evil=. Set the undo system to =undo-fu=. Wrapped lines can be moved between with =j= and =k=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package evil - :init - (setq evil-want-keybinding nil) - :config - (evil-mode) - (evil-global-set-key 'motion "j" 'evil-next-visual-line) - (evil-global-set-key 'motion "k" 'evil-previous-visual-line) - (evil-global-set-key 'motion (kbd "RET") nil) - :custom - (evil-undo-system 'undo-fu)) -#+end_src - -Use =evil-collection= to include =vi= keybindings in extra modes. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package evil-collection - :after evil - :config - (evil-collection-init)) -#+end_src - -* Undo -Better undo with =undo-fu=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package undo-fu) -#+end_src - -Make undo persistent when closing Emacs with =undo-fu-session=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package undo-fu-session - :init (undo-fu-session-global-mode 1)) -#+end_src - -* Lookup -Better lookup with =dumb-jump=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package dumb-jump - :init (add-hook 'xref-backend-functions #'dumb-jump-xref-activate)) -#+end_src - -* Version Control -Install Magit for Git integration. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package magit) -#+end_src - -* Remote Editing -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes -(setq tramp-default-method "ssh") -#+end_src - -* Document Viewing -Replace =DocView= with a better document viewer from =pdf-tools=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package pdf-tools - :config - (pdf-tools-install) - :init - (add-hook 'pdf-view-mode-hook #'(lambda () (display-line-numbers-mode -1))) - (add-hook 'TeX-after-compilation-finished-functions - #'TeX-revert-document-buffer) - :config - (setq TeX-view-program-selection '((output-pdf "PDF Tools")) - TeX-view-program-list '(("PDF Tools" TeX-pdf-tools-sync-view)) - TeX-source-correlate-start-server t)) -#+end_src - -Save place in PDFs with =saveplace-pdf-view=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package saveplace-pdf-view - :config (save-place-mode 1)) -#+end_src - -* Org-Mode -Ensure that =org= is set up before any of this. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package org) -#+end_src -Set my =org-mode= directory. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (setq org-directory "~/org") -#+end_src - -Hide emphasis markers because I can see if something is *bold*, /italic/, or =monospace= without needing to see the markers. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (setq org-hide-emphasis-markers t) -#+end_src - -Set up nicer looking bullet points. -- they look like circles -- instead of hyphens -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (font-lock-add-keywords 'org-mode - '(("^ *\\([-]\\) " - (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•")))))) -#+end_src - -Set up fonts. Don't use =monospace= by default. Do use it where necessary though. Also, make different heading levels different sizes. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (add-hook 'org-mode-hook 'variable-pitch-mode) - (custom-set-faces - `(variable-pitch ((t :font ,jj/var-font))) - `(fixed-pitch ((t :font ,jj/mono-font))) - '(org-block ((t (:inherit fixed-pitch)))) - '(org-code ((t (:inherit (shadow fixed-pitch))))) - '(org-document-info-keyword ((t (:inherit (shadow fixed-pitch))))) - '(org-meta-line ((t (:inherit (font-lock-comment-face fixed-pitch))))) - '(org-verbatim ((t (:inherit (shadow fixed-pitch))))) - '(org-table ((t (:inherit (shadow fixed-pitch))))) - '(org-document-title ((t (:inherit title :height 2.0 :underline nil)))) - '(org-level-1 ((t (:inherit outline-1 :weight: bold :height 1.75)))) - '(org-level-2 ((t (:inherit outline-2 :weight: bold :height 1.5)))) - '(org-level-2 ((t (:inherit outline-3 :weight: bold :height 1.25)))) - '(org-level-2 ((t (:inherit outline-4 :weight: bold :height 1.1)))) - '(org-level-4 ((t (:inherit outline-4 :height 1.1)))) - '(org-level-5 ((t (:inherit outline-5 :height 1.0)))) - ) -#+end_src - -Wrap lines and centre the view to make for a nicer reading experience. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package visual-fill-column) - (add-hook 'org-mode-hook 'visual-line-mode) - (add-hook 'org-mode-hook #'(lambda () (display-line-numbers-mode -1))) - (defun jj/org-mode-visual-fill () - (setq visual-fill-column-width 100 - visual-fill-column-center-text t) - (visual-fill-column-mode 1)) - (add-hook 'org-mode-hook #'jj/org-mode-visual-fill) -#+end_src - -Increase the size of LaTeX previews. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (setq org-format-latex-options (plist-put org-format-latex-options :scale 2.0)) -#+end_src - -Follow links with the return key. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (setq org-return-follows-link t) -#+end_src - -Tangle on save. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (defun org-babel-tangle-config () - (when (string-suffix-p ".org" (buffer-file-name)) - (org-babel-tangle))) - (add-hook 'org-mode-hook - (lambda () - (add-hook 'after-save-hook #'org-babel-tangle-config))) -#+end_src - -Enable Org Crypt. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (org-crypt-use-before-save-magic) - (setq org-tags-exclude-from-inheritance '("crypt")) - (setq org-crypt-key nil) - (setq auto-save-default nil) -#+end_src - -* Shell -Use =eshell= as an integrated shell. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package eshell) - (global-set-key (kbd "C-c e") 'eshell) -#+end_src - -* Language Servers -Add =eglot= keybindings. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (global-set-key (kbd "C-c r") 'eglot-rename) - (global-set-key (kbd "C-c a") 'eglot-code-actions) -#+end_src - -Install =tree-sitter=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package tree-sitter) - (use-package tree-sitter-langs) -#+end_src - -Define function to set up =eglot= automatically. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (defun jj/eglot-setup () - (eglot-ensure) - (tree-sitter-mode 1) - (tree-sitter-hl-mode 1)) -#+end_src - -* Completions -Use company for completions with no delay, starting immediately after first character is typed. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package company - :config - (add-hook 'after-init-hook 'global-company-mode) - (setq company-idle-delay 0 - company-minimum-prefix-length 1 - company-selection-wrap-around t)) -#+end_src - -Use =vertico= as a completion user interface. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package vertico - :custom - (vertico-cycle t) - :init - (vertico-mode)) -#+end_src - -Use =orderless= to allow typing any portion of a word that you want to search for. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package orderless - :ensure t - :custom - (completion-styles '(orderless basic)) - (completion-category-overrides '((file (styles basic partial-completion))))) -#+end_src - -Get descriptions of items in =vertico= with =marginalia=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package marginalia - :bind (:map minibuffer-local-map - ("M-A" . marginalia-cycle)) - :init - (marginalia-mode)) -#+end_src - -Get nerd font icons in completions. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package nerd-icons-completion - :config - (nerd-icons-completion-mode)) -#+end_src - -Use consult with =vertico= for extra functionality to various functions. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package consult - :bind ( - ("C-c M-x" . consult-mode-command) - ("C-c h" . consult-history) - ("C-c k" . consult-kmacro) - ("C-c m" . consult-man) - ("C-c i" . consult-info) - ([remap Info-search] . consult-info) - ("C-x M-:" . consult-complex-command) - ("C-x b" . consult-buffer) - ("C-x 4 b" . consult-buffer-other-window) - ("C-x 5 b" . consult-buffer-other-frame) - ("C-x t b" . consult-buffer-other-tab) - ("C-x r b" . consult-bookmark) - ("C-x p b" . consult-project-buffer) - ("M-#" . consult-register-load) - ("M-'" . consult-register-store) - ("C-M-#" . consult-register) - ("M-y" . consult-yank-pop) - ("M-g e" . consult-compile-error) - ("M-g f" . consult-flycheck) - ("M-g g" . consult-goto-line) - ("M-g M-g" . consult-goto-line) - ("M-g o" . consult-outline) - ("M-g m" . consult-mark) - ("M-g k" . consult-global-mark) - ("M-g i" . consult-imenu) - ("M-g I" . consult-imenu-multi) - ("M-s d" . consult-fd) - ("M-s c" . consult-locate) - ("M-s g" . consult-grep) - ("M-s G" . consult-git-grep) - ("M-s r" . consult-ripgrep) - ("M-s l" . consult-line) - ("M-s L" . consult-line-multi) - ("M-s k" . consult-keep-lines) - ("M-s u" . consult-focus-lines) - ("M-s e" . consult-isearch-history) - :map isearch-mode-map - ("M-e" . consult-isearch-history) - ("M-s e" . consult-isearch-history) - ("M-s l" . consult-line) - ("M-s L" . consult-line-multi) - :map minibuffer-local-map - ("M-s" . consult-history) - ("M-r" . consult-history)) - :hook (completion-list-mode . consult-preview-at-point-mode) - :init - (setq register-preview-delay 0.5 - register-preview-function #'consult-register-format) - (advice-add #'register-preview :override #'consult-register-window) - (setq xref-show-xrefs-function #'consult-xref - xref-show-definitions-function #'consult-xref) - :config - (consult-customize - consult-theme :preview-key '(:debounce 0.2 any) - consult-ripgrep consult-git-grep consult-grep - consult-bookmark consult-recent-file consult-xref - consult--source-bookmark consult--source-file-register - consult--source-recent-file consult--source-project-recent-file - :preview-key '(:debounce 0.4 any)) - (setq consult-narrow-key "<")) -#+end_src - -Use Flycheck for syntax checking. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package flycheck - :config - (add-hook 'after-init-hook #'global-flycheck-mode)) -#+end_src - -Use Flyspell for spell checking. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (dolist (hook '(text-mode-hook)) - (add-hook hook (lambda () (flyspell-mode 1)))) - (use-package flyspell-correct - :after flyspell - :bind (:map flyspell-mode-map ("C-;" . flyspell-correct-wrapper))) -#+end_src - -* Snippets -Use =yasnippet= for snippets so I don't need to type as much. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package yasnippet - :init - (yas-global-mode 1) - :config - (global-set-key (kbd "C-c s") 'yas-insert-snippet)) -#+end_src - -Install snippet collection for =yasnippet=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package yasnippet-snippets) -#+end_src - -* Formatting -Automatically format with Apheleia and =clang-format=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package apheleia - :init (apheleia-global-mode +1)) - (use-package clang-format) -#+end_src - -* RSS -Use Emacs as an RSS feed with =elfeed=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package elfeed - :config - (global-set-key (kbd "C-c f") 'elfeed) - (global-set-key (kbd "C-c M-f") 'elfeed-update)) -#+end_src - -Make =elfeed= more powerful with =elfeed-goodies=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package elfeed-goodies - :after elfeed - :config - (elfeed-goodies/setup)) -#+end_src - -Store my feed in Org-mode [[./feed.org][here]]. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package elfeed-org - :config - (elfeed-org) - (setq rmh-elfeed-org-files (list "~/.config/emacs/feed.org"))) -#+end_src - -* Deft -Use the Deft package to manage notes. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package deft - :config - (global-set-key (kbd "C-c d") 'deft) - (setq deft-directory "~/notes/" - deft-default-extension "org")) -#+end_src - -* Reference Management -Use Biblio and Citar to manage citations. -#+begin_src emacs-lisp :tangle ~/.config/emacs/tools.el :mkdirp yes - (use-package biblio) - (use-package citar - :custom - (citar-bibliography '("~/bib/references.bib")) - :hook - (LaTeX-mode . citar-capf-setup) - (org-mode . citar-capf-setup)) - (use-package citar-embark - :after citar embark - :no-require - :config (citar-embark-mode)) -#+end_src diff --git a/common/.config/emacs/user-interface.el.org b/common/.config/emacs/user-interface.el.org new file mode 100644 index 0000000..ff4bd34 --- /dev/null +++ b/common/.config/emacs/user-interface.el.org @@ -0,0 +1,131 @@ +#+title: Emacs User Interface + +* Theming +Set up Source Code Pro with Nerd Font patches as default font and Computer Modern as a variable pitch font. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (defvar jj/mono-font) + (defvar jj/var-font) + (pcase system-type + (`gnu/linux + (when (eq (system-name) "gentoo")) + (setq jj/mono-font "SauceCodePro Nerd Font-11") + (setq jj/var-font "CMU Serif-14")) + (`darwin + (setq jj/mono-font "SauceCodePro Nerd Font-14:weight=thin") + (setq jj/var-font "CMU Serif-18"))) + (add-to-list 'default-frame-alist + `(font . ,jj/mono-font)) +#+end_src + +Use my custom Doom Disco light theme. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (use-package doom-themes + :straight (doom-themes :type git :host github :repo "doomemacs/themes" + :fork (:host github + :repo "JacobJanzen/emacs-doom-themes")) + :config + (setq doom-themes-enable-bold t + doom-themes-enable-italic t) + (load-theme 'doom-disco t) + (doom-themes-org-config)) + +(add-to-list 'default-frame-alist '(alpha-background . 90)) +#+end_src + +Use =doom-modeline= for a nicer modeline. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (use-package doom-modeline + :init (doom-modeline-mode 1)) +#+end_src + +Remove the title bar. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (add-to-list 'default-frame-alist '(undecorated . t)) +#+end_src + + +* Clean UI +Disable the Emacs start screen and make the =scratch= buffer default to empty. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (setq inhibit-startup-screen t) + (setq initial-scratch-message nil) +#+end_src + +Disable scroll bar, tool bar, and menu bar. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (scroll-bar-mode -1) + (tool-bar-mode -1) + (menu-bar-mode -1) +#+end_src + +* Fancy Stuff +Use line numbers by default. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (global-display-line-numbers-mode 1) +#+end_src + +Highlight changes for an operation with =evil-goggles=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (use-package evil-goggles + :after evil + :config + (evil-goggles-mode) + (evil-goggles-use-diff-faces)) +#+end_src + +Install nerd font icons. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (use-package nerd-icons) +#+end_src + +Scroll one line at a time. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (setq scroll-conservatively most-positive-fixnum) +#+end_src + +Create parent directories when they don't yet exist. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (defun jj/create-non-existent-directory () + (let ((parent-directory (file-name-directory buffer-file-name))) + (when (and (not (file-exists-p parent-directory)) + (y-or-n-p (format "Directory `%s' does not exist! Create it?" parent-directory))) + (make-directory parent-directory t)))) + (add-to-list 'find-file-not-found-functions #'jj/create-non-existent-directory) +#+end_src + + +* Whitespace Management +Use spaces over tabs and set tab width to 4. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (setq-default indent-tabs-mode nil) + (setq tab-width 4 + c-basic-offset tab-width) +#+end_src + +Delete trailing whitespace on save. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (defun jj/before-save-hook () + (unless (eql (with-current-buffer (current-buffer) major-mode) + 'markdown-mode) + (delete-trailing-whitespace))) + (add-hook 'before-save-hook #'jj/before-save-hook) +#+end_src + +* Backup Management +Don't create backup files. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (setq make-backup-files nil) +#+end_src + +* Customize =dired= +Use nerd font icons in =dired=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (use-package nerd-icons-dired + :hook (dired-mode . nerd-icons-dired-mode)) +#+end_src + +Use colours in =dired= with =diredfl=. +#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes + (use-package diredfl + :init (diredfl-global-mode 1)) +#+end_src diff --git a/common/.config/emacs/user-interface.org b/common/.config/emacs/user-interface.org deleted file mode 100644 index ff4bd34..0000000 --- a/common/.config/emacs/user-interface.org +++ /dev/null @@ -1,131 +0,0 @@ -#+title: Emacs User Interface - -* Theming -Set up Source Code Pro with Nerd Font patches as default font and Computer Modern as a variable pitch font. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (defvar jj/mono-font) - (defvar jj/var-font) - (pcase system-type - (`gnu/linux - (when (eq (system-name) "gentoo")) - (setq jj/mono-font "SauceCodePro Nerd Font-11") - (setq jj/var-font "CMU Serif-14")) - (`darwin - (setq jj/mono-font "SauceCodePro Nerd Font-14:weight=thin") - (setq jj/var-font "CMU Serif-18"))) - (add-to-list 'default-frame-alist - `(font . ,jj/mono-font)) -#+end_src - -Use my custom Doom Disco light theme. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (use-package doom-themes - :straight (doom-themes :type git :host github :repo "doomemacs/themes" - :fork (:host github - :repo "JacobJanzen/emacs-doom-themes")) - :config - (setq doom-themes-enable-bold t - doom-themes-enable-italic t) - (load-theme 'doom-disco t) - (doom-themes-org-config)) - -(add-to-list 'default-frame-alist '(alpha-background . 90)) -#+end_src - -Use =doom-modeline= for a nicer modeline. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (use-package doom-modeline - :init (doom-modeline-mode 1)) -#+end_src - -Remove the title bar. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (add-to-list 'default-frame-alist '(undecorated . t)) -#+end_src - - -* Clean UI -Disable the Emacs start screen and make the =scratch= buffer default to empty. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (setq inhibit-startup-screen t) - (setq initial-scratch-message nil) -#+end_src - -Disable scroll bar, tool bar, and menu bar. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (scroll-bar-mode -1) - (tool-bar-mode -1) - (menu-bar-mode -1) -#+end_src - -* Fancy Stuff -Use line numbers by default. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (global-display-line-numbers-mode 1) -#+end_src - -Highlight changes for an operation with =evil-goggles=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (use-package evil-goggles - :after evil - :config - (evil-goggles-mode) - (evil-goggles-use-diff-faces)) -#+end_src - -Install nerd font icons. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (use-package nerd-icons) -#+end_src - -Scroll one line at a time. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (setq scroll-conservatively most-positive-fixnum) -#+end_src - -Create parent directories when they don't yet exist. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (defun jj/create-non-existent-directory () - (let ((parent-directory (file-name-directory buffer-file-name))) - (when (and (not (file-exists-p parent-directory)) - (y-or-n-p (format "Directory `%s' does not exist! Create it?" parent-directory))) - (make-directory parent-directory t)))) - (add-to-list 'find-file-not-found-functions #'jj/create-non-existent-directory) -#+end_src - - -* Whitespace Management -Use spaces over tabs and set tab width to 4. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (setq-default indent-tabs-mode nil) - (setq tab-width 4 - c-basic-offset tab-width) -#+end_src - -Delete trailing whitespace on save. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (defun jj/before-save-hook () - (unless (eql (with-current-buffer (current-buffer) major-mode) - 'markdown-mode) - (delete-trailing-whitespace))) - (add-hook 'before-save-hook #'jj/before-save-hook) -#+end_src - -* Backup Management -Don't create backup files. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (setq make-backup-files nil) -#+end_src - -* Customize =dired= -Use nerd font icons in =dired=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (use-package nerd-icons-dired - :hook (dired-mode . nerd-icons-dired-mode)) -#+end_src - -Use colours in =dired= with =diredfl=. -#+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes - (use-package diredfl - :init (diredfl-global-mode 1)) -#+end_src diff --git a/nixos/.flake/flake.nix.org b/nixos/.flake/flake.nix.org new file mode 100644 index 0000000..1e3c71b --- /dev/null +++ b/nixos/.flake/flake.nix.org @@ -0,0 +1,34 @@ +#+title: Flake Root + +I use the unstable branch of =nixpkgs=. This file defines the outputs for my configuration (system and home). +#+begin_src nix :tangle ~/.flake/flake.nix :mkdirp yes + { + description = "My NixOS Configuration"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + }; + + outputs = { + self, + nixpkgs, + home-manager, + ... + }@inputs: { + nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { inherit inputs; }; + modules = [ + ./system/core.nix + home-manager.nixosModules.home-manager + { + home-manager.backupFileExtension = "bak"; + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.jane = import ./home/core.nix; + } + ]; + }; + }; + } +#+end_src diff --git a/nixos/.flake/flake.org b/nixos/.flake/flake.org deleted file mode 100644 index 1e3c71b..0000000 --- a/nixos/.flake/flake.org +++ /dev/null @@ -1,34 +0,0 @@ -#+title: Flake Root - -I use the unstable branch of =nixpkgs=. This file defines the outputs for my configuration (system and home). -#+begin_src nix :tangle ~/.flake/flake.nix :mkdirp yes - { - description = "My NixOS Configuration"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - }; - - outputs = { - self, - nixpkgs, - home-manager, - ... - }@inputs: { - nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = { inherit inputs; }; - modules = [ - ./system/core.nix - home-manager.nixosModules.home-manager - { - home-manager.backupFileExtension = "bak"; - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.jane = import ./home/core.nix; - } - ]; - }; - }; - } -#+end_src diff --git a/nixos/.flake/home/clang-format.nix.org b/nixos/.flake/home/clang-format.nix.org new file mode 100644 index 0000000..64a2a64 --- /dev/null +++ b/nixos/.flake/home/clang-format.nix.org @@ -0,0 +1,15 @@ +#+title: Clang Format Default Options + +#+begin_src nix :tangle ~/.flake/home/clang-format.nix :mkdirp yes + { config, pkgs, ... }: + + { + home.file.".clang-format".text = '' + BasedOnStyle: LLVM + IndentWidth: 4 + BreakBeforeBraces: Linux + AllowShortIfStatementsOnASingleLine: false + IndentCaseLabels: false + ''; + } +#+end_src diff --git a/nixos/.flake/home/clang-format.org b/nixos/.flake/home/clang-format.org deleted file mode 100644 index 64a2a64..0000000 --- a/nixos/.flake/home/clang-format.org +++ /dev/null @@ -1,15 +0,0 @@ -#+title: Clang Format Default Options - -#+begin_src nix :tangle ~/.flake/home/clang-format.nix :mkdirp yes - { config, pkgs, ... }: - - { - home.file.".clang-format".text = '' - BasedOnStyle: LLVM - IndentWidth: 4 - BreakBeforeBraces: Linux - AllowShortIfStatementsOnASingleLine: false - IndentCaseLabels: false - ''; - } -#+end_src diff --git a/nixos/.flake/home/core.nix.org b/nixos/.flake/home/core.nix.org new file mode 100644 index 0000000..25f3f2e --- /dev/null +++ b/nixos/.flake/home/core.nix.org @@ -0,0 +1,25 @@ +#+title: Core Home Configuration + +Set up home manager for my user account and import submodules. +#+begin_src nix :tangle ~/.flake/home/core.nix :mkdirp yes + { config, pkgs, ... }: + + { + imports = [ + ./clang-format.nix + ./cursor.nix + ./fonts.nix + ./hyprland.nix + ./programs/core.nix + ./scripts.nix + ./services/core.nix + ]; + + home.username = "jane"; + home.homeDirectory = "/home/jane"; + home.file.".wallpaper".source = ./.wallpaper; + + home.stateVersion = "24.05"; + programs.home-manager.enable = true; + } +#+end_src diff --git a/nixos/.flake/home/core.org b/nixos/.flake/home/core.org deleted file mode 100644 index 25f3f2e..0000000 --- a/nixos/.flake/home/core.org +++ /dev/null @@ -1,25 +0,0 @@ -#+title: Core Home Configuration - -Set up home manager for my user account and import submodules. -#+begin_src nix :tangle ~/.flake/home/core.nix :mkdirp yes - { config, pkgs, ... }: - - { - imports = [ - ./clang-format.nix - ./cursor.nix - ./fonts.nix - ./hyprland.nix - ./programs/core.nix - ./scripts.nix - ./services/core.nix - ]; - - home.username = "jane"; - home.homeDirectory = "/home/jane"; - home.file.".wallpaper".source = ./.wallpaper; - - home.stateVersion = "24.05"; - programs.home-manager.enable = true; - } -#+end_src diff --git a/nixos/.flake/home/cursor.nix.org b/nixos/.flake/home/cursor.nix.org new file mode 100644 index 0000000..15396a0 --- /dev/null +++ b/nixos/.flake/home/cursor.nix.org @@ -0,0 +1,13 @@ +#+title: Cursor Configuration + +Use =vanilla-dmz= cursor size 16. +#+begin_src nix :tangle ~/.flake/home/cursor.nix :mkdirp yes +{ config, pkgs, ... }: + +{ + home.file.".icons/default".source = "${pkgs.vanilla-dmz}/share/icons/Vanilla-DMZ"; + xresources.properties = { + "Xcursor.size" = 16; + }; +} +#+end_src diff --git a/nixos/.flake/home/cursor.org b/nixos/.flake/home/cursor.org deleted file mode 100644 index 15396a0..0000000 --- a/nixos/.flake/home/cursor.org +++ /dev/null @@ -1,13 +0,0 @@ -#+title: Cursor Configuration - -Use =vanilla-dmz= cursor size 16. -#+begin_src nix :tangle ~/.flake/home/cursor.nix :mkdirp yes -{ config, pkgs, ... }: - -{ - home.file.".icons/default".source = "${pkgs.vanilla-dmz}/share/icons/Vanilla-DMZ"; - xresources.properties = { - "Xcursor.size" = 16; - }; -} -#+end_src diff --git a/nixos/.flake/home/fonts.nix.org b/nixos/.flake/home/fonts.nix.org new file mode 100644 index 0000000..3a01993 --- /dev/null +++ b/nixos/.flake/home/fonts.nix.org @@ -0,0 +1,14 @@ +#+title: Font Configuration + +Install fonts necessary for my configuration. +#+begin_src nix :tangle ~/.flake/home/fonts.nix :mkdirp yes +{ config, pkgs, ... }: + +{ + fonts.fontconfig.enable = true; + home.packages = with pkgs; [ + cm_unicode + (pkgs.nerdfonts.override { fonts = [ "SourceCodePro" ]; }) + ]; +} +#+end_src diff --git a/nixos/.flake/home/fonts.org b/nixos/.flake/home/fonts.org deleted file mode 100644 index 3a01993..0000000 --- a/nixos/.flake/home/fonts.org +++ /dev/null @@ -1,14 +0,0 @@ -#+title: Font Configuration - -Install fonts necessary for my configuration. -#+begin_src nix :tangle ~/.flake/home/fonts.nix :mkdirp yes -{ config, pkgs, ... }: - -{ - fonts.fontconfig.enable = true; - home.packages = with pkgs; [ - cm_unicode - (pkgs.nerdfonts.override { fonts = [ "SourceCodePro" ]; }) - ]; -} -#+end_src diff --git a/nixos/.flake/home/hyprland.nix.org b/nixos/.flake/home/hyprland.nix.org new file mode 100644 index 0000000..725f920 --- /dev/null +++ b/nixos/.flake/home/hyprland.nix.org @@ -0,0 +1,175 @@ +#+title: Hyprland Configuration + +Open my Hyprland configuration. +#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes + { config, pkgs, ... }: + + { + wayland.windowManager.hyprland = { + enable = true; + settings = { +#+end_src + +I have a 1440p monitor and a 1080p monitor to its left rotated to be vertical. +#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes + monitor = [ "DP-2, 2560x1440@180, 0x0, 1" "HDMI-A-2, 1920x1080@60, -1080x-100, 1, transform, 3" ]; +#+end_src + +Set terminal, file manager, and menu. +#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes + "$terminal" = "foot"; + "$fileManager" = "dolphin"; + "$menu" = "fuzzel"; +#+end_src + +Enable startup applications: +- =nm-applet= for network configuration +- =blueman-applet= for bluetooth configuration +- =waybar= as top bar +- =swaybg= to set wallpaper +- =mpdscribble= as Last.fm scrobbler program. +#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes + exec-once = [ + "nm-applet &" + "blueman-applet &" + "waybar" + "swaybg -m fill -i ~/.wallpaper" + "mpdscribble" + ]; +#+end_src + +Specify cursor size. +#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes + env = [ + "XCURSOR_SIZE,24" + "HYPRCURSOR_SIZE,24" + ]; +#+end_src + +Set general appearance of the window manager. +#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes + general = { + gaps_in = 5; + gaps_out = 20; + border_size = 2; + resize_on_border = false; + layout = "dwindle"; + "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + "col.inactive_border" = "rgba(595959aa)"; + }; +#+end_src + +Set window decorations. +#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes + decoration = { + rounding = 10; + active_opacity = 1.0; + inactive_opacity = 1.0; + drop_shadow = true; + shadow_range = 4; + shadow_render_power = 3; + "col.shadow" = "rgba(1a1a1aee)"; + blur = { + enabled = true; + size = 3; + passes = 1; + vibrancy = "0.1696"; + }; + }; +#+end_src + +Set window animations. +#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes + animations = { + enabled = true; + bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; + animation = [ + "windows, 1, 7, myBezier" + "windowsOut, 1, 7, default, popin 80%" + "border, 1, 10, default" "borderangle, 1, 8, default" + "fade, 1, 7, default" "workspaces, 1, 6, default" + ]; + }; +#+end_src + +Configure layouts. +#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes + dwindle = { + pseudotile = true; + preserve_split = true; + }; + master = { + new_status = "master"; + }; +#+end_src + +Configure the inputs. +#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes + input = { + kb_layout = "us"; + follow_mouse = 1; + sensitivity = 0; + }; +#+end_src + +Configure window manager controls. +#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes + "$mainMod" = "SUPER"; + bind = [ + "$mainMod, RETURN, exec, $terminal" + "$mainMod SHIFT, Q, killactive" + "$mainMod, E, exec, $fileManager" + "$mainMod SHIFT, SPACE, togglefloating" + "$mainMod, D, exec, $menu" + "$mainMod, P, pseudo" + "$mainMod SHIFT, E, togglesplit" + "$mainMod, H, movefocus, l" + "$mainMod, J, movefocus, d" + "$mainMod, K, movefocus, u" + "$mainMod, L, movefocus, r" + "$mainMod, 1, workspace, 1" + "$mainMod, 2, workspace, 2" + "$mainMod, 3, workspace, 3" + "$mainMod, 4, workspace, 4" + "$mainMod, 5, workspace, 5" + "$mainMod, 6, workspace, 6" + "$mainMod, 7, workspace, 7" + "$mainMod, 8, workspace, 8" + "$mainMod, 9, workspace, 9" + "$mainMod, 0, workspace, 10" + "$mainMod SHIFT, 1, movetoworkspace, 1" + "$mainMod SHIFT, 2, movetoworkspace, 2" + "$mainMod SHIFT, 3, movetoworkspace, 3" + "$mainMod SHIFT, 4, movetoworkspace, 4" + "$mainMod SHIFT, 5, movetoworkspace, 5" + "$mainMod SHIFT, 6, movetoworkspace, 6" + "$mainMod SHIFT, 7, movetoworkspace, 7" + "$mainMod SHIFT, 8, movetoworkspace, 8" + "$mainMod SHIFT, 9, movetoworkspace, 9" + "$mainMod SHIFT, 0, movetoworkspace, 10" + "$mainMod CONTROL, L, exec, hyprlock" + "$mainMod, S, exec, hyprshot -m window --clipboard-only" + "$mainMod SHIFT, S, exec, hyprshot -m region --clipboard-only" + "$mainMod SHIFT CONTROL, S, exec, hyprshot -m output --clipboard-only" + "$mainMod, M, exec, ~/.local/bin/poweroptions.sh" + "$mainMod, F, fullscreen" + ]; + bindel = [ + ",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ",XF86Eject, exec, mpc toggle" + ]; + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + windowrulev2 = "suppressevent maximize, class:.*"; +#+end_src + +Close my Hyprland configuration. +#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes + }; + }; + } +#+end_src diff --git a/nixos/.flake/home/hyprland.org b/nixos/.flake/home/hyprland.org deleted file mode 100644 index 725f920..0000000 --- a/nixos/.flake/home/hyprland.org +++ /dev/null @@ -1,175 +0,0 @@ -#+title: Hyprland Configuration - -Open my Hyprland configuration. -#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes - { config, pkgs, ... }: - - { - wayland.windowManager.hyprland = { - enable = true; - settings = { -#+end_src - -I have a 1440p monitor and a 1080p monitor to its left rotated to be vertical. -#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes - monitor = [ "DP-2, 2560x1440@180, 0x0, 1" "HDMI-A-2, 1920x1080@60, -1080x-100, 1, transform, 3" ]; -#+end_src - -Set terminal, file manager, and menu. -#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes - "$terminal" = "foot"; - "$fileManager" = "dolphin"; - "$menu" = "fuzzel"; -#+end_src - -Enable startup applications: -- =nm-applet= for network configuration -- =blueman-applet= for bluetooth configuration -- =waybar= as top bar -- =swaybg= to set wallpaper -- =mpdscribble= as Last.fm scrobbler program. -#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes - exec-once = [ - "nm-applet &" - "blueman-applet &" - "waybar" - "swaybg -m fill -i ~/.wallpaper" - "mpdscribble" - ]; -#+end_src - -Specify cursor size. -#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes - env = [ - "XCURSOR_SIZE,24" - "HYPRCURSOR_SIZE,24" - ]; -#+end_src - -Set general appearance of the window manager. -#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes - general = { - gaps_in = 5; - gaps_out = 20; - border_size = 2; - resize_on_border = false; - layout = "dwindle"; - "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; - "col.inactive_border" = "rgba(595959aa)"; - }; -#+end_src - -Set window decorations. -#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes - decoration = { - rounding = 10; - active_opacity = 1.0; - inactive_opacity = 1.0; - drop_shadow = true; - shadow_range = 4; - shadow_render_power = 3; - "col.shadow" = "rgba(1a1a1aee)"; - blur = { - enabled = true; - size = 3; - passes = 1; - vibrancy = "0.1696"; - }; - }; -#+end_src - -Set window animations. -#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes - animations = { - enabled = true; - bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; - animation = [ - "windows, 1, 7, myBezier" - "windowsOut, 1, 7, default, popin 80%" - "border, 1, 10, default" "borderangle, 1, 8, default" - "fade, 1, 7, default" "workspaces, 1, 6, default" - ]; - }; -#+end_src - -Configure layouts. -#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes - dwindle = { - pseudotile = true; - preserve_split = true; - }; - master = { - new_status = "master"; - }; -#+end_src - -Configure the inputs. -#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes - input = { - kb_layout = "us"; - follow_mouse = 1; - sensitivity = 0; - }; -#+end_src - -Configure window manager controls. -#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes - "$mainMod" = "SUPER"; - bind = [ - "$mainMod, RETURN, exec, $terminal" - "$mainMod SHIFT, Q, killactive" - "$mainMod, E, exec, $fileManager" - "$mainMod SHIFT, SPACE, togglefloating" - "$mainMod, D, exec, $menu" - "$mainMod, P, pseudo" - "$mainMod SHIFT, E, togglesplit" - "$mainMod, H, movefocus, l" - "$mainMod, J, movefocus, d" - "$mainMod, K, movefocus, u" - "$mainMod, L, movefocus, r" - "$mainMod, 1, workspace, 1" - "$mainMod, 2, workspace, 2" - "$mainMod, 3, workspace, 3" - "$mainMod, 4, workspace, 4" - "$mainMod, 5, workspace, 5" - "$mainMod, 6, workspace, 6" - "$mainMod, 7, workspace, 7" - "$mainMod, 8, workspace, 8" - "$mainMod, 9, workspace, 9" - "$mainMod, 0, workspace, 10" - "$mainMod SHIFT, 1, movetoworkspace, 1" - "$mainMod SHIFT, 2, movetoworkspace, 2" - "$mainMod SHIFT, 3, movetoworkspace, 3" - "$mainMod SHIFT, 4, movetoworkspace, 4" - "$mainMod SHIFT, 5, movetoworkspace, 5" - "$mainMod SHIFT, 6, movetoworkspace, 6" - "$mainMod SHIFT, 7, movetoworkspace, 7" - "$mainMod SHIFT, 8, movetoworkspace, 8" - "$mainMod SHIFT, 9, movetoworkspace, 9" - "$mainMod SHIFT, 0, movetoworkspace, 10" - "$mainMod CONTROL, L, exec, hyprlock" - "$mainMod, S, exec, hyprshot -m window --clipboard-only" - "$mainMod SHIFT, S, exec, hyprshot -m region --clipboard-only" - "$mainMod SHIFT CONTROL, S, exec, hyprshot -m output --clipboard-only" - "$mainMod, M, exec, ~/.local/bin/poweroptions.sh" - "$mainMod, F, fullscreen" - ]; - bindel = [ - ",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" - ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" - ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ",XF86Eject, exec, mpc toggle" - ]; - bindm = [ - "$mainMod, mouse:272, movewindow" - "$mainMod, mouse:273, resizewindow" - ]; - windowrulev2 = "suppressevent maximize, class:.*"; -#+end_src - -Close my Hyprland configuration. -#+begin_src nix :tangle ~/.flake/home/hyprland.nix :mkdirp yes - }; - }; - } -#+end_src diff --git a/nixos/.flake/home/programs/core.nix.org b/nixos/.flake/home/programs/core.nix.org new file mode 100644 index 0000000..3bf0fab --- /dev/null +++ b/nixos/.flake/home/programs/core.nix.org @@ -0,0 +1,46 @@ +#+title: Core Program Configuration + +This is the core of my program configuration. This file installs programs that do not require additional configuration. Note that Discord is not FOSS and that =prismlauncher= is a launcher for Minecraft. +#+begin_src nix :tangle ~/.flake/home/programs/core.nix :mkdirp yes + { config, pkgs, ... }: + + { + imports = [ + ./fastfetch.nix + ./foot.nix + ./git.nix + ./hyprlock.nix + ./ncmpcpp.nix + ./neovim.nix + ./ssh.nix + ./waybar.nix + ./zsh.nix + ]; + + home.packages = with pkgs; [ + discord # not FOSS + clang-tools + eza + fuzzel + ispell + gcc + gzdoom + htop + hyfetch + hyprshot + lesspipe + mpc-cli + mpv + networkmanagerapplet + obs-studio + pavucontrol + prismlauncher # minecraft + protonvpn-gui + python3 + swaybg + texliveFull + unzip + zip + ]; + } +#+end_src diff --git a/nixos/.flake/home/programs/core.org b/nixos/.flake/home/programs/core.org deleted file mode 100644 index 3bf0fab..0000000 --- a/nixos/.flake/home/programs/core.org +++ /dev/null @@ -1,46 +0,0 @@ -#+title: Core Program Configuration - -This is the core of my program configuration. This file installs programs that do not require additional configuration. Note that Discord is not FOSS and that =prismlauncher= is a launcher for Minecraft. -#+begin_src nix :tangle ~/.flake/home/programs/core.nix :mkdirp yes - { config, pkgs, ... }: - - { - imports = [ - ./fastfetch.nix - ./foot.nix - ./git.nix - ./hyprlock.nix - ./ncmpcpp.nix - ./neovim.nix - ./ssh.nix - ./waybar.nix - ./zsh.nix - ]; - - home.packages = with pkgs; [ - discord # not FOSS - clang-tools - eza - fuzzel - ispell - gcc - gzdoom - htop - hyfetch - hyprshot - lesspipe - mpc-cli - mpv - networkmanagerapplet - obs-studio - pavucontrol - prismlauncher # minecraft - protonvpn-gui - python3 - swaybg - texliveFull - unzip - zip - ]; - } -#+end_src diff --git a/nixos/.flake/home/programs/fastfetch.nix.org b/nixos/.flake/home/programs/fastfetch.nix.org new file mode 100644 index 0000000..96b2044 --- /dev/null +++ b/nixos/.flake/home/programs/fastfetch.nix.org @@ -0,0 +1,84 @@ +#+title: Fastfetch Configuration + +Specify the layout for =fastfetch=. +#+begin_src nix :tangle ~/.flake/home/programs/fastfetch.nix :mkdirp yes + { config, pkgs, ... }: + + { + programs.fastfetch = { + enable = true; + settings = { + logo = { + type = "raw"; + source = "~/.config/fastfetch/logo.sixel"; + width = 40; + height = 19; + }; + display = { + separator = " "; + }; + modules = [ + "title" + { + type = "custom"; + format = "──────────────────────────────────"; + } + { + type = "os"; + key = ""; + } + { + type = "kernel"; + key = "󰞸"; + } + { + type = "uptime"; + key = ""; + } + { + type = "packages"; + key = ""; + } + { + type = "shell"; + key = ""; + } + { + type = "display"; + key = "󰍹"; + } + { + type = "wm"; + key = ""; + } + { + type = "terminal"; + key = ""; + } + { + type = "cpu"; + key = ""; + } + { + type = "gpu"; + key = ""; + } + { + type = "memory"; + key = ""; + } + { + type = "disk"; + key = ""; + } + { + type = "locale"; + key = ""; + } + "break" + "colors" + ]; + }; + }; + } +#+end_src diff --git a/nixos/.flake/home/programs/fastfetch.org b/nixos/.flake/home/programs/fastfetch.org deleted file mode 100644 index 96b2044..0000000 --- a/nixos/.flake/home/programs/fastfetch.org +++ /dev/null @@ -1,84 +0,0 @@ -#+title: Fastfetch Configuration - -Specify the layout for =fastfetch=. -#+begin_src nix :tangle ~/.flake/home/programs/fastfetch.nix :mkdirp yes - { config, pkgs, ... }: - - { - programs.fastfetch = { - enable = true; - settings = { - logo = { - type = "raw"; - source = "~/.config/fastfetch/logo.sixel"; - width = 40; - height = 19; - }; - display = { - separator = " "; - }; - modules = [ - "title" - { - type = "custom"; - format = "──────────────────────────────────"; - } - { - type = "os"; - key = ""; - } - { - type = "kernel"; - key = "󰞸"; - } - { - type = "uptime"; - key = ""; - } - { - type = "packages"; - key = ""; - } - { - type = "shell"; - key = ""; - } - { - type = "display"; - key = "󰍹"; - } - { - type = "wm"; - key = ""; - } - { - type = "terminal"; - key = ""; - } - { - type = "cpu"; - key = ""; - } - { - type = "gpu"; - key = ""; - } - { - type = "memory"; - key = ""; - } - { - type = "disk"; - key = ""; - } - { - type = "locale"; - key = ""; - } - "break" - "colors" - ]; - }; - }; - } -#+end_src diff --git a/nixos/.flake/home/programs/foot.nix.org b/nixos/.flake/home/programs/foot.nix.org new file mode 100644 index 0000000..3490bed --- /dev/null +++ b/nixos/.flake/home/programs/foot.nix.org @@ -0,0 +1,42 @@ +#+title: Foot Terminal Configuration + +Specify my font and colour scheme for =foot=. +#+begin_src nix :tangle ~/.flake/home/programs/foot.nix :mkdirp yes +{ config, pkgs, ... }: + +{ + programs.foot = { + enable = true; + settings = { + main = { + font = "SauceCodePro Nerd Font:size=10"; + pad = "6x6"; + }; + mouse = { + hide-when-typing = "yes"; + }; + colors = { + alpha = "0.9"; + background = "ece0c9"; + foreground = "191916"; + regular0 = "191916"; + regular1 = "ac4438"; + regular2 = "354d52"; + regular3 = "ba9151"; + regular4 = "465b91"; + regular5 = "5b5489"; + regular6 = "4e6062"; + regular7 = "c9ad7a"; + bright0 = "293c3c"; + bright1 = "d8611c"; + bright2 = "4b7b53"; + bright3 = "d8974b"; + bright4 = "2f3d91"; + bright5 = "735e82"; + bright6 = "6b8f92"; + bright7 = "ece0c9"; + }; + }; + }; +} +#+end_src diff --git a/nixos/.flake/home/programs/foot.org b/nixos/.flake/home/programs/foot.org deleted file mode 100644 index 3490bed..0000000 --- a/nixos/.flake/home/programs/foot.org +++ /dev/null @@ -1,42 +0,0 @@ -#+title: Foot Terminal Configuration - -Specify my font and colour scheme for =foot=. -#+begin_src nix :tangle ~/.flake/home/programs/foot.nix :mkdirp yes -{ config, pkgs, ... }: - -{ - programs.foot = { - enable = true; - settings = { - main = { - font = "SauceCodePro Nerd Font:size=10"; - pad = "6x6"; - }; - mouse = { - hide-when-typing = "yes"; - }; - colors = { - alpha = "0.9"; - background = "ece0c9"; - foreground = "191916"; - regular0 = "191916"; - regular1 = "ac4438"; - regular2 = "354d52"; - regular3 = "ba9151"; - regular4 = "465b91"; - regular5 = "5b5489"; - regular6 = "4e6062"; - regular7 = "c9ad7a"; - bright0 = "293c3c"; - bright1 = "d8611c"; - bright2 = "4b7b53"; - bright3 = "d8974b"; - bright4 = "2f3d91"; - bright5 = "735e82"; - bright6 = "6b8f92"; - bright7 = "ece0c9"; - }; - }; - }; -} -#+end_src diff --git a/nixos/.flake/home/programs/git.nix.org b/nixos/.flake/home/programs/git.nix.org new file mode 100644 index 0000000..baf3aaa --- /dev/null +++ b/nixos/.flake/home/programs/git.nix.org @@ -0,0 +1,18 @@ +#+title: Git Configuration + +Specify my name and email for =git=. Also enable =delta= and =pull.rebase=. +#+begin_src nix :tangle ~/.flake/home/programs/git.nix :mkdirp yes +{ config, pkgs, ... }: + +{ + programs.git = { + enable = true; + userName = "Jacob Janzen"; + userEmail = "jacob.a.s.janzen@gmail.com"; + delta.enable = true; + extraConfig = { + pull.rebase = true; + }; + }; +} +#+end_src diff --git a/nixos/.flake/home/programs/git.org b/nixos/.flake/home/programs/git.org deleted file mode 100644 index baf3aaa..0000000 --- a/nixos/.flake/home/programs/git.org +++ /dev/null @@ -1,18 +0,0 @@ -#+title: Git Configuration - -Specify my name and email for =git=. Also enable =delta= and =pull.rebase=. -#+begin_src nix :tangle ~/.flake/home/programs/git.nix :mkdirp yes -{ config, pkgs, ... }: - -{ - programs.git = { - enable = true; - userName = "Jacob Janzen"; - userEmail = "jacob.a.s.janzen@gmail.com"; - delta.enable = true; - extraConfig = { - pull.rebase = true; - }; - }; -} -#+end_src diff --git a/nixos/.flake/home/programs/hyprlock.nix.org b/nixos/.flake/home/programs/hyprlock.nix.org new file mode 100644 index 0000000..4e94386 --- /dev/null +++ b/nixos/.flake/home/programs/hyprlock.nix.org @@ -0,0 +1,42 @@ +#+title: Hyprlock Configuration + +Place a textbox in the middle of the screen and use my blurred wallpaper as the background when locking. +#+begin_src nix :tangle ~/.flake/home/programs/hyprlock.nix :mkdirp yes + { config, pkgs, ... }: + + { + programs.hyprlock = { + enable = true; + settings = { + general = { + disable_loading_bar = true; + grace = 0; + hide_cursor = true; + no_fade_in = false; + }; + background = [ + { + path = "~/.wallpaper"; + blur_passes = 3; + blur_size = 8; + } + ]; + input-field = [ + { + size = "200, 50"; + position = "0, -80"; + monitor = ""; + dots_center = true; + fade_on_empty = false; + font_color = "rgb(202, 211, 245)"; + inner_color = "rgb(91, 96, 120)"; + outer_color = "rgb(24, 25, 38)"; + outline_thickness = 5; + placeholder_text = "Password..."; + shadow_passes = 2; + } + ]; + }; + }; + } +#+end_src diff --git a/nixos/.flake/home/programs/hyprlock.org b/nixos/.flake/home/programs/hyprlock.org deleted file mode 100644 index 4e94386..0000000 --- a/nixos/.flake/home/programs/hyprlock.org +++ /dev/null @@ -1,42 +0,0 @@ -#+title: Hyprlock Configuration - -Place a textbox in the middle of the screen and use my blurred wallpaper as the background when locking. -#+begin_src nix :tangle ~/.flake/home/programs/hyprlock.nix :mkdirp yes - { config, pkgs, ... }: - - { - programs.hyprlock = { - enable = true; - settings = { - general = { - disable_loading_bar = true; - grace = 0; - hide_cursor = true; - no_fade_in = false; - }; - background = [ - { - path = "~/.wallpaper"; - blur_passes = 3; - blur_size = 8; - } - ]; - input-field = [ - { - size = "200, 50"; - position = "0, -80"; - monitor = ""; - dots_center = true; - fade_on_empty = false; - font_color = "rgb(202, 211, 245)"; - inner_color = "rgb(91, 96, 120)"; - outer_color = "rgb(24, 25, 38)"; - outline_thickness = 5; - placeholder_text = "Password..."; - shadow_passes = 2; - } - ]; - }; - }; - } -#+end_src diff --git a/nixos/.flake/home/programs/ncmpcpp.nix.org b/nixos/.flake/home/programs/ncmpcpp.nix.org new file mode 100644 index 0000000..eb1f02f --- /dev/null +++ b/nixos/.flake/home/programs/ncmpcpp.nix.org @@ -0,0 +1,28 @@ +#+title: =ncmpcpp= Configuration + +Enable =vi=-like controls and specify directories and MPD address. +#+begin_src nix :tangle ~/.flake/home/programs/ncmpcpp.nix :mkdirp yes +{ config, pkgs, ... }: + +{ + programs.ncmpcpp = { + enable = true; + bindings = [ + { key = "j"; command = "scroll_down"; } + { key = "k"; command = "scroll_up"; } + { key = "h"; command = "previous_column"; } + { key = "l"; command = "next_column"; } + { key = "g"; command = "move_home"; } + { key = "G"; command = "move_end"; } + { key = "n"; command = "next_found_item"; } + { key = "N"; command = "previous_found_item"; } + ]; + mpdMusicDir = "~/Music"; + settings = { + ncmpcpp_directory = "~/.config/nmcpcpp"; + mpd_host = "localhost"; + mpd_port = "6600"; + }; + }; +} +#+end_src diff --git a/nixos/.flake/home/programs/ncmpcpp.org b/nixos/.flake/home/programs/ncmpcpp.org deleted file mode 100644 index eb1f02f..0000000 --- a/nixos/.flake/home/programs/ncmpcpp.org +++ /dev/null @@ -1,28 +0,0 @@ -#+title: =ncmpcpp= Configuration - -Enable =vi=-like controls and specify directories and MPD address. -#+begin_src nix :tangle ~/.flake/home/programs/ncmpcpp.nix :mkdirp yes -{ config, pkgs, ... }: - -{ - programs.ncmpcpp = { - enable = true; - bindings = [ - { key = "j"; command = "scroll_down"; } - { key = "k"; command = "scroll_up"; } - { key = "h"; command = "previous_column"; } - { key = "l"; command = "next_column"; } - { key = "g"; command = "move_home"; } - { key = "G"; command = "move_end"; } - { key = "n"; command = "next_found_item"; } - { key = "N"; command = "previous_found_item"; } - ]; - mpdMusicDir = "~/Music"; - settings = { - ncmpcpp_directory = "~/.config/nmcpcpp"; - mpd_host = "localhost"; - mpd_port = "6600"; - }; - }; -} -#+end_src diff --git a/nixos/.flake/home/programs/neovim.nix.org b/nixos/.flake/home/programs/neovim.nix.org new file mode 100644 index 0000000..350eded --- /dev/null +++ b/nixos/.flake/home/programs/neovim.nix.org @@ -0,0 +1,32 @@ +#+title: Neovim Settings + +Create a simple Neovim configuration. +#+begin_src nix :tangle ~/.flake/home/programs/neovim.nix :mkdirp yes + { config, pkgs, ... }: + + { + programs.neovim = { + enable = true; + + defaultEditor = true; + viAlias = true; + vimAlias = true; + plugins = with pkgs.vimPlugins; [ + vim-trailing-whitespace + lightline-vim + delimitMate + ]; + extraLuaConfig = '' + vim.opt.tabstop = 4 + vim.opt.expandtab = true + vim.opt.shiftwidth = 4 + vim.opt.autoindent = true + vim.opt.wildmode = 'longest,list' + vim.opt.number = true + vim.g.background = light + vim.cmd [[colorscheme default]] + vim.cmd [[set notermguicolors]] + ''; + }; + } +#+end_src diff --git a/nixos/.flake/home/programs/neovim.org b/nixos/.flake/home/programs/neovim.org deleted file mode 100644 index 350eded..0000000 --- a/nixos/.flake/home/programs/neovim.org +++ /dev/null @@ -1,32 +0,0 @@ -#+title: Neovim Settings - -Create a simple Neovim configuration. -#+begin_src nix :tangle ~/.flake/home/programs/neovim.nix :mkdirp yes - { config, pkgs, ... }: - - { - programs.neovim = { - enable = true; - - defaultEditor = true; - viAlias = true; - vimAlias = true; - plugins = with pkgs.vimPlugins; [ - vim-trailing-whitespace - lightline-vim - delimitMate - ]; - extraLuaConfig = '' - vim.opt.tabstop = 4 - vim.opt.expandtab = true - vim.opt.shiftwidth = 4 - vim.opt.autoindent = true - vim.opt.wildmode = 'longest,list' - vim.opt.number = true - vim.g.background = light - vim.cmd [[colorscheme default]] - vim.cmd [[set notermguicolors]] - ''; - }; - } -#+end_src diff --git a/nixos/.flake/home/programs/ssh.nix.org b/nixos/.flake/home/programs/ssh.nix.org new file mode 100644 index 0000000..a7502d2 --- /dev/null +++ b/nixos/.flake/home/programs/ssh.nix.org @@ -0,0 +1,13 @@ +#+title: SSH Configuration + +Add keys to SSH agent. +#+begin_src nix :tangle ~/.flake/home/programs/ssh.nix :mkdirp yes +{ config, pkgs, ... }: + +{ + programs.ssh = { + enable = true; + addKeysToAgent = "yes"; + }; +} +#+end_src diff --git a/nixos/.flake/home/programs/ssh.org b/nixos/.flake/home/programs/ssh.org deleted file mode 100644 index a7502d2..0000000 --- a/nixos/.flake/home/programs/ssh.org +++ /dev/null @@ -1,13 +0,0 @@ -#+title: SSH Configuration - -Add keys to SSH agent. -#+begin_src nix :tangle ~/.flake/home/programs/ssh.nix :mkdirp yes -{ config, pkgs, ... }: - -{ - programs.ssh = { - enable = true; - addKeysToAgent = "yes"; - }; -} -#+end_src diff --git a/nixos/.flake/home/programs/waybar.nix.org b/nixos/.flake/home/programs/waybar.nix.org new file mode 100644 index 0000000..7fe40f3 --- /dev/null +++ b/nixos/.flake/home/programs/waybar.nix.org @@ -0,0 +1,149 @@ +#+title: Waybar Configuration + +Show workspaces on the left, the current window in the centre, and MPD status, audio, cpu and memory status, clock, and system tray on the right. +#+begin_src nix :tangle ~/.flake/home/programs/waybar.nix :mkdirp yes + { config, pkgs, ... }: + + { + programs.waybar = { + enable = true; + settings = { + mainBar = { + height = 30; + spacing = 4; + modules-left = [ "hyprland/workspaces" ]; + modules-center = [ "hyprland/window" ]; + modules-right = [ "mpd" "pulseaudio" "cpu" "memory" "clock" "tray" ]; + mpd = { + format = "{stateIcon} {artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) [{songPosition}|{queueLength}] 🎵"; + format-disconnected = "Disconnected 🎵"; + format-stopped = "{consumeIcon}Stopped 🎵"; + unknown-tag = "N/A"; + interval = 2; + state-icons = { + paused = ""; + playing = ""; + }; + tooltip-format = "MPD (connected)"; + tooltip-format-disconnected = "MPD (disconnected)"; + on-click = "foot -e ncmpcpp"; + }; + tray = { + icon-size = 21; + spacing = 10; + show-passive-items = true; + }; + clock = { + format = "{:%H:%M\t%Y-%m-%d}"; + }; + cpu = { + format = "{usage}% "; + tooltip = false; + }; + memory = { + format = "{}% "; + }; + network = { + format-wifi = ""; + tooltip = false; + format-ethernet = ""; + format-linked = ""; + format-disconnected = "⚠"; + on-click = "kcmshell5 kcm_networkmanagement"; + }; + pulseaudio = { + format = "{volume}% {icon}"; + format-bluetooth = "{volume}% {icon}"; + format-bluetooth-muted = " {icon}"; + format-muted = " "; + format-source = "{volume}% "; + format-source-muted = ""; + format-icons = { + headphone = ""; + hands-free = ""; + headset = ""; + phone = ""; + portable = ""; + car = ""; + default = ["" "" ""]; + }; + on-click = "pavucontrol"; + }; + }; + }; + style = '' + window#waybar { + font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; + font-size: 13px; + background: transparent; + color: #ffffff; + text-shadow: 1px 1px #64727D; + transition-property: background-color; + transition-duration: .5s; + } + button { + border: none; + border-radius: 0; + } + button:hover { + background: inherit; + box-shadow: inset 0 -3px #ffffff; + } + #workspaces button { + padding: 0 5px; + text-shadow: 1px 1px #64727D; + background-color: transparent; + color: #ffffff; + } + #workspaces button:hover { + background: rgba(0, 0, 0, 0.2); + } + #workspaces button.focused { + background: transparent; + box-shadow: inset 0 -3px #ffffff; + } + #workspaces button.urgent { + background-color: #eb4d4b; + } + #clock, + #cpu, + #memory, + #disk, + #network, + #pulseaudio, + #wireplumber, + #custom-media, + #tray, + #mode, + #scratchpad, + #mpd { + padding: 0 10px; + } + #window, + #workspaces { + margin: 0 4px; + } + .modules-left > widget:first-child > #workspaces { + margin-left: 0; + } + + .modules-right > widget:last-child > #workspaces { + margin-right: 0; + } + #tray > .passive { + -gtk-icon-effect: dim; + } + #tray > .needs-attention { + -gtk-icon-effect: highlight; + } + #scratchpad { + background: rgba(0, 0, 0, 0.2); + } + + #scratchpad.empty { + background-color: transparent; + } + ''; + }; + } +#+end_src diff --git a/nixos/.flake/home/programs/waybar.org b/nixos/.flake/home/programs/waybar.org deleted file mode 100644 index 7fe40f3..0000000 --- a/nixos/.flake/home/programs/waybar.org +++ /dev/null @@ -1,149 +0,0 @@ -#+title: Waybar Configuration - -Show workspaces on the left, the current window in the centre, and MPD status, audio, cpu and memory status, clock, and system tray on the right. -#+begin_src nix :tangle ~/.flake/home/programs/waybar.nix :mkdirp yes - { config, pkgs, ... }: - - { - programs.waybar = { - enable = true; - settings = { - mainBar = { - height = 30; - spacing = 4; - modules-left = [ "hyprland/workspaces" ]; - modules-center = [ "hyprland/window" ]; - modules-right = [ "mpd" "pulseaudio" "cpu" "memory" "clock" "tray" ]; - mpd = { - format = "{stateIcon} {artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) [{songPosition}|{queueLength}] 🎵"; - format-disconnected = "Disconnected 🎵"; - format-stopped = "{consumeIcon}Stopped 🎵"; - unknown-tag = "N/A"; - interval = 2; - state-icons = { - paused = ""; - playing = ""; - }; - tooltip-format = "MPD (connected)"; - tooltip-format-disconnected = "MPD (disconnected)"; - on-click = "foot -e ncmpcpp"; - }; - tray = { - icon-size = 21; - spacing = 10; - show-passive-items = true; - }; - clock = { - format = "{:%H:%M\t%Y-%m-%d}"; - }; - cpu = { - format = "{usage}% "; - tooltip = false; - }; - memory = { - format = "{}% "; - }; - network = { - format-wifi = ""; - tooltip = false; - format-ethernet = ""; - format-linked = ""; - format-disconnected = "⚠"; - on-click = "kcmshell5 kcm_networkmanagement"; - }; - pulseaudio = { - format = "{volume}% {icon}"; - format-bluetooth = "{volume}% {icon}"; - format-bluetooth-muted = " {icon}"; - format-muted = " "; - format-source = "{volume}% "; - format-source-muted = ""; - format-icons = { - headphone = ""; - hands-free = ""; - headset = ""; - phone = ""; - portable = ""; - car = ""; - default = ["" "" ""]; - }; - on-click = "pavucontrol"; - }; - }; - }; - style = '' - window#waybar { - font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; - font-size: 13px; - background: transparent; - color: #ffffff; - text-shadow: 1px 1px #64727D; - transition-property: background-color; - transition-duration: .5s; - } - button { - border: none; - border-radius: 0; - } - button:hover { - background: inherit; - box-shadow: inset 0 -3px #ffffff; - } - #workspaces button { - padding: 0 5px; - text-shadow: 1px 1px #64727D; - background-color: transparent; - color: #ffffff; - } - #workspaces button:hover { - background: rgba(0, 0, 0, 0.2); - } - #workspaces button.focused { - background: transparent; - box-shadow: inset 0 -3px #ffffff; - } - #workspaces button.urgent { - background-color: #eb4d4b; - } - #clock, - #cpu, - #memory, - #disk, - #network, - #pulseaudio, - #wireplumber, - #custom-media, - #tray, - #mode, - #scratchpad, - #mpd { - padding: 0 10px; - } - #window, - #workspaces { - margin: 0 4px; - } - .modules-left > widget:first-child > #workspaces { - margin-left: 0; - } - - .modules-right > widget:last-child > #workspaces { - margin-right: 0; - } - #tray > .passive { - -gtk-icon-effect: dim; - } - #tray > .needs-attention { - -gtk-icon-effect: highlight; - } - #scratchpad { - background: rgba(0, 0, 0, 0.2); - } - - #scratchpad.empty { - background-color: transparent; - } - ''; - }; - } -#+end_src diff --git a/nixos/.flake/home/programs/zsh.nix.org b/nixos/.flake/home/programs/zsh.nix.org new file mode 100644 index 0000000..79795d0 --- /dev/null +++ b/nixos/.flake/home/programs/zsh.nix.org @@ -0,0 +1,87 @@ +#+title: ZSH Configuration + +Open =zsh= configuration. +#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes + { config, pkgs, ... }: + + { + programs.zsh = { + enable = true; +#+end_src + +Automatically =cd= if only the path is used. +#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes + autocd = true; +#+end_src + +Enable auto-suggestions. +#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes + autosuggestion = { + enable = true; + }; +#+end_src + +Use =vi= keybindings. +#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes + defaultKeymap = "viins"; +#+end_src + +Append to the history and ignore duplicates. +#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes + history = { + append = true; + ignoreAllDups = true; + }; +#+end_src + +Specify =ls= aliases. +#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes + shellAliases = { + "ll" = "ls -alF"; + "la" = "ls -a"; + "l" = "ls -F"; + "sl" = "ls"; + }; +#+end_src + +Enable syntax highlighting. +#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes + syntaxHighlighting.enable = true; +#+end_src + +Create potential aliases and create the prompt. +#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes + initExtra = '' + which lesspipe.sh &> /dev/null && export LESSOPEN="|lesspipe.sh %s" + which eza &> /dev/null && alias ls=eza + parse_git_dirty() { + git_status="$(git status 2> /dev/null)" + [[ "$git_status" =~ "use \"git push\" to publish your local commits" ]] && echo -n " %F{green}%f" + [[ "$git_status" =~ "Changes to be committed:" ]] && echo -n " %F{magenta}%f" + [[ "$git_status" =~ "Changes not staged for commit:" ]] && echo -n " %F{yellow}%f" + [[ "$git_status" =~ "Untracked files:" ]] && echo -n " %F{red}%f" + } + setopt prompt_subst + autoload -Uz vcs_info + precmd () { vcs_info } + zstyle ':vcs_info:*' formats ' %F{blue}%b%f' # git(main) + PS1='%(?..%B%F{red}[%?%\]%f%b )%F{green}%20<...<%~%<<%f$vcs_info_msg_0_$(parse_git_dirty) $ ' + ''; +#+end_src + +Launch =ssh-agent= at login. +#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes + profileExtra = '' + if [ ! -S ~/.ssh/ssh_auth_sock ]; then + eval `ssh-agent` > /dev/null + ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock + fi + export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock + ''; +#+end_src + +Close =zsh= configuration. +#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes + }; + } +#+end_src diff --git a/nixos/.flake/home/programs/zsh.org b/nixos/.flake/home/programs/zsh.org deleted file mode 100644 index 79795d0..0000000 --- a/nixos/.flake/home/programs/zsh.org +++ /dev/null @@ -1,87 +0,0 @@ -#+title: ZSH Configuration - -Open =zsh= configuration. -#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes - { config, pkgs, ... }: - - { - programs.zsh = { - enable = true; -#+end_src - -Automatically =cd= if only the path is used. -#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes - autocd = true; -#+end_src - -Enable auto-suggestions. -#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes - autosuggestion = { - enable = true; - }; -#+end_src - -Use =vi= keybindings. -#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes - defaultKeymap = "viins"; -#+end_src - -Append to the history and ignore duplicates. -#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes - history = { - append = true; - ignoreAllDups = true; - }; -#+end_src - -Specify =ls= aliases. -#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes - shellAliases = { - "ll" = "ls -alF"; - "la" = "ls -a"; - "l" = "ls -F"; - "sl" = "ls"; - }; -#+end_src - -Enable syntax highlighting. -#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes - syntaxHighlighting.enable = true; -#+end_src - -Create potential aliases and create the prompt. -#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes - initExtra = '' - which lesspipe.sh &> /dev/null && export LESSOPEN="|lesspipe.sh %s" - which eza &> /dev/null && alias ls=eza - parse_git_dirty() { - git_status="$(git status 2> /dev/null)" - [[ "$git_status" =~ "use \"git push\" to publish your local commits" ]] && echo -n " %F{green}%f" - [[ "$git_status" =~ "Changes to be committed:" ]] && echo -n " %F{magenta}%f" - [[ "$git_status" =~ "Changes not staged for commit:" ]] && echo -n " %F{yellow}%f" - [[ "$git_status" =~ "Untracked files:" ]] && echo -n " %F{red}%f" - } - setopt prompt_subst - autoload -Uz vcs_info - precmd () { vcs_info } - zstyle ':vcs_info:*' formats ' %F{blue}%b%f' # git(main) - PS1='%(?..%B%F{red}[%?%\]%f%b )%F{green}%20<...<%~%<<%f$vcs_info_msg_0_$(parse_git_dirty) $ ' - ''; -#+end_src - -Launch =ssh-agent= at login. -#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes - profileExtra = '' - if [ ! -S ~/.ssh/ssh_auth_sock ]; then - eval `ssh-agent` > /dev/null - ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock - fi - export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock - ''; -#+end_src - -Close =zsh= configuration. -#+begin_src nix :tangle ~/.flake/home/programs/zsh.nix :mkdirp yes - }; - } -#+end_src diff --git a/nixos/.flake/home/scripts.nix.org b/nixos/.flake/home/scripts.nix.org new file mode 100644 index 0000000..b98b389 --- /dev/null +++ b/nixos/.flake/home/scripts.nix.org @@ -0,0 +1,43 @@ +#+title: Custom Scripts + +Open script container. +#+begin_src nix :tangle ~/.flake/home/scripts.nix :mkdirp yes + { config, pkgs, ... }: + + { + home.file = { +#+end_src + +Use =fuzzel= to open a menu to power off, reboot, or log out. +#+begin_src nix :tangle ~/.flake/home/scripts.nix :mkdirp yes + ".local/bin/poweroptions.sh" = { + text = '' + #!/bin/sh + + getoption () { + fuzzel --dmenu -l 3 -x 1 -r 10 << EOF + 󰐥 power off + 󰜉 restart + 󰍃 logout + EOF + } + + option=$(getoption | xargs) + case $option in + '󰐥 power off') + systemctl poweroff;; + '󰜉 restart') + systemctl reboot;; + '󰍃 logout') + hyprctl dispatch exit;; + esac + ''; + executable = true; + }; +#+end_src + +Close script container. +#+begin_src nix :tangle ~/.flake/home/scripts.nix :mkdirp yes + }; + } +#+end_src diff --git a/nixos/.flake/home/scripts.org b/nixos/.flake/home/scripts.org deleted file mode 100644 index b98b389..0000000 --- a/nixos/.flake/home/scripts.org +++ /dev/null @@ -1,43 +0,0 @@ -#+title: Custom Scripts - -Open script container. -#+begin_src nix :tangle ~/.flake/home/scripts.nix :mkdirp yes - { config, pkgs, ... }: - - { - home.file = { -#+end_src - -Use =fuzzel= to open a menu to power off, reboot, or log out. -#+begin_src nix :tangle ~/.flake/home/scripts.nix :mkdirp yes - ".local/bin/poweroptions.sh" = { - text = '' - #!/bin/sh - - getoption () { - fuzzel --dmenu -l 3 -x 1 -r 10 << EOF - 󰐥 power off - 󰜉 restart - 󰍃 logout - EOF - } - - option=$(getoption | xargs) - case $option in - '󰐥 power off') - systemctl poweroff;; - '󰜉 restart') - systemctl reboot;; - '󰍃 logout') - hyprctl dispatch exit;; - esac - ''; - executable = true; - }; -#+end_src - -Close script container. -#+begin_src nix :tangle ~/.flake/home/scripts.nix :mkdirp yes - }; - } -#+end_src diff --git a/nixos/.flake/home/services/core.nix.org b/nixos/.flake/home/services/core.nix.org new file mode 100644 index 0000000..bd4c1d2 --- /dev/null +++ b/nixos/.flake/home/services/core.nix.org @@ -0,0 +1,19 @@ +#+title: Core Service Configuration + +Import service configurations. +#+begin_src nix :tangle ~/.flake/home/services/core.nix :mkdirp yes +{ config, pkgs, ... }: + +{ + imports = [ + ./emacs.nix + ./mako.nix + ./mpd.nix + ./syncthing.nix + ]; + + home.packages = with pkgs; [ + mpdscribble + ]; +} +#+end_src diff --git a/nixos/.flake/home/services/core.org b/nixos/.flake/home/services/core.org deleted file mode 100644 index bd4c1d2..0000000 --- a/nixos/.flake/home/services/core.org +++ /dev/null @@ -1,19 +0,0 @@ -#+title: Core Service Configuration - -Import service configurations. -#+begin_src nix :tangle ~/.flake/home/services/core.nix :mkdirp yes -{ config, pkgs, ... }: - -{ - imports = [ - ./emacs.nix - ./mako.nix - ./mpd.nix - ./syncthing.nix - ]; - - home.packages = with pkgs; [ - mpdscribble - ]; -} -#+end_src diff --git a/nixos/.flake/home/services/emacs.nix.org b/nixos/.flake/home/services/emacs.nix.org new file mode 100644 index 0000000..1a11446 --- /dev/null +++ b/nixos/.flake/home/services/emacs.nix.org @@ -0,0 +1,14 @@ +#+title: Emacs Service Configuration + +Enable Emacs daemon and client. +#+begin_src nix :tangle ~/.flake/home/services/emacs.nix :mkdirp yes +{ config, pkgs, ... }: + +{ + services.emacs = { + enable = true; + client.enable = true; + socketActivation.enable = true; + }; +} +#+end_src diff --git a/nixos/.flake/home/services/emacs.org b/nixos/.flake/home/services/emacs.org deleted file mode 100644 index 1a11446..0000000 --- a/nixos/.flake/home/services/emacs.org +++ /dev/null @@ -1,14 +0,0 @@ -#+title: Emacs Service Configuration - -Enable Emacs daemon and client. -#+begin_src nix :tangle ~/.flake/home/services/emacs.nix :mkdirp yes -{ config, pkgs, ... }: - -{ - services.emacs = { - enable = true; - client.enable = true; - socketActivation.enable = true; - }; -} -#+end_src diff --git a/nixos/.flake/home/services/mako.nix.org b/nixos/.flake/home/services/mako.nix.org new file mode 100644 index 0000000..caa0240 --- /dev/null +++ b/nixos/.flake/home/services/mako.nix.org @@ -0,0 +1,13 @@ +#+title: Mako Configuration + +Enable =mako= to handle notifications. +#+begin_src nix :tangle ~/.flake/home/services/mako.nix :mkdirp yes +{ config, pkgs, ... }: + +{ + services.mako = { + enable = true; + backgroundColor = "#191916ff"; + }; +} +#+end_src diff --git a/nixos/.flake/home/services/mako.org b/nixos/.flake/home/services/mako.org deleted file mode 100644 index caa0240..0000000 --- a/nixos/.flake/home/services/mako.org +++ /dev/null @@ -1,13 +0,0 @@ -#+title: Mako Configuration - -Enable =mako= to handle notifications. -#+begin_src nix :tangle ~/.flake/home/services/mako.nix :mkdirp yes -{ config, pkgs, ... }: - -{ - services.mako = { - enable = true; - backgroundColor = "#191916ff"; - }; -} -#+end_src diff --git a/nixos/.flake/home/services/mpd.nix.org b/nixos/.flake/home/services/mpd.nix.org new file mode 100644 index 0000000..b985b2a --- /dev/null +++ b/nixos/.flake/home/services/mpd.nix.org @@ -0,0 +1,21 @@ +#+title: MPD Configuration + +Set music directory and enable PipeWire output. +#+begin_src nix :tangle ~/.flake/home/services/mpd.nix :mkdirp yes + { config, pkgs, ... }: + + { + services.mpd = { + enable = true; + musicDirectory = "~/Music"; + extraConfig = '' + audio_output { + type "pipewire" + name "Pipewire" + mixer_type "hardware" + enabled "yes" + } + ''; + }; + } +#+end_src diff --git a/nixos/.flake/home/services/mpd.org b/nixos/.flake/home/services/mpd.org deleted file mode 100644 index b985b2a..0000000 --- a/nixos/.flake/home/services/mpd.org +++ /dev/null @@ -1,21 +0,0 @@ -#+title: MPD Configuration - -Set music directory and enable PipeWire output. -#+begin_src nix :tangle ~/.flake/home/services/mpd.nix :mkdirp yes - { config, pkgs, ... }: - - { - services.mpd = { - enable = true; - musicDirectory = "~/Music"; - extraConfig = '' - audio_output { - type "pipewire" - name "Pipewire" - mixer_type "hardware" - enabled "yes" - } - ''; - }; - } -#+end_src diff --git a/nixos/.flake/home/services/syncthing.nix.org b/nixos/.flake/home/services/syncthing.nix.org new file mode 100644 index 0000000..42dbf50 --- /dev/null +++ b/nixos/.flake/home/services/syncthing.nix.org @@ -0,0 +1,12 @@ +#+title: Syncthing Configuration + +Enable Syncthing service. +#+begin_src nix :tangle ~/.flake/home/services/syncthing.nix :mkdirp yes +{ config, pkgs, ... }: + +{ + services.syncthing = { + enable = true; + }; +} +#+end_src diff --git a/nixos/.flake/home/services/syncthing.org b/nixos/.flake/home/services/syncthing.org deleted file mode 100644 index 42dbf50..0000000 --- a/nixos/.flake/home/services/syncthing.org +++ /dev/null @@ -1,12 +0,0 @@ -#+title: Syncthing Configuration - -Enable Syncthing service. -#+begin_src nix :tangle ~/.flake/home/services/syncthing.nix :mkdirp yes -{ config, pkgs, ... }: - -{ - services.syncthing = { - enable = true; - }; -} -#+end_src diff --git a/nixos/.flake/system/boot.nix.org b/nixos/.flake/system/boot.nix.org new file mode 100644 index 0000000..fe98542 --- /dev/null +++ b/nixos/.flake/system/boot.nix.org @@ -0,0 +1,11 @@ +#+title: Boot Configuration + +Enable =systemd-boot= as my boot loader. +#+begin_src nix :tangle ~/.flake/system/boot.nix :mkdirp yes +{ config, lib, pkgs, ... }: + +{ + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; +} +#+end_src diff --git a/nixos/.flake/system/boot.org b/nixos/.flake/system/boot.org deleted file mode 100644 index fe98542..0000000 --- a/nixos/.flake/system/boot.org +++ /dev/null @@ -1,11 +0,0 @@ -#+title: Boot Configuration - -Enable =systemd-boot= as my boot loader. -#+begin_src nix :tangle ~/.flake/system/boot.nix :mkdirp yes -{ config, lib, pkgs, ... }: - -{ - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; -} -#+end_src diff --git a/nixos/.flake/system/core.nix.org b/nixos/.flake/system/core.nix.org new file mode 100644 index 0000000..e909198 --- /dev/null +++ b/nixos/.flake/system/core.nix.org @@ -0,0 +1,21 @@ +#+title: System Core + +This file imports various system configuration components in addition to enabling flakes and defining the system version. +#+begin_src nix :tangle ~/.flake/system/core.nix :mkdirp yes +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./boot.nix + ./desktop.nix + ./hardware-configuration.nix + ./locale.nix + ./network.nix + ./users.nix + ]; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + system.stateVersion = "24.05"; +} +#+end_src diff --git a/nixos/.flake/system/core.org b/nixos/.flake/system/core.org deleted file mode 100644 index e909198..0000000 --- a/nixos/.flake/system/core.org +++ /dev/null @@ -1,21 +0,0 @@ -#+title: System Core - -This file imports various system configuration components in addition to enabling flakes and defining the system version. -#+begin_src nix :tangle ~/.flake/system/core.nix :mkdirp yes -{ config, lib, pkgs, ... }: - -{ - imports = [ - ./boot.nix - ./desktop.nix - ./hardware-configuration.nix - ./locale.nix - ./network.nix - ./users.nix - ]; - - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - - system.stateVersion = "24.05"; -} -#+end_src diff --git a/nixos/.flake/system/desktop.nix.org b/nixos/.flake/system/desktop.nix.org new file mode 100644 index 0000000..fbe4206 --- /dev/null +++ b/nixos/.flake/system/desktop.nix.org @@ -0,0 +1,108 @@ +#+title: Desktop System Configuration + +Open the desktop configuration. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + { config, lib, pkgs, ... }: + + { +#+end_src + +Allow unfree packages on this system. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + nixpkgs.config.allowUnfree = true; +#+end_src + +Install necessary packages for the desktop. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + environment.systemPackages = with pkgs; [ + dolphin + firefox + git + greetd.tuigreet + kitty + neovim + wget + ]; +#+end_src + +Install Steam. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + }; +#+end_src + +Use Neovim as my default editor. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + environment.variables.EDITOR = "nvim"; +#+end_src + +Enable GPG agent globally. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; +#+end_src + +Install =zsh= and set up completions. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + programs.zsh.enable = true; + environment.pathsToLink = [ "/share/zsh" ]; +#+end_src + +Use the =us= keyboard layout. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + services.xserver.xkb.layout = "us"; +#+end_src + +Install Hyprland as a window manager. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + services.xserver.enable = true; + xdg.portal.enable = true; + programs.hyprland.enable = true; + environment.sessionVariables.NIXOS_OZONE_WL = "1"; +#+end_src + +Enable =pam= support for Hyprlock. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + security.pam.services.hyprlock = {}; +#+end_src + +Enable =greetd= with =tuigreet= as my login manager. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + services.greetd = { + enable = true; + settings = { + default_session = { + command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --remember --remember-session --sessions ${pkgs.hyprland}/share/wayland-sessions --cmd \"dbus-run-session Hyprland\""; + user = "greeter"; + }; + }; + }; + systemd.services.greetd.serviceConfig = { + Type = "idle"; + StandardInput = "tty"; + StanardOutput = "tty"; + StandardError = "journal"; + TTYReset = true; + TTYVHangup = true; + TTYVTDisallocate = true; + }; +#+end_src + +Enable PipeWire. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + services.pipewire = { + enable = true; + pulse.enable = true; + }; +#+end_src + +Close the desktop configuration. +#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes + } +#+end_src diff --git a/nixos/.flake/system/desktop.org b/nixos/.flake/system/desktop.org deleted file mode 100644 index fbe4206..0000000 --- a/nixos/.flake/system/desktop.org +++ /dev/null @@ -1,108 +0,0 @@ -#+title: Desktop System Configuration - -Open the desktop configuration. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - { config, lib, pkgs, ... }: - - { -#+end_src - -Allow unfree packages on this system. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - nixpkgs.config.allowUnfree = true; -#+end_src - -Install necessary packages for the desktop. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - environment.systemPackages = with pkgs; [ - dolphin - firefox - git - greetd.tuigreet - kitty - neovim - wget - ]; -#+end_src - -Install Steam. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - programs.steam = { - enable = true; - remotePlay.openFirewall = true; - dedicatedServer.openFirewall = true; - localNetworkGameTransfers.openFirewall = true; - }; -#+end_src - -Use Neovim as my default editor. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - environment.variables.EDITOR = "nvim"; -#+end_src - -Enable GPG agent globally. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - }; -#+end_src - -Install =zsh= and set up completions. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - programs.zsh.enable = true; - environment.pathsToLink = [ "/share/zsh" ]; -#+end_src - -Use the =us= keyboard layout. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - services.xserver.xkb.layout = "us"; -#+end_src - -Install Hyprland as a window manager. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - services.xserver.enable = true; - xdg.portal.enable = true; - programs.hyprland.enable = true; - environment.sessionVariables.NIXOS_OZONE_WL = "1"; -#+end_src - -Enable =pam= support for Hyprlock. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - security.pam.services.hyprlock = {}; -#+end_src - -Enable =greetd= with =tuigreet= as my login manager. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - services.greetd = { - enable = true; - settings = { - default_session = { - command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --remember --remember-session --sessions ${pkgs.hyprland}/share/wayland-sessions --cmd \"dbus-run-session Hyprland\""; - user = "greeter"; - }; - }; - }; - systemd.services.greetd.serviceConfig = { - Type = "idle"; - StandardInput = "tty"; - StanardOutput = "tty"; - StandardError = "journal"; - TTYReset = true; - TTYVHangup = true; - TTYVTDisallocate = true; - }; -#+end_src - -Enable PipeWire. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - services.pipewire = { - enable = true; - pulse.enable = true; - }; -#+end_src - -Close the desktop configuration. -#+begin_src nix :tangle ~/.flake/system/desktop.nix :mkdirp yes - } -#+end_src diff --git a/nixos/.flake/system/locale.nix.org b/nixos/.flake/system/locale.nix.org new file mode 100644 index 0000000..63d05a0 --- /dev/null +++ b/nixos/.flake/system/locale.nix.org @@ -0,0 +1,11 @@ +#+title: Locale Setup + +My timezone is Winnipeg, and I use Canadian English. +#+begin_src nix :tangle ~/.flake/system/locale.nix :mkdirp yes + { config, lib, pkgs, ... }: + + { + time.timeZone = "America/Winnipeg"; + i18n.defaultLocale = "en_CA.UTF-8"; + } +#+end_src diff --git a/nixos/.flake/system/locale.org b/nixos/.flake/system/locale.org deleted file mode 100644 index 63d05a0..0000000 --- a/nixos/.flake/system/locale.org +++ /dev/null @@ -1,11 +0,0 @@ -#+title: Locale Setup - -My timezone is Winnipeg, and I use Canadian English. -#+begin_src nix :tangle ~/.flake/system/locale.nix :mkdirp yes - { config, lib, pkgs, ... }: - - { - time.timeZone = "America/Winnipeg"; - i18n.defaultLocale = "en_CA.UTF-8"; - } -#+end_src diff --git a/nixos/.flake/system/network.nix.org b/nixos/.flake/system/network.nix.org new file mode 100644 index 0000000..06a0251 --- /dev/null +++ b/nixos/.flake/system/network.nix.org @@ -0,0 +1,48 @@ +#+title: Network Configuration + +Open the network configuration. +#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes + { config, lib, pkgs, ... }: + + { +#+end_src + +This system is called =nixos=. +#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes + networking.hostName = "nixos"; +#+end_src + +I use NetworkManager to configure my network. +#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes + networking.networkmanager.enable = true; +#+end_src + +Enable Bluetooth at boot. +#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + services.blueman.enable = true; +#+end_src + +Enable printing. +#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes + services.printing.enable = true; +#+end_src + +Enable SSH. +#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes + services.openssh.enable = true; +#+end_src + +Set up my firewall. +#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes + networking.firewall = { + allowedTCPPorts = [ ]; + allowedUDPPorts = [ ]; + }; +#+end_src + +Close the network configuration. +#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes + } +#+end_src diff --git a/nixos/.flake/system/network.org b/nixos/.flake/system/network.org deleted file mode 100644 index 06a0251..0000000 --- a/nixos/.flake/system/network.org +++ /dev/null @@ -1,48 +0,0 @@ -#+title: Network Configuration - -Open the network configuration. -#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes - { config, lib, pkgs, ... }: - - { -#+end_src - -This system is called =nixos=. -#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes - networking.hostName = "nixos"; -#+end_src - -I use NetworkManager to configure my network. -#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes - networking.networkmanager.enable = true; -#+end_src - -Enable Bluetooth at boot. -#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes - hardware.bluetooth.enable = true; - hardware.bluetooth.powerOnBoot = true; - services.blueman.enable = true; -#+end_src - -Enable printing. -#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes - services.printing.enable = true; -#+end_src - -Enable SSH. -#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes - services.openssh.enable = true; -#+end_src - -Set up my firewall. -#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes - networking.firewall = { - allowedTCPPorts = [ ]; - allowedUDPPorts = [ ]; - }; -#+end_src - -Close the network configuration. -#+begin_src nix :tangle ~/.flake/system/network.nix :mkdirp yes - } -#+end_src diff --git a/nixos/.flake/system/users.nix.org b/nixos/.flake/system/users.nix.org new file mode 100644 index 0000000..498857a --- /dev/null +++ b/nixos/.flake/system/users.nix.org @@ -0,0 +1,14 @@ +#+title: User Configuration + +Set up my user account with =zsh= as default shell with =sudoers= and network management permissions. +#+begin_src nix :tangle ~/.flake/system/users.nix :mkdirp yes +{ config, lib, pkgs, ... }: + +{ + users.users.jane = { + shell = pkgs.zsh; + isNormalUser = true; + extraGroups = [ "networkmanager" "wheel" ]; + }; +} +#+end_src diff --git a/nixos/.flake/system/users.org b/nixos/.flake/system/users.org deleted file mode 100644 index 498857a..0000000 --- a/nixos/.flake/system/users.org +++ /dev/null @@ -1,14 +0,0 @@ -#+title: User Configuration - -Set up my user account with =zsh= as default shell with =sudoers= and network management permissions. -#+begin_src nix :tangle ~/.flake/system/users.nix :mkdirp yes -{ config, lib, pkgs, ... }: - -{ - users.users.jane = { - shell = pkgs.zsh; - isNormalUser = true; - extraGroups = [ "networkmanager" "wheel" ]; - }; -} -#+end_src -- cgit v1.2.3