diff --git a/home/features/cli/default.nix b/home/features/cli/default.nix index 233275c..945e24d 100644 --- a/home/features/cli/default.nix +++ b/home/features/cli/default.nix @@ -1,6 +1,8 @@ {pkgs, ...}: { imports = [ ./fish.nix + ./fzf.nix + ./neofetch.nix ]; programs.zoxide = { diff --git a/home/features/cli/fzf.nix b/home/features/cli/fzf.nix new file mode 100644 index 0000000..e997cd1 --- /dev/null +++ b/home/features/cli/fzf.nix @@ -0,0 +1,38 @@ +{ + config, + lib, + ... +}: +with lib; let + cfg = config.features.cli.fzf; +in { + options.features.cli.fzf.enable = mkEnableOption "enable fuzzy finder"; + + config = mkIf cfg.enable { + programs.fzf = { + enable = true; + enableFishIntegration = true; + + colors = { + "fg" = "#f8f8f2"; + "bg" = "#282a36"; + "hl" = "#bd93f9"; + "fg+" = "#f8f8f2"; + "bg+" = "#44475a"; + "hl+" = "#bd93f9"; + "info" = "#ffb86c"; + "prompt" = "#50fa7b"; + "pointer" = "#ff79c6"; + "marker" = "#ff79c6"; + "spinner" = "#ffb86c"; + "header" = "#6272a4"; + }; + defaultOptions = [ + "--preview='bat --color=always -n {}'" + "--bind 'ctrl-/:toggle-preview'" + ]; + defaultCommand = "fd --type f --exclude .git --follow --hidden"; + changeDirWidgetCommand = "fd --type d --exclude .git --follow --hidden"; + }; + }; +} diff --git a/home/features/cli/neofetch.nix b/home/features/cli/neofetch.nix new file mode 100644 index 0000000..e4123da --- /dev/null +++ b/home/features/cli/neofetch.nix @@ -0,0 +1,15 @@ +{ + config, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.features.cli.neofetch; +in { + options.features.cli.neofetch.enable = mkEnableOption "enable neofetch"; + + config = mkIf cfg.enable { + home.packages = with pkgs; [neofetch]; + }; +} diff --git a/home/features/desktop/default.nix b/home/features/desktop/default.nix new file mode 100644 index 0000000..7384eab --- /dev/null +++ b/home/features/desktop/default.nix @@ -0,0 +1,8 @@ +{pkgs, ...}: { + imports = [ + ./wayland.nix + ]; + + home.packages = with pkgs; [ + ]; +} diff --git a/home/features/desktop/wayland.nix b/home/features/desktop/wayland.nix new file mode 100644 index 0000000..4e4857d --- /dev/null +++ b/home/features/desktop/wayland.nix @@ -0,0 +1,251 @@ +{ + config, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.features.desktop.wayland; +in { + options.features.desktop.wayland.enable = mkEnableOption "wayland extra tools and config"; + + config = mkIf cfg.enable { + programs.waybar = { + enable = true; + style = '' + @define-color background-darker rgba(30, 31, 41, 230); + @define-color background #282a36; + @define-color selection #44475a; + @define-color foreground #f8f8f2; + @define-color comment #6272a4; + @define-color cyan #8be9fd; + @define-color green #50fa7b; + @define-color orange #ffb86c; + @define-color pink #ff79c6; + @define-color purple #bd93f9; + @define-color red #ff5555; + @define-color yellow #f1fa8c; + + * { + border: none; + border-radius: 0; + font-family: FiraCode Nerd Font; + font-weight: bold; + font-size: 14px; + min-height: 0; + } + + window#waybar { + background: rgba(21, 18, 27, 0); + color: #cdd6f4; + } + + tooltip { + background: #1e1e2e; + border-radius: 10px; + border-width: 2px; + border-style: solid; + border-color: #11111b; + } + + #workspaces button { + padding: 5px; + color: #313244; + margin-right: 5px; + } + + #workspaces button.active { + color: #11111b; + background: #a6e3a1; + border-radius: 10px; + } + + #workspaces button.focused { + color: #a6adc8; + background: #eba0ac; + border-radius: 10px; + } + + #workspaces button.urgent { + color: #11111b; + background: #a6e3a1; + border-radius: 10px; + } + + #workspaces button:hover { + background: #11111b; + color: #cdd6f4; + border-radius: 10px; + } + + #custom-language, + #custom-updates, + #custom-caffeine, + #custom-weather, + #window, + #clock, + #battery, + #pulseaudio, + #network, + #workspaces, + #tray, + #backlight { + background: #1e1e2e; + padding: 0px 10px; + margin: 3px 0px; + margin-top: 10px; + border: 1px solid #181825; + } + + #tray { + border-radius: 10px; + margin-right: 10px; + } + + #workspaces { + background: #1e1e2e; + border-radius: 10px; + margin-left: 10px; + padding-right: 0px; + padding-left: 5px; + } + + #custom-caffeine { + color: #89dceb; + border-radius: 10px 0px 0px 10px; + border-right: 0px; + margin-left: 10px; + } + + #custom-language { + color: #f38ba8; + border-left: 0px; + border-right: 0px; + } + + #custom-updates { + color: #f5c2e7; + border-left: 0px; + border-right: 0px; + } + + #window { + border-radius: 10px; + margin-left: 60px; + margin-right: 60px; + } + + #clock { + color: #fab387; + border-radius: 10px 0px 0px 10px; + margin-left: 0px; + border-right: 0px; + } + + #network { + color: #f9e2af; + border-left: 0px; + border-right: 0px; + } + + #pulseaudio { + color: #89b4fa; + border-left: 0px; + border-right: 0px; + } + + #pulseaudio.microphone { + color: #cba6f7; + border-left: 0px; + border-right: 0px; + } + + #battery { + color: #a6e3a1; + border-radius: 0 10px 10px 0; + margin-right: 10px; + border-left: 0px; + } + + #custom-weather { + border-radius: 0px 10px 10px 0px; + border-right: 0px; + margin-left: 0px; + } + ''; + settings = { + mainbar = { + layer = "top"; + position = "top"; + mod = "dock"; + exclusive = true; + passthrough = false; + gtk-layer-shell = true; + height = 0; + modules-left = ["clock" "custom/weather" "hyprland/workspaces"]; + modules-center = ["hyprland/window"]; + modules-right = [ + "tray" + ]; + + "hyprland/window" = { + format = "👉 {}"; + seperate-outputs = true; + }; + "hyprland/workspaces" = { + disable-scroll = true; + all-outputs = true; + on-click = "activate"; + format = " {name} {icon} "; + on-scroll-up = "hyprctl dispatch workspace e+1"; + on-scroll-down = "hyprctl dispatch workspace e-1"; + format-icons = { + "1" = ""; + "2" = ""; + "3" = ""; + "4" = ""; + "5" = ""; + "6" = ""; + "7" = ""; + }; + persistent_workspaces = { + "1" = []; + "2" = []; + "3" = []; + "4" = []; + }; + }; + "custom/weather" = { + format = "{}°C"; + tooltip = true; + interval = 3600; + exec = "wttrbar --location Pockau-Lengefeld"; + return-type = "json"; + }; + tray = { + icon-size = 13; + spacing = 10; + }; + clock = { + format = " {:%R  %d/%m}"; + tooltip-format = "{:%Y %B}\n{calendar}"; + }; + }; + }; + }; + + home.packages = with pkgs; [ + grim + hyprlock + qt6.qtwayland + slurp + waypipe + wf-recorder + wl-mirror + wl-clipboard + wlogout + wtype + ydotool + ]; + }; +} diff --git a/home/m3tam3re/m3-kratos.nix b/home/m3tam3re/m3-kratos.nix index d4be878..405cd1d 100644 --- a/home/m3tam3re/m3-kratos.nix +++ b/home/m3tam3re/m3-kratos.nix @@ -1,13 +1,19 @@ -{config, ...}: { +{ imports = [ ../common ../features/cli + ../features/desktop ./home.nix ]; features = { cli = { - fish.enable = false; + fish.enable = true; + fzf.enable = true; + neofetch.enable = true; + }; + desktop = { + wayland.enable = true; }; }; }