From d75d13332894f3c81d78fb0ffec05d3b458e90d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 23 Mar 2022 12:42:04 +0100 Subject: [PATCH] :rocket: add desktop module --- modules/desktop/bspwm/default.nix | 116 +++++++++------- modules/desktop/bspwm/polybar.nix | 206 ++++++++++++++++++++++++++++ modules/desktop/default.nix | 36 +++-- modules/desktop/polybar/default.nix | 203 --------------------------- 4 files changed, 295 insertions(+), 266 deletions(-) create mode 100644 modules/desktop/bspwm/polybar.nix delete mode 100644 modules/desktop/polybar/default.nix diff --git a/modules/desktop/bspwm/default.nix b/modules/desktop/bspwm/default.nix index f101442..03e6a76 100644 --- a/modules/desktop/bspwm/default.nix +++ b/modules/desktop/bspwm/default.nix @@ -1,60 +1,76 @@ { config, lib, pkgs, ... }: -{ - services = { - xserver = { - enable = true; - layout = "de"; +let cfg = config.modules.desktop; +in { + imports = [ ./polybar.nix ]; - displayManager = { - defaultSession = "none+bspwm"; + config = lib.mkIf (cfg.name == "bspwm") { + services = { + xserver = { + enable = true; + layout = "de"; - autoLogin = { - enable = true; - user = "moritz"; + displayManager = { + defaultSession = "none+bspwm"; + + autoLogin = { + enable = true; + user = "moritz"; + }; + lightdm.enable = true; }; - lightdm = { enable = true; }; + windowManager.bspwm.enable = true; }; - windowManager.bspwm.enable = true; - }; - }; - - console.keyMap = "de"; - - home-manager.users.moritz = { - xsession.windowManager.bspwm = { - enable = true; - rules = { - "Zathura" = { state = "tiled"; }; - "Emacs" = { state = "tiled"; }; - "feh" = { state = "floating"; }; - "Vampire_Survivors" = { state = "fullscreen"; }; - }; - settings = { - border_width = 2; - window_gap = 5; - borderless_monocle = true; - gapless_monocle = true; - focus_follows_pointer = true; - - # Dracula theme # - focused_border_color = "#bd93f9"; - normal_border_color = "#44475a"; - active_border_color = "#6272a4"; - }; - startupPrograms = [ - "${pkgs.systemd}/bin/systemctl --user start polybar.service" - "randomWallpaper" - "synology-drive" - ]; - extraConfig = builtins.readFile ./bspwmrc; - - }; - services.sxhkd = { - enable = true; - extraConfig = builtins.readFile ./sxhkdrc; }; - home.packages = with pkgs; [ feh playerctl pamixer brightnessctl ]; + console.keyMap = "de"; + + home-manager.users.moritz = { + xsession.windowManager.bspwm = { + enable = true; + rules = { + "Zathura" = { state = "tiled"; }; + "Emacs" = { state = "tiled"; }; + "feh" = { state = "floating"; }; + "Vampire_Survivors" = { state = "fullscreen"; }; + }; + settings = { + border_width = 2; + window_gap = 5; + borderless_monocle = true; + gapless_monocle = true; + focus_follows_pointer = true; + + # Dracula theme # + focused_border_color = "#bd93f9"; + normal_border_color = "#44475a"; + active_border_color = "#6272a4"; + }; + startupPrograms = [ + "${pkgs.systemd}/bin/systemctl --user start polybar.service" + "randomWallpaper" + "synology-drive" + ]; + extraConfig = '' + # MONITORS # + monitors=($(bspc query -M --names | sort -r)) + desktops=$(expr 10 / ''${#monitors[@]}) + start=1 + end=$desktops + for monitor in ''${monitors[@]}; do + bspc monitor $monitor -d $(seq -s ' ' $start $end) + start=$(expr $start + $desktops) + end=$(expr $end + $desktops) + done + ''; + + }; + services.sxhkd = { + enable = true; + extraConfig = builtins.readFile ./sxhkdrc; + }; + + home.packages = with pkgs; [ feh playerctl pamixer brightnessctl ]; + }; }; } diff --git a/modules/desktop/bspwm/polybar.nix b/modules/desktop/bspwm/polybar.nix new file mode 100644 index 0000000..2722df1 --- /dev/null +++ b/modules/desktop/bspwm/polybar.nix @@ -0,0 +1,206 @@ +{ config, lib, pkgs, ... }: + +let cfg = config.modules.desktop; +in { + config = lib.mkIf (cfg.name == "bspwm") { + home-manager.users.moritz = { + services.polybar = { + enable = true; + package = pkgs.polybar.override { pulseSupport = true; }; + script = '' + for m in $(polybar --list-monitors | ${pkgs.coreutils}/bin/cut -d":" -f1); do + MONITOR=$m polybar --reload bottom & + done + ''; + config = let + colors = { + background = "#282a36"; + current-line = "#44475a"; + foreground = "#f8f8f2"; + comment = "#6272a4"; + + cyan = "#8be9fd"; + green = "#50fa7b"; + orange = "#ffb86c"; + pink = "#ff79c6"; + purple = "#bd93f9"; + red = "#ff5555"; + yellow = "#f1fa8c"; + }; + in { + "global/wm" = { margin-top = 5; }; + "bar/bottom" = { + # position + monitor = "\${env:MONITOR}"; + bottom = true; + width = "100%:-20"; + heigth = 25; + background = colors.background; + foreground = colors.foreground; + radius = 10; + offset-x = 10; + offset-y = 5; + padding = 1; + + line-size = 3; + line-color = colors.pink; + + module-margin = 1; + separator = "%{F${colors.comment}}◆%{F-}"; + + font-0 = "FiraCode Nerd Font:size=10;0"; + + modules-left = "cpu memory network battery"; + modules-center = "bspwm"; + modules-right = "pulseaudio date time"; + + tray-position = "right"; + tray-padding = 2; + + wm-restack = "bspwm"; + + cursor-click = "pointer"; + cursor-scroll = "ns-resize"; + }; + "module/battery" = { + type = "internal/battery"; + battery = "BATT"; + adapter = "ACAD"; + time-format = "%H:%M"; + + format-charging = + "%{F${colors.green}}%{F-} "; + format-discharging = + "%{F${colors.red}}%{F-} "; + format-full = "%{F${colors.green}} %{F-} "; + + label-charging = "%percentage%% %time% remaining"; + label-discharging = "%percentage%% %time% remaining"; + label-full = "Fully charged"; + + animation-charging-0 = " "; + animation-charging-1 = " "; + animation-charging-2 = " "; + animation-charging-3 = " "; + animation-charging-4 = " "; + animation-charging-framerate = 500; + + animation-discharging-0 = " "; + animation-discharging-1 = " "; + animation-discharging-2 = " "; + animation-discharging-3 = " "; + animation-discharging-4 = " "; + animation-discharging-framerate = 500; + }; + "module/bspwm" = { + type = "internal/bspwm"; + + label-focused = ""; + label-focused-foreground = colors.purple; + label-focused-padding = 1; + + label-occupied = ""; + label-occupied-foreground = colors.comment; + label-occupied-padding = 1; + + label-urgent = ""; + label-urgent-foreground = colors.red; + label-urgent-padding = 1; + + label-empty = ""; + label-empty-foreground = colors.comment; + label-empty-padding = 1; + + label-separator = " "; + label-separator-foreground = colors.cyan; + label-separator-padding = 1; + + pin-workspaces = true; + }; + "module/cpu" = { + type = "internal/cpu"; + interval = 2; + format = "