diff --git a/media/wallpapers/cabin-2.jpg b/media/wallpapers/cabin-2.jpg new file mode 100644 index 0000000..4f7d7d9 Binary files /dev/null and b/media/wallpapers/cabin-2.jpg differ diff --git a/media/wallpapers/cloud.png b/media/wallpapers/cloud.png new file mode 100644 index 0000000..215bda9 Binary files /dev/null and b/media/wallpapers/cloud.png differ diff --git a/media/wallpapers/dark-waves.jpg b/media/wallpapers/dark-waves.jpg new file mode 100644 index 0000000..cd7a8ec Binary files /dev/null and b/media/wallpapers/dark-waves.jpg differ diff --git a/media/wallpapers/evening-sky.png b/media/wallpapers/evening-sky.png new file mode 100644 index 0000000..5386ac1 Binary files /dev/null and b/media/wallpapers/evening-sky.png differ diff --git a/media/wallpapers/purpled-night.jpg b/media/wallpapers/purpled-night.jpg new file mode 100644 index 0000000..dab0e79 Binary files /dev/null and b/media/wallpapers/purpled-night.jpg differ diff --git a/media/wallpapers/sine.png b/media/wallpapers/sine.png new file mode 100644 index 0000000..9bae520 Binary files /dev/null and b/media/wallpapers/sine.png differ diff --git a/media/wallpapers/train.jpg b/media/wallpapers/train.jpg new file mode 100644 index 0000000..d9452c6 Binary files /dev/null and b/media/wallpapers/train.jpg differ diff --git a/modules/home/environment/gtk.nix b/modules/home/environment/gtk.nix index b9a75ef..5501427 100644 --- a/modules/home/environment/gtk.nix +++ b/modules/home/environment/gtk.nix @@ -4,7 +4,12 @@ ... }: { fonts.fontconfig.enable = true; - home.packages = [ + home.packages = with pkgs; [ + (nerdfonts.override { fonts = [ + "JetBrainsMono" + "CascadiaCode" + "NerdFontsSymbolsOnly" + ]; }) ]; gtk = { diff --git a/modules/home/environment/hyprland/config.nix b/modules/home/environment/hyprland/config.nix index b73edb9..e9a3522 100644 --- a/modules/home/environment/hyprland/config.nix +++ b/modules/home/environment/hyprland/config.nix @@ -94,10 +94,10 @@ blur = { enabled = true; - size = 1; - passes = 1; - # size = 4; - # passes = 2; + # size = 1; + # passes = 1; + size = 4; + passes = 2; brightness = 1; contrast = 1.400; ignore_opacity = true; diff --git a/modules/home/environment/userpkgs.nix b/modules/home/environment/userpkgs.nix index 075219a..9816a0f 100644 --- a/modules/home/environment/userpkgs.nix +++ b/modules/home/environment/userpkgs.nix @@ -34,6 +34,9 @@ in { home.packages = with pkgs; [ + flavours + ags + sassc gtk3 sqlite gimp diff --git a/modules/home/environment/waybar/settings.nix b/modules/home/environment/waybar/settings.nix index 65b8679..5d559a4 100644 --- a/modules/home/environment/waybar/settings.nix +++ b/modules/home/environment/waybar/settings.nix @@ -1,147 +1,301 @@ -{...}: { +{...}: +{ programs.waybar.settings.mainBar = { - position = "top"; layer = "top"; - height = 5; - margin-top = 0; - margin-bottom = 0; - margin-left = 0; + position = "left"; + mod = "dock"; + margin-left = 4; margin-right = 0; + margin-top = 4; + margin-bottom = 4; + exclusive = true; + passthrough = false; + "gtk-layer-shell" = true; + reload_style_on_change = true; + modules-left = [ - "custom/launcher" - "custom/separator" + "custom/spacer" "hyprland/workspaces" + "custom/spacer" ]; - modules-center = [ - "clock" - ]; + modules-right = [ - "tray" - "custom/separator" - "cpu" - "memory" - "disk" - "custom/separator" - "pulseaudio" - "battery" + "group/expand" + "group/expand-3" "network" - "custom/separator" + "clock" + "upower" "custom/notification" ]; - clock = { + + "custom/led" = { + format = "󰍿"; + format-alt = "󰍿"; + on-click = "~/mouse.sh"; + rotate = 90; + tooltip = false; + }; + + "group/expand-3" = { + orientation = "vertical"; + drawer = { + "transition-duration" = 600; + "children-class" = "not-power"; + "transition-to-left" = false; + "click-to-reveal" = false; + }; + modules = [ + "pulseaudio" + "pulseaudio/slider" + ]; + }; + + clock = { + format = "{:%I\n%M\n%S}"; + interval = 1; + rotate = 0; + on-click = "/usr/local/bin/ags -t ActivityCenter"; + tooltip-format = "{calendar}"; + calendar = { - format = {today = "{}";}; + mode = "month"; + "mode-mon-col" = 3; + "on-scroll" = 1; + "on-click-right" = "mode"; + format = { + months = "{}"; + weekdays = "{}"; + today = "{}"; + }; }; - format = " {:%H:%M}"; - tooltip = "true"; - tooltip-format = "{:%Y %B}\n{calendar}"; - format-alt = " {:%d/%m}"; - }; - "hyprland/workspaces" = { - active-only = false; - disable-scroll = true; - format = "{icon}"; - on-click = "activate"; - format-icons = { - "1" = "一"; - "2" = "二"; - "3" = "三"; - "4" = "四"; - "5" = "五"; - "6" = "六"; - urgent = ""; - default = ""; - sort-by-number = true; - }; - persistent-workspaces = { - "1" = []; - "2" = []; - "3" = []; - "4" = []; - "5" = []; - "6" = []; + + actions = { + "on-click-right" = "mode"; + "on-click-forward" = "tz_up"; + "on-click-backward" = "tz_down"; + "on-scroll-up" = "shift_up"; + "on-scroll-down" = "shift_down"; }; }; - memory = { - format = "󰟜 {}%"; - format-alt = "󰟜 {used} GiB"; #  - interval = 2; - }; - cpu = { - format = " {usage}%"; - format-alt = " {avg_frequency} GHz"; - interval = 2; - }; - disk = { - # path = "/"; - format = "󰋊 {percentage_used}%"; - interval = 60; - }; - network = { - format-wifi = " {signalStrength}%"; - format-ethernet = "󰀂 "; - tooltip-format = "Connected to {essid} {ifname} via {gwaddr}"; - format-linked = "{ifname} (No IP)"; - format-disconnected = "󰖪 "; - }; - tray = { + + upower = { icon-size = 20; - spacing = 8; - }; - pulseaudio = { - format = "{icon} {volume}%"; - format-muted = " {volume}%"; - format-icons = { - default = [" "]; - }; - scroll-step = 5; - on-click = "pamixer -t"; - on-click-right = "pavucontrol"; - }; - battery = { - format = "{icon} {capacity}%"; - format-icons = [" " " " " " " " " "]; - format-charging = " {capacity}%"; - format-full = " {capacity}%"; - format-warning = " {capacity}%"; - interval = 5; - states = { - warning = 20; - }; - format-time = "{H}h{M}m"; + format = ""; + on-click = "/home/anik/battery.sh"; tooltip = true; - tooltip-format = "{time}"; + rotate = 0; + tooltip-spacing = 20; + on-click-right = "pkill waybar & hyprctl dispatch exec waybar"; }; - "custom/launcher" = { - format = ""; - on-click = "fuzzel"; - on-click-right = "wallpaper-picker"; - tooltip = "false"; + + "upower#headset" = { + format = " {percentage}"; + "native-path" = "/org/freedesktop/UPower/devices/headset_dev_A6_98_9A_0D_D3_49"; + "show-icon" = false; + tooltip = false; }; + + "group/expand-4" = { + orientation = "horizontal"; + drawer = { + "transition-duration" = 600; + "children-class" = "not-power"; + "transition-to-left" = true; + "click-to-reveal" = true; + }; + modules = ["upower" "upower/headset"]; + }; + + network = { + tooltip = true; + format-wifi = "{icon} "; + format-icons = ["󰤟" "󰤢" "󰤥"]; + rotate = 0; + format-ethernet = "󰈀 "; + tooltip-format = '' + Network: {essid}\n + Signal strength: {signaldBm}dBm ({signalStrength}%)\n + Frequency: {frequency}MHz\n + Interface: {ifname}\n + IP: {ipaddr}/{cidr}\n + Gateway: {gwaddr}\n + Netmask: {netmask} + ''; + format-linked = "󰈀 {ifname} (No IP)"; + format-disconnected = ""; + tooltip-format-disconnected = "Disconnected"; + on-click = "/usr/local/bin/ags -t ControlPanel"; + interval = 2; + }; + + "custom/smallspacer" = { + format = " "; + rotate = 0; + }; + + memory = { + interval = 1; + rotate = 270; + format = "{icon}"; + format-icons = [ + "󰝦" "󰪞" "󰪟" "󰪠" "󰪡" "󰪢" "󰪣" "󰪤" "󰪥" + ]; + max-length = 10; + }; + + cpu = { + interval = 1; + format = "{icon}"; + rotate = 270; + format-icons = [ + "󰝦" "󰪞" "󰪟" "󰪠" "󰪡" "󰪢" "󰪣" "󰪤" "󰪥" + ]; + }; + + "mpris" = { + format = "󰝚 {player_icon}"; + rotate = 90; + "format-paused" = "󰝚 {status_icon}"; + "max-length" = 6; + "player-icons" = { + default = "󰏤"; + mpv = "󰝚"; + }; + "status-icons" = { + paused = "󰐊"; + }; + }; + + tray = { + "icon-size" = 16; + rotate = 0; + spacing = 3; + }; + + "group/expand" = { + orientation = "vertical"; + drawer = { + "transition-duration" = 600; + "children-class" = "not-power"; + "transition-to-left" = true; + }; + modules = ["custom/menu" "custom/spacer" "tray"]; + }; + + "custom/menu" = { + format = "󰅃"; + rotate = 0; + }; + "custom/notification" = { tooltip = false; - format = "{icon} "; + rotate = 0; + format = "{icon}"; format-icons = { - notification = "  "; - none = "  "; - dnd-notification = "  "; - dnd-none = "  "; - inhibited-notification = "  "; - inhibited-none = "  "; - dnd-inhibited-notification = "  "; - dnd-inhibited-none = "  "; + notification = "󱅫"; + none = "󰂚"; + "dnd-notification" = "󱅫"; + "dnd-none" = "󰂚"; + "inhibited-notification" = "󱅫"; + "inhibited-none" = "󰂚"; + "dnd-inhibited-notification" = "󱅫"; + "dnd-inhibited-none" = "󰂚"; }; - return-type = "json"; - exec-if = "which swaync-client"; + "return-type" = "json"; + "exec-if" = "which swaync-client"; exec = "swaync-client -swb"; - on-click = "swaync-client -t -sw"; - on-click-right = "swaync-client -d -sw"; + "on-click-right" = "swaync-client -d -sw"; + "on-click" = "swaync-client -t -sw"; escape = true; }; - "custom/separator" = { - exec = "echo ' | '"; - interval = 600; - tooltip = false; + + "hyprland/window" = { + format = "{class}"; + "on-click-right" = "pkill waybar & hyprctl dispatch exec waybar"; + rotate = 90; + "max-length" = 120; + icon = false; + "icon-size" = 13; + }; + + "custom/power" = { + format = "@{}"; + rotate = 0; + "on-click" = "ags -t ControlPanel"; + "on-click-right" = "pkill ags"; + tooltip = true; + }; + + "custom/spacer" = { + format = "|"; + rotate = 90; + }; + + "hyprland/workspaces" = { + format = "{icon}"; + "format-icons" = { + default = ""; + active = ""; + }; + }; + + "wlr/workspaces" = { + "persistent-workspaces" = { + "1" = ["HDMI-A-1"]; + "2" = ["HDMI-A-1"]; + "3" = ["HDMI-A-1"]; + "4" = ["DP-1"]; + "5" = ["DP-1"]; + "6" = ["DP-1"]; + }; + }; + pulseaudio = { + format = "{icon}"; + rotate = 0; + format-muted = "婢"; + tooltip-format = "{icon} {desc} // {volume}%"; + scroll-step = 5; + + format-icons = { + headphone = " "; + "hands-free" = " "; + headset = " "; + phone = " "; + portable = " "; + car = " "; + default = ["" " " " "]; + }; + }; + "pulseaudio/slider" = { + min = 5; + max = 100; + rotate = 0; + device = "pulseaudio"; + scroll-step = 1; + orientation = "vertical"; + }; + + cava = { + "cava_config" = "~/.config/cava/config"; + framerate = 60; + autosens = 1; + bars = 14; + "lower_cutoff_freq" = 50; + "higher_cutoff_freq" = 10000; + method = "pulse"; + source = "auto"; + stereo = true; + reverse = false; + "bar_delimiter" = 0; + monstercat = false; + waves = false; + "noise_reduction" = 0.77; + "input_delay" = 2; + "format-icons" = ["▁" "▂" "▃" "▄" "▅" "▆" "▇" "█"]; + actions = { + "on-click-right" = "mode"; + }; }; }; } + diff --git a/modules/home/environment/waybar/style.nix b/modules/home/environment/waybar/style.nix index e915681..e41deaa 100644 --- a/modules/home/environment/waybar/style.nix +++ b/modules/home/environment/waybar/style.nix @@ -1,98 +1,199 @@ {...}: let custom = { - font = "JetBrainsMono Nerd Font"; - font_size = "22px"; - font_weight = "bold"; - text_color = "#cdd6f4"; - secondary_accent = "#89b4fa"; - tertiary_accent = "#f5f5f5"; - background = "#11111B"; + font_size = "15px"; # Base font size + font_weight = "bold"; # Base font weight + notification_font_size = "18px"; # Font size for notifications + text_color = "#cccedb"; # Default text color + background_color = "rgba(21, 21, 21, 0.83)"; + border_color = "rgba(255, 255, 255, 0.3)"; + notification_margin_left = "-2px"; + notification_margin_top = "-4px"; + notification_padding_bottom = "12px"; + tooltip_bg = "#1D2021"; + tooltip_color = "#FBF1C7"; + tooltip_border = "#101a24"; }; in { programs.waybar.style = '' + * { + font-family: "JetBrains Mono Nerd Font"; + font-weight: ${custom.font_weight}; + font-size: ${custom.font_size}; + } - * { - border: none; - border-radius: 0px; - padding: 0; - margin: 0; - min-height: 0px; - font-family: ${custom.font}; - font-weight: ${custom.font_weight}; - } + #custom-notification { + font-family: "JetBrains Mono Nerd Font"; + font-size: ${custom.notification_font_size}; + color: ${custom.text_color}; + margin-left: ${custom.notification_margin_left}; + margin-top: ${custom.notification_margin_top}; + padding-bottom: ${custom.notification_padding_bottom}; + } - window#waybar { - background: ${custom.background}; - } + window#waybar { + background: ${custom.background_color}; + border: 3px solid ${custom.border_color}; + border-radius: 6px; + } - #workspaces { - font-size: ${custom.font_size}; + tooltip { + background: ${custom.tooltip_bg}; + color: ${custom.tooltip_color}; + font-size: 13px; + border-radius: 7px; + border: 2px solid ${custom.tooltip_border}; + } - } - #workspaces button { - color: ${custom.text_color}; - padding-left: 6px; - padding-right: 6px; - } - #workspaces button.empty { - color: #6c7086; - } - #workspaces button.active { - color: #b4befe; - } + #workspaces { + font-weight: normal; + background: rgba(23, 23, 23, 0.0); + color: #2F302D; + border-radius: 9px; + padding-left: 0px; + padding-right: 4px; + padding-top: 1px; + } - #tray, #pulseaudio, #network, #cpu, #memory, #disk, #clock, #battery, #custom-notification { - font-size: ${custom.font_size}; - color: ${custom.text_color}; - } + #workspaces button { + font-weight: normal; + background: rgba(23, 23, 23, 0.0); + color: #B1B2BD; + border-radius: 9px; + padding-left: 0px; + padding-right: 4px; + margin-right: -4px; + margin-top: -10px; + } - #cpu { - padding-left: 5px; - padding-right: 9px; - } - #memory { - padding-left: 9px; - padding-right: 9px; - } - #disk { - padding-left: 9px; - padding-right: 5px; - } + #workspaces button.active { + color: ${custom.text_color}; + font-weight: normal; + padding-left: 0px; + padding-right: 4px; + transition: all 0.3s ease; + } - #tray { - margin-left: 7px; - padding-right: 5px; - } + #taskbar button { + box-shadow: none; + font-size: 4px; + padding: 0px; + border-radius: 9px; + margin-top: 3px; + margin-bottom: 3px; + margin-left: 3px; + margin-right: 3px; + color: #A1BDCE; + } - #pulseaudio { - padding-left: 5px; - padding-right: 9px; - } - #battery { - padding-left: 9px; - padding-right: 9px; - } - #network { - padding-left: 9px; - padding-right: 5px; - } + #taskbar button.active { + background: #C8C8C8; + color: #C8C8C8; + margin-left: 10px; + margin-right: 10px; + border-radius: 3px; + } - custom-notification { - padding-left: 15px; - padding-right: 20px; - } + #tray menu * { + font-weight: bold; + font-size: 13px; + color: #FBF1C7; + } - #clock { - padding-left: 9px; - padding-right: 15px; - } + #tray { + padding: 0px; + } - #custom-launcher { - font-size: ${custom.font_size}; - color: #b4befe; - font-weight: ${custom.font_weight}; - padding-left: 10px; - padding-right: 15px; - } + #battery { + font-weight: normal; + font-size: 22px; + color: #a6d189; + } + + #clock { + color: ${custom.text_color}; + font-size: 15px; + font-weight: 900; + font-family: "CaskaydiaCove Nerd Font Mono"; + background: rgba(23, 23, 23, 0.0); + } + + #backlight-slider slider, + #pulseaudio-slider slider { + background: #A1BDCE; + background-color: transparent; + box-shadow: none; + } + + #backlight-slider trough, + #pulseaudio-slider trough { + min-width: 9px; + min-height: 90px; + margin-bottom: -4px; + border-radius: 8px; + background: #343434; + margin-left: -4px; + margin-right: -4px; + } + + #backlight-slider highlight, + #pulseaudio-slider highlight { + border-radius: 8px; + background-color: #2096C0; + } + + #custom-mouse { + font-size: 14px; + margin-bottom: 6px; + background: #161320; + } + + #custom-power { + font-size: 15px; + color: #FFFFFF; + background: rgba(22, 19, 32, 0.9); + margin: 6px 0px; + padding-left: 4px; + padding-right: 4px; + } + + #backlight { + color: ${custom.text_color}; + font-weight: normal; + font-size: 19px; + margin: 0px; + padding-left: 0px; + } + + #custom-spacer { + opacity: 0.0; + padding-top: 3px; + } + + #tray menu separator { + min-height: 10px; + } + + #pulseaudio { + font-weight: normal; + font-size: 18px; + color: ${custom.text_color}; + } + + #cpu { + font-weight: normal; + font-size: 22px; + color: ${custom.text_color}; + } + + #memory { + font-weight: normal; + font-size: 22px; + color: ${custom.text_color}; + } + + #network { + font-size: 19px; + color: ${custom.text_color}; + } ''; } diff --git a/modules/home/home-manager.nix b/modules/home/home-manager.nix index 72a3449..0616f36 100644 --- a/modules/home/home-manager.nix +++ b/modules/home/home-manager.nix @@ -49,7 +49,7 @@ in { }; }; security.sudo.extraConfig = '' - ${username} ALL=(ALL) NOPASSWD: /run/current-system/sw/bin/nixos-rebuild + ${username} ALL=(ALL) NOPASSWD: /etc/profiles/per-user/pagedmov/bin/rebuild ''; nix.settings.allowed-users = ["${username}"]; } diff --git a/modules/home/programs/btop.nix b/modules/home/programs/btop.nix index 45bab68..49e71d2 100644 --- a/modules/home/programs/btop.nix +++ b/modules/home/programs/btop.nix @@ -5,7 +5,6 @@ settings = { update_ms = 500; vim_keys = true; - proc_tree = true; temp_scale = "fahrenheit"; disks_filter = "exclude=/boot"; show_swap = false; diff --git a/modules/home/programs/kitty.nix b/modules/home/programs/kitty.nix index 23ff808..ff41a34 100644 --- a/modules/home/programs/kitty.nix +++ b/modules/home/programs/kitty.nix @@ -5,7 +5,7 @@ settings = { confirm_os_window_close = 0; - window_padding_width = 10; + window_padding_width = 4; scrollback_lines = 10000; enable_audio_bell = false; allow_remote_control = true; diff --git a/modules/sys/environment/stylix.nix b/modules/sys/environment/stylix.nix index da74e4d..170e828 100644 --- a/modules/sys/environment/stylix.nix +++ b/modules/sys/environment/stylix.nix @@ -1,14 +1,36 @@ { pkgs, self, + lib, ... -}: { +}: + +let + wallpaper = "${self}/media/wallpapers/sine.png"; + + # Generate base16 color scheme from wallpaper + scheme_string_step1 = pkgs.runCommand "scheme_string" { }'' + ${pkgs.flavours}/bin/flavours generate dark ${wallpaper} --stdout | sed 's/"//g' | sed 's/://' | tail -n 16 > $out + ''; + scheme_string = builtins.readFile scheme_string_step1; + scheme_list = lib.filter (x: x != "") (lib.splitString "\n" scheme_string); + scheme_set = lib.lists.foldl' (acc: line: + let + splitLine = lib.splitString " " line; + key = builtins.elemAt splitLine 0; + value = builtins.elemAt splitLine 1; + in + acc // { "${key}" = value; } + ) {} scheme_list; +in +{ stylix = { enable = true; - base16Scheme = "${pkgs.base16-schemes}/share/themes/material-darker.yaml"; - image = ../../../media/wallpapers/catppuccin/cat-leaves.png; + base16Scheme = "${pkgs.base16-schemes}/share/themes/chalk.yaml"; + image = wallpaper; polarity = "dark"; autoEnable = true; + opacity.terminal = 0.95; targets = { console.enable = true; feh.enable = true; @@ -20,17 +42,23 @@ }; fonts = { monospace = { - package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}; - name = "JetBrainsMono Nerd Font Mono"; + package = pkgs.nerdfonts.override {fonts = ["Iosevka"];}; + name = "Iosevka Nerd Font"; }; sansSerif = { - package = pkgs.dejavu_fonts; - name = "DejaVu Sans"; + package = pkgs.nerdfonts.override {fonts = ["Iosevka"];}; + name = "Iosevka Nerd Font"; }; serif = { - package = pkgs.dejavu_fonts; - name = "DejaVu Serif"; + package = pkgs.nerdfonts.override {fonts = ["Iosevka"];}; + name = "Iosevka Nerd Font"; }; + sizes = { + desktop = 10; + applications = 14; + terminal = 16; + popups = 12; + }; }; }; } diff --git a/modules/sys/software/packages.nix b/modules/sys/software/packages.nix index bcb51cb..fa55ad7 100644 --- a/modules/sys/software/packages.nix +++ b/modules/sys/software/packages.nix @@ -22,7 +22,6 @@ htop hyprland hyprland-workspaces - hyprpaper hyprpicker imagemagick inetutils