aboutsummaryrefslogtreecommitdiff
path: root/common/.flake
diff options
context:
space:
mode:
authorJacob Janzen <jacob.a.s.janzen@gmail.com>2024-10-07 18:55:30 -0500
committerJacob Janzen <jacob.a.s.janzen@gmail.com>2024-10-07 18:55:30 -0500
commit616c0b69313ce28bcc727b1763e99604929c30da (patch)
treed09cf3083ead9885000487440f48ce4e43a920f8 /common/.flake
parent0ef7783a21a5f63f45d8c1bc466d0dce435f966e (diff)
begin nix migration for mac
Diffstat (limited to 'common/.flake')
-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.org19
l---------common/.flake/home/programs/emacs/feed.org.org1
l---------common/.flake/home/programs/emacs/force-custom-file.el.org1
l---------common/.flake/home/programs/emacs/init.el.org1
l---------common/.flake/home/programs/emacs/languages.el.org1
l---------common/.flake/home/programs/emacs/package-setup.el.org1
l---------common/.flake/home/programs/emacs/tools.el.org1
l---------common/.flake/home/programs/emacs/user-interface.el.org1
-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
25 files changed, 798 insertions, 0 deletions
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/common/.flake/home/programs/emacs/core.nix.org b/common/.flake/home/programs/emacs/core.nix.org
new file mode 100644
index 0000000..61688be
--- /dev/null
+++ b/common/.flake/home/programs/emacs/core.nix.org
@@ -0,0 +1,19 @@
+#+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;
+ };
+ }
+#+end_src
diff --git a/common/.flake/home/programs/emacs/feed.org.org b/common/.flake/home/programs/emacs/feed.org.org
new file mode 120000
index 0000000..d074855
--- /dev/null
+++ b/common/.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/common/.flake/home/programs/emacs/force-custom-file.el.org b/common/.flake/home/programs/emacs/force-custom-file.el.org
new file mode 120000
index 0000000..06a4dc7
--- /dev/null
+++ b/common/.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/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/common/.flake/home/programs/emacs/languages.el.org b/common/.flake/home/programs/emacs/languages.el.org
new file mode 120000
index 0000000..dd60c9f
--- /dev/null
+++ b/common/.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/common/.flake/home/programs/emacs/package-setup.el.org b/common/.flake/home/programs/emacs/package-setup.el.org
new file mode 120000
index 0000000..c0f3ead
--- /dev/null
+++ b/common/.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/common/.flake/home/programs/emacs/tools.el.org b/common/.flake/home/programs/emacs/tools.el.org
new file mode 120000
index 0000000..ff0296b
--- /dev/null
+++ b/common/.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/common/.flake/home/programs/emacs/user-interface.el.org b/common/.flake/home/programs/emacs/user-interface.el.org
new file mode 120000
index 0000000..8a7f782
--- /dev/null
+++ b/common/.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/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