From fa60f8c87e2dc85b4af25a1bc725534f1f3e735f Mon Sep 17 00:00:00 2001 From: Semere Meharena Mebrahtom Date: Sun, 19 Jul 2026 22:56:32 +0200 Subject: [PATCH] refactoring and minor config added --- hosts/nabro/dwl-config.h | 191 --------------------------------------- modules/cli-tools.nix | 18 ---- modules/default.nix | 5 +- modules/desktop.nix | 12 +-- modules/dev.nix | 2 + modules/gpg.nix | 4 +- modules/greetd.nix | 18 ---- modules/helix.nix | 2 +- modules/niri.nix | 3 +- modules/starship.nix | 121 +++++++++++++++++++++++++ modules/zsh.nix | 125 ++----------------------- 11 files changed, 140 insertions(+), 361 deletions(-) delete mode 100644 hosts/nabro/dwl-config.h delete mode 100644 modules/cli-tools.nix delete mode 100644 modules/greetd.nix create mode 100644 modules/starship.nix diff --git a/hosts/nabro/dwl-config.h b/hosts/nabro/dwl-config.h deleted file mode 100644 index 062bb3c..0000000 --- a/hosts/nabro/dwl-config.h +++ /dev/null @@ -1,191 +0,0 @@ -/* Taken from https://github.com/djpohly/dwl/issues/466 */ -#include -#define COLOR(hex) { ((hex >> 24) & 0xFF) / 255.0f, \ - ((hex >> 16) & 0xFF) / 255.0f, \ - ((hex >> 8) & 0xFF) / 255.0f, \ - (hex & 0xFF) / 255.0f } -/* appearance */ -static const int sloppyfocus = 1; /* focus follows mouse */ -static const int bypass_surface_visibility = 0; /* 1 means idle inhibitors will disable idle tracking even if it's surface isn't visible */ -static const unsigned int borderpx = 1; /* border pixel of windows */ -static const float rootcolor[] = COLOR(0x222222ff); -static const float bordercolor[] = COLOR(0x444444ff); -static const float focuscolor[] = COLOR(0x005577ff); -static const float urgentcolor[] = COLOR(0xff0000ff); -/* This conforms to the xdg-protocol. Set the alpha to zero to restore the old behavior */ -static const float fullscreen_bg[] = {0.0f, 0.0f, 0.0f, 1.0f}; /* You can also use glsl colors */ - -/* tagging - TAGCOUNT must be no greater than 31 */ -#define TAGCOUNT (9) - -/* logging */ -static int log_level = WLR_ERROR; - -static const Rule rules[] = { - /* app_id title tags mask isfloating monitor */ - { "Gimp_EXAMPLE", NULL, 0, 1, -1 }, /* Start on currently visible tags floating, not tiled */ - { "firefox_EXAMPLE", NULL, 1 << 8, 0, -1 }, /* Start on ONLY tag "9" */ - /* default/example rule: can be changed but cannot be eliminated; at least one rule must exist */ -}; - -/* layout(s) */ -static const Layout layouts[] = { - /* symbol arrange function */ - { "[]=", tile }, - { "><>", NULL }, /* no layout function means floating behavior */ - { "[M]", monocle }, -}; - -/* monitors */ -/* (x=-1, y=-1) is reserved as an "autoconfigure" monitor position indicator - * WARNING: negative values other than (-1, -1) cause problems with Xwayland clients due to - * https://gitlab.freedesktop.org/xorg/xserver/-/issues/899 */ -static const MonitorRule monrules[] = { - /* name mfact nmaster scale layout rotate/reflect x y - * example of a HiDPI laptop monitor: - { "eDP-1", 0.5f, 1, 2, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 }, */ - { NULL, 0.55f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 }, - /* default monitor rule: can be changed but cannot be eliminated; at least one monitor rule must exist */ -}; - -/* keyboard */ -static const struct xkb_rule_names xkb_rules = { - /* can specify fields: rules, model, layout, variant, options */ - /* example: - .options = "ctrl:nocaps", - */ - .options = "ctrl:swapcaps", -}; - -static const int repeat_rate = 25; -static const int repeat_delay = 600; - -/* Trackpad */ -static const int tap_to_click = 1; -static const int tap_and_drag = 1; -static const int drag_lock = 1; -static const int natural_scrolling = 0; -static const int disable_while_typing = 1; -static const int left_handed = 0; -static const int middle_button_emulation = 0; -/* You can choose between: -LIBINPUT_CONFIG_SCROLL_NO_SCROLL -LIBINPUT_CONFIG_SCROLL_2FG -LIBINPUT_CONFIG_SCROLL_EDGE -LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN -*/ -static const enum libinput_config_scroll_method scroll_method = LIBINPUT_CONFIG_SCROLL_2FG; - -/* You can choose between: -LIBINPUT_CONFIG_CLICK_METHOD_NONE -LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS -LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER -*/ -static const enum libinput_config_click_method click_method = LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS; - -/* You can choose between: -LIBINPUT_CONFIG_SEND_EVENTS_ENABLED -LIBINPUT_CONFIG_SEND_EVENTS_DISABLED -LIBINPUT_CONFIG_SEND_EVENTS_DISABLED_ON_EXTERNAL_MOUSE -*/ -static const uint32_t send_events_mode = LIBINPUT_CONFIG_SEND_EVENTS_ENABLED; - -/* You can choose between: -LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT -LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE -*/ -static const enum libinput_config_accel_profile accel_profile = LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE; -static const double accel_speed = 0.0; - -/* You can choose between: -LIBINPUT_CONFIG_TAP_MAP_LRM -- 1/2/3 finger tap maps to left/right/middle -LIBINPUT_CONFIG_TAP_MAP_LMR -- 1/2/3 finger tap maps to left/middle/right -*/ -static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TAP_MAP_LRM; - -/* If you want to use the windows key for MODKEY, use WLR_MODIFIER_LOGO */ -#define MODKEY WLR_MODIFIER_LOGO - -#define TAGKEYS(KEY,SKEY,TAG) \ - { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ - { MODKEY|WLR_MODIFIER_CTRL, KEY, toggleview, {.ui = 1 << TAG} }, \ - { MODKEY|WLR_MODIFIER_SHIFT, SKEY, tag, {.ui = 1 << TAG} }, \ - { MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT,SKEY,toggletag, {.ui = 1 << TAG} } - -/* helper for spawning shell commands in the pre dwm-5.0 fashion */ -#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } - -/* commands */ -static const char *termcmd[] = { "foot", NULL }; -static const char *browsercmd[] = { "zen-beta", NULL }; -static const char *menucmd[] = { "fuzzel", NULL }; - -static const char *volup[] = { "pamixer", "-i", "5", NULL }; -static const char *voldown[] = { "pamixer", "-d", "5", NULL }; -static const char *volmute[] = { "pamixer", "-t", NULL }; -static const char *brightup[] = { "brightnessctl", "set", "10%+", NULL }; -static const char *brightdown[] = { "brightnessctl", "set", "10%-", NULL }; -static const char *lockcmd[] = { "swaylock", NULL }; - -const Key keys[] = { - /* Note that Shift changes certain key codes: 2 -> at, etc. */ - /* modifier key function argument */ - { 0, XF86XK_AudioRaiseVolume, spawn, {.v = volup} }, - { 0, XF86XK_AudioLowerVolume, spawn, {.v = voldown} }, - { 0, XF86XK_AudioMute, spawn, {.v = volmute} }, - - { 0, XF86XK_MonBrightnessUp, spawn, {.v = brightup} }, - { 0, XF86XK_MonBrightnessDown, spawn, {.v = brightdown} }, - /* { 0, XKB_KEY_Print, spawn, SHCMD("grim -g \"$(slurp)\" - | wl-copy") }, */ - - { MODKEY, XKB_KEY_p, spawn, {.v = menucmd} }, - { MODKEY, XKB_KEY_w, spawn, {.v = browsercmd} }, - { MODKEY, XKB_KEY_Return, spawn, {.v = termcmd} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_l, spawn, {.v = lockcmd} }, - { MODKEY, XKB_KEY_j, focusstack, {.i = +1} }, - { MODKEY, XKB_KEY_k, focusstack, {.i = -1} }, - { MODKEY, XKB_KEY_i, incnmaster, {.i = +1} }, - { MODKEY, XKB_KEY_d, incnmaster, {.i = -1} }, - { MODKEY, XKB_KEY_h, setmfact, {.f = -0.05f} }, - { MODKEY, XKB_KEY_l, setmfact, {.f = +0.05f} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, zoom, {0} }, - { MODKEY, XKB_KEY_Tab, view, {0} }, - { MODKEY, XKB_KEY_q, killclient, {0} }, - { MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} }, - { MODKEY, XKB_KEY_f, setlayout, {.v = &layouts[1]} }, - { MODKEY, XKB_KEY_m, setlayout, {.v = &layouts[2]} }, - { MODKEY, XKB_KEY_space, setlayout, {0} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} }, - { MODKEY, XKB_KEY_e, togglefullscreen, {0} }, - { MODKEY, XKB_KEY_0, view, {.ui = ~0} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} }, - { MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} }, - { MODKEY, XKB_KEY_period, focusmon, {.i = WLR_DIRECTION_RIGHT} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_less, tagmon, {.i = WLR_DIRECTION_LEFT} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_greater, tagmon, {.i = WLR_DIRECTION_RIGHT} }, - TAGKEYS( XKB_KEY_1, XKB_KEY_exclam, 0), - TAGKEYS( XKB_KEY_2, XKB_KEY_at, 1), - TAGKEYS( XKB_KEY_3, XKB_KEY_numbersign, 2), - TAGKEYS( XKB_KEY_4, XKB_KEY_dollar, 3), - TAGKEYS( XKB_KEY_5, XKB_KEY_percent, 4), - TAGKEYS( XKB_KEY_6, XKB_KEY_asciicircum, 5), - TAGKEYS( XKB_KEY_7, XKB_KEY_ampersand, 6), - TAGKEYS( XKB_KEY_8, XKB_KEY_asterisk, 7), - TAGKEYS( XKB_KEY_9, XKB_KEY_parenleft, 8), - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_q, quit, {0} }, - - /* Ctrl-Alt-Backspace and Ctrl-Alt-Fx used to be handled by X server */ - { WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_Terminate_Server, quit, {0} }, - /* Ctrl-Alt-Fx is used to switch to another VT, if you don't know what a VT is - * do not remove them. - */ -#define CHVT(n) { WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_XF86Switch_VT_##n, chvt, {.ui = (n)} } - CHVT(1), CHVT(2), CHVT(3), CHVT(4), CHVT(5), CHVT(6), - CHVT(7), CHVT(8), CHVT(9), CHVT(10), CHVT(11), CHVT(12), -}; - -static const Button buttons[] = { - { MODKEY, BTN_LEFT, moveresize, {.ui = CurMove} }, - { MODKEY, BTN_MIDDLE, togglefloating, {0} }, - { MODKEY, BTN_RIGHT, moveresize, {.ui = CurResize} }, -}; diff --git a/modules/cli-tools.nix b/modules/cli-tools.nix deleted file mode 100644 index 9ee629a..0000000 --- a/modules/cli-tools.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -{ - environment.systemPackages = with pkgs; [ - wget - tealdeer - p7zip - btop - opencode - fd - ripgrep - ]; -} diff --git a/modules/default.nix b/modules/default.nix index c79be73..d92d8f0 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -19,7 +19,7 @@ allModules self.nixosModules.user self.nixosModules.desktop self.nixosModules.dev - self.nixosModules.cli-tools + self.nixosModules.starship self.nixosModules.git self.nixosModules.gpg self.nixosModules.zsh @@ -28,7 +28,6 @@ allModules self.nixosModules.niri self.nixosModules.osd self.nixosModules.fnott - self.nixosModules.greetd ]; }; @@ -36,7 +35,7 @@ allModules imports = [ self.nixosModules.core self.nixosModules.user - self.nixosModules.cli-tools + self.nixosModules.starship self.nixosModules.git self.nixosModules.gpg self.nixosModules.zsh diff --git a/modules/desktop.nix b/modules/desktop.nix index 639d03a..cb4f05d 100644 --- a/modules/desktop.nix +++ b/modules/desktop.nix @@ -7,11 +7,6 @@ }: { - programs.dwl.enable = true; - programs.dwl.package = pkgs.dwl.override { - configH = ../hosts/nabro/dwl-config.h; - }; - services.pipewire = { enable = true; pulse.enable = true; @@ -54,7 +49,7 @@ style = "adwaita-dark"; }; - # services.getty.autologinUser = "${userVars.username}"; + services.getty.autologinUser = "${userVars.username}"; environment.systemPackages = with pkgs; [ pamixer @@ -63,10 +58,6 @@ fuzzel libnotify fnott - foot - tor-browser - # grim - # slurp wlopm ]; @@ -151,6 +142,5 @@ }; }; - }; } diff --git a/modules/dev.nix b/modules/dev.nix index a8412bd..8d125ec 100644 --- a/modules/dev.nix +++ b/modules/dev.nix @@ -7,6 +7,8 @@ { environment.systemPackages = with pkgs; [ + tealdeer + opencode gcc gnumake clang-tools diff --git a/modules/gpg.nix b/modules/gpg.nix index a545aed..b6f01cf 100644 --- a/modules/gpg.nix +++ b/modules/gpg.nix @@ -10,7 +10,7 @@ environment.systemPackages = with pkgs; [ gnupg pass - pinentry-qt + pinentry-gnome3 ]; home-manager.users."${userVars.username}" = { @@ -21,7 +21,7 @@ maxCacheTtl = 28800; maxCacheTtlSsh = 28800; enableSshSupport = true; - pinentry.package = pkgs.pinentry-qt; + pinentry.package = pkgs.pinentry-gnome3; }; }; } diff --git a/modules/greetd.nix b/modules/greetd.nix deleted file mode 100644 index 35ad29c..0000000 --- a/modules/greetd.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -{ - services.greetd = { - enable = true; - settings = { - default_session = { - command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd niri"; - user = "greeter"; - }; - }; - }; -} diff --git a/modules/helix.nix b/modules/helix.nix index fc6a445..040d01d 100644 --- a/modules/helix.nix +++ b/modules/helix.nix @@ -84,7 +84,7 @@ smart-tab = { enable = true; - supersede-menu = true; + supersede-menu = false; }; }; }; diff --git a/modules/niri.nix b/modules/niri.nix index 53e6eab..5a0925c 100644 --- a/modules/niri.nix +++ b/modules/niri.nix @@ -95,8 +95,9 @@ Mod+Return { spawn "foot"; } Mod+D { spawn "fuzzel"; } Mod+B { spawn "zen-beta"; } + Mod+E { spawn "foot" "yazi"; } Mod+Alt+L { spawn "swaylock"; } - Mod+Shift+E { quit; } + Mod+Shift+Q { quit; } Mod+V { toggle-window-floating; } Mod+Shift+V { switch-focus-between-floating-and-tiling; } diff --git a/modules/starship.nix b/modules/starship.nix new file mode 100644 index 0000000..d839fb8 --- /dev/null +++ b/modules/starship.nix @@ -0,0 +1,121 @@ +{ + config, + lib, + pkgs, + userVars, + ... +}: + +{ + home-manager.users."${userVars.username}".programs.starship = { + enable = true; + enableZshIntegration = true; + + settings = { + add_newline = false; + command_timeout = 500; + scan_timeout = 10; + + format = lib.concatStrings [ + "$directory" + "$git_branch" + "$git_status" + "$nix_shell" + "$python" + "$c" + "$rust" + "$cmd_duration" + "$jobs" + "$line_break" + "$character" + ]; + + character = { + success_symbol = "[❯](bold green)"; + error_symbol = "[❯](bold red)"; + vimcmd_symbol = "[❮](bold yellow)"; + }; + + directory = { + style = "bold cyan"; + truncation_length = 3; + truncate_to_repo = true; + truncation_symbol = "…/"; + read_only = " 🔒"; + }; + + git_branch = { + style = "bold purple"; + format = "[$symbol$branch]($style) "; + symbol = " "; + }; + + git_status = { + style = "bold red"; + format = "([$all_status$ahead_behind]($style)) "; + conflicted = "="; + ahead = "⇡\${count}"; + behind = "⇣\${count}"; + diverged = "⇕⇡\${ahead_count}⇣\${behind_count}"; + staged = "+\${count}"; + modified = "!\${count}"; + untracked = "?\${count}"; + stashed = "\$"; + }; + + nix_shell = { + style = "bold blue"; + format = "[$symbol$state( \($name\))]($style) "; + symbol = "❄ "; + impure_msg = "impure"; + pure_msg = "pure"; + }; + + python = { + style = "bold yellow"; + format = "[$symbol( \($virtualenv\))]($style) "; + symbol = " "; + detect_extensions = [ "py" ]; + detect_files = [ + "pyproject.toml" + "requirements.txt" + "uv.lock" + ]; + }; + + c = { + style = "bold dimmed white"; + format = "[$symbol($version(-$name))]($style) "; + symbol = " "; + detect_extensions = [ + "c" + "h" + ]; + }; + + rust = { + disabled = true; + }; + + cmd_duration = { + style = "bold yellow"; + format = "[$duration]($style) "; + min_time = 2000; + show_notifications = false; + }; + + jobs = { + style = "bold blue"; + symbol = "✦"; + number_threshold = 1; + }; + + aws.disabled = true; + gcloud.disabled = true; + docker_context.disabled = true; + kubernetes.disabled = true; + package.disabled = true; + battery.disabled = true; + }; + }; +} diff --git a/modules/zsh.nix b/modules/zsh.nix index 225fe55..a0979e4 100644 --- a/modules/zsh.nix +++ b/modules/zsh.nix @@ -30,10 +30,10 @@ dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY DBUS_SESSION_BUS_ADDRESS 2>/dev/null fi - # Automatically start dwl on TTY 1 - # if [ -z "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then - # exec dwl - # fi + # Automatically start niri on TTY 1 + if [ -z "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then + exec niri + fi ''; history = { @@ -86,118 +86,6 @@ }; }; - programs.starship = { - enable = true; - enableZshIntegration = true; - - settings = { - add_newline = false; - command_timeout = 500; - scan_timeout = 10; - - format = lib.concatStrings [ - "$directory" - "$git_branch" - "$git_status" - "$nix_shell" - "$python" - "$c" - "$rust" - "$cmd_duration" - "$jobs" - "$line_break" - "$character" - ]; - - character = { - success_symbol = "[❯](bold green)"; - error_symbol = "[❯](bold red)"; - vimcmd_symbol = "[❮](bold yellow)"; - }; - - directory = { - style = "bold cyan"; - truncation_length = 3; - truncate_to_repo = true; - truncation_symbol = "…/"; - read_only = " 🔒"; - }; - - git_branch = { - style = "bold purple"; - format = "[$symbol$branch]($style) "; - symbol = " "; - }; - - git_status = { - style = "bold red"; - format = "([$all_status$ahead_behind]($style)) "; - conflicted = "="; - ahead = "⇡\${count}"; - behind = "⇣\${count}"; - diverged = "⇕⇡\${ahead_count}⇣\${behind_count}"; - staged = "+\${count}"; - modified = "!\${count}"; - untracked = "?\${count}"; - stashed = "\$"; - }; - - nix_shell = { - style = "bold blue"; - format = "[$symbol$state( \($name\))]($style) "; - symbol = "❄ "; - impure_msg = "impure"; - pure_msg = "pure"; - }; - - python = { - style = "bold yellow"; - format = "[$symbol( \($virtualenv\))]($style) "; - symbol = " "; - detect_extensions = [ "py" ]; - detect_files = [ - "pyproject.toml" - "requirements.txt" - "uv.lock" - ]; - }; - - c = { - style = "bold dimmed white"; - format = "[$symbol($version(-$name))]($style) "; - symbol = " "; - detect_extensions = [ - "c" - "h" - ]; - }; - - rust = { - disabled = true; - }; - - cmd_duration = { - style = "bold yellow"; - format = "[$duration]($style) "; - min_time = 2000; - show_notifications = false; - }; - - jobs = { - style = "bold blue"; - symbol = "✦"; - number_threshold = 1; - }; - - aws.disabled = true; - gcloud.disabled = true; - docker_context.disabled = true; - kubernetes.disabled = true; - package.disabled = true; - battery.disabled = true; - }; - }; - programs.zoxide = { enable = true; enableZshIntegration = true; @@ -228,5 +116,10 @@ enableZshIntegration = true; defaultCommand = "fd --type f --hidden --exclude .git"; }; + + programs.yazi = { + enable = true; + enableZshIntegration = true; + }; }; }