diff --git a/modules/desktop-environment/audio.nix b/modules/desktop-environment/audio.nix index 7cc85e3..ca23387 100644 --- a/modules/desktop-environment/audio.nix +++ b/modules/desktop-environment/audio.nix @@ -1,39 +1,25 @@ -{ - config, - lib, - pkgs, - ... -}: { - config = { - programs = { - noisetorch.enable = true; - }; - services = { - pipewire = { - enable = true; - alsa.enable = true; - pulse.enable = true; - jack.enable = true; - }; - }; - hardware.pulseaudio.enable = pkgs.lib.mkForce false; - sound.mediaKeys.enable = true; - home-manager.users.jade = {pkgs, ...}: { - home.packages = with pkgs; [ - pavucontrol - pulseaudioFull - easyeffects - cava - volumeicon - playerctl - helvum - ]; - xsession.windowManager.i3.config.startup = [ - { - command = "pkill volumeicon; volumeicon"; - always = true; - } - ]; +{pkgs, ...}: { + programs = { + noisetorch.enable = true; + }; + services = { + pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + jack.enable = true; }; }; + environment.systemPackages = with pkgs; [ + pavucontrol + volumeicon + playerctl + + pulseaudioFull + easyeffects + cava + helvum + ]; + hardware.pulseaudio.enable = pkgs.lib.mkForce false; + sound.mediaKeys.enable = true; } diff --git a/modules/desktop-environment/compositing.nix b/modules/desktop-environment/compositing.nix deleted file mode 100644 index 7936f80..0000000 --- a/modules/desktop-environment/compositing.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: let - cfg = config.jade.desktop.compositing; -in - with lib; { - options.jade.desktop.compositing = { - enable = mkEnableOption "Enable compositing with picom"; - }; - config = mkIf cfg.enable { - services.picom = { - enable = true; - backend = "glx"; - - shadow = true; - shadowOffsets = [(-40) (-30)]; - shadowOpacity = 0.2; - shadowExclude = [ - "class_g ?= 'Notify-osd'" - "_GTK_FRAME_EXTENTS@:c" - "!(class_g = 'Rofi' || class_g = 'Dunst')" - ]; - - vSync = true; - settings = { - "shadow-radius" = 40; - # fading rofi - "fading" = true; - "fade-in-step" = 0.25; - "fade-out-step" = 0.2; - "fade-delta" = 20; - "fade-exclude" = ["class_g != 'Rofi'"]; - # use damage information - "use-damage" = true; - }; - }; - # }}} - }; - } diff --git a/modules/desktop-environment/default.nix b/modules/desktop-environment/default.nix index 896469c..3e149b8 100644 --- a/modules/desktop-environment/default.nix +++ b/modules/desktop-environment/default.nix @@ -1,11 +1,7 @@ {...}: { imports = [ ./audio.nix - ./compositing.nix - ./dunst.nix - ./panels - ./xmonad - ./terminal.nix ./flatpak.nix + ./home ]; } diff --git a/modules/desktop-environment/dunst.nix b/modules/desktop-environment/dunst.nix deleted file mode 100644 index f971e22..0000000 --- a/modules/desktop-environment/dunst.nix +++ /dev/null @@ -1,19 +0,0 @@ -{...}: { - home-manager.users.jade = {pkgs, ...}: { - services.dunst = { - enable = true; - settings = { - global = { - dmenu = "${pkgs.rofi}/bin/rofi -theme gruvbox-dark -dmenu -p dunst"; - browser = "${pkgs.librewolf}/bin/librewolf"; - mouse_left_click = "context"; - mouse_middle_click = "close_current"; - background = "#282828"; - foreground = "#ebdbb2"; - frame_color = "#504945"; - frame_width = 2; - }; - }; - }; - }; -} diff --git a/modules/desktop-environment/home/compositing.nix b/modules/desktop-environment/home/compositing.nix new file mode 100644 index 0000000..a9823d6 --- /dev/null +++ b/modules/desktop-environment/home/compositing.nix @@ -0,0 +1,28 @@ +{...}: { + services.picom = { + enable = true; + backend = "glx"; + + shadow = true; + shadowOffsets = [(-40) (-30)]; + shadowOpacity = 0.2; + shadowExclude = [ + "class_g ?= 'Notify-osd'" + "_GTK_FRAME_EXTENTS@:c" + "!(class_g = 'Rofi' || class_g = 'Dunst')" + ]; + + vSync = true; + settings = { + "shadow-radius" = 40; + # fading rofi + "fading" = true; + "fade-in-step" = 0.25; + "fade-out-step" = 0.2; + "fade-delta" = 20; + "fade-exclude" = ["class_g != 'Rofi'"]; + # use damage information + "use-damage" = true; + }; + }; +} diff --git a/modules/desktop-environment/home/default.nix b/modules/desktop-environment/home/default.nix new file mode 100644 index 0000000..6891b94 --- /dev/null +++ b/modules/desktop-environment/home/default.nix @@ -0,0 +1,11 @@ +{...}: { + home-manager.users.jade = {...}: { + imports = [ + ./notifications.nix + ./terminal.nix + ./compositing.nix + ./panels + ./xmonad + ]; + }; +} diff --git a/modules/desktop-environment/home/notifications.nix b/modules/desktop-environment/home/notifications.nix new file mode 100644 index 0000000..3d4eff1 --- /dev/null +++ b/modules/desktop-environment/home/notifications.nix @@ -0,0 +1,17 @@ +{pkgs, ...}: { + services.dunst = { + enable = true; + settings = { + global = { + dmenu = "${pkgs.rofi}/bin/rofi -theme gruvbox-dark -dmenu -p dunst"; + browser = "${pkgs.librewolf}/bin/librewolf"; + mouse_left_click = "context"; + mouse_middle_click = "close_current"; + background = "#282828"; + foreground = "#ebdbb2"; + frame_color = "#504945"; + frame_width = 2; + }; + }; + }; +} diff --git a/modules/desktop-environment/panels/default.nix b/modules/desktop-environment/home/panels/default.nix similarity index 100% rename from modules/desktop-environment/panels/default.nix rename to modules/desktop-environment/home/panels/default.nix diff --git a/modules/desktop-environment/home/panels/polybar.nix b/modules/desktop-environment/home/panels/polybar.nix new file mode 100644 index 0000000..dd49ce9 --- /dev/null +++ b/modules/desktop-environment/home/panels/polybar.nix @@ -0,0 +1,146 @@ +{ + config, + lib, + pkgs, + ... +}: { + services.polybar = { + enable = true; + package = pkgs.polybarFull; + + script = ""; + settings = { + colors = { + background = "#282828"; + background-alt = "#3c3836"; + foreground = "#ebdbb2"; + primary = "#d65d0e"; + secondary = "#fe8019"; + alert = "#cc241d"; + disabled = "#504945"; + }; + "bar/status" = { + # Style + bottom = true; + width = "100%"; + height = "24px"; + radius = 0; + tray-position = "center"; + background = "\${colors.background}"; + foreground = "\${colors.foreground}"; + line-size = "4px"; + border-color = "#00000000"; + padding-left = 0; + padding-right = 1; + module-margin = 1; + separator = "|"; + separator-foreground = "\${colors.disabled}"; + font-0 = "FiraCode Nerd Font"; + modules-left = "xworkspaces xwindow"; + modules-right = "memory cpu wlan bat0 bat1"; + cursor-click = "pointer"; + cursor-scroll = "ns-resize"; + enable-ipc = true; + wm-restack = "generic"; + override-redirect = false; + }; + + "module/xworkspaces" = { + type = "internal/xworkspaces"; + label-active = ""; + label-active-padding = 1; + label-occupied = ""; + label-occupied-padding = 1; + label-urgent = ""; + label-urgent-foreground = "\${colors.alert}"; + label-urgent-padding = 1; + label-empty = ""; + label-empty-foreground = "\${colors.disabled}"; + label-empty-padding = 1; + }; + + "module/xwindow" = { + type = "internal/xwindow"; + label = "%title:0:60:...%"; + }; + + "module/memory" = { + type = "internal/memory"; + interval = 2; + format-prefix = "󰍛 "; + format-prefix-foreground = "\${colors.primary}"; + label = "%percentage_used:2%%"; + }; + + "module/cpu" = { + type = "internal/cpu"; + interval = "2"; + format-prefix = "󰻠 "; + format-prefix-foreground = "\${colors.primary}"; + label = "%percentage:2%%"; + }; + + "network-base" = { + type = "internal/network"; + interval = 5; + format-connected = " "; + format-disconnected = ""; + label-disconnected = "󰣼"; + label-disconnected-foreground = "#d65d0e"; + ramp.signal = [ + "%{F#cc241d}󰣾" + "%{F#d79921}󰣴" + "%{F#98971a}󰣶" + "%{F#98971a}󰣸" + "%{F#98971a}󰣺" + ]; + }; + + "module/wlan" = { + "inherit" = "network-base"; + interface-type = "wireless"; + label-connected = "%{F#F0C674}%{F-} %local_ip%"; + }; + "battery-base" = { + type = "internal/battery"; + poll-interval = 1; + time-format = "%H%{F#7c6f64}:%{F#d5c4a1}%M"; + label-charging = "%{F#98971a}󰚥 %{F#ebdbb2}%percentage%%%{F#d5c4a1} %time%"; + format-charging = " "; + label-discharging = "%{F#ebdbb2}%percentage%%%{F#bdae93} %time%"; + format-discharging = " "; + label-full = "%{F#98971a}󰁹%{F#ebdbb2} %percentage%%"; + format-full = ""; + label-low = "%{F#cc241d}󰂎%{F#ebdbb2} %percentage%%"; + format-low = ""; + ramp.capacity = [ + "%{F#cc241d}󰁺" + "%{F#d79921}󰁻" + "%{F#98971a}󰁼" + "%{F#98971a}󰁽" + "%{F#98971a}󰁾" + "%{F#98971a}󰁿" + "%{F#98971a}󰂀" + "%{F#98971a}󰂁" + "%{F#98971a}󰂂" + "%{F#98971a}󰁹" + ]; + }; + "module/bat0" = { + "inherit" = "battery-base"; + battery = "BAT0"; + adapter = "ADP1"; + }; + "module/bat1" = { + "inherit" = "battery-base"; + battery = "BAT1"; + adapter = "ADP1"; + }; + + "settings" = { + screenchange-reload = true; + pseudo-transparency = true; + }; + }; + }; +} diff --git a/modules/desktop-environment/home/panels/xmobar/default.nix b/modules/desktop-environment/home/panels/xmobar/default.nix new file mode 100644 index 0000000..c5ac0f8 --- /dev/null +++ b/modules/desktop-environment/home/panels/xmobar/default.nix @@ -0,0 +1,27 @@ +{ + lib, + pkgs, + ... +}: let + xmobarGhc = pkgs.haskellPackages.ghcWithPackages (pkgs: + with pkgs; [ + xmobar + statgrab + ]); +in { + home = { + packages = [xmobarGhc]; + file."xmobar.hs" = rec { + source = ./xmobar.hs; + target = ".config/xmobar/xmobar.hs"; + onChange = '' + ${xmobarGhc}/bin/ghc -threaded ${target} + ${pkgs.busybox}/bin/pkill xmobar + ${pkgs.haskellPackages.xmonad}/bin/xmonad --restart + ''; + }; + }; + programs.xmobar = { + enable = true; + }; +} diff --git a/modules/desktop-environment/panels/xmobar/xmobar.hs b/modules/desktop-environment/home/panels/xmobar/xmobar.hs similarity index 100% rename from modules/desktop-environment/panels/xmobar/xmobar.hs rename to modules/desktop-environment/home/panels/xmobar/xmobar.hs diff --git a/modules/desktop-environment/home/terminal.nix b/modules/desktop-environment/home/terminal.nix new file mode 100644 index 0000000..ad9f3c8 --- /dev/null +++ b/modules/desktop-environment/home/terminal.nix @@ -0,0 +1,34 @@ +{...}: { + programs.kitty = { + enable = true; + font = { + name = "FiraCode Nerd Font"; + size = 11; + }; + settings = { + #adjust_column_width = "70%"; + color0 = "#282828"; + color8 = "#928374"; + color1 = "#cc241d"; + color9 = "#fb4934"; + color2 = "#98971a"; + color10 = "#b8bb26"; + color3 = "#d79921"; + color11 = "#fabd2f"; + color4 = "#458588"; + color12 = "#83a598"; + color5 = "#b16286"; + color13 = "#d3869b"; + color6 = "#689d6a"; + color14 = "#8ec07c"; + color7 = "#a89984"; + color15 = "#ebdbb2"; + foreground = "#ebdbb2"; + background = "#282828"; + confirm_os_window_close = 0; + }; + }; + home.sessionVariables = { + TERMINAL = "kitty"; + }; +} diff --git a/modules/desktop-environment/home/xmonad/default.nix b/modules/desktop-environment/home/xmonad/default.nix new file mode 100644 index 0000000..5242f57 --- /dev/null +++ b/modules/desktop-environment/home/xmonad/default.nix @@ -0,0 +1,9 @@ +{pkgs, ...}: { + imports = [./wallpaper]; + home.packages = [pkgs.xmonadctl]; + xsession.windowManager.xmonad = { + enable = true; + enableContribAndExtras = true; + config = ./xmonad.hs; + }; +} diff --git a/modules/desktop-environment/home/xmonad/wallpaper/default.nix b/modules/desktop-environment/home/xmonad/wallpaper/default.nix new file mode 100644 index 0000000..12d938e --- /dev/null +++ b/modules/desktop-environment/home/xmonad/wallpaper/default.nix @@ -0,0 +1,9 @@ +{...}: { + home.file.wallpaper = { + target = "Pictures/wallpaper.jpg"; + source = ./wallpaper.jpg; + onChange = '' + feh --bg-fill ~/Pictures/wallpaper.jpg; + ''; + }; +} diff --git a/other/wallpaper.jpg b/modules/desktop-environment/home/xmonad/wallpaper/wallpaper.jpg similarity index 100% rename from other/wallpaper.jpg rename to modules/desktop-environment/home/xmonad/wallpaper/wallpaper.jpg diff --git a/modules/desktop-environment/xmonad/xmonad.hs b/modules/desktop-environment/home/xmonad/xmonad.hs similarity index 97% rename from modules/desktop-environment/xmonad/xmonad.hs rename to modules/desktop-environment/home/xmonad/xmonad.hs index 4fed0fe..4f2f9ce 100644 --- a/modules/desktop-environment/xmonad/xmonad.hs +++ b/modules/desktop-environment/home/xmonad/xmonad.hs @@ -68,7 +68,10 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = -- TODO: other media keys ((0, xF86XK_AudioRaiseVolume), spawn "amixer -D pulse sset Master 10%+"), ((0, xF86XK_AudioLowerVolume), spawn "amixer -D pulse sset Master 10%-"), - ((0, xF86XK_AudioMute), spawn "amixer -D pulse sset Master toggle") + ((0, xF86XK_AudioMute), spawn "amixer -D pulse sset Master toggle"), + ((0, xF86XK_AudioNext), spawn "playerctl next"), + ((0, xF86XK_AudioPrev), spawn "playerctl previous"), + ((0, xF86XK_AudioPause), spawn "playerctl play-pause") ] ++ [ ((m .|. modm, k), windows $ f i) | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9], diff --git a/modules/desktop-environment/panels/polybar.nix b/modules/desktop-environment/panels/polybar.nix deleted file mode 100644 index b822dd8..0000000 --- a/modules/desktop-environment/panels/polybar.nix +++ /dev/null @@ -1,150 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: { - config = { - home-manager.users.jade = {pkgs, ...}: { - services.polybar = { - enable = true; - package = pkgs.polybarFull; - - script = ""; - settings = { - colors = { - background = "#282828"; - background-alt = "#3c3836"; - foreground = "#ebdbb2"; - primary = "#d65d0e"; - secondary = "#fe8019"; - alert = "#cc241d"; - disabled = "#504945"; - }; - "bar/status" = { - # Style - bottom = true; - width = "100%"; - height = "24px"; - radius = 0; - tray-position = "center"; - background = "\${colors.background}"; - foreground = "\${colors.foreground}"; - line-size = "4px"; - border-color = "#00000000"; - padding-left = 0; - padding-right = 1; - module-margin = 1; - separator = "|"; - separator-foreground = "\${colors.disabled}"; - font-0 = "FiraCode Nerd Font"; - modules-left = "xworkspaces xwindow"; - modules-right = "memory cpu wlan bat0 bat1"; - cursor-click = "pointer"; - cursor-scroll = "ns-resize"; - enable-ipc = true; - wm-restack = "generic"; - override-redirect = false; - }; - - "module/xworkspaces" = { - type = "internal/xworkspaces"; - label-active = ""; - label-active-padding = 1; - label-occupied = ""; - label-occupied-padding = 1; - label-urgent = ""; - label-urgent-foreground = "\${colors.alert}"; - label-urgent-padding = 1; - label-empty = ""; - label-empty-foreground = "\${colors.disabled}"; - label-empty-padding = 1; - }; - - "module/xwindow" = { - type = "internal/xwindow"; - label = "%title:0:60:...%"; - }; - - "module/memory" = { - type = "internal/memory"; - interval = 2; - format-prefix = "󰍛 "; - format-prefix-foreground = "\${colors.primary}"; - label = "%percentage_used:2%%"; - }; - - "module/cpu" = { - type = "internal/cpu"; - interval = "2"; - format-prefix = "󰻠 "; - format-prefix-foreground = "\${colors.primary}"; - label = "%percentage:2%%"; - }; - - "network-base" = { - type = "internal/network"; - interval = 5; - format-connected = " "; - format-disconnected = ""; - label-disconnected = "󰣼"; - label-disconnected-foreground = "#d65d0e"; - ramp.signal = [ - "%{F#cc241d}󰣾" - "%{F#d79921}󰣴" - "%{F#98971a}󰣶" - "%{F#98971a}󰣸" - "%{F#98971a}󰣺" - ]; - }; - - "module/wlan" = { - "inherit" = "network-base"; - interface-type = "wireless"; - label-connected = "%{F#F0C674}%{F-} %local_ip%"; - }; - "battery-base" = { - type = "internal/battery"; - poll-interval = 1; - time-format = "%H%{F#7c6f64}:%{F#d5c4a1}%M"; - label-charging = "%{F#98971a}󰚥 %{F#ebdbb2}%percentage%%%{F#d5c4a1} %time%"; - format-charging = " "; - label-discharging = "%{F#ebdbb2}%percentage%%%{F#bdae93} %time%"; - format-discharging = " "; - label-full = "%{F#98971a}󰁹%{F#ebdbb2} %percentage%%"; - format-full = ""; - label-low = "%{F#cc241d}󰂎%{F#ebdbb2} %percentage%%"; - format-low = ""; - ramp.capacity = [ - "%{F#cc241d}󰁺" - "%{F#d79921}󰁻" - "%{F#98971a}󰁼" - "%{F#98971a}󰁽" - "%{F#98971a}󰁾" - "%{F#98971a}󰁿" - "%{F#98971a}󰂀" - "%{F#98971a}󰂁" - "%{F#98971a}󰂂" - "%{F#98971a}󰁹" - ]; - }; - "module/bat0" = { - "inherit" = "battery-base"; - battery = "BAT0"; - adapter = "ADP1"; - }; - "module/bat1" = { - "inherit" = "battery-base"; - battery = "BAT1"; - adapter = "ADP1"; - }; - - "settings" = { - screenchange-reload = true; - pseudo-transparency = true; - }; - }; - }; - }; - }; -} diff --git a/modules/desktop-environment/panels/xmobar/default.nix b/modules/desktop-environment/panels/xmobar/default.nix deleted file mode 100644 index 32a11aa..0000000 --- a/modules/desktop-environment/panels/xmobar/default.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - lib, - pkgs, - ... -}: { - home-manager.users.jade = { - config, - pkgs, - ... - }: let - xmobarGhc = pkgs.haskellPackages.ghcWithPackages (pkgs: - with pkgs; [ - xmobar - statgrab - ]); - in { - home = { - packages = [xmobarGhc]; - file."xmobar.hs" = rec { - source = ./xmobar.hs; - target = ".config/xmobar/xmobar.hs"; - onChange = '' - ${xmobarGhc}/bin/ghc -threaded ${target} - ${pkgs.busybox}/bin/pkill xmobar - ${pkgs.haskellPackages.xmonad}/bin/xmonad --restart - ''; - }; - }; - programs.xmobar = { - enable = true; - }; - }; -} diff --git a/modules/desktop-environment/terminal.nix b/modules/desktop-environment/terminal.nix deleted file mode 100644 index 23ce2cb..0000000 --- a/modules/desktop-environment/terminal.nix +++ /dev/null @@ -1,36 +0,0 @@ -{...}: { - environment.sessionVariables = { - TERMINAL = "kitty"; - }; - home-manager.users.jade = {pkgs, ...}: { - programs.kitty = { - enable = true; - font = { - name = "FiraCode Nerd Font"; - size = 11; - }; - settings = { - #adjust_column_width = "70%"; - color0 = "#282828"; - color8 = "#928374"; - color1 = "#cc241d"; - color9 = "#fb4934"; - color2 = "#98971a"; - color10 = "#b8bb26"; - color3 = "#d79921"; - color11 = "#fabd2f"; - color4 = "#458588"; - color12 = "#83a598"; - color5 = "#b16286"; - color13 = "#d3869b"; - color6 = "#689d6a"; - color14 = "#8ec07c"; - color7 = "#a89984"; - color15 = "#ebdbb2"; - foreground = "#ebdbb2"; - background = "#282828"; - confirm_os_window_close = 0; - }; - }; - }; -} diff --git a/modules/desktop-environment/xmonad/default.nix b/modules/desktop-environment/xmonad/default.nix deleted file mode 100644 index ec930e4..0000000 --- a/modules/desktop-environment/xmonad/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - lib, - pkgs, - ... -}: { - home-manager.users.jade = { - config, - pkgs, - ... - }: { - home.packages = [pkgs.xmonadctl]; - xsession.windowManager.xmonad = { - enable = true; - enableContribAndExtras = true; - config = ./xmonad.hs; - }; - home.file.wallpaper = { - target = "Pictures/wallpaper.jpg"; - source = ../../../other/wallpaper.jpg; - onChange = '' - feh --bg-fill ~/Pictures/wallpaper.jpg; - ''; - }; - }; -}