aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile5
-rw-r--r--common/.config/emacs/languages.el.org84
-rw-r--r--common/.config/emacs/user-interface.el.org2
-rw-r--r--common/.flake/home/clang-format.nix.org15
-rw-r--r--common/.flake/home/cursor.nix.org13
-rw-r--r--common/.flake/home/fonts.nix.org14
-rw-r--r--common/.flake/home/hyprland.nix.org175
-rw-r--r--common/.flake/home/programs/emacs/core.nix.org (renamed from nixos/.flake/home/programs/emacs/core.nix.org)10
l---------common/.flake/home/programs/emacs/feed.org.org (renamed from nixos/.flake/home/programs/emacs/feed.org.org)0
l---------common/.flake/home/programs/emacs/force-custom-file.el.org (renamed from nixos/.flake/home/programs/emacs/force-custom-file.el.org)0
l---------common/.flake/home/programs/emacs/init.el.org1
l---------common/.flake/home/programs/emacs/languages.el.org (renamed from nixos/.flake/home/programs/emacs/languages.el.org)0
l---------common/.flake/home/programs/emacs/package-setup.el.org (renamed from nixos/.flake/home/programs/emacs/package-setup.el.org)0
l---------common/.flake/home/programs/emacs/tools.el.org (renamed from nixos/.flake/home/programs/emacs/tools.el.org)0
l---------common/.flake/home/programs/emacs/user-interface.el.org (renamed from nixos/.flake/home/programs/emacs/user-interface.el.org)0
-rw-r--r--common/.flake/home/programs/fastfetch.nix.org84
-rw-r--r--common/.flake/home/programs/foot.nix.org42
-rw-r--r--common/.flake/home/programs/git.nix.org18
-rw-r--r--common/.flake/home/programs/hyprlock.nix.org42
-rw-r--r--common/.flake/home/programs/ncmpcpp.nix.org28
-rw-r--r--common/.flake/home/programs/neovim.nix.org32
-rw-r--r--common/.flake/home/programs/ssh.nix.org13
-rw-r--r--common/.flake/home/programs/waybar.nix.org149
-rw-r--r--common/.flake/home/programs/zsh.nix.org87
-rw-r--r--common/.flake/home/services/emacs.nix.org14
-rw-r--r--common/.flake/home/services/mako.nix.org13
-rw-r--r--common/.flake/home/services/mpd.nix.org21
-rw-r--r--common/.flake/home/services/syncthing.nix.org12
-rwxr-xr-xextract_src.py2
l---------macos.local/.clang-format.org1
l---------macos.local/.config/emacs1
l---------macos.local/.config/fastfetch1
l---------macos.local/.config/nvim1
-rw-r--r--macos.local/.flake/flake.nix.org32
l---------macos.local/.flake/home/.wallpaper1
l---------macos.local/.flake/home/clang-format.nix.org1
-rw-r--r--macos.local/.flake/home/core.nix.org21
l---------macos.local/.flake/home/fonts.nix.org1
-rw-r--r--macos.local/.flake/home/programs/core.nix.org39
-rw-r--r--macos.local/.flake/home/programs/emacs/core.nix.org20
l---------macos.local/.flake/home/programs/emacs/feed.org.org1
l---------macos.local/.flake/home/programs/emacs/force-custom-file.el.org1
l---------macos.local/.flake/home/programs/emacs/init.el.org1
l---------macos.local/.flake/home/programs/emacs/languages.el.org1
l---------macos.local/.flake/home/programs/emacs/package-setup.el.org1
l---------macos.local/.flake/home/programs/emacs/tools.el.org1
l---------macos.local/.flake/home/programs/emacs/user-interface.el.org1
l---------macos.local/.flake/home/programs/fastfetch.nix.org1
l---------macos.local/.flake/home/programs/git.nix.org1
l---------macos.local/.flake/home/programs/neovim.nix.org1
l---------macos.local/.flake/home/programs/zsh.nix.org1
-rw-r--r--macos.local/.flake/system/core.nix.org37
l---------macos.local/.gitconfig.org.gpg1
l---------macos.local/.local/share/fonts1
l---------macos.local/.profile.org1
l---------macos.local/.wallpaper1
l---------macos.local/.zshrc.org1
l---------[-rw-r--r--]nixos/.flake/home/clang-format.nix.org16
l---------[-rw-r--r--]nixos/.flake/home/cursor.nix.org14
l---------[-rw-r--r--]nixos/.flake/home/fonts.nix.org15
l---------[-rw-r--r--]nixos/.flake/home/hyprland.nix.org176
l---------nixos/.flake/home/programs/emacs1
l---------[-rw-r--r--]nixos/.flake/home/programs/fastfetch.nix.org85
l---------[-rw-r--r--]nixos/.flake/home/programs/foot.nix.org43
l---------[-rw-r--r--]nixos/.flake/home/programs/git.nix.org19
l---------[-rw-r--r--]nixos/.flake/home/programs/hyprlock.nix.org43
l---------[-rw-r--r--]nixos/.flake/home/programs/ncmpcpp.nix.org29
l---------[-rw-r--r--]nixos/.flake/home/programs/neovim.nix.org33
l---------[-rw-r--r--]nixos/.flake/home/programs/ssh.nix.org14
l---------[-rw-r--r--]nixos/.flake/home/programs/waybar.nix.org150
l---------[-rw-r--r--]nixos/.flake/home/programs/zsh.nix.org88
l---------[-rw-r--r--]nixos/.flake/home/services/emacs.nix.org15
l---------[-rw-r--r--]nixos/.flake/home/services/mako.nix.org14
l---------[-rw-r--r--]nixos/.flake/home/services/mpd.nix.org22
l---------[-rw-r--r--]nixos/.flake/home/services/syncthing.nix.org13
75 files changed, 1024 insertions, 814 deletions
diff --git a/Makefile b/Makefile
index 266e19d..87445c1 100644
--- a/Makefile
+++ b/Makefile
@@ -74,8 +74,9 @@ $(DSTDIR)/$(FONTSDIR)/.SauceCodePro: $(SRCDIR)/$(FONTSDIR)/SauceCodePro.tar.gz
macos-update: install
brew upgrade
-# macos install also install fonts and tells System Events to update the wallpaper
-macos-install: $(CONFIGS) fonts
+# macos install tells System Events to update the wallpaper
+macos-install: $(CONFIGS)
+ darwin-rebuild switch --flake $(DSTDIR)/.flake
osascript -e "tell application \"System Events\" to tell every desktop to set picture to \"/$$HOME/.wallpaper\" as POSIX file"
# nixos update backs up the flake lock file
diff --git a/common/.config/emacs/languages.el.org b/common/.config/emacs/languages.el.org
index 3ee63e0..4544563 100644
--- a/common/.config/emacs/languages.el.org
+++ b/common/.config/emacs/languages.el.org
@@ -2,90 +2,90 @@
* Shell Script
Run =eglot= on shell script files.
-#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(use-package go-gen-test)
#+end_src
Get refactoring tools from =go-guru=.
-#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(use-package lispy
:hook (emacs-lisp-mode . lispy-mode))
(use-package lispyville
@@ -94,7 +94,7 @@ Better Lisp editing with =lispy=.
#+end_src
Better parentheses handling in lisp with =parinfer-rust-mode=.
-#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes
+#+begin_src emacs-lisp
(use-package parinfer-rust-mode
:hook (emacs-lisp-mode . parinfer-rust-mode)
:init
@@ -103,20 +103,62 @@ Better parentheses handling in lisp with =parinfer-rust-mode=.
* Markdown
Install Markdown support and run =eglot= on Markdown files.
-#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes
+#+begin_src emacs-lisp
(use-package markdown-mode
:init
(add-hook 'markdown-mode-hook 'jj/eglot-setup))
+ (add-hook 'markdown-mode-hook 'variable-pitch-mode)
+ (custom-set-faces
+ `(variable-pitch ((t :font ,jj/var-font)))
+ `(fixed-pitch ((t :font ,jj/mono-font)))
+ '(markdown-header-face ((t (:inherit variable-pitch :weight bold))))
+ '(markdown-header-face-1 ((t (:inherit markdown-header-face :height 2.0))))
+ '(markdown-header-face-2 ((t (:inherit markdown-header-face :height 1.75))))
+ '(markdown-header-face-3 ((t (:inherit markdown-header-face :height 1.5))))
+ '(markdown-header-face-4 ((t (:inherit markdown-header-face :height 1.25))))
+ '(markdown-header-face-5 ((t (:inherit markdown-header-face :height 1.1))))
+ '(markdown-header-face-6 ((t (:inherit markdown-header-face :height 1.1))))
+ '(markdown-blockquote-face ((t (:inherit fixed-pitch))))
+ '(markdown-code-face ((t (:inherit fixed-pitch))))
+ '(markdown-html-attr-name-face ((t (:inherit fixed-pitch))))
+ '(markdown-html-attr-value-face ((t (:inherit fixed-pitch))))
+ '(markdown-html-entity-face ((t (:inherit fixed-pitch))))
+ '(markdown-html-tag-delimiter-face ((t (:inherit fixed-pitch))))
+ '(markdown-html-tag-name-face ((t (:inherit fixed-pitch))))
+ '(markdown-comment-face ((t (:inherit fixed-pitch))))
+ '(markdown-header-delimiter-face ((t (:inherit fixed-pitch))))
+ '(markdown-hr-face ((t (:inherit fixed-pitch))))
+ '(markdown-inline-code-face ((t (:inherit fixed-pitch))))
+ '(markdown-language-info-face ((t (:inherit fixed-pitch))))
+ '(markdown-language-keyword-face ((t (:inherit fixed-pitch))))
+ '(markdown-link-face ((t (:inherit fixed-pitch))))
+ '(markdown-markup-face ((t (:inherit fixed-pitch))))
+ '(markdown-math-face ((t (:inherit fixed-pitch))))
+ '(markdown-metadata-key-face ((t (:inherit fixed-pitch))))
+ '(markdown-metadata-value-face ((t (:inherit fixed-pitch))))
+ '(markdown-missing-link-face ((t (:inherit fixed-pitch))))
+ '(markdown-plain-url-face ((t (:inherit fixed-pitch))))
+ '(markdown-reference-face ((t (:inherit fixed-pitch))))
+ '(markdown-table-face ((t (:inherit fixed-pitch))))
+ '(markdown-url-face ((t (:inherit fixed-pitch)))))
+ (add-hook 'markdown-mode-hook 'visual-line-mode)
+ (add-hook 'markdown-mode-hook #'(lambda () (display-line-numbers-mode -1)))
+ (defun jj/markdown-mode-visual-fill ()
+ (setq visual-fill-column-width 100
+ visual-fill-column-center-text t)
+ (visual-fill-column-mode 1))
+ (add-hook 'markdown-mode-hook #'jj/markdown-mode-visual-fill)
+ (setq markdown-hide-markup t)
#+end_src
* LaTeX
Run =eglot= on TeX files.
-#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes
+#+begin_src emacs-lisp
(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
+#+begin_src emacs-lisp
(use-package auctex
:config
(add-hook 'LaTeX-mode-hook 'jj/eglot-setup)
@@ -126,7 +168,7 @@ Use AUCTeX for extra LaTeX integration.
#+end_src
Use CDLaTeX for environment and macro insertion.
-#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes
+#+begin_src emacs-lisp
(use-package cdlatex
:config
(add-hook 'LaTeX-mode-hook #'turn-on-cdlatex))
@@ -134,7 +176,7 @@ Use CDLaTeX for environment and macro insertion.
* YAML
Install YAML support and run =eglot= on YAML files.
-#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes
+#+begin_src emacs-lisp
(use-package yaml-mode
:init
(add-hook 'yaml-mode-hook 'jj/eglot-setup))
@@ -142,7 +184,7 @@ Install YAML support and run =eglot= on YAML files.
* Nix
Install =nix= support and run =eglot= on =nix= files.
-#+begin_src emacs-lisp :tangle ~/.config/emacs/languages.el :mkdirp yes
+#+begin_src emacs-lisp
(use-package nix-mode
:mode "\\.nix\\'")
#+end_src
diff --git a/common/.config/emacs/user-interface.el.org b/common/.config/emacs/user-interface.el.org
index ff4bd34..cc415d8 100644
--- a/common/.config/emacs/user-interface.el.org
+++ b/common/.config/emacs/user-interface.el.org
@@ -29,7 +29,7 @@ Use my custom Doom Disco light theme.
(load-theme 'doom-disco t)
(doom-themes-org-config))
-(add-to-list 'default-frame-alist '(alpha-background . 90))
+ (add-to-list 'default-frame-alist '(alpha-background . 90))
#+end_src
Use =doom-modeline= for a nicer modeline.
diff --git a/common/.flake/home/clang-format.nix.org b/common/.flake/home/clang-format.nix.org
new file mode 100644
index 0000000..64a2a64
--- /dev/null
+++ b/common/.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/common/.flake/home/cursor.nix.org b/common/.flake/home/cursor.nix.org
new file mode 100644
index 0000000..15396a0
--- /dev/null
+++ b/common/.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/common/.flake/home/fonts.nix.org b/common/.flake/home/fonts.nix.org
new file mode 100644
index 0000000..3a01993
--- /dev/null
+++ b/common/.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/common/.flake/home/hyprland.nix.org b/common/.flake/home/hyprland.nix.org
new file mode 100644
index 0000000..725f920
--- /dev/null
+++ b/common/.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/programs/emacs/core.nix.org b/common/.flake/home/programs/emacs/core.nix.org
index b1632d9..61688be 100644
--- a/nixos/.flake/home/programs/emacs/core.nix.org
+++ b/common/.flake/home/programs/emacs/core.nix.org
@@ -1,10 +1,11 @@
#+title: Emacs Configuration
-#+begin_src nix :tangle ~/.flake/home/programs/emacs/core.nix :mkdirp yes
+#+begin_src nix
{ config, pkgs, ... }:
{
home.file = {
+ "./.config/emacs/init.el".source = ./init.el;
"./.config/emacs/force-custom-file.el".source = ./force-custom-file.el;
"./.config/emacs/package-setup.el".source = ./package-setup.el;
"./.config/emacs/user-interface.el".source = ./user-interface.el;
@@ -13,13 +14,6 @@
};
programs.emacs = {
enable = true;
- extraConfig = ''
- (load "~/.config/emacs/force-custom-file.el")
- (load "~/.config/emacs/package-setup.el")
- (load "~/.config/emacs/user-interface.el")
- (load "~/.config/emacs/tools.el")
- (load "~/.config/emacs/languages.el")
- '';
};
}
#+end_src
diff --git a/nixos/.flake/home/programs/emacs/feed.org.org b/common/.flake/home/programs/emacs/feed.org.org
index d074855..d074855 120000
--- a/nixos/.flake/home/programs/emacs/feed.org.org
+++ b/common/.flake/home/programs/emacs/feed.org.org
diff --git a/nixos/.flake/home/programs/emacs/force-custom-file.el.org b/common/.flake/home/programs/emacs/force-custom-file.el.org
index 06a4dc7..06a4dc7 120000
--- a/nixos/.flake/home/programs/emacs/force-custom-file.el.org
+++ b/common/.flake/home/programs/emacs/force-custom-file.el.org
diff --git a/common/.flake/home/programs/emacs/init.el.org b/common/.flake/home/programs/emacs/init.el.org
new file mode 120000
index 0000000..6b2f721
--- /dev/null
+++ b/common/.flake/home/programs/emacs/init.el.org
@@ -0,0 +1 @@
+../../../../../common/.config/emacs/init.el.org \ No newline at end of file
diff --git a/nixos/.flake/home/programs/emacs/languages.el.org b/common/.flake/home/programs/emacs/languages.el.org
index dd60c9f..dd60c9f 120000
--- a/nixos/.flake/home/programs/emacs/languages.el.org
+++ b/common/.flake/home/programs/emacs/languages.el.org
diff --git a/nixos/.flake/home/programs/emacs/package-setup.el.org b/common/.flake/home/programs/emacs/package-setup.el.org
index c0f3ead..c0f3ead 120000
--- a/nixos/.flake/home/programs/emacs/package-setup.el.org
+++ b/common/.flake/home/programs/emacs/package-setup.el.org
diff --git a/nixos/.flake/home/programs/emacs/tools.el.org b/common/.flake/home/programs/emacs/tools.el.org
index ff0296b..ff0296b 120000
--- a/nixos/.flake/home/programs/emacs/tools.el.org
+++ b/common/.flake/home/programs/emacs/tools.el.org
diff --git a/nixos/.flake/home/programs/emacs/user-interface.el.org b/common/.flake/home/programs/emacs/user-interface.el.org
index 8a7f782..8a7f782 120000
--- a/nixos/.flake/home/programs/emacs/user-interface.el.org
+++ b/common/.flake/home/programs/emacs/user-interface.el.org
diff --git a/common/.flake/home/programs/fastfetch.nix.org b/common/.flake/home/programs/fastfetch.nix.org
new file mode 100644
index 0000000..96b2044
--- /dev/null
+++ b/common/.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/common/.flake/home/programs/foot.nix.org b/common/.flake/home/programs/foot.nix.org
new file mode 100644
index 0000000..3490bed
--- /dev/null
+++ b/common/.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/common/.flake/home/programs/git.nix.org b/common/.flake/home/programs/git.nix.org
new file mode 100644
index 0000000..baf3aaa
--- /dev/null
+++ b/common/.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/common/.flake/home/programs/hyprlock.nix.org b/common/.flake/home/programs/hyprlock.nix.org
new file mode 100644
index 0000000..4e94386
--- /dev/null
+++ b/common/.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 = "<span foreground=\"##cad3f5\">Password...</span>";
+ shadow_passes = 2;
+ }
+ ];
+ };
+ };
+ }
+#+end_src
diff --git a/common/.flake/home/programs/ncmpcpp.nix.org b/common/.flake/home/programs/ncmpcpp.nix.org
new file mode 100644
index 0000000..eb1f02f
--- /dev/null
+++ b/common/.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/common/.flake/home/programs/neovim.nix.org b/common/.flake/home/programs/neovim.nix.org
new file mode 100644
index 0000000..350eded
--- /dev/null
+++ b/common/.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/common/.flake/home/programs/ssh.nix.org b/common/.flake/home/programs/ssh.nix.org
new file mode 100644
index 0000000..a7502d2
--- /dev/null
+++ b/common/.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/common/.flake/home/programs/waybar.nix.org b/common/.flake/home/programs/waybar.nix.org
new file mode 100644
index 0000000..7fe40f3
--- /dev/null
+++ b/common/.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/common/.flake/home/programs/zsh.nix.org b/common/.flake/home/programs/zsh.nix.org
new file mode 100644
index 0000000..79795d0
--- /dev/null
+++ b/common/.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/common/.flake/home/services/emacs.nix.org b/common/.flake/home/services/emacs.nix.org
new file mode 100644
index 0000000..1a11446
--- /dev/null
+++ b/common/.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/common/.flake/home/services/mako.nix.org b/common/.flake/home/services/mako.nix.org
new file mode 100644
index 0000000..caa0240
--- /dev/null
+++ b/common/.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/common/.flake/home/services/mpd.nix.org b/common/.flake/home/services/mpd.nix.org
new file mode 100644
index 0000000..b985b2a
--- /dev/null
+++ b/common/.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/common/.flake/home/services/syncthing.nix.org b/common/.flake/home/services/syncthing.nix.org
new file mode 100644
index 0000000..42dbf50
--- /dev/null
+++ b/common/.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/extract_src.py b/extract_src.py
index 766bf1a..3fb5559 100755
--- a/extract_src.py
+++ b/extract_src.py
@@ -8,7 +8,7 @@ import re
with open(sys.argv[1], "r") as inp:
with open(sys.argv[2], "w") as out:
in_src = False
- startp = re.compile(r"^\s*#\+begin_src .* :tangle")
+ startp = re.compile(r"^\s*#\+begin_src")
endp = re.compile(r"^\s*#\+end_src")
quoted = re.compile(r"^\s*,(\*|,\*|#\+)")
diff --git a/macos.local/.clang-format.org b/macos.local/.clang-format.org
deleted file mode 120000
index 4b4ef61..0000000
--- a/macos.local/.clang-format.org
+++ /dev/null
@@ -1 +0,0 @@
-../common/.clang-format.org \ No newline at end of file
diff --git a/macos.local/.config/emacs b/macos.local/.config/emacs
deleted file mode 120000
index f4e5e56..0000000
--- a/macos.local/.config/emacs
+++ /dev/null
@@ -1 +0,0 @@
-../../common/.config/emacs \ No newline at end of file
diff --git a/macos.local/.config/fastfetch b/macos.local/.config/fastfetch
deleted file mode 120000
index a73d684..0000000
--- a/macos.local/.config/fastfetch
+++ /dev/null
@@ -1 +0,0 @@
-../../common/.config/fastfetch \ No newline at end of file
diff --git a/macos.local/.config/nvim b/macos.local/.config/nvim
deleted file mode 120000
index a0abd03..0000000
--- a/macos.local/.config/nvim
+++ /dev/null
@@ -1 +0,0 @@
-../../common/.config/nvim \ No newline at end of file
diff --git a/macos.local/.flake/flake.nix.org b/macos.local/.flake/flake.nix.org
new file mode 100644
index 0000000..b971bf6
--- /dev/null
+++ b/macos.local/.flake/flake.nix.org
@@ -0,0 +1,32 @@
+#+title: macOS Nix Configuration
+
+#+begin_src nix
+ {
+ description = "My Darwin Configuration";
+
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
+ nix-darwin.url = "github:LnL7/nix-darwin";
+ nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
+ home-manager.url = "github:nix-community/home-manager";
+ home-manager.inputs.nixpkgs.follows = "nixpkgs";
+ };
+
+ outputs = inputs@{ self, nix-darwin, nixpkgs, home-manager }: {
+ darwinConfigurations."macos" = nix-darwin.lib.darwinSystem {
+ specialArgs = { inherit inputs; };
+ modules = [
+ ./system/core.nix
+ home-manager.darwinModules.home-manager
+ {
+ home-manager.useGlobalPkgs = true;
+ home-manager.useUserPackages = true;
+ home-manager.users.jjanzen = import ./home/core.nix;
+ }
+ ];
+ };
+
+ darwinPackages = self.darwinConfigurations."macos".pkgs;
+ };
+ }
+#+end_src
diff --git a/macos.local/.flake/home/.wallpaper b/macos.local/.flake/home/.wallpaper
new file mode 120000
index 0000000..316db81
--- /dev/null
+++ b/macos.local/.flake/home/.wallpaper
@@ -0,0 +1 @@
+../../../common/.wallpaper \ No newline at end of file
diff --git a/macos.local/.flake/home/clang-format.nix.org b/macos.local/.flake/home/clang-format.nix.org
new file mode 120000
index 0000000..db7166a
--- /dev/null
+++ b/macos.local/.flake/home/clang-format.nix.org
@@ -0,0 +1 @@
+../../../common/.flake/home/clang-format.nix.org \ No newline at end of file
diff --git a/macos.local/.flake/home/core.nix.org b/macos.local/.flake/home/core.nix.org
new file mode 100644
index 0000000..bb84514
--- /dev/null
+++ b/macos.local/.flake/home/core.nix.org
@@ -0,0 +1,21 @@
+#+title: Home Configuration
+
+Set up home manager for my user account and import submodules.
+#+begin_src nix
+ { config, pkgs, ... }:
+
+ {
+ imports = [
+ ./clang-format.nix
+ ./fonts.nix
+ ./programs/core.nix
+ ];
+
+ home.username = "jjanzen";
+ home.homeDirectory = "/Users/jjanzen";
+ home.file.".wallpaper".source = ./.wallpaper;
+
+ home.stateVersion = "24.05";
+ programs.home-manager.enable = true;
+ }
+#+end_src
diff --git a/macos.local/.flake/home/fonts.nix.org b/macos.local/.flake/home/fonts.nix.org
new file mode 120000
index 0000000..53bec1c
--- /dev/null
+++ b/macos.local/.flake/home/fonts.nix.org
@@ -0,0 +1 @@
+../../../common/.flake/home/fonts.nix.org \ No newline at end of file
diff --git a/macos.local/.flake/home/programs/core.nix.org b/macos.local/.flake/home/programs/core.nix.org
new file mode 100644
index 0000000..ba6818f
--- /dev/null
+++ b/macos.local/.flake/home/programs/core.nix.org
@@ -0,0 +1,39 @@
+#+title: Core Program Configuration
+
+#+begin_src nix
+ { config, pkgs, ... }:
+
+ {
+ imports = [
+ ./emacs/core.nix
+ ./fastfetch.nix
+ ./git.nix
+ ./neovim.nix
+ ./zsh.nix
+ ];
+
+ home.packages = with pkgs; [
+ aspell
+ bash-language-server
+ inetutils
+ clang-tools
+ cmake
+ cmake-language-server
+ eza
+ gcc-arm-embedded
+ htop
+ hyfetch
+ marksman
+ mpv
+ openocd
+ pinentry_mac
+ python312
+ python312Packages.black
+ python312Packages.pylint
+ python312Packages.python-lsp-server
+ sqlite
+ texliveFull
+ yt-dlp
+ ];
+ }
+#+end_src
diff --git a/macos.local/.flake/home/programs/emacs/core.nix.org b/macos.local/.flake/home/programs/emacs/core.nix.org
new file mode 100644
index 0000000..627d725
--- /dev/null
+++ b/macos.local/.flake/home/programs/emacs/core.nix.org
@@ -0,0 +1,20 @@
+#+title: Emacs Configuration
+
+#+begin_src nix
+ { config, pkgs, ... }:
+
+ {
+ home.file = {
+ "./.config/emacs/init.el".source = ./init.el;
+ "./.config/emacs/force-custom-file.el".source = ./force-custom-file.el;
+ "./.config/emacs/package-setup.el".source = ./package-setup.el;
+ "./.config/emacs/user-interface.el".source = ./user-interface.el;
+ "./.config/emacs/tools.el".source = ./tools.el;
+ "./.config/emacs/languages.el".source = ./languages.el;
+ };
+ programs.emacs = {
+ # enable = true;
+ # package = pkgs.emacs-macport;
+ };
+ }
+#+end_src
diff --git a/macos.local/.flake/home/programs/emacs/feed.org.org b/macos.local/.flake/home/programs/emacs/feed.org.org
new file mode 120000
index 0000000..d074855
--- /dev/null
+++ b/macos.local/.flake/home/programs/emacs/feed.org.org
@@ -0,0 +1 @@
+../../../../../common/.config/emacs/feed.org.org \ No newline at end of file
diff --git a/macos.local/.flake/home/programs/emacs/force-custom-file.el.org b/macos.local/.flake/home/programs/emacs/force-custom-file.el.org
new file mode 120000
index 0000000..06a4dc7
--- /dev/null
+++ b/macos.local/.flake/home/programs/emacs/force-custom-file.el.org
@@ -0,0 +1 @@
+../../../../../common/.config/emacs/force-custom-file.el.org \ No newline at end of file
diff --git a/macos.local/.flake/home/programs/emacs/init.el.org b/macos.local/.flake/home/programs/emacs/init.el.org
new file mode 120000
index 0000000..6b2f721
--- /dev/null
+++ b/macos.local/.flake/home/programs/emacs/init.el.org
@@ -0,0 +1 @@
+../../../../../common/.config/emacs/init.el.org \ No newline at end of file
diff --git a/macos.local/.flake/home/programs/emacs/languages.el.org b/macos.local/.flake/home/programs/emacs/languages.el.org
new file mode 120000
index 0000000..dd60c9f
--- /dev/null
+++ b/macos.local/.flake/home/programs/emacs/languages.el.org
@@ -0,0 +1 @@
+../../../../../common/.config/emacs/languages.el.org \ No newline at end of file
diff --git a/macos.local/.flake/home/programs/emacs/package-setup.el.org b/macos.local/.flake/home/programs/emacs/package-setup.el.org
new file mode 120000
index 0000000..c0f3ead
--- /dev/null
+++ b/macos.local/.flake/home/programs/emacs/package-setup.el.org
@@ -0,0 +1 @@
+../../../../../common/.config/emacs/package-setup.el.org \ No newline at end of file
diff --git a/macos.local/.flake/home/programs/emacs/tools.el.org b/macos.local/.flake/home/programs/emacs/tools.el.org
new file mode 120000
index 0000000..ff0296b
--- /dev/null
+++ b/macos.local/.flake/home/programs/emacs/tools.el.org
@@ -0,0 +1 @@
+../../../../../common/.config/emacs/tools.el.org \ No newline at end of file
diff --git a/macos.local/.flake/home/programs/emacs/user-interface.el.org b/macos.local/.flake/home/programs/emacs/user-interface.el.org
new file mode 120000
index 0000000..8a7f782
--- /dev/null
+++ b/macos.local/.flake/home/programs/emacs/user-interface.el.org
@@ -0,0 +1 @@
+../../../../../common/.config/emacs/user-interface.el.org \ No newline at end of file
diff --git a/macos.local/.flake/home/programs/fastfetch.nix.org b/macos.local/.flake/home/programs/fastfetch.nix.org
new file mode 120000
index 0000000..25e2716
--- /dev/null
+++ b/macos.local/.flake/home/programs/fastfetch.nix.org
@@ -0,0 +1 @@
+../../../../common/.flake/home/programs/fastfetch.nix.org \ No newline at end of file
diff --git a/macos.local/.flake/home/programs/git.nix.org b/macos.local/.flake/home/programs/git.nix.org
new file mode 120000
index 0000000..e8ddd28
--- /dev/null
+++ b/macos.local/.flake/home/programs/git.nix.org
@@ -0,0 +1 @@
+../../../../common/.flake/home/programs/git.nix.org \ No newline at end of file
diff --git a/macos.local/.flake/home/programs/neovim.nix.org b/macos.local/.flake/home/programs/neovim.nix.org
new file mode 120000
index 0000000..871eafa
--- /dev/null
+++ b/macos.local/.flake/home/programs/neovim.nix.org
@@ -0,0 +1 @@
+../../../../common/.flake/home/programs/neovim.nix.org \ No newline at end of file
diff --git a/macos.local/.flake/home/programs/zsh.nix.org b/macos.local/.flake/home/programs/zsh.nix.org
new file mode 120000
index 0000000..59d4ec7
--- /dev/null
+++ b/macos.local/.flake/home/programs/zsh.nix.org
@@ -0,0 +1 @@
+../../../../common/.flake/home/programs/zsh.nix.org \ No newline at end of file
diff --git a/macos.local/.flake/system/core.nix.org b/macos.local/.flake/system/core.nix.org
new file mode 100644
index 0000000..d38073f
--- /dev/null
+++ b/macos.local/.flake/system/core.nix.org
@@ -0,0 +1,37 @@
+#+title: System Core
+
+This file imports various system configuration components in addition to enabling flakes and defining the system version.
+
+#+begin_src nix
+ { config, pkgs, ... }:
+
+ {
+ environment.systemPackages = with pkgs; [
+ emacs-macport
+ gnupg
+ neovim
+ yabai
+ skhd
+ ];
+
+ environment.variables.EDITOR = "nvim";
+
+ programs.gnupg.agent.enable = true;
+
+ services.nix-daemon.enable = true;
+ nix.package = pkgs.nix;
+
+ nix.settings.experimental-features = "nix-command flakes";
+
+ programs.zsh.enable = true;
+
+ system.stateVersion = 5;
+
+ nixpkgs.hostPlatform = "aarch64-darwin";
+
+ users.users.jjanzen = {
+ name = "jjanzen";
+ home = "/Users/jjanzen";
+ };
+ }
+#+end_src
diff --git a/macos.local/.gitconfig.org.gpg b/macos.local/.gitconfig.org.gpg
deleted file mode 120000
index b4b87c9..0000000
--- a/macos.local/.gitconfig.org.gpg
+++ /dev/null
@@ -1 +0,0 @@
-../common/.gitconfig.org.gpg \ No newline at end of file
diff --git a/macos.local/.local/share/fonts b/macos.local/.local/share/fonts
deleted file mode 120000
index 9ab89c4..0000000
--- a/macos.local/.local/share/fonts
+++ /dev/null
@@ -1 +0,0 @@
-../../../common/.local/share/fonts \ No newline at end of file
diff --git a/macos.local/.profile.org b/macos.local/.profile.org
deleted file mode 120000
index 6341fcf..0000000
--- a/macos.local/.profile.org
+++ /dev/null
@@ -1 +0,0 @@
-../common/.profile.org \ No newline at end of file
diff --git a/macos.local/.wallpaper b/macos.local/.wallpaper
deleted file mode 120000
index ec41b94..0000000
--- a/macos.local/.wallpaper
+++ /dev/null
@@ -1 +0,0 @@
-../common/.wallpaper \ No newline at end of file
diff --git a/macos.local/.zshrc.org b/macos.local/.zshrc.org
deleted file mode 120000
index ccbdc43..0000000
--- a/macos.local/.zshrc.org
+++ /dev/null
@@ -1 +0,0 @@
-../common/.zshrc.org \ No newline at end of file
diff --git a/nixos/.flake/home/clang-format.nix.org b/nixos/.flake/home/clang-format.nix.org
index 64a2a64..db7166a 100644..120000
--- a/nixos/.flake/home/clang-format.nix.org
+++ b/nixos/.flake/home/clang-format.nix.org
@@ -1,15 +1 @@
-#+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
+../../../common/.flake/home/clang-format.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/cursor.nix.org b/nixos/.flake/home/cursor.nix.org
index 15396a0..3d3d406 100644..120000
--- a/nixos/.flake/home/cursor.nix.org
+++ b/nixos/.flake/home/cursor.nix.org
@@ -1,13 +1 @@
-#+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
+../../../common/.flake/home/cursor.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/fonts.nix.org b/nixos/.flake/home/fonts.nix.org
index 3a01993..53bec1c 100644..120000
--- a/nixos/.flake/home/fonts.nix.org
+++ b/nixos/.flake/home/fonts.nix.org
@@ -1,14 +1 @@
-#+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
+../../../common/.flake/home/fonts.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/hyprland.nix.org b/nixos/.flake/home/hyprland.nix.org
index 725f920..d2a0693 100644..120000
--- a/nixos/.flake/home/hyprland.nix.org
+++ b/nixos/.flake/home/hyprland.nix.org
@@ -1,175 +1 @@
-#+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
+../../../common/.flake/home/hyprland.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/programs/emacs b/nixos/.flake/home/programs/emacs
new file mode 120000
index 0000000..39d7462
--- /dev/null
+++ b/nixos/.flake/home/programs/emacs
@@ -0,0 +1 @@
+../../../../common/.flake/home/programs/emacs \ No newline at end of file
diff --git a/nixos/.flake/home/programs/fastfetch.nix.org b/nixos/.flake/home/programs/fastfetch.nix.org
index 96b2044..25e2716 100644..120000
--- a/nixos/.flake/home/programs/fastfetch.nix.org
+++ b/nixos/.flake/home/programs/fastfetch.nix.org
@@ -1,84 +1 @@
-#+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
+../../../../common/.flake/home/programs/fastfetch.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/programs/foot.nix.org b/nixos/.flake/home/programs/foot.nix.org
index 3490bed..6197c4a 100644..120000
--- a/nixos/.flake/home/programs/foot.nix.org
+++ b/nixos/.flake/home/programs/foot.nix.org
@@ -1,42 +1 @@
-#+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
+../../../../common/.flake/home/programs/foot.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/programs/git.nix.org b/nixos/.flake/home/programs/git.nix.org
index baf3aaa..e8ddd28 100644..120000
--- a/nixos/.flake/home/programs/git.nix.org
+++ b/nixos/.flake/home/programs/git.nix.org
@@ -1,18 +1 @@
-#+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
+../../../../common/.flake/home/programs/git.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/programs/hyprlock.nix.org b/nixos/.flake/home/programs/hyprlock.nix.org
index 4e94386..7a25ac8 100644..120000
--- a/nixos/.flake/home/programs/hyprlock.nix.org
+++ b/nixos/.flake/home/programs/hyprlock.nix.org
@@ -1,42 +1 @@
-#+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 = "<span foreground=\"##cad3f5\">Password...</span>";
- shadow_passes = 2;
- }
- ];
- };
- };
- }
-#+end_src
+../../../../common/.flake/home/programs/hyprlock.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/programs/ncmpcpp.nix.org b/nixos/.flake/home/programs/ncmpcpp.nix.org
index eb1f02f..f91dfd3 100644..120000
--- a/nixos/.flake/home/programs/ncmpcpp.nix.org
+++ b/nixos/.flake/home/programs/ncmpcpp.nix.org
@@ -1,28 +1 @@
-#+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
+../../../../common/.flake/home/programs/ncmpcpp.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/programs/neovim.nix.org b/nixos/.flake/home/programs/neovim.nix.org
index 350eded..871eafa 100644..120000
--- a/nixos/.flake/home/programs/neovim.nix.org
+++ b/nixos/.flake/home/programs/neovim.nix.org
@@ -1,32 +1 @@
-#+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
+../../../../common/.flake/home/programs/neovim.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/programs/ssh.nix.org b/nixos/.flake/home/programs/ssh.nix.org
index a7502d2..363ead0 100644..120000
--- a/nixos/.flake/home/programs/ssh.nix.org
+++ b/nixos/.flake/home/programs/ssh.nix.org
@@ -1,13 +1 @@
-#+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
+../../../../common/.flake/home/programs/ssh.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/programs/waybar.nix.org b/nixos/.flake/home/programs/waybar.nix.org
index 7fe40f3..04d9dd3 100644..120000
--- a/nixos/.flake/home/programs/waybar.nix.org
+++ b/nixos/.flake/home/programs/waybar.nix.org
@@ -1,149 +1 @@
-#+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
+../../../../common/.flake/home/programs/waybar.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/programs/zsh.nix.org b/nixos/.flake/home/programs/zsh.nix.org
index 79795d0..59d4ec7 100644..120000
--- a/nixos/.flake/home/programs/zsh.nix.org
+++ b/nixos/.flake/home/programs/zsh.nix.org
@@ -1,87 +1 @@
-#+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
+../../../../common/.flake/home/programs/zsh.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/services/emacs.nix.org b/nixos/.flake/home/services/emacs.nix.org
index 1a11446..45c44ee 100644..120000
--- a/nixos/.flake/home/services/emacs.nix.org
+++ b/nixos/.flake/home/services/emacs.nix.org
@@ -1,14 +1 @@
-#+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
+../../../../common/.flake/home/services/emacs.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/services/mako.nix.org b/nixos/.flake/home/services/mako.nix.org
index caa0240..b4d7e40 100644..120000
--- a/nixos/.flake/home/services/mako.nix.org
+++ b/nixos/.flake/home/services/mako.nix.org
@@ -1,13 +1 @@
-#+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
+../../../../common/.flake/home/services/mako.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/services/mpd.nix.org b/nixos/.flake/home/services/mpd.nix.org
index b985b2a..4b76825 100644..120000
--- a/nixos/.flake/home/services/mpd.nix.org
+++ b/nixos/.flake/home/services/mpd.nix.org
@@ -1,21 +1 @@
-#+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
+../../../../common/.flake/home/services/mpd.nix.org \ No newline at end of file
diff --git a/nixos/.flake/home/services/syncthing.nix.org b/nixos/.flake/home/services/syncthing.nix.org
index 42dbf50..8d42514 100644..120000
--- a/nixos/.flake/home/services/syncthing.nix.org
+++ b/nixos/.flake/home/services/syncthing.nix.org
@@ -1,12 +1 @@
-#+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
+../../../../common/.flake/home/services/syncthing.nix.org \ No newline at end of file