Home

dotnix @main - refs - log -
-
https://git.jolheiser.com/dotnix.git
My nix dotfiles
tree log patch
wayland Signed-off-by: jolheiser <git@jolheiser.com>
Signature
-----BEGIN SSH SIGNATURE----- U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgBTEvCQk6VqUAdN2RuH6bj1dNkY oOpbPWj+jw4ua1B1cAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 AAAAQG6c8u89+mvJhB+mTD1HSXqw3USJ4wLKcMl2oKmKx8u3kM2heQYPWNgq0FV5r4eEr8 PliIntTzY+hZMr2/bfYwg= -----END SSH SIGNATURE-----
jolheiser <git@jolheiser.com>
1 month ago
15 changed files, 580 additions(+), 64 deletions(-)
apps/de/default.nixapps/gui/default.nixapps/gui/firefox.nixapps/gui/niri.kdlapps/gui/niri.nixapps/gui/swaylock.nixapps/gui/waybar.nixapps/gui/wlogout.nixapps/nogui/bat.nixapps/nogui/default.nixconfig.nixflake.lockflake.nixmachines/common/gui/default.nixmachines/common/nogui/default.nix
M apps/de/default.nix -> apps/de/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/apps/de/default.nix b/apps/de/default.nix
index 2901424a24a04399e82b967901bdea5441f85451..991504a7549c78e5dda808010d7b17ae070a66e3 100644
--- a/apps/de/default.nix
+++ b/apps/de/default.nix
@@ -1,12 +1,9 @@
-{ pkgs, ... }:
+{ jolheiser, ... }:
 {
-  imports = [ ./gtk.nix ];
+  # imports = [ ./gtk.nix ];
   dconf.settings =
     let
-      wallpaper = pkgs.fetchurl {
-        url = "https://user.fm/files/v2-3834da30df507c4ba97a551571e98e33/nixppuccin.png";
-        hash = "sha256-dwM+Wi2gse7Eu4f/suU2BsVACPHMfSaXYOpZPqx6/SQ=";
-      };
+      inherit (jolheiser) wallpaper;
     in
     {
       "org/cinnamon/desktop/background" = {
M apps/gui/default.nix -> apps/gui/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
diff --git a/apps/gui/default.nix b/apps/gui/default.nix
index 2138f78838e8fd05d3f713f4c0c96a0a5fce0131..8263c8a0ec80fad4cdc9e259a71fd229c7b8390e 100644
--- a/apps/gui/default.nix
+++ b/apps/gui/default.nix
@@ -3,13 +3,20 @@ {
   imports = [
     ../nogui
     ./firefox.nix
-    ./flameshot.nix
+    # ./flameshot.nix
     ./ghostty.nix
+    ./niri.nix
     # ./obs.nix
     ./spotify.nix
+    ./swaylock.nix
+    ./waybar.nix
     # ./wezterm.nix
+    ./wlogout.nix
     # ./zed.nix
   ];
+  catppuccin = {
+    swaylock.enable = true;
+  };
   home = {
     packages = with pkgs; [
       discord
M apps/gui/firefox.nix -> apps/gui/firefox.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
diff --git a/apps/gui/firefox.nix b/apps/gui/firefox.nix
index 5a840c3cf7d988a7f85f2504dbc9ff88642c47b1..a0de185516989884ef48364f2efb08cdd52f9e16 100644
--- a/apps/gui/firefox.nix
+++ b/apps/gui/firefox.nix
@@ -60,14 +60,17 @@             ];
           };
         };
       };
-      extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [
-        bitwarden
-        clearurls
-        mailvelope
-        multi-account-containers
-        refined-github
-        ublock-origin
-      ];
+      extensions = {
+        force = true;
+        packages = with pkgs.nur.repos.rycee.firefox-addons; [
+          bitwarden
+          clearurls
+          mailvelope
+          multi-account-containers
+          refined-github
+          ublock-origin
+        ];
+      };
       settings =
         {
           "app.update.auto" = false;
I apps/gui/niri.kdl
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
diff --git a/apps/gui/niri.kdl b/apps/gui/niri.kdl
new file mode 100644
index 0000000000000000000000000000000000000000..05442f64464259e301fef8f2b0dce8e2c8bdff80
--- /dev/null
+++ b/apps/gui/niri.kdl
@@ -0,0 +1,222 @@
+input {
+    keyboard {
+        xkb
+        numlock
+    }
+
+    touchpad {
+        tap
+        natural-scroll
+    }
+
+    mouse
+    trackpoint 
+}
+
+layout {
+    gaps 16
+
+    center-focused-column "never"
+
+    preset-column-widths {
+        proportion 0.33333
+        proportion 0.5
+        proportion 0.66667
+    }
+
+    default-column-width { proportion 0.5; }
+
+    focus-ring {
+        width 4
+        active-color "#7fc8ff"
+        inactive-color "#505050"
+    }
+
+    border {
+        off
+        width 4
+        active-color "#ffc87f"
+        inactive-color "#505050"
+        urgent-color "#9b0000"
+    }
+
+    shadow {
+        softness 30
+        spread 5
+        offset x=0 y=5
+        color "#0007"
+    }
+
+    struts
+}
+
+spawn-at-startup "<WAYBAR>"
+spawn-at-startup "<SWAYBG>" "--image" "<WALLPAPER>" "--mode" "fill"
+
+hotkey-overlay
+
+screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
+
+animations
+
+window-rule {
+    match app-id=r#"^org\.wezfurlong\.wezterm$"#
+    default-column-width {}
+}
+
+window-rule {
+    match app-id=r#"firefox$"# title="^Picture-in-Picture$"
+    open-floating true
+}
+
+binds {
+    Mod+Shift+Slash { show-hotkey-overlay; }
+
+    Mod+T hotkey-overlay-title="Open a Terminal: ghostty" { spawn "ghostty"; }
+    Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; }
+    Mod+B hotkey-overlay-title="Open a Browser: firefox" { spawn "firefox"; }
+    Super+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
+
+    XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; }
+    XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
+    XF86AudioMute        allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
+    XF86AudioMicMute     allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
+
+
+    XF86MonBrightnessUp allow-when-locked=true { spawn "<BRIGHTNESSCTL>" "--class=backlight" "set" "+10%"; }
+    XF86MonBrightnessDown allow-when-locked=true { spawn "<BRIGHTNESSCTL>" "--class=backlight" "set" "10%-"; }
+
+    Mod+O repeat=false { toggle-overview; }
+
+    Mod+Q repeat=false { close-window; }
+
+    Mod+Left  { focus-column-left; }
+    Mod+Down  { focus-window-down; }
+    Mod+Up    { focus-window-up; }
+    Mod+Right { focus-column-right; }
+    Mod+H     { focus-column-left; }
+    Mod+J     { focus-window-down; }
+    Mod+K     { focus-window-up; }
+    Mod+L     { focus-column-right; }
+
+    Mod+Ctrl+Left  { move-column-left; }
+    Mod+Ctrl+Down  { move-window-down; }
+    Mod+Ctrl+Up    { move-window-up; }
+    Mod+Ctrl+Right { move-column-right; }
+    Mod+Ctrl+H     { move-column-left; }
+    Mod+Ctrl+J     { move-window-down; }
+    Mod+Ctrl+K     { move-window-up; }
+    Mod+Ctrl+L     { move-column-right; }
+
+    Mod+Home { focus-column-first; }
+    Mod+End  { focus-column-last; }
+    Mod+Ctrl+Home { move-column-to-first; }
+    Mod+Ctrl+End  { move-column-to-last; }
+
+    Mod+Shift+Left  { focus-monitor-left; }
+    Mod+Shift+Down  { focus-monitor-down; }
+    Mod+Shift+Up    { focus-monitor-up; }
+    Mod+Shift+Right { focus-monitor-right; }
+    Mod+Shift+H     { focus-monitor-left; }
+    Mod+Shift+J     { focus-monitor-down; }
+    Mod+Shift+K     { focus-monitor-up; }
+    Mod+Shift+L     { focus-monitor-right; }
+
+    Mod+Shift+Ctrl+Left  { move-column-to-monitor-left; }
+    Mod+Shift+Ctrl+Down  { move-column-to-monitor-down; }
+    Mod+Shift+Ctrl+Up    { move-column-to-monitor-up; }
+    Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
+    Mod+Shift+Ctrl+H     { move-column-to-monitor-left; }
+    Mod+Shift+Ctrl+J     { move-column-to-monitor-down; }
+    Mod+Shift+Ctrl+K     { move-column-to-monitor-up; }
+    Mod+Shift+Ctrl+L     { move-column-to-monitor-right; }
+
+    Mod+Page_Down      { focus-workspace-down; }
+    Mod+Page_Up        { focus-workspace-up; }
+    Mod+U              { focus-workspace-down; }
+    Mod+I              { focus-workspace-up; }
+    Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
+    Mod+Ctrl+Page_Up   { move-column-to-workspace-up; }
+    Mod+Ctrl+U         { move-column-to-workspace-down; }
+    Mod+Ctrl+I         { move-column-to-workspace-up; }
+
+    Mod+Shift+Page_Down { move-workspace-down; }
+    Mod+Shift+Page_Up   { move-workspace-up; }
+    Mod+Shift+U         { move-workspace-down; }
+    Mod+Shift+I         { move-workspace-up; }
+
+    Mod+WheelScrollDown      cooldown-ms=150 { focus-workspace-down; }
+    Mod+WheelScrollUp        cooldown-ms=150 { focus-workspace-up; }
+    Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
+    Mod+Ctrl+WheelScrollUp   cooldown-ms=150 { move-column-to-workspace-up; }
+
+    Mod+WheelScrollRight      { focus-column-right; }
+    Mod+WheelScrollLeft       { focus-column-left; }
+    Mod+Ctrl+WheelScrollRight { move-column-right; }
+    Mod+Ctrl+WheelScrollLeft  { move-column-left; }
+
+    Mod+Shift+WheelScrollDown      { focus-column-right; }
+    Mod+Shift+WheelScrollUp        { focus-column-left; }
+    Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
+    Mod+Ctrl+Shift+WheelScrollUp   { move-column-left; }
+
+    Mod+1 { focus-workspace 1; }
+    Mod+2 { focus-workspace 2; }
+    Mod+3 { focus-workspace 3; }
+    Mod+4 { focus-workspace 4; }
+    Mod+5 { focus-workspace 5; }
+    Mod+6 { focus-workspace 6; }
+    Mod+7 { focus-workspace 7; }
+    Mod+8 { focus-workspace 8; }
+    Mod+9 { focus-workspace 9; }
+    Mod+Ctrl+1 { move-column-to-workspace 1; }
+    Mod+Ctrl+2 { move-column-to-workspace 2; }
+    Mod+Ctrl+3 { move-column-to-workspace 3; }
+    Mod+Ctrl+4 { move-column-to-workspace 4; }
+    Mod+Ctrl+5 { move-column-to-workspace 5; }
+    Mod+Ctrl+6 { move-column-to-workspace 6; }
+    Mod+Ctrl+7 { move-column-to-workspace 7; }
+    Mod+Ctrl+8 { move-column-to-workspace 8; }
+    Mod+Ctrl+9 { move-column-to-workspace 9; }
+
+    Mod+BracketLeft  { consume-or-expel-window-left; }
+    Mod+BracketRight { consume-or-expel-window-right; }
+
+    Mod+Comma  { consume-window-into-column; }
+    Mod+Period { expel-window-from-column; }
+
+    Mod+R { switch-preset-column-width; }
+    Mod+Shift+R { switch-preset-window-height; }
+    Mod+Ctrl+R { reset-window-height; }
+    Mod+F { maximize-column; }
+    Mod+Shift+F { fullscreen-window; }
+
+    Mod+Ctrl+F { expand-column-to-available-width; }
+
+    Mod+C { center-column; }
+
+    Mod+Ctrl+C { center-visible-columns; }
+
+    Mod+Minus { set-column-width "-10%"; }
+    Mod+Equal { set-column-width "+10%"; }
+
+    Mod+Shift+Minus { set-window-height "-10%"; }
+    Mod+Shift+Equal { set-window-height "+10%"; }
+
+    Mod+V       { toggle-window-floating; }
+    Mod+Shift+V { switch-focus-between-floating-and-tiling; }
+
+    Mod+W { toggle-column-tabbed-display; }
+
+    Print { screenshot; }
+    Ctrl+Print { screenshot-screen; }
+    Alt+Print { screenshot-window; }
+
+    Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
+
+    Mod+Shift+E { quit; }
+    Ctrl+Alt+Delete { quit; }
+
+    Mod+Shift+P { power-off-monitors; }
+}
+
I apps/gui/niri.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/apps/gui/niri.nix b/apps/gui/niri.nix
new file mode 100644
index 0000000000000000000000000000000000000000..3ac5a9b789a60110b1bc8967d31e33b76c5e9863
--- /dev/null
+++ b/apps/gui/niri.nix
@@ -0,0 +1,14 @@
+{ pkgs, jolheiser, ... }:
+
+{
+  xdg.configFile."niri/config.kdl".text =
+    builtins.replaceStrings
+      [ "<WAYBAR>" "<SWAYBG>" "<WALLPAPER>" "<BRIGHTNESSCTL>" ]
+      [
+        (pkgs.lib.getExe pkgs.waybar)
+        (pkgs.lib.getExe pkgs.swaybg)
+        jolheiser.wallpaper
+        (pkgs.lib.getExe pkgs.brightnessctl)
+      ]
+      (builtins.readFile ./niri.kdl);
+}
I apps/gui/swaylock.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
diff --git a/apps/gui/swaylock.nix b/apps/gui/swaylock.nix
new file mode 100644
index 0000000000000000000000000000000000000000..55704e424728edee4d30266c9f0f3b3af0976b9f
--- /dev/null
+++ b/apps/gui/swaylock.nix
@@ -0,0 +1,10 @@
+{ jolheiser, ... }:
+{
+  programs.swaylock = {
+    enable = true;
+    settings = {
+      image = jolheiser.wallpaper;
+      scaling = "fill";
+    };
+  };
+}
I apps/gui/waybar.nix
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
diff --git a/apps/gui/waybar.nix b/apps/gui/waybar.nix
new file mode 100644
index 0000000000000000000000000000000000000000..abb7fa0a7ffa90d4a72b8905fd4c1ea4b410efc6
--- /dev/null
+++ b/apps/gui/waybar.nix
@@ -0,0 +1,165 @@
+{ pkgs, ... }:
+{
+  programs.waybar = {
+    enable = true;
+    settings.bar = {
+      backlight = {
+        device = "intel_backlight";
+        format = "{icon}";
+        format-icons = [
+          ""
+          ""
+          ""
+          ""
+          ""
+          ""
+          ""
+          ""
+          ""
+        ];
+      };
+      battery = {
+        format = "{icon}";
+        format-alt = "{icon}";
+        format-charging = "󰂄";
+        format-icons = [
+          "󰁺"
+          "󰁻"
+          "󰁼"
+          "󰁽"
+          "󰁾"
+          "󰁿"
+          "󰂀"
+          "󰂂"
+          "󰁹"
+        ];
+        format-plugged = "";
+        states = {
+          critical = 15;
+          warning = 30;
+        };
+      };
+      clock = {
+        format = "🕒 {:%I:%M %p}";
+        format-alt = "📅 {:%m/%d/%Y}";
+        timezone = "America/Chicago";
+        tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
+      };
+      "custom/lock" = {
+        format = "";
+        on-click = "sh -c '(sleep 0.5s; ${pkgs.lib.getExe pkgs.swaylock})' & disown";
+        tooltip = false;
+      };
+      "custom/power" = {
+        format = "⏻";
+        on-click = "${pkgs.lib.getExe pkgs.wlogout} &";
+        tooltip = false;
+      };
+      layer = "top";
+      modules-right = [
+        "pulseaudio"
+        "backlight"
+        "battery"
+        "clock"
+        "tray"
+        "custom/lock"
+        "custom/power"
+      ];
+      position = "top";
+      pulseaudio = {
+        format = "{icon}  {volume}%";
+        format-icons = {
+          default = [
+            ""
+            ""
+            " "
+          ];
+        };
+        format-muted = "";
+        on-click = "${pkgs.lib.getExe pkgs.pavucontrol}";
+      };
+      tray = {
+        icon-size = 21;
+        spacing = 10;
+      };
+    };
+    style = ''
+      * {
+        font-family: MonaspiceXe Nerd Font;
+        font-size: 17px;
+        min-height: 0;
+      }
+
+      #waybar {
+        background: transparent;
+        color: @text;
+        margin: 5px 5px;
+      }
+
+      #tray,
+      #backlight,
+      #clock,
+      #battery,
+      #pulseaudio,
+      #custom-lock,
+      #custom-power {
+        background-color: @surface0;
+        padding: 0.5rem 1rem;
+        margin: 5px 0;
+      }
+
+      #clock {
+        color: @blue;
+        border-radius: 0px 1rem 1rem 0px;
+        margin-right: 1rem;
+      }
+
+      #battery {
+        color: @green;
+      }
+
+      #battery.charging {
+        color: @green;
+      }
+
+      #battery.warning:not(.charging) {
+        color: @red;
+      }
+
+      #backlight {
+        color: @yellow;
+      }
+
+      #backlight, #battery {
+          border-radius: 0;
+      }
+
+      #pulseaudio {
+        color: @maroon;
+        border-radius: 1rem 0px 0px 1rem;
+        margin-left: 1rem;
+      }
+
+      #custom-music {
+        color: @mauve;
+        border-radius: 1rem;
+      }
+
+      #custom-lock {
+          border-radius: 1rem 0px 0px 1rem;
+          color: @lavender;
+      }
+
+      #custom-power {
+          margin-right: 1rem;
+          border-radius: 0px 1rem 1rem 0px;
+          color: @red;
+      }
+
+      #tray {
+        margin-right: 1rem;
+        border-radius: 1rem;
+      }
+    '';
+  };
+}
I apps/gui/wlogout.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
diff --git a/apps/gui/wlogout.nix b/apps/gui/wlogout.nix
new file mode 100644
index 0000000000000000000000000000000000000000..54fe8b3c73d0d1e725982f74870f88fffa75f51b
--- /dev/null
+++ b/apps/gui/wlogout.nix
@@ -0,0 +1,43 @@
+{
+  programs.wlogout = {
+    enable = true;
+    layout = [
+      {
+        "label" = "lock";
+        "action" = "swaylock";
+        "text" = "Lock";
+        "keybind" = "l";
+      }
+      {
+        "label" = "hibernate";
+        "action" = "systemctl hibernate";
+        "text" = "Hibernate";
+        "keybind" = "h";
+      }
+      {
+        "label" = "logout";
+        "action" = "niri msg action quit --skip-confirmation";
+        "text" = "Logout";
+        "keybind" = "e";
+      }
+      {
+        "label" = "shutdown";
+        "action" = "systemctl poweroff";
+        "text" = "Shutdown";
+        "keybind" = "s";
+      }
+      {
+        "label" = "suspend";
+        "action" = "systemctl suspend";
+        "text" = "Suspend";
+        "keybind" = "u";
+      }
+      {
+        "label" = "reboot";
+        "action" = "systemctl reboot";
+        "text" = "Reboot";
+        "keybind" = "r";
+      }
+    ];
+  };
+}
M apps/nogui/bat.nix -> apps/nogui/bat.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
diff --git a/apps/nogui/bat.nix b/apps/nogui/bat.nix
index 8eff3e66a5c4b88cf75f2df646c3e28a6aa8ccbf..79ffa2d06a504a4e14cbdc5cf366f8d17d7a9c30 100644
--- a/apps/nogui/bat.nix
+++ b/apps/nogui/bat.nix
@@ -1,20 +1,3 @@
-{ pkgs, ... }:
 {
-  programs.bat = {
-    enable = true;
-    config = {
-      theme = "ctp-mocha";
-    };
-    themes = {
-      ctp-mocha = {
-        src = pkgs.fetchFromGitHub {
-          owner = "catppuccin";
-          repo = "bat";
-          rev = "ba4d16880d63e656acced2b7d4e034e4a93f74b1";
-          sha256 = "1g2r6j33f4zys853i1c5gnwcdbwb6xv5w6pazfdslxf69904lrg9";
-        };
-        file = "Catppuccin-mocha.tmTheme";
-      };
-    };
-  };
+  programs.bat.enable = true;
 }
M apps/nogui/default.nix -> apps/nogui/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/apps/nogui/default.nix b/apps/nogui/default.nix
index b68b2d0a2e0363df42a40993ab967977a99809f9..b1a18bde12b8fe80f501079371b9507e50f4849f 100644
--- a/apps/nogui/default.nix
+++ b/apps/nogui/default.nix
@@ -22,6 +22,15 @@     ./ssh.nix
     ./xdg.nix
     # ./zoxide.nix
   ];
+  catppuccin = {
+    enable = true;
+    accent = "lavender";
+    flavor = "mocha";
+    cursors = {
+      enable = true;
+      accent = "lavender";
+    };
+  };
   home = {
     packages = with pkgs; [
       age
I config.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/config.nix b/config.nix
new file mode 100644
index 0000000000000000000000000000000000000000..19f86c1aca633a33f788d20b5595dca35f02b45c
--- /dev/null
+++ b/config.nix
@@ -0,0 +1,14 @@
+{
+  pkgs ? import <nixpkgs> { },
+}:
+{
+  username = "jolheiser";
+  wallpaper =
+    let
+      src = pkgs.fetchurl {
+        url = "https://user.fm/files/v2-3834da30df507c4ba97a551571e98e33/nixppuccin.png";
+        hash = "sha256-dwM+Wi2gse7Eu4f/suU2BsVACPHMfSaXYOpZPqx6/SQ=";
+      };
+    in
+    "${src}";
+}
M flake.lock -> flake.lock
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
diff --git a/flake.lock b/flake.lock
index a24712ce9dc46a9ee919b6942cd9bcb302ffb50e..400bcc288cca7471dc38c0ddb891c9c4686803fc 100644
--- a/flake.lock
+++ b/flake.lock
@@ -25,9 +25,27 @@         "repo": "agenix",
         "type": "github"
       }
     },
+    "catppuccin": {
+      "inputs": {
+        "nixpkgs": "nixpkgs"
+      },
+      "locked": {
+        "lastModified": 1758956381,
+        "narHash": "sha256-ROUw5E8CibG3jEy6oHjrkF6/P60eiaUJmc2s2ecC/LM=",
+        "owner": "catppuccin",
+        "repo": "nix",
+        "rev": "02dee881c3e644e2b561f407742f1fd927c40b83",
+        "type": "github"
+      },
+      "original": {
+        "owner": "catppuccin",
+        "repo": "nix",
+        "type": "github"
+      }
+    },
     "cfg": {
       "inputs": {
-        "nixpkgs": "nixpkgs"
+        "nixpkgs": "nixpkgs_2"
       },
       "locked": {
         "lastModified": 1756152754,
@@ -66,7 +84,7 @@       }
     },
     "gomodinit": {
       "inputs": {
-        "nixpkgs": "nixpkgs_2"
+        "nixpkgs": "nixpkgs_3"
       },
       "locked": {
         "lastModified": 1734153556,
@@ -84,7 +102,7 @@       }
     },
     "helix": {
       "inputs": {
-        "nixpkgs": "nixpkgs_3"
+        "nixpkgs": "nixpkgs_4"
       },
       "locked": {
         "lastModified": 1754481695,
@@ -138,6 +156,22 @@       }
     },
     "nixpkgs": {
       "locked": {
+        "lastModified": 1758035966,
+        "narHash": "sha256-qqIJ3yxPiB0ZQTT9//nFGQYn8X/PBoJbofA7hRKZnmE=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "8d4ddb19d03c65a36ad8d189d001dc32ffb0306b",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_2": {
+      "locked": {
         "lastModified": 1755615617,
         "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
         "owner": "nixos",
@@ -152,7 +186,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_2": {
+    "nixpkgs_3": {
       "locked": {
         "lastModified": 1733935885,
         "narHash": "sha256-xyiHLs6KJ1fxeGmcCxKjJE4yJknVJxbC8Y/ZRYyC8WE=",
@@ -168,7 +202,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_3": {
+    "nixpkgs_4": {
       "locked": {
         "lastModified": 1752683762,
         "narHash": "sha256-CVC4bpthYhKk4Qb4mt00SqfJ7CJ4vfTX06pLN2OHa1c=",
@@ -184,22 +218,6 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_4": {
-      "locked": {
-        "lastModified": 1757745802,
-        "narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixos",
-        "ref": "nixos-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
     "nixpkgs_5": {
       "locked": {
         "lastModified": 1757745802,
@@ -217,6 +235,22 @@         "type": "github"
       }
     },
     "nixpkgs_6": {
+      "locked": {
+        "lastModified": 1757745802,
+        "narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_7": {
       "locked": {
         "lastModified": 1741037377,
         "narHash": "sha256-SvtvVKHaUX4Owb+PasySwZsoc5VUeTf1px34BByiOxw=",
@@ -232,7 +266,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_7": {
+    "nixpkgs_8": {
       "locked": {
         "lastModified": 1756911493,
         "narHash": "sha256-6n/n1GZQ/vi+LhFXMSyoseKdNfc2QQaSBXJdgamrbkE=",
@@ -248,7 +282,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_8": {
+    "nixpkgs_9": {
       "locked": {
         "lastModified": 1743583204,
         "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=",
@@ -266,7 +300,7 @@     },
     "nur": {
       "inputs": {
         "flake-parts": "flake-parts",
-        "nixpkgs": "nixpkgs_5"
+        "nixpkgs": "nixpkgs_6"
       },
       "locked": {
         "lastModified": 1757845540,
@@ -284,7 +318,7 @@       }
     },
     "pokego": {
       "inputs": {
-        "nixpkgs": "nixpkgs_6"
+        "nixpkgs": "nixpkgs_7"
       },
       "locked": {
         "lastModified": 1741123315,
@@ -303,12 +337,13 @@     },
     "root": {
       "inputs": {
         "agenix": "agenix",
+        "catppuccin": "catppuccin",
         "cfg": "cfg",
         "gomodinit": "gomodinit",
         "helix": "helix",
         "home-manager": "home-manager",
         "nixos-hardware": "nixos-hardware",
-        "nixpkgs": "nixpkgs_4",
+        "nixpkgs": "nixpkgs_5",
         "nur": "nur",
         "pokego": "pokego",
         "spectre": "spectre",
@@ -317,7 +352,7 @@       }
     },
     "spectre": {
       "inputs": {
-        "nixpkgs": "nixpkgs_7"
+        "nixpkgs": "nixpkgs_8"
       },
       "locked": {
         "lastModified": 1757116466,
@@ -365,7 +400,7 @@       }
     },
     "tclip": {
       "inputs": {
-        "nixpkgs": "nixpkgs_8",
+        "nixpkgs": "nixpkgs_9",
         "utils": "utils"
       },
       "locked": {
M flake.nix -> flake.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
diff --git a/flake.nix b/flake.nix
index 04d9c1fdf43fbdfc4aa9fc78ff0e4a86cd70f261..26369edafe53f48145e401194e612ffe75f97f86 100644
--- a/flake.nix
+++ b/flake.nix
@@ -16,6 +16,7 @@         nixpkgs.follows = "nixpkgs";
       };
     };
     nixos-hardware.url = "github:nixos/nixos-hardware/master";
+    catppuccin.url = "github:catppuccin/nix";
     nur.url = "github:nix-community/NUR";
     helix.url = "git+https://git.jolheiser.com/helix.drv.git";
     gomodinit.url = "git+https://git.jolheiser.com/gomodinit.git";
@@ -31,6 +32,7 @@       nixpkgs,
       home-manager,
       nixos-hardware,
       agenix,
+      catppuccin,
       ...
     }@inputs:
     let
@@ -53,6 +55,8 @@         inherit system;
         overlays = [ overlay ];
         config.allowUnfree = true;
       };
+      jolheiser = import ./config.nix { inherit pkgs; };
+      inherit (jolheiser) username;
       commonConfig =
         { config, ... }:
         {
@@ -60,10 +64,10 @@           config = {
             nixpkgs.overlays = [ overlay ];
           };
         };
-      username = "jolheiser";
       system = "x86_64-linux";
       homeManagerModules = [
         agenix.homeManagerModules.age
+        catppuccin.homeModules.catppuccin
         {
           home = {
             inherit username;
@@ -103,6 +107,9 @@       overlays.default = overlay;
       homeConfigurations = {
         "jolheiser" = home-manager.lib.homeManagerConfiguration {
           inherit pkgs;
+          extraSpecialArgs = {
+            inherit jolheiser;
+          };
           modules = homeManagerModules ++ [ ./apps/de ];
         };
       };
@@ -111,6 +118,7 @@         "genmaicha" = nixpkgs.lib.nixosSystem {
           inherit system;
           modules = [
             nixos-hardware.nixosModules.framework-13-7040-amd
+            catppuccin.nixosModules.catppuccin
             ./machines/genmaicha
             commonConfig
           ];
M machines/common/gui/default.nix -> machines/common/gui/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
diff --git a/machines/common/gui/default.nix b/machines/common/gui/default.nix
index 2249c1b171c40ae91d898342e13e897e640a886c..6b2fe0d23e5165434088dfd3615123e4d854f895 100644
--- a/machines/common/gui/default.nix
+++ b/machines/common/gui/default.nix
@@ -16,13 +16,15 @@     };
     pulseaudio.enable = false;
     displayManager.sddm = {
       enable = true;
+      package = pkgs.kdePackages.sddm;
       wayland.enable = true;
     };
     gnome.gnome-keyring.enable = true;
   };
   programs = {
     niri.enable = true;
-    waybar.enable = true;
+  };
+  catppuccin = {
   };
   fonts.packages = with pkgs.nerd-fonts; [
     hack
@@ -33,7 +35,6 @@   ];
   environment.systemPackages = with pkgs; [
     tailscale-systray
     fuzzel
-    swaylock
     mako
     swayidle
   ];
M machines/common/nogui/default.nix -> machines/common/nogui/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
diff --git a/machines/common/nogui/default.nix b/machines/common/nogui/default.nix
index 92f8db17c75a487261d7f4b3db45bc8874ae278b..8bce6008c9fb06510a5d9f9ba5919c34cefea1c7 100644
--- a/machines/common/nogui/default.nix
+++ b/machines/common/nogui/default.nix
@@ -73,5 +73,10 @@       ${pkgs.nvd}/bin/nvd --nix-bin-dir=${pkgs.nix}/bin diff /run/current-system "$systemConfig"
     '';
   };
 
+  catppuccin = {
+    enable = true;
+    accent = "lavender";
+    flavor = "mocha";
+  };
   services.tailscale.enable = true;
 }