From 5057f8d597c243515560d45d955bce2557ae056f Mon Sep 17 00:00:00 2001 From: Noah Masur <7386960+nmasur@users.noreply.github.com> Date: Sat, 30 Apr 2022 17:27:42 -0400 Subject: [PATCH] add polybar default config --- modules/desktop/default.nix | 2 +- modules/desktop/i3.nix | 39 +-------- modules/desktop/polybar.nix | 159 ++++++++++++++++++++++++++++++++++++ nixos/home.nix | 4 +- 4 files changed, 164 insertions(+), 40 deletions(-) create mode 100644 modules/desktop/polybar.nix diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index f9b699c..2afff6f 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -1,5 +1,5 @@ { ... }: { - imports = [ ./xorg.nix ./fonts.nix ./i3.nix ]; + imports = [ ./xorg.nix ./fonts.nix ./i3.nix ./polybar.nix ]; } diff --git a/modules/desktop/i3.nix b/modules/desktop/i3.nix index c4ee171..9bcc4b9 100644 --- a/modules/desktop/i3.nix +++ b/modules/desktop/i3.nix @@ -1,17 +1,4 @@ -{ config, pkgs, lib, identity, ... }: - -let - - polybarReload = pkgs.writeShellScriptBin "polybarReload" '' - pkill polybar - while pgrep -x polybar > /dev/null; do sleep 1; done - polybar & - ''; - - i3 = - config.home-manager.users.${identity.user}.xsession.windowManager.i3.config; - -in { +{ config, pkgs, lib, identity, ... }: { config = lib.mkIf config.services.xserver.enable { @@ -21,7 +8,6 @@ in { dmenu # Launcher feh # Wallpaper playerctl # Media control - polybarFull # Polybar + PulseAudio ]; # Icons for i3 @@ -30,7 +16,7 @@ in { home-manager.users.${identity.user}.xsession.windowManager.i3 = { enable = true; config = let - modifier = i3.modifier; + modifier = "Mod4"; # Super key ws1 = "1:"; ws2 = "2:"; ws3 = "3:"; @@ -42,7 +28,7 @@ in { ws9 = "9:"; ws10 = "10:"; in { - modifier = "Mod4"; # Super key + modifier = modifier; assigns = { "${ws1}" = [{ class = "^Firefox$"; }]; "${ws2}" = [{ class = "^Alacritty$"; }]; @@ -212,18 +198,6 @@ in { always = true; notification = false; } - { - command = builtins.toString polybarReload; - always = true; - notification = false; - } - { - # Start XDG autostart .desktop files using dex. See also - # https://wiki.archlinux.org/index.php/XDG_Autostart - command = "dex --autostart --environment i3"; - always = false; - notification = false; - } { # xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the # screen before suspend. Use loginctl lock-session to lock your screen. @@ -231,13 +205,6 @@ in { always = false; notification = false; } - { - # NetworkManager is the most popular way to manage wireless networks on Linux, - # and nm-applet is a desktop environment-independent system tray GUI for it. - command = "nm-applet"; - always = false; - notification = false; - } ]; window = { border = 1; diff --git a/modules/desktop/polybar.nix b/modules/desktop/polybar.nix new file mode 100644 index 0000000..c08c246 --- /dev/null +++ b/modules/desktop/polybar.nix @@ -0,0 +1,159 @@ +{ config, pkgs, lib, identity, ... }: { + + config = lib.mkIf config.services.xserver.enable { + + environment.systemPackages = with pkgs; + [ + polybarFull # Includes PulseAudio + ]; + + home-manager.users.${identity.user} = { + + services.polybar = { + enable = true; + script = "polybar &"; + config = let + colors = { + background = "#282A2E"; + background-alt = "#373B41"; + foreground = "#C5C8C6"; + primary = "#F0C674"; + secondary = "#8ABEB7"; + alert = "#A54242"; + disabled = "#707880"; + }; + in { + "bar/example" = { + width = "100%"; + height = "24pt"; + radius = 6; + # dpi = 96; + background = colors.background; + foreground = colors.foreground; + line-size = "3pt"; + border-size = "4pt"; + border-color = "#00000000"; + padding-left = 0; + padding-right = 1; + module-margin = 1; + separator = "|"; + separator-foreground = colors.disabled; + font-0 = "monospace;2"; + font-1 = "Font Awesome 5 Free"; + font-2 = "Font Awesome 5 Free Solid"; + font-3 = "Font Awesome 5 Brands"; + modules-left = "xworkspaces xwindow"; + modules-right = + "filesystem pulseaudio xkeyboard memory cpu wlan eth date"; + cursor-click = "pointer"; + cursor-scroll = "ns-resize"; + enable-ipc = true; + # tray-position = right + # wm-restack = generic + # wm-restack = bspwm + # wm-restack = i3 + # override-redirect = true + }; + "module/xworkspaces" = { + type = "internal/xworkspaces"; + label-active = "%name%"; + label-active-background = colors.background-alt; + label-active-underline = colors.primary; + label-active-padding = 1; + label-occupied = "%name%"; + label-occupied-padding = 1; + label-urgent = "%name%"; + label-urgent-background = colors.alert; + label-urgent-padding = 1; + label-empty = "%name%"; + label-empty-foreground = colors.disabled; + label-empty-padding = 1; + }; + "module/xwindow" = { + type = "internal/xwindow"; + label = "%title:0:60:...%"; + }; + "module/filesystem" = { + type = "internal/fs"; + interval = 25; + mount-0 = "/"; + label-mounted = "%{F#F0C674}%mountpoint%%{F-} %percentage_used%%"; + label-unmounted = "%mountpoint% not mounted"; + label-unmounted-foreground = colors.disabled; + }; + "module/pulseaudio" = { + type = "internal/pulseaudio"; + format-volume-prefix = "VOL "; + format-volume-prefix-foreground = colors.primary; + format-volume = ""; + label-volume = "%percentage%%"; + label-muted = "muted"; + label-muted-foreground = colors.disabled; + }; + "module/xkeyboard" = { + type = "internal/xkeyboard"; + blacklist-0 = "num lock"; + label-layout = "%layout%"; + label-layout-foreground = colors.primary; + label-indicator-padding = 2; + label-indicator-margin = 1; + label-indicator-foreground = colors.background; + label-indicator-background = colors.secondary; + }; + "module/memory" = { + type = "internal/memory"; + interval = 2; + format-prefix = "RAM "; + format-prefix-foreground = colors.primary; + label = "%percentage_used:2%%"; + }; + "module/cpu" = { + type = "internal/cpu"; + interval = 2; + format-prefix = "CPU "; + format-prefix-foreground = colors.primary; + label = "%percentage:2%%"; + }; + "network-base" = { + type = "internal/network"; + interval = 5; + format-connected = ""; + format-disconnected = ""; + label-disconnected = "%{F#F0C674}%ifname%%{F#707880} disconnected"; + }; + "module/wlan" = { + "inherit" = "network-base"; + interface-type = "wireless"; + label-connected = "%{F#F0C674}%ifname%%{F-} %essid% %local_ip%"; + }; + "module/eth" = { + "inherit" = "network-base"; + interface-type = "wired"; + label-connected = "%{F#F0C674}%ifname%%{F-} %local_ip%"; + }; + "module/date" = { + type = "internal/date"; + interval = 1; + date = "%H:%M"; + date-alt = "%Y-%m-%d %H:%M:%S"; + label = "%date%"; + label-foreground = colors.primary; + }; + "settings" = { + screenchange-reload = true; + pseudo-transparency = true; + }; + }; + }; + + xsession.windowManager.i3.config.startup = [{ + command = "systemctl --user restart polybar"; + always = true; + notification = false; + }]; + + }; + }; + +} + diff --git a/nixos/home.nix b/nixos/home.nix index 9d10fb8..3ff119e 100644 --- a/nixos/home.nix +++ b/nixos/home.nix @@ -13,9 +13,7 @@ ]; home.sessionVariables = { - NIXOS_CONFIG = builtins.toString ./.; - DOTS = builtins.toString ../.; - NOTES_PATH = "$HOME/dev/personal/notes"; + NOTES_PATH = "/home/${identity.user}/dev/personal/notes"; }; };