diff --git a/homeModules/gdi.nix b/homeModules/gdi.nix
index 9cfedfe..015cf06 100644
--- a/homeModules/gdi.nix
+++ b/homeModules/gdi.nix
@@ -13,707 +13,699 @@
};
};
- config = let
- cursorTheme = {
- name = "catppuccin-mocha-dark-cursors";
- package = pkgs.catppuccin-cursors.mochaDark;
- size = 16;
- };
- in
- lib.mkIf config.cow.gdi.enable {
- nixpkgs.overlays = [inputs.niri.overlays.niri];
-
- home.packages = with pkgs; [
- alsa-utils
- dconf
+ config = lib.mkIf config.cow.gdi.enable {
+ nixpkgs.overlays = [inputs.niri.overlays.niri];
- cursorTheme.package
+ home.packages = with pkgs; [
+ alsa-utils
+ dconf
- xdg-terminal-exec # For gtk-launch, etc to be able to open `Terminal` desktop entries
+ xdg-terminal-exec # For gtk-launch, etc to be able to open `Terminal` desktop entries
- # Shell Components
- hyprlock
+ # Shell Components
+ hyprlock
- ## Waybar Deps
- qt6.qttools
+ ## Waybar Deps
+ qt6.qttools
- ## Audio Control
- pavucontrol
+ ## Audio Control
+ pavucontrol
- ## Image Viewer
- loupe
+ ## Image Viewer
+ loupe
- ## Screen Recording Deps
- wf-recorder
- slurp
+ ## Screen Recording Deps
+ wf-recorder
+ slurp
- ## Notifications
- libnotify
- swaynotificationcenter
+ ## Notifications
+ libnotify
+ swaynotificationcenter
- ## Misc.
- wl-clipboard
- xdg-utils
- ];
+ ## Misc.
+ wl-clipboard
+ xdg-utils
+ ];
- xdg.userDirs.setSessionVariables = true;
- xdg.mimeApps = {
- enable = true;
- defaultApplications = {
- "inode/directory" = lib.mkIf config.cow.yazi.enable "yazi.desktop";
- "inode/mount-point" = lib.mkIf config.cow.yazi.enable "yazi.desktop";
- };
- # As many as possible to override system stuff
- defaultApplicationPackages =
- [pkgs.loupe]
- ++ (lib.optional config.cow.keepassxc.enable pkgs.keepassxc)
- ++ (lib.optional config.cow.qmplay2.enable pkgs.qmplay2)
- ++ (lib.optional config.cow.firefox.enable config.programs.firefox.package)
- ++ (lib.optional config.cow.kitty.enable config.programs.kitty.package);
+ xdg.userDirs.setSessionVariables = true;
+ xdg.mimeApps = {
+ enable = true;
+ defaultApplications = {
+ "inode/directory" = lib.mkIf config.cow.yazi.enable "yazi.desktop";
+ "inode/mount-point" = lib.mkIf config.cow.yazi.enable "yazi.desktop";
};
+ # As many as possible to override system stuff
+ defaultApplicationPackages =
+ [pkgs.loupe]
+ ++ (lib.optional config.cow.keepassxc.enable pkgs.keepassxc)
+ ++ (lib.optional config.cow.qmplay2.enable pkgs.qmplay2)
+ ++ (lib.optional config.cow.firefox.enable config.programs.firefox.package)
+ ++ (lib.optional config.cow.kitty.enable config.programs.kitty.package);
+ };
- fonts.fontconfig.enable = false;
+ fonts.fontconfig.enable = false;
- programs.niri = {
- enable = true;
- settings = {
- prefer-no-csd = true;
+ programs.niri = {
+ enable = true;
+ settings = {
+ prefer-no-csd = true;
- environment =
- {
- NIXOS_OZONE_WL = "1";
- }
- // (builtins.mapAttrs (_: v: builtins.toString v) config.home.sessionVariables); # TODO: Hack?
+ environment =
+ {
+ NIXOS_OZONE_WL = "1";
+ }
+ // (builtins.mapAttrs (_: v: builtins.toString v) config.home.sessionVariables); # TODO: Hack?
- screenshot-path = "~/Pictures/Screenshots/%Y%m%d_%H%M%S.png";
+ screenshot-path = "~/Pictures/Screenshots/%Y%m%d_%H%M%S.png";
- xwayland-satellite.path = lib.getExe pkgs.xwayland-satellite-unstable;
+ xwayland-satellite.path = lib.getExe pkgs.xwayland-satellite-unstable;
- window-rules = [
- {
- geometry-corner-radius = let
- s = 10.0;
- in {
- top-left = s;
- top-right = s;
- bottom-left = s;
- bottom-right = s;
- };
- clip-to-geometry = true;
- }
- {
- matches = [{is-window-cast-target = true;}];
+ window-rules = [
+ {
+ geometry-corner-radius = let
+ s = 10.0;
+ in {
+ top-left = s;
+ top-right = s;
+ bottom-left = s;
+ bottom-right = s;
+ };
+ clip-to-geometry = true;
+ }
+ {
+ matches = [{is-window-cast-target = true;}];
- focus-ring = {
- active.color = "#f38ba8";
- inactive.color = "#7d0d2d";
- };
+ focus-ring = {
+ active.color = "#f38ba8";
+ inactive.color = "#7d0d2d";
+ };
- border.inactive.color = "#7d0d2d";
- shadow.color = "#7d0d2d70";
- }
- ];
+ border.inactive.color = "#7d0d2d";
+ shadow.color = "#7d0d2d70";
+ }
+ ];
- hotkey-overlay = {
- hide-not-bound = true;
- skip-at-startup = true;
- };
+ hotkey-overlay = {
+ hide-not-bound = true;
+ skip-at-startup = true;
+ };
- clipboard.disable-primary = true;
+ clipboard.disable-primary = true;
- input = {
- focus-follows-mouse = {
- enable = true;
- max-scroll-amount = "10%";
- };
- keyboard.numlock = true;
- touchpad.natural-scroll = true;
+ input = {
+ focus-follows-mouse = {
+ enable = true;
+ max-scroll-amount = "10%";
};
+ keyboard.numlock = true;
+ touchpad.natural-scroll = true;
+ };
- layout = {
- # gaps = 4;
- # center-focused-column = "on-overflow";
- struts = let
- val = -4;
- in {
- top = val;
- bottom = val;
- left = val;
- right = val;
- };
- default-column-width.proportion = 0.45;
- focus-ring.width = 2;
- focus-ring.active.gradient = {
- in' = "oklch longer hue";
- angle = 135;
- relative-to = "workspace-view";
- from = "#0f08";
- to = "#f007";
- };
+ layout = {
+ # gaps = 4;
+ # center-focused-column = "on-overflow";
+ struts = let
+ val = -4;
+ in {
+ top = val;
+ bottom = val;
+ left = val;
+ right = val;
+ };
+ default-column-width.proportion = 0.45;
+ focus-ring.width = 2;
+ focus-ring.active.gradient = {
+ in' = "oklch longer hue";
+ angle = 135;
+ relative-to = "workspace-view";
+ from = "#0f08";
+ to = "#f007";
};
+ };
- binds = with config.lib.niri.actions; let
- spawnPkg = p: spawn "${lib.getExe p}";
- move-column-to-workspace = n: {move-column-to-workspace = [n];};
- spawnPlayerctl = spawnPkg pkgs.playerctl;
- spawnRofi = spawn "rofi";
- spawnSh = spawn "sh" "-c";
- spawnOsd = spawn "${pkgs.swayosd}/bin/swayosd-client";
- launchDesktop = x: spawn "${pkgs.gtk3}/bin/gtk-launch" "${x}.desktop";
- brightness = spawnOsd "--brightness";
- volume = spawnOsd "--output-volume";
- in {
- # Niri Stuff
-
- ## Basics
- "Mod+X".action = quit;
- "Mod+Tab".action = toggle-overview;
- "Mod+Slash".action = show-hotkey-overlay;
- "Mod+C".action = close-window;
-
- "Mod+Left".action = focus-column-left;
- "Mod+Down".action = focus-window-down;
- "Mod+Up".action = focus-window-up;
- "Mod+Right".action = focus-column-right;
-
- "Mod+Shift+Left".action = move-column-left;
- "Mod+Shift+Down".action = move-window-down;
- "Mod+Shift+Up".action = move-window-up;
- "Mod+Shift+Right".action = move-column-right;
-
- "Mod+Home".action = focus-column-first;
- "Mod+End".action = focus-column-last;
- "Mod+Shift+Home".action = move-column-to-first;
- "Mod+Shift+End".action = move-column-to-last;
-
- "Mod+BracketLeft".action = consume-or-expel-window-left;
- "Mod+BracketRight".action = consume-or-expel-window-right;
-
- "Mod+Comma".action = set-column-width "-100";
- "Mod+Shift+Comma".action = set-column-width "-20";
- "Mod+Period".action = set-column-width "+100";
- "Mod+Shift+Period".action = set-column-width "+20";
-
- "Mod+F".action = maximize-column;
- "Mod+Shift+F".action = fullscreen-window;
- "Mod+Ctrl+F".action = expand-column-to-available-width;
- "Mod+Ctrl+Shift+F".action = toggle-windowed-fullscreen;
-
- "Mod+Page_Down".action = focus-workspace-down;
- "Mod+Page_Up".action = focus-workspace-up;
- "Mod+U".action = focus-workspace-down;
- "Mod+I".action = focus-workspace-up;
- "Mod+Shift+Page_Down".action = move-column-to-workspace-down;
- "Mod+Shift+Page_Up".action = move-column-to-workspace-up;
- "Mod+Shift+U".action = move-column-to-workspace-down;
- "Mod+Shift+I".action = move-column-to-workspace-up;
-
- "Mod+1".action = focus-workspace 1;
- "Mod+2".action = focus-workspace 2;
- "Mod+3".action = focus-workspace 3;
- "Mod+4".action = focus-workspace 4;
- "Mod+5".action = focus-workspace 5;
- "Mod+6".action = focus-workspace 6;
- "Mod+7".action = focus-workspace 7;
- "Mod+8".action = focus-workspace 8;
- "Mod+9".action = focus-workspace 9;
- "Mod+Ctrl+1".action = move-column-to-workspace 1;
- "Mod+Ctrl+2".action = move-column-to-workspace 2;
- "Mod+Ctrl+3".action = move-column-to-workspace 3;
- "Mod+Ctrl+4".action = move-column-to-workspace 4;
- "Mod+Ctrl+5".action = move-column-to-workspace 5;
- "Mod+Ctrl+6".action = move-column-to-workspace 6;
- "Mod+Ctrl+7".action = move-column-to-workspace 7;
- "Mod+Ctrl+8".action = move-column-to-workspace 8;
- "Mod+Ctrl+9".action = move-column-to-workspace 9;
-
- "Mod+Escape" = {
- action = toggle-keyboard-shortcuts-inhibit;
- allow-inhibiting = false;
- };
+ binds = with config.lib.niri.actions; let
+ spawnPkg = p: spawn "${lib.getExe p}";
+ move-column-to-workspace = n: {move-column-to-workspace = [n];};
+ spawnPlayerctl = spawnPkg pkgs.playerctl;
+ spawnRofi = spawn "rofi";
+ spawnSh = spawn "sh" "-c";
+ spawnOsd = spawn "${pkgs.swayosd}/bin/swayosd-client";
+ launchDesktop = x: spawn "${pkgs.gtk3}/bin/gtk-launch" "${x}.desktop";
+ brightness = spawnOsd "--brightness";
+ volume = spawnOsd "--output-volume";
+ in {
+ # Niri Stuff
+
+ ## Basics
+ "Mod+X".action = quit;
+ "Mod+Tab".action = toggle-overview;
+ "Mod+Slash".action = show-hotkey-overlay;
+ "Mod+C".action = close-window;
+
+ "Mod+Left".action = focus-column-left;
+ "Mod+Down".action = focus-window-down;
+ "Mod+Up".action = focus-window-up;
+ "Mod+Right".action = focus-column-right;
+
+ "Mod+Shift+Left".action = move-column-left;
+ "Mod+Shift+Down".action = move-window-down;
+ "Mod+Shift+Up".action = move-window-up;
+ "Mod+Shift+Right".action = move-column-right;
+
+ "Mod+Home".action = focus-column-first;
+ "Mod+End".action = focus-column-last;
+ "Mod+Shift+Home".action = move-column-to-first;
+ "Mod+Shift+End".action = move-column-to-last;
+
+ "Mod+BracketLeft".action = consume-or-expel-window-left;
+ "Mod+BracketRight".action = consume-or-expel-window-right;
+
+ "Mod+Comma".action = set-column-width "-100";
+ "Mod+Shift+Comma".action = set-column-width "-20";
+ "Mod+Period".action = set-column-width "+100";
+ "Mod+Shift+Period".action = set-column-width "+20";
+
+ "Mod+F".action = maximize-column;
+ "Mod+Shift+F".action = fullscreen-window;
+ "Mod+Ctrl+F".action = expand-column-to-available-width;
+ "Mod+Ctrl+Shift+F".action = toggle-windowed-fullscreen;
+
+ "Mod+Page_Down".action = focus-workspace-down;
+ "Mod+Page_Up".action = focus-workspace-up;
+ "Mod+U".action = focus-workspace-down;
+ "Mod+I".action = focus-workspace-up;
+ "Mod+Shift+Page_Down".action = move-column-to-workspace-down;
+ "Mod+Shift+Page_Up".action = move-column-to-workspace-up;
+ "Mod+Shift+U".action = move-column-to-workspace-down;
+ "Mod+Shift+I".action = move-column-to-workspace-up;
+
+ "Mod+1".action = focus-workspace 1;
+ "Mod+2".action = focus-workspace 2;
+ "Mod+3".action = focus-workspace 3;
+ "Mod+4".action = focus-workspace 4;
+ "Mod+5".action = focus-workspace 5;
+ "Mod+6".action = focus-workspace 6;
+ "Mod+7".action = focus-workspace 7;
+ "Mod+8".action = focus-workspace 8;
+ "Mod+9".action = focus-workspace 9;
+ "Mod+Ctrl+1".action = move-column-to-workspace 1;
+ "Mod+Ctrl+2".action = move-column-to-workspace 2;
+ "Mod+Ctrl+3".action = move-column-to-workspace 3;
+ "Mod+Ctrl+4".action = move-column-to-workspace 4;
+ "Mod+Ctrl+5".action = move-column-to-workspace 5;
+ "Mod+Ctrl+6".action = move-column-to-workspace 6;
+ "Mod+Ctrl+7".action = move-column-to-workspace 7;
+ "Mod+Ctrl+8".action = move-column-to-workspace 8;
+ "Mod+Ctrl+9".action = move-column-to-workspace 9;
+
+ "Mod+Escape" = {
+ action = toggle-keyboard-shortcuts-inhibit;
+ allow-inhibiting = false;
+ };
- "Mod+W".action = spawn "systemctl" "--user" "restart" "waybar.service";
- "Mod+Shift+W".action = spawn "systemctl" "--user" "stop" "waybar.service";
+ "Mod+W".action = spawn "systemctl" "--user" "restart" "waybar.service";
+ "Mod+Shift+W".action = spawn "systemctl" "--user" "stop" "waybar.service";
- "Mod+Shift+R".action =
- spawnSh "pkill wf-recorder --signal SIGINT ||${pkgs.nushell}/bin/nu ${../res/screenrec.nu}";
- "Mod+Shift+S".action = {
- screenshot = [];
- };
- "Print".action = {
- screenshot = [];
- };
- "Mod+L".action = spawnSh "pidof hyprlock || hyprlock --grace 0";
- "Mod+Z".action = spawn "systemctl" "suspend";
- "Super+Alt+Ctrl+Shift+L".action = spawn "xdg-open" "https://linkedin.com";
-
- # Terminal
- "Mod+T".action = spawnSh "exec $TERMINAL";
-
- # Yazi
- "Mod+E".action = lib.mkIf config.cow.yazi.enable (launchDesktop "yazi");
-
- # Rofi
- "Mod+S".action = spawnRofi "-show" "drun" "-show-icons";
- "Mod+Space".action = spawnPkg pkgs.nushell "${../res/open-bookmark.nu}" "~/Documents/Docs/Note";
- "Mod+Shift+E".action = spawnRofi "-modi" "emoji" "-show" "emoji";
- "Mod+Alt+C".action =
- spawnRofi "-show" "calc" "-modi" "calc" "-no-show-match" "-no-sort" "-calc-command"
- "echo -n '{result}' | wl-copy";
- "Mod+V".action =
- spawnSh "cliphist list | sed -r 's/\\[\\[ binary data (.* .iB) (.*) (.*) \\]\\]/ \\2 Image (\\3, \\1)/g' | rofi -dmenu -display-columns 2 -p Clipboard | cliphist decode | wl-copy";
- "Mod+Alt+V".action =
- spawnSh "echo -e \"Yes\\nNo\" | [[ $(rofi -dmenu -mesg \"Clear Clipboard History?\" -p Clear) == \"Yes\" ]] && cliphist wipe";
-
- # Firefox
- "Mod+Q".action = lib.mkIf config.cow.firefox.enable (launchDesktop "firefox-devedition");
-
- # Pavucontrol
- "Mod+A".action = spawnPkg pkgs.pavucontrol "--tab" "5";
-
- # Brightness
- "XF86MonBrightnessUp" = {
- action = brightness "raise";
- allow-when-locked = true;
- };
- "XF86MonBrightnessDown" = {
- action = brightness "lower";
- allow-when-locked = true;
- };
+ "Mod+Shift+R".action =
+ spawnSh "pkill wf-recorder --signal SIGINT ||${pkgs.nushell}/bin/nu ${../res/screenrec.nu}";
+ "Mod+Shift+S".action = {
+ screenshot = [];
+ };
+ "Print".action = {
+ screenshot = [];
+ };
+ "Mod+L".action = spawnSh "pidof hyprlock || hyprlock --grace 0";
+ "Mod+Z".action = spawn "systemctl" "suspend";
+ "Super+Alt+Ctrl+Shift+L".action = spawn "xdg-open" "https://linkedin.com";
+
+ # Terminal
+ "Mod+T".action = spawnSh "exec $TERMINAL";
+
+ # Yazi
+ "Mod+E".action = lib.mkIf config.cow.yazi.enable (launchDesktop "yazi");
+
+ # Rofi
+ "Mod+S".action = spawnRofi "-show" "drun" "-show-icons";
+ "Mod+Space".action = spawnPkg pkgs.nushell "${../res/open-bookmark.nu}" "~/Documents/Docs/Note";
+ "Mod+Shift+E".action = spawnRofi "-modi" "emoji" "-show" "emoji";
+ "Mod+Alt+C".action =
+ spawnRofi "-show" "calc" "-modi" "calc" "-no-show-match" "-no-sort" "-calc-command"
+ "echo -n '{result}' | wl-copy";
+ "Mod+V".action =
+ spawnSh "cliphist list | sed -r 's/\\[\\[ binary data (.* .iB) (.*) (.*) \\]\\]/ \\2 Image (\\3, \\1)/g' | rofi -dmenu -display-columns 2 -p Clipboard | cliphist decode | wl-copy";
+ "Mod+Alt+V".action =
+ spawnSh "echo -e \"Yes\\nNo\" | [[ $(rofi -dmenu -mesg \"Clear Clipboard History?\" -p Clear) == \"Yes\" ]] && cliphist wipe";
+
+ # Firefox
+ "Mod+Q".action = lib.mkIf config.cow.firefox.enable (launchDesktop "firefox-devedition");
+
+ # Pavucontrol
+ "Mod+A".action = spawnPkg pkgs.pavucontrol "--tab" "5";
+
+ # Brightness
+ "XF86MonBrightnessUp" = {
+ action = brightness "raise";
+ allow-when-locked = true;
+ };
+ "XF86MonBrightnessDown" = {
+ action = brightness "lower";
+ allow-when-locked = true;
+ };
- # Volume
- "XF86AudioRaiseVolume" = {
- action = volume "raise";
- allow-when-locked = true;
- };
- "XF86AudioLowerVolume" = {
- action = volume "lower";
- allow-when-locked = true;
- };
- "XF86AudioMute" = {
- action = volume "mute-toggle";
- allow-when-locked = true;
- };
+ # Volume
+ "XF86AudioRaiseVolume" = {
+ action = volume "raise";
+ allow-when-locked = true;
+ };
+ "XF86AudioLowerVolume" = {
+ action = volume "lower";
+ allow-when-locked = true;
+ };
+ "XF86AudioMute" = {
+ action = volume "mute-toggle";
+ allow-when-locked = true;
+ };
- # Playerctl
- "XF86AudioPlay" = {
- action = spawnPlayerctl "play-pause";
- allow-when-locked = true;
- };
- "XF86AudioPause" = {
- action = spawnPlayerctl "pause";
- allow-when-locked = true;
- };
- "XF86AudioStop" = {
- action = spawnPlayerctl "stop";
- allow-when-locked = true;
- };
- "XF86AudioNext" = {
- action = spawnPlayerctl "next";
- allow-when-locked = true;
- };
- "XF86AudioPrev" = {
- action = spawnPlayerctl "previous";
- allow-when-locked = true;
- };
+ # Playerctl
+ "XF86AudioPlay" = {
+ action = spawnPlayerctl "play-pause";
+ allow-when-locked = true;
+ };
+ "XF86AudioPause" = {
+ action = spawnPlayerctl "pause";
+ allow-when-locked = true;
+ };
+ "XF86AudioStop" = {
+ action = spawnPlayerctl "stop";
+ allow-when-locked = true;
+ };
+ "XF86AudioNext" = {
+ action = spawnPlayerctl "next";
+ allow-when-locked = true;
+ };
+ "XF86AudioPrev" = {
+ action = spawnPlayerctl "previous";
+ allow-when-locked = true;
};
};
};
+ };
- catppuccin.hyprlock.useDefaultConfig = false;
- programs.hyprlock = {
- enable = true;
+ catppuccin.hyprlock.useDefaultConfig = false;
+ programs.hyprlock = {
+ enable = true;
- settings = {
- background = {
+ settings = {
+ background = {
+ monitor = "";
+ path = "${config.cow.pictures.bg}";
+ blur_passes = 1;
+ };
+ shape = [
+ {
monitor = "";
- path = "${config.cow.pictures.bg}";
- blur_passes = 1;
- };
- shape = [
- {
- monitor = "";
- color = "$crust";
- position = "0, 30";
- rounding = 10;
- border_size = 2;
- border_color = "$mauve";
- size = "500, 500";
- shadow_passes = 1;
- shadow_size = 2;
- }
- {
- monitor = "";
- color = "$crust";
- position = "0, -30";
- rounding = 10;
- border_size = 2;
- border_color = "$mauve";
- size = "600, 50";
- valign = "top";
- shadow_passes = 1;
- shadow_size = 2;
- }
- ];
- image = {
+ color = "$crust";
+ position = "0, 30";
+ rounding = 10;
+ border_size = 2;
+ border_color = "$mauve";
+ size = "500, 500";
+ shadow_passes = 1;
+ shadow_size = 2;
+ }
+ {
monitor = "";
- path = "${config.cow.pictures.pfp}";
- size = 150;
- rounding = -1;
- border_size = 4;
+ color = "$crust";
+ position = "0, -30";
+ rounding = 10;
+ border_size = 2;
border_color = "$mauve";
- rotate = 0;
- position = "0, 120";
+ size = "600, 50";
+ valign = "top";
+ shadow_passes = 1;
+ shadow_size = 2;
+ }
+ ];
+ image = {
+ monitor = "";
+ path = "${config.cow.pictures.pfp}";
+ size = 150;
+ rounding = -1;
+ border_size = 4;
+ border_color = "$mauve";
+ rotate = 0;
+ position = "0, 120";
+ halign = "center";
+ valign = "center";
+ };
+ "input-field" = {
+ monitor = "";
+ size = "250, 50";
+ outline_thickness = 2;
+ dots_size = 0.25; # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.15; # Scale of dots' absolute size, 0.0 - 1.0
+ dots_center = false;
+ dots_rounding = -1; # -1 default circle, -2 follow input-field rounding
+ outer_color = "$surface0";
+ inner_color = "$base";
+ font_color = "$text";
+ fade_on_empty = false;
+ fade_timeout = 1000; # Milliseconds before fade_on_empty is triggered.
+ placeholder_text = ''Password'';
+ hide_input = false;
+ rounding = -1; # -1 means complete rounding (circle/oval)
+ check_color = "$peach";
+ fail_color = "$red"; # if authentication failed, changes outer_color and fail message color
+ fail_text = "$FAIL ($ATTEMPTS)";
+ fail_transition = 300; # transition time in ms between normal outer_color and fail_color
+ capslock_color = -1;
+ numlock_color = -1;
+ bothlock_color = -1; # when both locks are active. -1 means don't change outer color (same for above)
+ invert_numlock = false; # change color if numlock is off
+ swap_font_color = false; # see below
+
+ position = "0, -80";
+ halign = "center";
+ valign = "center";
+ };
+ label = [
+ {
+ monitor = "";
+ text = "$DESC";
+ color = "$text";
+ font_size = 25;
+ font_family = "sans-serif";
+ rotate = 0; # degrees, counter-clockwise
+
+ position = "0, 0";
halign = "center";
valign = "center";
- };
- "input-field" = {
+ }
+ {
monitor = "";
- size = "250, 50";
- outline_thickness = 2;
- dots_size = 0.25; # Scale of input-field height, 0.2 - 0.8
- dots_spacing = 0.15; # Scale of dots' absolute size, 0.0 - 1.0
- dots_center = false;
- dots_rounding = -1; # -1 default circle, -2 follow input-field rounding
- outer_color = "$surface0";
- inner_color = "$base";
- font_color = "$text";
- fade_on_empty = false;
- fade_timeout = 1000; # Milliseconds before fade_on_empty is triggered.
- placeholder_text = ''Password'';
- hide_input = false;
- rounding = -1; # -1 means complete rounding (circle/oval)
- check_color = "$peach";
- fail_color = "$red"; # if authentication failed, changes outer_color and fail message color
- fail_text = "$FAIL ($ATTEMPTS)";
- fail_transition = 300; # transition time in ms between normal outer_color and fail_color
- capslock_color = -1;
- numlock_color = -1;
- bothlock_color = -1; # when both locks are active. -1 means don't change outer color (same for above)
- invert_numlock = false; # change color if numlock is off
- swap_font_color = false; # see below
-
- position = "0, -80";
+ text = ''cmd[update:30000] echo " $(${pkgs.uutils-coreutils-noprefix}/bin/date +"%A, %B %-d | %I:%M %p")$(${pkgs.nushell}/bin/nu ${../res/bat_display.nu}) "'';
+ color = "$text";
+ font_size = 20;
+ font_family = "sans-serif";
+ rotate = 0; # degrees, counter-clockwise
+
+ position = "0, -40";
halign = "center";
- valign = "center";
- };
- label = [
- {
- monitor = "";
- text = "$DESC";
- color = "$text";
- font_size = 25;
- font_family = "sans-serif";
- rotate = 0; # degrees, counter-clockwise
-
- position = "0, 0";
- halign = "center";
- valign = "center";
- }
- {
- monitor = "";
- text = ''cmd[update:30000] echo " $(${pkgs.uutils-coreutils-noprefix}/bin/date +"%A, %B %-d | %I:%M %p")$(${pkgs.nushell}/bin/nu ${../res/bat_display.nu}) "'';
- color = "$text";
- font_size = 20;
- font_family = "sans-serif";
- rotate = 0; # degrees, counter-clockwise
-
- position = "0, -40";
- halign = "center";
- valign = "top";
- }
- ];
- };
+ valign = "top";
+ }
+ ];
};
+ };
- catppuccin.rofi.enable = false;
+ catppuccin.rofi.enable = false;
- systemd.user.services = let
- target = config.wayland.systemd.target;
- mkShellService = {
- desc,
- service,
- }: {
- Install = {
- WantedBy = [target];
- };
-
- Unit = {
- ConditionEnvironment = "WAYLAND_DISPLAY";
- Description = desc;
- After = [target];
- PartOf = [target];
- };
+ systemd.user.services = let
+ target = config.wayland.systemd.target;
+ mkShellService = {
+ desc,
+ service,
+ }: {
+ Install = {
+ WantedBy = [target];
+ };
- Service = service;
+ Unit = {
+ ConditionEnvironment = "WAYLAND_DISPLAY";
+ Description = desc;
+ After = [target];
+ PartOf = [target];
};
- in {
- battery-notif = lib.mkIf config.cow.gdi.doIdle (mkShellService {
- desc = "Battery Notification Service";
-
- service = {
- ExecStart = ''${pkgs.nushell}/bin/nu --plugins ${
- lib.getExe inputs.nu_plugin_dbus.packages.${pkgs.system}.default
- } -- ${../res/battery_notif.nu}'';
- Restart = "on-failure";
- RestartSec = "10";
- };
- });
-
- swaybg = lib.mkIf config.cow.pictures.enable (mkShellService {
- desc = "Sway Background Image";
- service = {
- ExecStart = "${lib.getExe pkgs.swaybg} -m fill --image ${config.cow.pictures.bg}";
- Restart = "on-failure";
- RestartSec = "10";
- };
- });
- };
- services.wayland-mpris-idle-inhibit = lib.mkIf config.cow.gdi.doIdle {
- enable = true;
- ignorePlayers = ["kdeconnect" "playerctld"];
+ Service = service;
};
+ in {
+ battery-notif = lib.mkIf config.cow.gdi.doIdle (mkShellService {
+ desc = "Battery Notification Service";
+
+ service = {
+ ExecStart = ''${pkgs.nushell}/bin/nu --plugins ${
+ lib.getExe inputs.nu_plugin_dbus.packages.${pkgs.system}.default
+ } -- ${../res/battery_notif.nu}'';
+ Restart = "on-failure";
+ RestartSec = "10";
+ };
+ });
+
+ swaybg = lib.mkIf config.cow.pictures.enable (mkShellService {
+ desc = "Sway Background Image";
+ service = {
+ ExecStart = "${lib.getExe pkgs.swaybg} -m fill --image ${config.cow.pictures.bg}";
+ Restart = "on-failure";
+ RestartSec = "10";
+ };
+ });
+ };
- qt = {
- enable = true;
- platformTheme.name = "kvantum";
- style.name = "kvantum";
- };
+ services.wayland-mpris-idle-inhibit = lib.mkIf config.cow.gdi.doIdle {
+ enable = true;
+ ignorePlayers = ["kdeconnect" "playerctld"];
+ };
- home.pointerCursor = {
- inherit (cursorTheme) name package size;
- enable = true;
- gtk.enable = true;
- x11.enable = true;
- };
+ qt = {
+ enable = true;
+ platformTheme.name = "kvantum";
+ style.name = "kvantum";
+ };
- gtk = {
- enable = true;
- gtk2.extraConfig = "gtk-application-prefer-dark-theme=true";
- gtk3.extraConfig.gtk-application-prefer-dark-theme = true;
- gtk4.extraConfig.gtk-application-prefer-dark-theme = true;
- gtk4.theme = config.gtk.theme;
- };
+ catppuccin.cursors.accent = "dark";
+
+ home.pointerCursor = {
+ enable = true;
+ gtk.enable = true;
+ x11.enable = true;
+ };
- dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
+ gtk = {
+ enable = true;
+ gtk2.extraConfig = "gtk-application-prefer-dark-theme=true";
+ gtk3.extraConfig.gtk-application-prefer-dark-theme = true;
+ gtk4.extraConfig.gtk-application-prefer-dark-theme = true;
+ gtk4.theme = config.gtk.theme;
+ };
- services = {
- gnome-keyring.enable = lib.mkForce false;
+ dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
- swaync = {
- enable = true;
- settings = {
- control-center-exclusive-zone = false;
- # control-center-height = 1000;
- control-center-margin-bottom = 10;
- control-center-margin-left = 10;
- control-center-margin-right = 10;
- control-center-margin-top = 0;
- # control-center-width = 800;
- fit-to-screen = false;
- hide-on-action = true;
- hide-on-clear = false;
- image-visibility = "when-available";
- keyboard-shortcuts = true;
- # notification-body-image-height = 100;
- # notification-body-image-width = 200;
- notification-icon-size = 32;
- # notification-window-width = 500;
- positionX = "center";
- positionY = "top";
- script-fail-notify = true;
- scripts = {
- all = {
- exec = "${pkgs.nushell}/bin/nu ${../res/notification.nu} ${../res/notif-sounds}";
- urgency = ".*";
- };
- };
- timeout = 10;
- timeout-critical = 0;
- timeout-low = 5;
- transition-time = 200;
- widget-config = {
- dnd = {
- text = "Do Not Disturb";
- };
- label = {
- max-lines = 1;
- text = "Notification Center";
- };
- title = {
- button-text = "Clear All";
- clear-all-button = true;
- text = "Notification Center";
- };
+ services = {
+ gnome-keyring.enable = lib.mkForce false;
+
+ swaync = {
+ enable = true;
+ settings = {
+ control-center-exclusive-zone = false;
+ # control-center-height = 1000;
+ control-center-margin-bottom = 10;
+ control-center-margin-left = 10;
+ control-center-margin-right = 10;
+ control-center-margin-top = 0;
+ # control-center-width = 800;
+ fit-to-screen = false;
+ hide-on-action = true;
+ hide-on-clear = false;
+ image-visibility = "when-available";
+ keyboard-shortcuts = true;
+ # notification-body-image-height = 100;
+ # notification-body-image-width = 200;
+ notification-icon-size = 32;
+ # notification-window-width = 500;
+ positionX = "center";
+ positionY = "top";
+ script-fail-notify = true;
+ scripts = {
+ all = {
+ exec = "${pkgs.nushell}/bin/nu ${../res/notification.nu} ${../res/notif-sounds}";
+ urgency = ".*";
};
- widgets = [
- "title"
- "dnd"
- "notifications"
- ];
};
- };
-
- swayidle = let
- lockCmd = args: "pidof hyprlock || ${lib.getExe pkgs.hyprlock} ${args} &";
- in
- lib.mkIf config.cow.gdi.doIdle {
- enable = true;
- timeouts = [
- {
- timeout = 120;
- command = lockCmd "--grace 5";
- }
- {
- timeout = 240;
- command = "${pkgs.systemd}/bin/systemctl suspend";
- }
- ];
- events = {
- "before-sleep" = lockCmd "--grace 0";
- "unlock" = "pkill hyprlock --signal SIGUSR1";
- "lock" = lockCmd "--grace 0";
+ timeout = 10;
+ timeout-critical = 0;
+ timeout-low = 5;
+ transition-time = 200;
+ widget-config = {
+ dnd = {
+ text = "Do Not Disturb";
+ };
+ label = {
+ max-lines = 1;
+ text = "Notification Center";
+ };
+ title = {
+ button-text = "Clear All";
+ clear-all-button = true;
+ text = "Notification Center";
};
};
-
- cliphist = {
- enable = true;
- systemdTargets = lib.mkForce [
- config.wayland.systemd.target
+ widgets = [
+ "title"
+ "dnd"
+ "notifications"
];
};
- udiskie = {
- enable = true;
- automount = false;
- tray = "never";
- };
- playerctld.enable = true;
- wlsunset = {
- enable = true;
- sunrise = "6:00";
- sunset = "22:00";
- };
- swayosd = {
+ };
+
+ swayidle = let
+ lockCmd = args: "pidof hyprlock || ${lib.getExe pkgs.hyprlock} ${args} &";
+ in
+ lib.mkIf config.cow.gdi.doIdle {
enable = true;
- stylePath = pkgs.writeText "swayosd-style.css" ''
- window#osd {
- border-radius: 5rem;
+ timeouts = [
+ {
+ timeout = 120;
+ command = lockCmd "--grace 5";
}
-
- #container {
- padding: 5px 10px;
+ {
+ timeout = 240;
+ command = "${pkgs.systemd}/bin/systemctl suspend";
}
- '';
+ ];
+ events = {
+ "before-sleep" = lockCmd "--grace 0";
+ "unlock" = "pkill hyprlock --signal SIGUSR1";
+ "lock" = lockCmd "--grace 0";
+ };
};
+
+ cliphist = {
+ enable = true;
+ systemdTargets = lib.mkForce [
+ config.wayland.systemd.target
+ ];
+ };
+ udiskie = {
+ enable = true;
+ automount = false;
+ tray = "never";
+ };
+ playerctld.enable = true;
+ wlsunset = {
+ enable = true;
+ sunrise = "6:00";
+ sunset = "22:00";
+ };
+ swayosd = {
+ enable = true;
+ stylePath = pkgs.writeText "swayosd-style.css" ''
+ window#osd {
+ border-radius: 5rem;
+ }
+
+ #container {
+ padding: 5px 10px;
+ }
+ '';
};
+ };
- programs = {
- rofi = {
- enable = true;
- package = pkgs.rofi.override {
- plugins = with pkgs; [
- rofi-emoji
- rofi-power-menu
- rofi-bluetooth
- rofi-calc
- rofi-pulse-select
- ];
- };
- theme = let
- inherit (config.lib.formats.rasi) mkLiteral;
- in {
- "@import" = "${config.catppuccin.sources.rofi}/themes/catppuccin-${config.catppuccin.rofi.flavor}.rasi";
- "*" =
- (builtins.mapAttrs (name: value: mkLiteral "@${value}") {
- "bg0" = "base";
- "bg1" = "mantle";
- "bg2" = "crust";
- "bg3" = config.catppuccin.accent;
- "fg0" = "subtext1";
- "fg1" = "text";
- "fg2" = "subtext0";
- "fg3" = "overlay0";
- "fg4" = "surface0";
- })
- // {
- font = mkLiteral ''"Roboto 14"'';
- background-color = mkLiteral "transparent";
- text-color = mkLiteral "@fg0";
- margin = mkLiteral "0px";
- padding = mkLiteral "0px";
- spacing = mkLiteral "0px";
- };
- "window" = {
- location = mkLiteral "north";
- y-offset = mkLiteral "calc(50% - 176px)";
- width = mkLiteral "600";
- border-radius = mkLiteral "24px";
- background-color = mkLiteral "@bg0";
- };
- "mainbox" = {
- padding = mkLiteral "12px";
- };
- "inputbar" = {
- background-color = mkLiteral "@bg1";
- border-color = mkLiteral "@bg3";
- border = mkLiteral "2px";
- border-radius = mkLiteral "16px";
- padding = mkLiteral "8px 16px";
- spacing = mkLiteral "8px";
- children = mkLiteral "[ prompt, entry ]";
- };
- "prompt" = {
- text-color = mkLiteral "@fg2";
- };
- "entry" = {
- placeholder = mkLiteral ''"Search"'';
- placeholder-color = mkLiteral "@fg3";
- };
- "message" = {
- margin = mkLiteral "12px 0 0";
- border-radius = mkLiteral "16px";
- border-color = mkLiteral "@bg2";
- background-color = mkLiteral "@bg2";
- };
- "textbox" = {
- padding = mkLiteral "8px 24px";
- };
- "listview" = {
+ programs = {
+ rofi = {
+ enable = true;
+ package = pkgs.rofi.override {
+ plugins = with pkgs; [
+ rofi-emoji
+ rofi-power-menu
+ rofi-bluetooth
+ rofi-calc
+ rofi-pulse-select
+ ];
+ };
+ theme = let
+ inherit (config.lib.formats.rasi) mkLiteral;
+ in {
+ "@import" = "${config.catppuccin.sources.rofi}/themes/catppuccin-${config.catppuccin.rofi.flavor}.rasi";
+ "*" =
+ (builtins.mapAttrs (name: value: mkLiteral "@${value}") {
+ "bg0" = "base";
+ "bg1" = "mantle";
+ "bg2" = "crust";
+ "bg3" = config.catppuccin.accent;
+ "fg0" = "subtext1";
+ "fg1" = "text";
+ "fg2" = "subtext0";
+ "fg3" = "overlay0";
+ "fg4" = "surface0";
+ })
+ // {
+ font = mkLiteral ''"Roboto 14"'';
background-color = mkLiteral "transparent";
- margin = mkLiteral "12px 0 0";
- lines = mkLiteral "8";
- columns = mkLiteral "2";
- fixed-height = mkLiteral "false";
- };
- "element" = {
- padding = mkLiteral "8px 16px";
- spacing = mkLiteral "8px";
- border-radius = mkLiteral "16px";
- };
- "element normal active" = {
- text-color = mkLiteral "@bg3";
- };
- "element alternate active" = {
- text-color = mkLiteral "@bg3";
- };
- "element selected normal, element selected active" = {
- text-color = mkLiteral "@fg4";
- background-color = mkLiteral "@bg3";
- };
- "element-icon" = {
- size = mkLiteral "1em";
- vertical-align = mkLiteral "0.5";
- };
- "element-text" = {
- text-color = mkLiteral "inherit";
- };
+ text-color = mkLiteral "@fg0";
+ margin = mkLiteral "0px";
+ padding = mkLiteral "0px";
+ spacing = mkLiteral "0px";
+ };
+ "window" = {
+ location = mkLiteral "north";
+ y-offset = mkLiteral "calc(50% - 176px)";
+ width = mkLiteral "600";
+ border-radius = mkLiteral "24px";
+ background-color = mkLiteral "@bg0";
+ };
+ "mainbox" = {
+ padding = mkLiteral "12px";
+ };
+ "inputbar" = {
+ background-color = mkLiteral "@bg1";
+ border-color = mkLiteral "@bg3";
+ border = mkLiteral "2px";
+ border-radius = mkLiteral "16px";
+ padding = mkLiteral "8px 16px";
+ spacing = mkLiteral "8px";
+ children = mkLiteral "[ prompt, entry ]";
+ };
+ "prompt" = {
+ text-color = mkLiteral "@fg2";
+ };
+ "entry" = {
+ placeholder = mkLiteral ''"Search"'';
+ placeholder-color = mkLiteral "@fg3";
+ };
+ "message" = {
+ margin = mkLiteral "12px 0 0";
+ border-radius = mkLiteral "16px";
+ border-color = mkLiteral "@bg2";
+ background-color = mkLiteral "@bg2";
+ };
+ "textbox" = {
+ padding = mkLiteral "8px 24px";
+ };
+ "listview" = {
+ background-color = mkLiteral "transparent";
+ margin = mkLiteral "12px 0 0";
+ lines = mkLiteral "8";
+ columns = mkLiteral "2";
+ fixed-height = mkLiteral "false";
+ };
+ "element" = {
+ padding = mkLiteral "8px 16px";
+ spacing = mkLiteral "8px";
+ border-radius = mkLiteral "16px";
+ };
+ "element normal active" = {
+ text-color = mkLiteral "@bg3";
+ };
+ "element alternate active" = {
+ text-color = mkLiteral "@bg3";
+ };
+ "element selected normal, element selected active" = {
+ text-color = mkLiteral "@fg4";
+ background-color = mkLiteral "@bg3";
+ };
+ "element-icon" = {
+ size = mkLiteral "1em";
+ vertical-align = mkLiteral "0.5";
+ };
+ "element-text" = {
+ text-color = mkLiteral "inherit";
};
- location = "center";
};
- nushell.extraConfig = ''
- plugin add ${inputs.nu_plugin_dbus.packages.${pkgs.system}.default}/bin/nu_plugin_dbus
- '';
+ location = "center";
};
+ nushell.extraConfig = ''
+ plugin add ${inputs.nu_plugin_dbus.packages.${pkgs.system}.default}/bin/nu_plugin_dbus
+ '';
};
+ };
}
diff --git a/nixosModules/cat.nix b/nixosModules/cat.nix
index 7acbfaf..b3b86ee 100644
--- a/nixosModules/cat.nix
+++ b/nixosModules/cat.nix
@@ -11,6 +11,7 @@
enable = true;
flavor = "mocha";
accent = "green";
+ cache.enable = true;
};
};
}