diff --git a/flake.lock b/flake.lock index fb560d5..91b8711 100644 --- a/flake.lock +++ b/flake.lock @@ -26,11 +26,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1783429105, - "narHash": "sha256-kfl6ePoaAA3lhsQ+3hctKeWcmqFDxhUh8ilU0k/8ELo=", + "lastModified": 1783430313, + "narHash": "sha256-OPyKjRU+DqJoF1qMtW8x8bzZQFczzC7c/dFhHwpaj9M=", "ref": "refs/heads/main", - "rev": "3eb15736f3926d04ec9ef6b25e3440dc1c73bdee", - "revCount": 33, + "rev": "7fb1ea8cb3fa4b80f684239fb962cfd3288f3e37", + "revCount": 35, "type": "git", "url": "https://git.syedm.dev/syedm/kutu.rb.git" }, diff --git a/home/default.nix b/home/default.nix index ac95774..64d354b 100644 --- a/home/default.nix +++ b/home/default.nix @@ -2,8 +2,14 @@ { imports = [ + ./dunst + ./eza + ./fastfetch ./fish + ./kitty ./nvim + ./picom + ./rofi ]; home.username = "me"; diff --git a/home/dunst/default.nix b/home/dunst/default.nix new file mode 100644 index 0000000..8d849fb --- /dev/null +++ b/home/dunst/default.nix @@ -0,0 +1,72 @@ +{ pkgs, ... }: + +let + menuify = pkgs.substituteAll { + src = ./menuify.sh; + isExecutable = true; + dir = "bin"; + name = "menuify"; + + bash = pkgs.bash; + dmenu = pkgs.dmenu; + gawk = pkgs.gawk; + coreutils = pkgs.coreutils; + }; +in +{ + services.dunst = { + enable = true; + settings = { + global = { + monitor = 0; + follow = "none"; + enable_posix_regex = true; + width = "(0, 300)"; + height = "(0, 200)"; + notification_limit = 5; + origin = "bottom-right"; + offset = "20x20"; + icon_corner_radius = 18; + frame_width = 3; + gap_size = 5; + padding = 12; + horizontal_padding = 12; + idle_threshold = 60; + font = "Agave Nerd Font 12"; + format = "%s\\n%b"; + show_age_threshold = 0; + dmenu = "${menuify}/bin/menuify"; + browser = "xdg-open"; + corner_radius = 18; + mouse_left_click = "do_action, close_current"; + mouse_middle_click = "close_current"; + mouse_right_click = "context"; + }; + + urgency_low = { + frame_color = "#877d91"; + highlight = "#877d91"; + foreground = "#fff"; + background = "#2f2f4a"; + fullscreen = "pushback"; + history_ignore = true; + }; + + urgency_normal = { + frame_color = "#CF9FFF"; + highlight = "#CF9FFF"; + foreground = "#fff"; + background = "#2f2f4a"; + fullscreen = "delay"; + }; + + urgency_critical = { + frame_color = "#fa8290"; + highlight = "#fa8290"; + foreground = "#fff"; + background = "#2f2f4a"; + fullscreen = "show"; + }; + }; + }; +} diff --git a/home/dunst/menuify.sh b/home/dunst/menuify.sh new file mode 100644 index 0000000..7499a9c --- /dev/null +++ b/home/dunst/menuify.sh @@ -0,0 +1,21 @@ +#!@bash@/bin/bash + +list="" + +declare -A commands_map + +mapfile -t lines + +for line in "${lines[@]}"; do + id=$(@coreutils@/bin/echo "$line" | @gawk@/bin/awk -F '[ #()]' '{print $2}') + list+="$id"$'\n' + commands_map["$id"]="$line" +done + +selected=$(@coreutils@/bin/printf "$list" | @dmenu@/bin/dmenu -i -p "Select what to do:" -nf '#e0af68' -nb '#1f2335' -sb '#414868' -sf '#ffffff' -fn 'HurmitNerdFont-16') + +if [ -n "$selected" ]; then + command_to_run=${commands_map["$selected"]} + @coreutils@/bin/printf "$command_to_run" +fi + diff --git a/home/eza/default.nix b/home/eza/default.nix new file mode 100644 index 0000000..ff2efa7 --- /dev/null +++ b/home/eza/default.nix @@ -0,0 +1,121 @@ +{ pkgs, ... }: + +{ + programs.eza = { + enable = true; + + theme = { + colourful = true; + + filekinds = { + normal = { foreground = "#c0caf5"; }; + directory = { foreground = "#7aa2f7"; }; + symlink = { foreground = "#2ac3de"; }; + pipe = { foreground = "#414868"; }; + block_device = { foreground = "#e0af68"; }; + char_device = { foreground = "#e0af68"; }; + socket = { foreground = "#414868"; }; + special = { foreground = "#9d7cd8"; }; + executable = { foreground = "#9ece6a"; }; + mount_point = { foreground = "#b4f9f8"; }; + }; + + perms = { + user_read = { foreground = "#2ac3de"; }; + user_write = { foreground = "#bb9af7"; }; + user_execute_file = { foreground = "#9ece6a"; }; + user_execute_other = { foreground = "#9ece6a"; }; + group_read = { foreground = "#2ac3de"; }; + group_write = { foreground = "#ff9e64"; }; + group_execute = { foreground = "#9ece6a"; }; + other_read = { foreground = "#2ac3de"; }; + other_write = { foreground = "#ff007c"; }; + other_execute = { foreground = "#9ece6a"; }; + special_user_file = { foreground = "#ff007c"; }; + special_other = { foreground = "#db4b4b"; }; + attribute = { foreground = "#737aa2"; }; + }; + + size = { + major = { foreground = "#2ac3de"; }; + minor = { foreground = "#9d7cd8"; }; + number_byte = { foreground = "#a9b1d6"; }; + number_kilo = { foreground = "#89ddff"; }; + number_mega = { foreground = "#2ac3de"; }; + number_giga = { foreground = "#ff9e64"; }; + number_huge = { foreground = "#ff007c"; }; + unit_byte = { foreground = "#a9b1d6"; }; + unit_kilo = { foreground = "#89ddff"; }; + unit_mega = { foreground = "#2ac3de"; }; + unit_giga = { foreground = "#ff9e64"; }; + unit_huge = { foreground = "#ff007c"; }; + }; + + users = { + user_you = { foreground = "#3d59a1"; }; + user_root = { foreground = "#bb9af7"; }; + user_other = { foreground = "#2ac3de"; }; + group_yours = { foreground = "#89ddff"; }; + group_root = { foreground = "#bb9af7"; }; + group_other = { foreground = "#c0caf5"; }; + }; + + links = { + normal = { foreground = "#89ddff"; }; + multi_link_file = { foreground = "#2ac3de"; }; + }; + + git = { + new = { foreground = "#9ece6a"; }; + modified = { foreground = "#bb9af7"; }; + deleted = { foreground = "#db4b4b"; }; + renamed = { foreground = "#2ac3de"; }; + typechange = { foreground = "#2ac3de"; }; + ignored = { foreground = "#545c7e"; }; + conflicted = { foreground = "#ff9e64"; }; + }; + + git_repo = { + branch_main = { foreground = "#737aa2"; }; + branch_other = { foreground = "#b4f9f8"; }; + git_clean = { foreground = "#292e42"; }; + git_dirty = { foreground = "#bb9af7"; }; + }; + + security_context = { + colon = { foreground = "#545c7e"; }; + user = { foreground = "#737aa2"; }; + role = { foreground = "#2ac3de"; }; + typ = { foreground = "#3d59a1"; }; + range = { foreground = "#9d7cd8"; }; + }; + + file_type = { + image = { foreground = "#89ddff"; }; + video = { foreground = "#b4f9f8"; }; + music = { foreground = "#73daca"; }; + lossless = { foreground = "#41a6b5"; }; + crypto = { foreground = "#db4b4b"; }; + document = { foreground = "#a9b1d6"; }; + compressed = { foreground = "#ff9e64"; }; + temp = { foreground = "#737aa2"; }; + compiled = { foreground = "#737aa2"; }; + build = { foreground = "#1abc9c"; }; + source = { foreground = "#bb9af7"; }; + }; + + punctuation = { foreground = "#292e42"; }; + date = { foreground = "#e0af68"; }; + inode = { foreground = "#737aa2"; }; + blocks = { foreground = "#737aa2"; }; + header = { foreground = "#a9b1d6"; }; + octal = { foreground = "#ff9e64"; }; + flags = { foreground = "#9d7cd8"; }; + + symlink_path = { foreground = "#89ddff"; }; + control_char = { foreground = "#ff9e64"; }; + broken_symlink = { foreground = "#ff007c"; }; + broken_path_overlay = { foreground = "#ff007c"; }; + }; + }; +} diff --git a/home/eza/theme.yml b/home/eza/theme.yml new file mode 100644 index 0000000..f34037f --- /dev/null +++ b/home/eza/theme.yml @@ -0,0 +1,102 @@ +colourful: true + +filekinds: + normal: { foreground: "#c0caf5" } + directory: { foreground: "#7aa2f7" } + symlink: { foreground: "#2ac3de" } + pipe: { foreground: "#414868" } + block_device: { foreground: "#e0af68" } + char_device: { foreground: "#e0af68" } + socket: { foreground: "#414868" } + special: { foreground: "#9d7cd8" } + executable: { foreground: "#9ece6a" } + mount_point: { foreground: "#b4f9f8" } + +perms: + user_read: { foreground: "#2ac3de" } + user_write: { foreground: "#bb9af7" } + user_execute_file: { foreground: "#9ece6a" } + user_execute_other: { foreground: "#9ece6a" } + group_read: { foreground: "#2ac3de" } + group_write: { foreground: "#ff9e64" } + group_execute: { foreground: "#9ece6a" } + other_read: { foreground: "#2ac3de" } + other_write: { foreground: "#ff007c" } + other_execute: { foreground: "#9ece6a" } + special_user_file: { foreground: "#ff007c" } + special_other: { foreground: "#db4b4b" } + attribute: { foreground: "#737aa2" } + +size: + major: { foreground: "#2ac3de" } + minor: { foreground: "#9d7cd8" } + number_byte: { foreground: "#a9b1d6" } + number_kilo: { foreground: "#89ddff" } + number_mega: { foreground: "#2ac3de" } + number_giga: { foreground: "#ff9e64" } + number_huge: { foreground: "#ff007c" } + unit_byte: { foreground: "#a9b1d6" } + unit_kilo: { foreground: "#89ddff" } + unit_mega: { foreground: "#2ac3de" } + unit_giga: { foreground: "#ff9e64" } + unit_huge: { foreground: "#ff007c" } + +users: + user_you: { foreground: "#3d59a1" } + user_root: { foreground: "#bb9af7" } + user_other: { foreground: "#2ac3de" } + group_yours: { foreground: "#89ddff" } + group_root: { foreground: "#bb9af7" } + group_other: { foreground: "#c0caf5" } + +links: + normal: { foreground: "#89ddff" } + multi_link_file: { foreground: "#2ac3de" } + +git: + new: { foreground: "#9ece6a" } + modified: { foreground: "#bb9af7" } + deleted: { foreground: "#db4b4b" } + renamed: { foreground: "#2ac3de" } + typechange: { foreground: "#2ac3de" } + ignored: { foreground: "#545c7e" } + conflicted: { foreground: "#ff9e64" } + +git_repo: + branch_main: { foreground: "#737aa2" } + branch_other: { foreground: "#b4f9f8" } + git_clean: { foreground: "#292e42" } + git_dirty: { foreground: "#bb9af7" } + +security_context: + colon: { foreground: "#545c7e" } + user: { foreground: "#737aa2" } + role: { foreground: "#2ac3de" } + typ: { foreground: "#3d59a1" } + range: { foreground: "#9d7cd8" } + +file_type: + image: { foreground: "#89ddff" } + video: { foreground: "#b4f9f8" } + music: { foreground: "#73daca" } + lossless: { foreground: "#41a6b5" } + crypto: { foreground: "#db4b4b" } + document: { foreground: "#a9b1d6" } + compressed: { foreground: "#ff9e64" } + temp: { foreground: "#737aa2" } + compiled: { foreground: "#737aa2" } + build: { foreground: "#1abc9c" } + source: { foreground: "#bb9af7" } + +punctuation: { foreground: "#292e42" } +date: { foreground: "#e0af68" } +inode: { foreground: "#737aa2" } +blocks: { foreground: "#737aa2" } +header: { foreground: "#a9b1d6" } +octal: { foreground: "#ff9e64" } +flags: { foreground: "#9d7cd8" } + +symlink_path: { foreground: "#89ddff" } +control_char: { foreground: "#ff9e64" } +broken_symlink: { foreground: "#ff007c" } +broken_path_overlay: { foreground: "#ff007c" } diff --git a/home/fastfetch/default.nix b/home/fastfetch/default.nix new file mode 100644 index 0000000..d57e00c --- /dev/null +++ b/home/fastfetch/default.nix @@ -0,0 +1,75 @@ +{ pkgs, ... }: + +{ + programs.fastfetch = { + enable = true; + + settings = { + logo = { + type = "kitty-direct"; + source = ./logo.png; + width = 23; + height = 10; + padding = { + top = 0; + left = 3; + }; + }; + + display = { + separator = " "; + }; + + modules = [ + { + type = "title"; + key = "╭─  ->"; + keyColor = "36"; + } + { + type = "os"; + key = "├─ 󱄅 ->"; + keyColor = "36"; + } + { + type = "kernel"; + key = "╰─  ->"; + keyColor = "36"; + } + { + type = "shell"; + key = "╭─  ->"; + keyColor = "33"; + } + { + type = "terminal"; + key = "├─  ->"; + keyColor = "33"; + } + { + type = "custom"; + format = "\\u001b[33m╰─  ->\\u001b[39m kutu.rb"; + } + { + type = "host"; + key = "╭─ 󰌢 ->"; + keyColor = "32"; + } + { + type = "memory"; + key = "├─ 󰍛 ->"; + keyColor = "32"; + } + { + type = "packages"; + key = "╰─  ->"; + keyColor = "32"; + } + { + type = "custom"; + format = " \\u001b[90m \\u001b[31m \\u001b[32m \\u001b[33m \\u001b[34m \\u001b[35m \\u001b[36m \\u001b[37m \\u001b[38m \\u001b[39m"; + } + ]; + }; + }; +} diff --git a/home/fastfetch/logo.png b/home/fastfetch/logo.png new file mode 100644 index 0000000..315eaf5 Binary files /dev/null and b/home/fastfetch/logo.png differ diff --git a/home/fish/default.nix b/home/fish/default.nix index a9adf1e..2a22d1c 100644 --- a/home/fish/default.nix +++ b/home/fish/default.nix @@ -1,18 +1,21 @@ -{ ... }: +{ pkgs, ... }: { programs.fish = { enable = true; shellAliases = { - ls = "eza -TlL 2 --git --no-permissions --no-user --no-time --icons=always --group-directories-first"; - lss = "eza -TlL 1 --git --no-permissions --no-user --no-time --icons=always --group-directories-first"; - lsa = "eza -TlaL 1 --git --no-permissions --no-user --no-time --icons=always --group-directories-first"; - sls = "sudo eza -TlL 2 --git --no-permissions --no-user --no-time --icons=always --group-directories-first"; - s = "python3 -m http.server 8080"; - vi = "nvim"; - vim = "nvim"; - g = "gitui"; + ls = "${pkgs.eza}/bin/eza -TlL 2 --git --no-permissions --no-user --no-time --icons=always --group-directories-first"; + lss = "${pkgs.eza}/bin/eza -TlL 1 --git --no-permissions --no-user --no-time --icons=always --group-directories-first"; + lsa = "${pkgs.eza}/bin/eza -TlaL 1 --git --no-permissions --no-user --no-time --icons=always --group-directories-first"; + sls = "sudo ${pkgs.eza}/bin/eza -TlL 2 --git --no-permissions --no-user --no-time --icons=always --group-directories-first"; + + s = "${pkgs.python3}/bin/python3 -m http.server 8080"; + + vi = "${pkgs.neovim}/bin/nvim"; + vim = "${pkgs.neovim}/bin/nvim"; + + g = "${pkgs.gitui}/bin/gitui"; }; shellInit = builtins.readFile ./config.fish; diff --git a/home/kitty/default.nix b/home/kitty/default.nix new file mode 100644 index 0000000..c93ae9b --- /dev/null +++ b/home/kitty/default.nix @@ -0,0 +1,89 @@ +{ pkgs, ... }: + +{ + programs.kitty = { + enable = true; + + shellIntegration.enableFishIntegration = true; + + font = { + name = "Agave Nerd Font"; + size = 13; + }; + + settings = { + bold_font = "Agave Nerd Font Bold"; + # italic_font = "Operator Mono Lig"; + bold_italic_font = "Hurmit Nerd Font Bold"; + emoji_font_family = "UnifontExMono Regular"; + + cursor_shape = "block"; + cursor_blink_interval = 0; + shell_integration = "no-cursor"; + + underline_position = "+3"; + underline_thickness = "150%"; + + allow_remote_control = "yes"; + listen_on = "unix:/tmp/mykitty"; + + startup_session = ./startup; + + foreground = "#CDD6F4"; + background = "#080014"; + selection_foreground = "#080014"; + selection_background = "#F5E0DC"; + + cursor = "#F5E0DC"; + cursor_text_color = "#080014"; + + url_color = "#F5E0DC"; + + active_border_color = "#B4BEFE"; + inactive_border_color = "#6C7086"; + bell_border_color = "#F9E2AF"; + + mark1_foreground = "#080014"; + mark1_background = "#B4BEFE"; + mark2_foreground = "#080014"; + mark2_background = "#CBA6F7"; + mark3_foreground = "#080014"; + mark3_background = "#74C7EC"; + + color0 = "#1d2434"; + color1 = "#c22a2a"; + color2 = "#96c93c"; + color3 = "#f1b950"; + color4 = "#547eaa"; + color5 = "#674099"; + color6 = "#94E2D5"; + color7 = "#BAC2DE"; + + color8 = "#44496f"; + color9 = "#c22a2a"; + color10 = "#96c93c"; + color11 = "#f1b950"; + color12 = "#547eaa"; + color13 = "#674099"; + color14 = "#94E2D5"; + color15 = "#A6ADC8"; + + background_opacity = "0.8"; + + confirm_os_window_close = 0; + + clipboard_control = "write-clipboard write-primary read-clipboard read-primary"; + + shell = "${pkgs.fish}/bin/fish"; + }; + + keybindings = { + "ctrl+click" = "open_link"; + "ctrl+shift+click" = "open_link"; + "ctrl+backspace" = "send_text all \\x17"; + "ctrl+delete" = "send_text all \\x1b[1;53"; + "ctrl+]" = "send_text all \\x10"; + "ctrl+[" = "send_text all \\x0f"; + }; + }; +} diff --git a/home/kitty/startup b/home/kitty/startup new file mode 100644 index 0000000..cceaeae --- /dev/null +++ b/home/kitty/startup @@ -0,0 +1,3 @@ +# Run the command on new Kitty window creation + +launch env KITTY_STR=1 fish diff --git a/home/picom/default.nix b/home/picom/default.nix new file mode 100644 index 0000000..d79150e --- /dev/null +++ b/home/picom/default.nix @@ -0,0 +1,47 @@ +{ ... }: + +{ + services.picom = { + enable = true; + + settings = { + fading = true; + vsync = true; + backend = "glx"; + + fade-delta = 4; + inactive-opacity = 0.9; + + corner-radius = 7.0; + round-borders = 1; + + blur-method = "gaussian"; + blur-size = 7; + blur-deviation = 3; + + opacity-rule = [ + "100:class_g = 'Polybar'" + ]; + + corner-radius-exclude = [ + "class_g = 'Dunst'" + "class_i = 'Dunst'" + "name = 'Dunst'" + "class_i = 'dmenu'" + "class_g = 'dmenu'" + "name - 'dmenu'" + ]; + + blur-background-exclude = [ + "class_g ~= 'slop'" + "class_i ~= 'slop'" + "name ~= 'slop'" + "window_type = 'menu'" + "window_type = 'tooltip'" + "role = 'xborder'" + "window_type = 'popup_menu'" + "window_type = 'dropdown_menu'" + ]; + }; + }; +} diff --git a/home/picom/picom.conf b/home/picom/picom.conf new file mode 100644 index 0000000..4bdfcdf --- /dev/null +++ b/home/picom/picom.conf @@ -0,0 +1,42 @@ +# General settings +fading = true; +vsync = true; +backend = "glx"; +fade-delta = 4; +inactive-opacity = 0.9; + +# Window corner radius +corner-radius = 7.0; +round-borders = 1; + +# Blur settings +blur-method = "gaussian"; +blur-size = 7; +blur-deviation = 3; + +# Opacity rules +opacity-rule = [ + "100:class_g = 'Polybar'" +]; + +# Exclusions for corner radius +corner-radius-exclude = [ + "class_g = 'Dunst'", + "class_i = 'Dunst'", + "name = 'Dunst'", + "class_i = 'dmenu'", + "class_g = 'dmenu'", + "name - 'dmenu'" +]; + +# Exclusions for background blur +blur-background-exclude = [ + "class_g ~= 'slop'", + "class_i ~= 'slop'", + "name ~= 'slop'", + "window_type = 'menu'", + "window_type = 'tooltip'", + "role = 'xborder'", + "window_type = 'popup_menu'", + "window_type = 'dropdown_menu'" +]; diff --git a/home/rofi/default.nix b/home/rofi/default.nix new file mode 100644 index 0000000..2d7bcc0 --- /dev/null +++ b/home/rofi/default.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + programs.rofi = { + enable = true; + + theme = ./theme.rasi; + }; +} diff --git a/home/rofi/tokyonight-mid.rasi b/home/rofi/tokyonight-mid.rasi new file mode 100644 index 0000000..8f7dcb6 --- /dev/null +++ b/home/rofi/tokyonight-mid.rasi @@ -0,0 +1,119 @@ +* { + font: "Agave Nerd Font 14"; + + bg0 : #1a1b26; + bg1 : #414868A0; + bg2 : #1f2335A0; + bg3 : #1a1b26A0; + fg0 : #ffffff; + fg1 : #a9b1d6; + fg2 : #737aa2; + red : #f7768e; + green : #9ece6a; + yellow : #e0af68; + blue : #7aa2f7; + magenta : #9a7ecc; + cyan : #4abaaf; + + accent: @blue; + urgent: @yellow; + + background-color : transparent; + text-color : @fg0; + + margin : 0; + padding : 0; + spacing : 0; +} + +element-icon, element-text, scrollbar { + cursor: pointer; +} + +window { + transparency: "real"; + location : center; + width : 750px; + height : 320px; + background-color: @bg2; + border: 1px; + border-color: @cyan; + border-radius: 16px; +} + +inputbar { + spacing : 8px; + padding : 4px 8px; + background-color : @bg3; + children : [ textbox-prompt, entry ]; +} + +entry { + placeholder : "Search..."; + placeholder-color : @fg2; + color : @red; +} + +textbox-prompt, entry, element-icon, element-text { + vertical-align: 0.5; +} + +textbox-prompt { + expand : false; + str : "  "; + text-color : @green; +} + +textbox { + padding : 4px 8px; + background-color : @bg0; +} + +listview { + padding : 4px 0px; + lines : 12; + columns : 1; + scrollbar : true; + fixed-height : false; + dynamic : true; +} + +element { + padding : 4px 8px; + spacing : 8px; +} + +element normal urgent { + text-color: @urgent; +} + +element normal active { + text-color: @accent; +} + +element alternate active { + text-color: @accent; +} + +element selected { + text-color : @bg0; + background-color : @accent; +} + +element selected urgent { + background-color: @urgent; +} + +element-icon { + size: 0.8em; +} + +element-text { + text-color: inherit; +} + +scrollbar { + handle-width : 4px; + handle-color : @fg2; + padding : 0 4px; +} diff --git a/hosts/tardis/default.nix b/hosts/tardis/default.nix index a71d89b..83d5979 100644 --- a/hosts/tardis/default.nix +++ b/hosts/tardis/default.nix @@ -12,15 +12,18 @@ environment.systemPackages = lib.mkAfter (with pkgs; [ firefox - kitty - rofi - xev - xkbcomp xdg-utils + dmenu inputs.kutu.packages.${stdenv.hostPlatform.system}.default ]); + fonts.packages = with pkgs; [ + nerd-fonts.hurmit + nerd-fonts.agave + unifont + ]; + services.xserver = { enable = true; displayManager.startx.enable = true;