From 8c62cc41d17e38f83a9a808448f2c048e2f335a3 Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Tue, 26 Dec 2023 02:48:49 +0100 Subject: [PATCH] All Sway config is now a module --- home-manager/desktop/default.nix | 30 -- home-manager/desktop/gtk.nix | 29 -- home-manager/desktop/qt.nix | 7 - home-manager/desktop/sway/default.nix | 18 -- home-manager/desktop/sway/mako.nix | 37 --- home-manager/desktop/sway/sway.nix | 193 ------------- home-manager/desktop/sway/swayidle.nix | 27 -- home-manager/desktop/sway/swaylock.nix | 29 -- home-manager/desktop/sway/waybar.nix | 258 ------------------ home-manager/desktop/xdg.nix | 18 -- hosts/morty/home-config.nix | 4 + modules/home-manager/default.nix | 1 + modules/home-manager/desktop/sway/default.nix | 105 +++++++ .../desktop/sway/includes}/fuzzel.nix | 11 +- .../desktop/sway/includes}/kanshi.nix | 26 +- .../desktop/sway/includes/mako.nix | 39 +++ .../desktop/sway/includes/sway.nix | 196 +++++++++++++ .../desktop/sway/includes/swayidle.nix | 30 ++ .../desktop/sway/includes/swaylock.nix | 33 +++ .../desktop/sway/includes/waybar.nix | 255 +++++++++++++++++ .../desktop/sway/includes}/zsh-autostart.nix | 0 nixos/default.nix | 1 - 22 files changed, 685 insertions(+), 662 deletions(-) delete mode 100644 home-manager/desktop/default.nix delete mode 100644 home-manager/desktop/gtk.nix delete mode 100644 home-manager/desktop/qt.nix delete mode 100644 home-manager/desktop/sway/default.nix delete mode 100644 home-manager/desktop/sway/mako.nix delete mode 100644 home-manager/desktop/sway/sway.nix delete mode 100644 home-manager/desktop/sway/swayidle.nix delete mode 100644 home-manager/desktop/sway/swaylock.nix delete mode 100644 home-manager/desktop/sway/waybar.nix delete mode 100644 home-manager/desktop/xdg.nix create mode 100644 modules/home-manager/desktop/sway/default.nix rename {home-manager/desktop/sway => modules/home-manager/desktop/sway/includes}/fuzzel.nix (79%) rename {home-manager/desktop/sway => modules/home-manager/desktop/sway/includes}/kanshi.nix (74%) create mode 100644 modules/home-manager/desktop/sway/includes/mako.nix create mode 100644 modules/home-manager/desktop/sway/includes/sway.nix create mode 100644 modules/home-manager/desktop/sway/includes/swayidle.nix create mode 100644 modules/home-manager/desktop/sway/includes/swaylock.nix create mode 100644 modules/home-manager/desktop/sway/includes/waybar.nix rename {home-manager/desktop/sway => modules/home-manager/desktop/sway/includes}/zsh-autostart.nix (100%) diff --git a/home-manager/desktop/default.nix b/home-manager/desktop/default.nix deleted file mode 100644 index 9829481..0000000 --- a/home-manager/desktop/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ pkgs, hostConfig, ... }: -{ - home.packages = with pkgs; [ - - dejavu_fonts - emojione - font-awesome - grim - lato - liberation_ttf - libertine - libnotify - (nerdfonts.override { - fonts = [ - "FiraCode" - ]; - }) - noto-fonts-emoji - noto-fonts-cjk - slurp - wl-clipboard - xdg-utils - ]; - imports = [ - ./sway - ./qt.nix - ./gtk.nix - ./xdg.nix - ]; -} diff --git a/home-manager/desktop/gtk.nix b/home-manager/desktop/gtk.nix deleted file mode 100644 index 6c6d912..0000000 --- a/home-manager/desktop/gtk.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ pkgs, ... }: -{ - gtk = { - enable = true; - theme = { - name = "Arc-Dark"; - package = pkgs.arc-theme; - }; - iconTheme = { - name = "Papirus Dark"; - package = pkgs.papirus-icon-theme; - }; - font = { - name = "Deja Vu Sans"; - package = "${pkgs.dejavu_fonts}"; - size = 10; - }; - }; - - home.pointerCursor = { - name = "Adwaita"; - package = pkgs.gnome.adwaita-icon-theme; - size = 24; - x11 = { - enable = true; - defaultCursor = "Adwaita"; - }; - }; -} diff --git a/home-manager/desktop/qt.nix b/home-manager/desktop/qt.nix deleted file mode 100644 index d1836a6..0000000 --- a/home-manager/desktop/qt.nix +++ /dev/null @@ -1,7 +0,0 @@ -_: { - qt = { - enable = true; - platformTheme = "gnome"; - style.name = "adwaita-dark"; - }; -} diff --git a/home-manager/desktop/sway/default.nix b/home-manager/desktop/sway/default.nix deleted file mode 100644 index bb475d5..0000000 --- a/home-manager/desktop/sway/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ hostConfig, ... }: -let - cfg = hostConfig; -in { - imports = [ - ./sway.nix - ./mako.nix - ./waybar.nix - ./swaylock.nix - ./swayidle.nix - ./fuzzel.nix - ./zsh-autostart.nix - ] ++ ( - if hostConfig.laptop then - [ ./kanshi.nix ] - else [] - ); -} diff --git a/home-manager/desktop/sway/mako.nix b/home-manager/desktop/sway/mako.nix deleted file mode 100644 index 23b3eb7..0000000 --- a/home-manager/desktop/sway/mako.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ pkgs, ... }: -{ - - systemd.user.services.mako = { - Service = { - ExecStart = "${pkgs.mako}/bin/mako"; - }; - Install = { - After = [ "sway-session.target" ]; - WantedBy = [ "sway-session.target" ]; - }; - }; - services.mako = { - enable = true; - font = "Fira Code 10"; - backgroundColor = "#353535FF"; - borderColor = "#1CD180"; - progressColor = "over #5566AAFF"; - textColor = "#FDFDFD"; - width = 300; - height = 100; - borderRadius = 0; - borderSize = 2; - icons = true; - maxIconSize = 64; - layer = "overlay"; - anchor = "top-right"; - extraConfig = '' - [urgency="high"] - border-color=#F268b3 - - [app-name="cmus"] - border-color=#00000000 - default-timeout=10000 - ''; - }; -} diff --git a/home-manager/desktop/sway/sway.nix b/home-manager/desktop/sway/sway.nix deleted file mode 100644 index 5e7f74d..0000000 --- a/home-manager/desktop/sway/sway.nix +++ /dev/null @@ -1,193 +0,0 @@ -{ pkgs, config, hostConfig, ...}: -{ - wayland.windowManager.sway = { - enable = true; - wrapperFeatures.gtk = true; - systemd.enable = true; - config = { - modifier = "Mod4"; - terminal = "${pkgs.foot}/bin/foot"; - left = "h"; - down = "j"; - up = "k"; - right = "l"; - bars= []; - input = { - "1003:8258:MNT_Reform_Keyboard" = { - xkb_layout = "us"; - xkb_variant = "altgr-intl"; - }; - }; - seat = { - "*".hide_cursor = "when-typing enable"; - }; - keybindings = let - mod = config.wayland.windowManager.sway.config.modifier; - inherit (config.wayland.windowManager.sway.config) - left down up right terminal; - in - { - "${mod}+1" = "workspace $ws1"; - "${mod}+Shift+1" = "move container to workspace $ws1"; - "${mod}+2" = "workspace $ws2"; - "${mod}+Shift+2" = "move container to workspace $ws2"; - "${mod}+3" = "workspace $ws3"; - "${mod}+Shift+3" = "move container to workspace $ws3"; - "${mod}+4" = "workspace $ws4"; - "${mod}+Shift+4" = "move container to workspace $ws4"; - "${mod}+5" = "workspace $ws5"; - "${mod}+Shift+5" = "move container to workspace $ws5"; - "${mod}+6" = "workspace $ws6"; - "${mod}+Shift+6" = "move container to workspace $ws6"; - "${mod}+7" = "workspace $ws7"; - "${mod}+Shift+7" = "move container to workspace $ws7"; - "${mod}+8" = "workspace $ws8"; - "${mod}+Shift+8" = "move container to workspace $ws8"; - "${mod}+9" = "workspace $ws9"; - "${mod}+Shift+9" = "move container to workspace $ws9"; - "${mod}+0" = "workspace $ws0"; - "${mod}+Shift+0" = "move container to workspace $ws0"; - "${mod}+Return" = "exec ${terminal}"; - "${mod}+Shift+q" = "kill"; - "${mod}+d" = "exec ${pkgs.fuzzel}/bin/fuzzel"; - "${mod}+Shift+c" = "reload"; - "${mod}+Alt+l" = "exec ${pkgs.swaylock}/bin/swaylock"; - "${mod}+${left} focus" = "left"; - "${mod}+${down} focus" = "down"; - "${mod}+${up} focus" = "up"; - "${mod}+${right} focus" = "right"; - "${mod}+Left" = "focus left"; - "${mod}+Down" = "focus down"; - "${mod}+Up" = "focus up"; - "${mod}+Right" = "focus right"; - "${mod}+Shift+${left} move" = "left"; - "${mod}+Shift+${down} move" = "down"; - "${mod}+Shift+${up} move" = "up"; - "${mod}+Shift+${right} move" = "right"; - "${mod}+Shift+Left" = "move left"; - "${mod}+Shift+Down" = "move down"; - "${mod}+Shift+Up" = "move up"; - "${mod}+Shift+Right" = "move right"; - "${mod}+b" = "splith"; - "${mod}+v" = "splitv"; - "${mod}+s" = "layout stacking"; - "${mod}+w" = "layout tabbed"; - "${mod}+e" = "layout toggle split"; - "${mod}+f" = "fullscreen"; - "${mod}+Shift+space" = "floating toggle"; - "${mod}+space" = "focus mode_toggle"; - "${mod}+a" = "focus parent"; - "${mod}+Shift+p" = "move scratchpad"; - "${mod}+p" = "scratchpad show"; - "${mod}+F1" = (if hostConfig.laptop then "exec ${pkgs.brightnessctl}/bin/brightnessctl s 1%-" else null); - "${mod}+F2" = (if hostConfig.laptop then "exec ${pkgs.brightnessctl}/bin/brightnessctl s +1%" else null); - "${mod}+F3" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_SINK@ 5%-"; - "${mod}+F4" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_SINK@ 5%+"; - "${mod}+F5" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_SINK@ toggle"; - "${mod}+m" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_SOURCE@ toggle"; - "${mod}+r" = "mode resize"; - "${mod}+n" = "exec makoctl dismiss"; - "${mod}+shift+n" = "exec makoctl dismiss -a"; - "${mod}+alt+n" = "mode notification"; - }; - modes = - let - inherit (config.wayland.windowManager.sway.config) - left down up right; - in { - "resize" = { - "${left}" = "resize shrink width 10 px or 10 ppt"; - "${down}" = "resize grow height 10 px or 10 ppt"; - "${up}" = "resize shrink height 10 px or 10 ppt"; - "${right}" = "resize grow width 10 px or 10 ppt"; - "Return" = "mode default"; - "Escape" = "mode default"; - }; - "notification" = { - "r" = "exec ${pkgs.mako}/bin/makoctl restore"; - "Escape" = "mode default"; - }; - }; - colors = { - focused = { - border = "#f268b3"; - background = "#f268b3"; - text = "#000000"; - indicator = "#1cd180"; - childBorder = "#f268b3"; - }; - focusedInactive = { - border = "#323232"; - background = "#323232"; - text = "#f268b3"; - indicator = "#1cd180"; - childBorder = "#323232"; - }; - unfocused = { - border = "#323232"; - background = "#323232"; - text = "#cccccc"; - indicator = "#1cd180"; - childBorder = "#323232"; - }; - urgent = { - border = "#2f343a"; - background = "#900000"; - text = "#cccccc"; - indicator = "#900000"; - childBorder = "#900000" ; - }; - #focused_tab_title = { - # boder = "#2f343a"; - # background = "#2f343a"; - # text = "#ffffff"; - #}; - }; - window = { - border = 1; - titlebar = false; - commands = [ - { - command = "inhibit_idle fullscreen"; - criteria = { - title = "^.*"; - }; - } - { - command = "inhibit_idle fullscreen"; - criteria = { - app_id = "^.*"; - }; - } - ]; - }; - gaps = { - smartGaps = true; - smartBorders = "on"; - inner = 2; - }; - assigns = { - "$ws3" = [{app_id = "firefox";} {app_id = "org.qutebrowser.qutebrowser";}]; - "$ws4" = [{app_id = "WebCord";}]; - "$ws7" = [{app_id = "org.inkscape.Inkscape";} {app_id = "org.kde.kdenlive";}]; - }; - }; - extraConfigEarly = '' - set $ws1 1:  - set $ws2 2: 󰇮 - set $ws3 3: 󰈹 - set $ws4 4: 󰍦 - set $ws5 5:  - set $ws6 6: 󰈙 - set $ws7 7: 󰤚 - set $ws8 8:  - set $ws9 9:  - set $ws0 10:  - default_orientation auto - workspace_layout default - font pango:Fira Code Nerd Font Mono 10 - default_border pixel 1 - title_align right - ''; - }; -} diff --git a/home-manager/desktop/sway/swayidle.nix b/home-manager/desktop/sway/swayidle.nix deleted file mode 100644 index 76a12fe..0000000 --- a/home-manager/desktop/sway/swayidle.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ pkgs, ... }: -{ - services.swayidle = { - enable = true; - timeouts = [ - { - timeout = 300; - command = "${pkgs.swaylock}/bin/swaylock -f"; - } - { - timeout = 600; - command = ''${pkgs.sway}/bin/swaymsg "output * power off"''; - resumeCommand = ''${pkgs.sway}/bin/swaymsg "output * power on"''; - } - ]; - events = [ - { - event = "before-sleep"; - command = "${pkgs.swaylock}/bin/swaylock -f"; - } - { - event = "lock"; - command = "${pkgs.swaylock}/bin/swaylock -f"; - } - ]; - }; -} diff --git a/home-manager/desktop/sway/swaylock.nix b/home-manager/desktop/sway/swaylock.nix deleted file mode 100644 index a1ec08b..0000000 --- a/home-manager/desktop/sway/swaylock.nix +++ /dev/null @@ -1,29 +0,0 @@ -_: { - programs.swaylock = { - enable = true; - settings = { - image = "~/medias/images/wallpapers/lockscreen.png"; - scaling = "center"; - color = "000000"; - indicator-radius = 70; - indicator-y-position = 150; - font = "Fira Code Nerd Font Mono"; - font-size = "14"; - inside-color = "00000000"; - ring-color = "323232"; - ring-ver-color = "1cd180"; - inside-ver-color = "1cd180cc"; - ring-wrong-color = "f268b3"; - inside-wrong-color = "f268b3cc"; - key-hl-color = "1cd180"; - caps-lock-key-hl-color = "1cd180"; - caps-lock-bs-hl-color = "f268b3"; - bs-hl-color = "f268b3ff"; - separator-color = "00000000"; - ignore-empty-password = true; - show-failed-attempts = true; - daemonize = true; - line-uses-inside = true; - }; - }; -} diff --git a/home-manager/desktop/sway/waybar.nix b/home-manager/desktop/sway/waybar.nix deleted file mode 100644 index 9301d27..0000000 --- a/home-manager/desktop/sway/waybar.nix +++ /dev/null @@ -1,258 +0,0 @@ -{hostConfig, ...}: -{ - programs.waybar = { - enable = true; - systemd = { - enable = true; - target = "sway-session.target"; - }; - settings = { - mainbar = { - layer = "top"; - spacing = 6; - disable-toolptips = true; - modules-center = []; - modules-left = [ - "sway/workspaces" - "sway/mode" - ]; - modules-right = [ "network" ] - ++ (if hostConfig.laptop then - [ "custom/sep" - "backlight" - "battery"] - else [] - ) ++ [ - "custom/sep" - "memory" - "cpu" - "custom/sep" - "pulseaudio" - "custom/sep" - "clock" - "custom/sep" - "tray" - ]; - "clock" = { - "format-alt" = "{:%Y-%m-%d}"; - "timezone" = "Europe/Paris"; - "tooltip" = false; - }; - "cpu" = { - "format" = "{usage}% {icon}"; - "format-icons" = [ "" ]; - "states" = { - "critical" = 90; - "warning" = 70; - }; - "tooltip" = false; - }; - "custom/sep" = { - "format" = "|"; - "tooltip" = false; - }; - "idle_inhibitor" = { - "format" = "{icon}"; - "format-icons" = { - "activated" = ""; - "deactivated" = ""; - }; - }; - "memory" = { - "format" = "{used:0.1f}G/{total:0.1f}G "; - "interval" = 30; - "states" = { - "critical" = 90; - "warning" = 70; - }; - }; - "network" = { - "format-alt" = "{ifname}: {ipaddr}/{cidr}"; - "format-disconnected" = "Disconnected ⚠ "; - "format-ethernet" = "{ifname}: {ipaddr}/{cidr} 󰈀 "; - "format-linked" = "{ifname} (No IP) 󰈀 "; - "format-wifi" = "{essid} ({signalStrength}%)  "; - "tooltip" = false; - }; - "pulseaudio" = { - "format" = "{format_source} {volume}% {icon} "; - "format-bluetooth" = "{volume}% {icon}"; - "format-icons" = { - "car" = ""; - "default" = ""; - "handsfree" = "󰋎"; - "headphones" = "󰋋"; - "headset" = "󰋎"; - "phone" = ""; - "portable" = ""; - }; - "format-muted" = "{format_source} 󰝟 "; - "format-source" = "{volume}%  "; - "format-source-muted" = " "; - "tooltip" = false; - }; - "sway/mode" = { - "format" = "{}"; - }; - "sway/workspace" = { - "disable-scroll" = true; - }; - "temperature" = { - "critical-threshold" = 80; - "format" = "{temperatureC}°C  "; - "thermal-zone" = "6"; - }; - "backlight" = { - "format" = "{percent}% {icon}"; - "format-icons" = [ - "󰌶" - "󱩏" - "󱩐" - "󱩐" - "󱩑" - "󱩒" - "󱩓" - "󱩔" - "󱩕" - "󱩖" - "󰛨" - ]; - }; - "battery" = { - "tooltip" = false; - "states" = { - "full" = 100; - "warning" = 30; - "critical" = 15; - }; - "format" = "{capacity}% {icon}"; - "format-charging" = "{capacity}% 󰓦"; - "format-plugged" = "{capacity}% "; - "format-alt" = "{time} {icon}"; - "format-icons" = [ - " " - " " - " " - " " - " " - ]; - }; - }; - }; - style = '' - @define-color color-base-bg #323232; - @define-color color-base-fg #ddd; - - @define-color color-hover #f268b3; - @define-color color-selected #1cd180; - - @define-color color-ok #1cd180; - @define-color color-warning #f2b768; - @define-color color-critical #f268b3; - - * { - border: none; - border-radius: 0; - min-height:0; - } - - window#waybar { - background: @color-base-bg ; - color: @color-base-fg; - font-family: "Fira Code Nerd Font"; - font-size: 12px; - } - - button, - button:disabled,label:disabled{ - color:inherit; - } - - button:hover{ - background:none; - box-shadow:inherit; - box-shadow:inherit; - text-shadow:inherit; - text-shadow:inherit; - border-top:none; - } - #workspaces { - color:#fff; - } - #workspaces button { - margin:0 3px; - padding:4px 4px; - color:#9c9c9c; - border-bottom: 1px solid transparent; - } - - #workspaces button:hover { - box-shadow:inherit; - text-shadow:inherit; - color: @color-hover; - border-bottom: 1px solid @color-hover; - } - - #workspaces button.focused { - background:#1cd180 ; - color:#000; - } - #workspaces button.visible:not(.focused) { - color: @color-selected; - border-color: @color-selected; - } - - #clock, - #cpu, - #memory, - #backlight, - #network, - #tray, - #mode, - #battery, - #idle_inhibitor { - padding: 2px 4px; - margin: 0; - background-color: transparent; - } - - #mode{ - background:@color-warning; - font-weight:bold; - } - #pulseaudio {} - #pulseaudio.muted { - color:@color-critical; - } - - #battery.discharging { - color: @color-base-fg; - border-bottom: none; - } - - #battery.charging, #battery.plugged { - border-bottom: 1px solid @color-ok; - color: @color-selected; - } - - #battery.critical:not(.charging), - #cpu.critical, - #memory.critical{ - border-color: @color-critical; - color: @color-critical; - } - - #battery.warning:not(.charging), - #cpu.warning, - #memory.warning{ - border-color: @color-warning; - color: @color-warning; - } - - #tray { - font-family: "DejaVu sans"; - font-size: 12px; - } - ''; - }; -} diff --git a/home-manager/desktop/xdg.nix b/home-manager/desktop/xdg.nix deleted file mode 100644 index 58ed0bb..0000000 --- a/home-manager/desktop/xdg.nix +++ /dev/null @@ -1,18 +0,0 @@ -_: { - xdg = { - enable = true; - mimeApps.enable = true; - userDirs = { - enable = true; - createDirectories = true; - documents = "documents"; - download = "downloads"; - music = "medias/musics"; - pictures = "medias/images"; - videos = "medias/videos"; - templates = "tmp"; - desktop = "documents"; - publicShare = "tmp/public"; - }; - }; -} diff --git a/hosts/morty/home-config.nix b/hosts/morty/home-config.nix index 31cf84f..bb193df 100644 --- a/hosts/morty/home-config.nix +++ b/hosts/morty/home-config.nix @@ -3,5 +3,9 @@ video.kdenlive.enable = true; web.qutebrowser.enable = true; gaming.lutris.enable = true; + desktop.sway = { + enable = true; + kanshi = true; + }; }; } diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix index add9133..9514fb3 100644 --- a/modules/home-manager/default.nix +++ b/modules/home-manager/default.nix @@ -1,6 +1,7 @@ { lib, config, pkgs, ... }: { imports = [ + ./desktop/sway ./gaming/lutris ./video/kdenlive ./web/qutebrowser/default.nix diff --git a/modules/home-manager/desktop/sway/default.nix b/modules/home-manager/desktop/sway/default.nix new file mode 100644 index 0000000..ca0d43a --- /dev/null +++ b/modules/home-manager/desktop/sway/default.nix @@ -0,0 +1,105 @@ +{ lib, config, pkgs, ... }: +with lib; +let + cfg = config.modules.desktop.sway; +in +{ + options.modules.desktop.sway = { + enable = mkEnableOption "enable Sway Windows Manager"; + + kanshi = mkOption { + type = types.bool; + default = false; + description = "configure laptop mode"; + }; + }; + imports = [ + ./includes/fuzzel.nix + ./includes/kanshi.nix + ./includes/mako.nix + ./includes/sway.nix + ./includes/swayidle.nix + ./includes/swaylock.nix + ./includes/waybar.nix + ]; + config = mkIf cfg.enable { + + programs.fuzzel.enable = true; + + home.packages = with pkgs; [ + dejavu_fonts + emojione + font-awesome + grim + lato + liberation_ttf + libertine + libnotify + (nerdfonts.override { + fonts = [ + "FiraCode" + ]; + }) + noto-fonts-emoji + noto-fonts-cjk + slurp + wl-clipboard + xdg-utils + ]; + + programs.zsh.loginExtra = '' + if [ "$(tty)" = "/dev/tty1" ]; then + exec sway &> /dev/null + fi + ''; + + gtk = { + enable = true; + theme = { + name = "Arc-Dark"; + package = pkgs.arc-theme; + }; + iconTheme = { + name = "Papirus Dark"; + package = pkgs.papirus-icon-theme; + }; + font = { + name = "Deja Vu Sans"; + package = "${pkgs.dejavu_fonts}"; + size = 10; + }; + }; + + home.pointerCursor = { + name = "Adwaita"; + package = pkgs.gnome.adwaita-icon-theme; + size = 24; + x11 = { + enable = true; + defaultCursor = "Adwaita"; + }; + }; + + qt = { + enable = true; + platformTheme = "gnome"; + style.name = "adwaita-dark"; + }; + xdg = { + enable = true; + mimeApps.enable = true; + userDirs = { + enable = true; + createDirectories = true; + documents = "documents"; + download = "downloads"; + music = "medias/musics"; + pictures = "medias/images"; + videos = "medias/videos"; + templates = "tmp"; + desktop = "documents"; + publicShare = "tmp/public"; + }; + }; + }; +} diff --git a/home-manager/desktop/sway/fuzzel.nix b/modules/home-manager/desktop/sway/includes/fuzzel.nix similarity index 79% rename from home-manager/desktop/sway/fuzzel.nix rename to modules/home-manager/desktop/sway/includes/fuzzel.nix index 9bdd92e..76cb7fb 100644 --- a/home-manager/desktop/sway/fuzzel.nix +++ b/modules/home-manager/desktop/sway/includes/fuzzel.nix @@ -1,7 +1,9 @@ -_: { - programs.fuzzel = { - enable = true; - settings = { +{ config, pkgs, lib, ... }: +with lib; +{ + config = mkIf config.modules.desktop.sway.enable { + programs.fuzzel = { + settings = { main = { font = "Fira Code Nerd Font Mono:size=9"; icon-theme = "Papirus-Dark"; @@ -22,5 +24,6 @@ _: { match = "f268b3ff"; }; }; + }; }; } diff --git a/home-manager/desktop/sway/kanshi.nix b/modules/home-manager/desktop/sway/includes/kanshi.nix similarity index 74% rename from home-manager/desktop/sway/kanshi.nix rename to modules/home-manager/desktop/sway/includes/kanshi.nix index 80b17e0..389df08 100644 --- a/home-manager/desktop/sway/kanshi.nix +++ b/modules/home-manager/desktop/sway/includes/kanshi.nix @@ -1,9 +1,12 @@ -_: { - services.kanshi = { - enable = true; - profiles = { - home = { - outputs = [ +{ config, lib, ... }: +with lib; +{ + config = mkIf config.modules.desktop.sway.enable { + services.kanshi = { + enable = config.modules.desktop.sway.kanshi ; + profiles = { + home = { + outputs = [ { criteria = "Iiyama North America PL2792UH 1166310803122"; mode = "3840x2160"; @@ -21,10 +24,10 @@ _: { criteria = "eDP-1"; status = "disable"; } - ]; - }; - work = { - outputs = [ + ]; + }; + work = { + outputs = [ { criteria = "Iiyama North America PL2480H 11183M2807013"; mode = "1920x1080"; @@ -39,7 +42,8 @@ _: { criteria = "eDP-1"; status = "disable"; } - ]; + ]; + }; }; }; }; diff --git a/modules/home-manager/desktop/sway/includes/mako.nix b/modules/home-manager/desktop/sway/includes/mako.nix new file mode 100644 index 0000000..8a60054 --- /dev/null +++ b/modules/home-manager/desktop/sway/includes/mako.nix @@ -0,0 +1,39 @@ +{ config, pkgs, lib, ... }: +with lib; +{ + config = mkIf config.modules.desktop.sway.enable { + systemd.user.services.mako = { + Service = { + ExecStart = "${pkgs.mako}/bin/mako"; + }; + Install = { + After = [ "sway-session.target" ]; + WantedBy = [ "sway-session.target" ]; + }; + }; + services.mako = { + enable = true; + font = "Fira Code 10"; + backgroundColor = "#353535FF"; + borderColor = "#1CD180"; + progressColor = "over #5566AAFF"; + textColor = "#FDFDFD"; + width = 300; + height = 100; + borderRadius = 0; + borderSize = 2; + icons = true; + maxIconSize = 64; + layer = "overlay"; + anchor = "top-right"; + extraConfig = '' + [urgency="high"] + border-color=#F268b3 + + [app-name="cmus"] + border-color=#00000000 + default-timeout=10000 + ''; + }; + }; +} diff --git a/modules/home-manager/desktop/sway/includes/sway.nix b/modules/home-manager/desktop/sway/includes/sway.nix new file mode 100644 index 0000000..4fad68c --- /dev/null +++ b/modules/home-manager/desktop/sway/includes/sway.nix @@ -0,0 +1,196 @@ +{ config, pkgs, lib, ... }: +with lib; +{ + config = mkIf config.modules.desktop.sway.enable { + wayland.windowManager.sway = { + enable = true; + wrapperFeatures.gtk = true; + systemd.enable = true; + config = { + modifier = "Mod4"; + terminal = "${pkgs.foot}/bin/foot"; + left = "h"; + down = "j"; + up = "k"; + right = "l"; + bars= []; + input = { + "1003:8258:MNT_Reform_Keyboard" = { + xkb_layout = "us"; + xkb_variant = "altgr-intl"; + }; + }; + seat = { + "*".hide_cursor = "when-typing enable"; + }; + keybindings = let + mod = config.wayland.windowManager.sway.config.modifier; + inherit (config.wayland.windowManager.sway.config) + left down up right terminal; + in + { + "${mod}+1" = "workspace $ws1"; + "${mod}+Shift+1" = "move container to workspace $ws1"; + "${mod}+2" = "workspace $ws2"; + "${mod}+Shift+2" = "move container to workspace $ws2"; + "${mod}+3" = "workspace $ws3"; + "${mod}+Shift+3" = "move container to workspace $ws3"; + "${mod}+4" = "workspace $ws4"; + "${mod}+Shift+4" = "move container to workspace $ws4"; + "${mod}+5" = "workspace $ws5"; + "${mod}+Shift+5" = "move container to workspace $ws5"; + "${mod}+6" = "workspace $ws6"; + "${mod}+Shift+6" = "move container to workspace $ws6"; + "${mod}+7" = "workspace $ws7"; + "${mod}+Shift+7" = "move container to workspace $ws7"; + "${mod}+8" = "workspace $ws8"; + "${mod}+Shift+8" = "move container to workspace $ws8"; + "${mod}+9" = "workspace $ws9"; + "${mod}+Shift+9" = "move container to workspace $ws9"; + "${mod}+0" = "workspace $ws0"; + "${mod}+Shift+0" = "move container to workspace $ws0"; + "${mod}+Return" = "exec ${terminal}"; + "${mod}+Shift+q" = "kill"; + "${mod}+d" = "exec ${pkgs.fuzzel}/bin/fuzzel"; + "${mod}+Shift+c" = "reload"; + "${mod}+Alt+l" = "exec ${pkgs.swaylock}/bin/swaylock"; + "${mod}+${left} focus" = "left"; + "${mod}+${down} focus" = "down"; + "${mod}+${up} focus" = "up"; + "${mod}+${right} focus" = "right"; + "${mod}+Left" = "focus left"; + "${mod}+Down" = "focus down"; + "${mod}+Up" = "focus up"; + "${mod}+Right" = "focus right"; + "${mod}+Shift+${left} move" = "left"; + "${mod}+Shift+${down} move" = "down"; + "${mod}+Shift+${up} move" = "up"; + "${mod}+Shift+${right} move" = "right"; + "${mod}+Shift+Left" = "move left"; + "${mod}+Shift+Down" = "move down"; + "${mod}+Shift+Up" = "move up"; + "${mod}+Shift+Right" = "move right"; + "${mod}+b" = "splith"; + "${mod}+v" = "splitv"; + "${mod}+s" = "layout stacking"; + "${mod}+w" = "layout tabbed"; + "${mod}+e" = "layout toggle split"; + "${mod}+f" = "fullscreen"; + "${mod}+Shift+space" = "floating toggle"; + "${mod}+space" = "focus mode_toggle"; + "${mod}+a" = "focus parent"; + "${mod}+Shift+p" = "move scratchpad"; + "${mod}+p" = "scratchpad show"; + "${mod}+F1" = "exec ${pkgs.brightnessctl}/bin/brightnessctl s 1%-"; + "${mod}+F2" = "exec ${pkgs.brightnessctl}/bin/brightnessctl s +1%"; + "${mod}+F3" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_SINK@ 5%-"; + "${mod}+F4" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_SINK@ 5%+"; + "${mod}+F5" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_SINK@ toggle"; + "${mod}+m" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_SOURCE@ toggle"; + "${mod}+r" = "mode resize"; + "${mod}+n" = "exec makoctl dismiss"; + "${mod}+shift+n" = "exec makoctl dismiss -a"; + "${mod}+alt+n" = "mode notification"; + }; + modes = + let + inherit (config.wayland.windowManager.sway.config) + left down up right; + in { + "resize" = { + "${left}" = "resize shrink width 10 px or 10 ppt"; + "${down}" = "resize grow height 10 px or 10 ppt"; + "${up}" = "resize shrink height 10 px or 10 ppt"; + "${right}" = "resize grow width 10 px or 10 ppt"; + "Return" = "mode default"; + "Escape" = "mode default"; + }; + "notification" = { + "r" = "exec ${pkgs.mako}/bin/makoctl restore"; + "Escape" = "mode default"; + }; + }; + colors = { + focused = { + border = "#f268b3"; + background = "#f268b3"; + text = "#000000"; + indicator = "#1cd180"; + childBorder = "#f268b3"; + }; + focusedInactive = { + border = "#323232"; + background = "#323232"; + text = "#f268b3"; + indicator = "#1cd180"; + childBorder = "#323232"; + }; + unfocused = { + border = "#323232"; + background = "#323232"; + text = "#cccccc"; + indicator = "#1cd180"; + childBorder = "#323232"; + }; + urgent = { + border = "#2f343a"; + background = "#900000"; + text = "#cccccc"; + indicator = "#900000"; + childBorder = "#900000" ; + }; + #focused_tab_title = { + # boder = "#2f343a"; + # background = "#2f343a"; + # text = "#ffffff"; + #}; + }; + window = { + border = 1; + titlebar = false; + commands = [ + { + command = "inhibit_idle fullscreen"; + criteria = { + title = "^.*"; + }; + } + { + command = "inhibit_idle fullscreen"; + criteria = { + app_id = "^.*"; + }; + } + ]; + }; + gaps = { + smartGaps = true; + smartBorders = "on"; + inner = 2; + }; + assigns = { + "$ws3" = [{app_id = "firefox";} {app_id = "org.qutebrowser.qutebrowser";}]; + "$ws4" = [{app_id = "WebCord";}]; + "$ws7" = [{app_id = "org.inkscape.Inkscape";} {app_id = "org.kde.kdenlive";}]; + }; + }; + extraConfigEarly = '' + set $ws1 1:  + set $ws2 2: 󰇮 + set $ws3 3: 󰈹 + set $ws4 4: 󰍦 + set $ws5 5:  + set $ws6 6: 󰈙 + set $ws7 7: 󰤚 + set $ws8 8:  + set $ws9 9:  + set $ws0 10:  + default_orientation auto + workspace_layout default + font pango:Fira Code Nerd Font Mono 10 + default_border pixel 1 + title_align right + ''; + }; + }; +} diff --git a/modules/home-manager/desktop/sway/includes/swayidle.nix b/modules/home-manager/desktop/sway/includes/swayidle.nix new file mode 100644 index 0000000..05e339a --- /dev/null +++ b/modules/home-manager/desktop/sway/includes/swayidle.nix @@ -0,0 +1,30 @@ +{ config, lib, pkgs, ... }: +with lib; + { + config = mkIf config.modules.desktop.sway.enable { + services.swayidle = { + enable = true; + timeouts = [ + { + timeout = 300; + command = "${pkgs.swaylock}/bin/swaylock -f"; + } + { + timeout = 600; + command = ''${pkgs.sway}/bin/swaymsg "output * power off"''; + resumeCommand = ''${pkgs.sway}/bin/swaymsg "output * power on"''; + } + ]; + events = [ + { + event = "before-sleep"; + command = "${pkgs.swaylock}/bin/swaylock -f"; + } + { + event = "lock"; + command = "${pkgs.swaylock}/bin/swaylock -f"; + } + ]; + }; + }; +} diff --git a/modules/home-manager/desktop/sway/includes/swaylock.nix b/modules/home-manager/desktop/sway/includes/swaylock.nix new file mode 100644 index 0000000..a8890a4 --- /dev/null +++ b/modules/home-manager/desktop/sway/includes/swaylock.nix @@ -0,0 +1,33 @@ +{ config, lib, ... }: +with lib; +{ + config = mkIf config.modules.desktop.sway.enable { + programs.swaylock = { + enable = true; + settings = { + image = "~/medias/images/wallpapers/lockscreen.png"; + scaling = "center"; + color = "000000"; + indicator-radius = 70; + indicator-y-position = 150; + font = "Fira Code Nerd Font Mono"; + font-size = "14"; + inside-color = "00000000"; + ring-color = "323232"; + ring-ver-color = "1cd180"; + inside-ver-color = "1cd180cc"; + ring-wrong-color = "f268b3"; + inside-wrong-color = "f268b3cc"; + key-hl-color = "1cd180"; + caps-lock-key-hl-color = "1cd180"; + caps-lock-bs-hl-color = "f268b3"; + bs-hl-color = "f268b3ff"; + separator-color = "00000000"; + ignore-empty-password = true; + show-failed-attempts = true; + daemonize = true; + line-uses-inside = true; + }; + }; + }; +} diff --git a/modules/home-manager/desktop/sway/includes/waybar.nix b/modules/home-manager/desktop/sway/includes/waybar.nix new file mode 100644 index 0000000..f687bee --- /dev/null +++ b/modules/home-manager/desktop/sway/includes/waybar.nix @@ -0,0 +1,255 @@ +{config, lib, ...}: +with lib; +{ + config = mkIf config.modules.desktop.sway.enable { + programs.waybar = { + enable = true; + systemd = { + enable = true; + target = "sway-session.target"; + }; + settings = { + mainbar = { + layer = "top"; + spacing = 6; + disable-toolptips = true; + modules-center = []; + modules-left = [ + "sway/workspaces" + "sway/mode" + ]; + modules-right = [ + "network" + "custom/sep" + "backlight" + "battery" + "custom/sep" + "memory" + "cpu" + "custom/sep" + "pulseaudio" + "custom/sep" + "clock" + "custom/sep" + "tray" + ]; + "clock" = { + "format-alt" = "{:%Y-%m-%d}"; + "timezone" = "Europe/Paris"; + "tooltip" = false; + }; + "cpu" = { + "format" = "{usage}% {icon}"; + "format-icons" = [ "" ]; + "states" = { + "critical" = 90; + "warning" = 70; + }; + "tooltip" = false; + }; + "custom/sep" = { + "format" = "|"; + "tooltip" = false; + }; + "idle_inhibitor" = { + "format" = "{icon}"; + "format-icons" = { + "activated" = ""; + "deactivated" = ""; + }; + }; + "memory" = { + "format" = "{used:0.1f}G/{total:0.1f}G "; + "interval" = 30; + "states" = { + "critical" = 90; + "warning" = 70; + }; + }; + "network" = { + "format-alt" = "{ifname}: {ipaddr}/{cidr}"; + "format-disconnected" = "Disconnected ⚠ "; + "format-ethernet" = "{ifname}: {ipaddr}/{cidr} 󰈀 "; + "format-linked" = "{ifname} (No IP) 󰈀 "; + "format-wifi" = "{essid} ({signalStrength}%)  "; + "tooltip" = false; + }; + "pulseaudio" = { + "format" = "{format_source} {volume}% {icon} "; + "format-bluetooth" = "{volume}% {icon}"; + "format-icons" = { + "car" = ""; + "default" = ""; + "handsfree" = "󰋎"; + "headphones" = "󰋋"; + "headset" = "󰋎"; + "phone" = ""; + "portable" = ""; + }; + "format-muted" = "{format_source} 󰝟 "; + "format-source" = "{volume}%  "; + "format-source-muted" = " "; + "tooltip" = false; + }; + "sway/mode" = { + "format" = "{}"; + }; + "sway/workspace" = { + "disable-scroll" = true; + }; + "temperature" = { + "critical-threshold" = 80; + "format" = "{temperatureC}°C  "; + "thermal-zone" = "6"; + }; + "backlight" = { + "format" = "{percent}% {icon}"; + "format-icons" = [ + "󰌶" + "󱩏" + "󱩐" + "󱩐" + "󱩑" + "󱩒" + "󱩓" + "󱩔" + "󱩕" + "󱩖" + "󰛨" + ]; + }; + "battery" = { + "tooltip" = false; + "states" = { + "full" = 100; + "warning" = 30; + "critical" = 15; + }; + "format" = "{capacity}% {icon}"; + "format-charging" = "{capacity}% 󰓦"; + "format-plugged" = "{capacity}% "; + "format-alt" = "{time} {icon}"; + "format-icons" = [ + " " + " " + " " + " " + " " + ]; + }; + }; + }; + style = '' + @define-color color-base-bg #323232; + @define-color color-base-fg #ddd; + + @define-color color-hover #f268b3; + @define-color color-selected #1cd180; + + @define-color color-ok #1cd180; + @define-color color-warning #f2b768; + @define-color color-critical #f268b3; + + * { + border: none; + border-radius: 0; + min-height:0; + } + + window#waybar { + background: @color-base-bg ; + color: @color-base-fg; + font-family: "Fira Code Nerd Font"; + font-size: 12px; + } + + button, + button:disabled,label:disabled{ + color:inherit; + } + + button:hover{ + background:none; + box-shadow:inherit; + box-shadow:inherit; + text-shadow:inherit; + text-shadow:inherit; + border-top:none; + } + #workspaces { + color:#fff; + } + #workspaces button { + margin:0 3px; + padding:4px 4px; + color:#9c9c9c; + border-bottom: 1px solid transparent; + } + + #workspaces button:hover { + box-shadow:inherit; + text-shadow:inherit; + color: @color-hover; + border-bottom: 1px solid @color-hover; + } + + #workspaces button.visible:not(.focused) { + color: @color-selected; + border-color: @color-selected; + } + + #clock, + #cpu, + #memory, + #backlight, + #network, + #tray, + #mode, + #battery, + #idle_inhibitor { + padding: 2px 4px; + margin: 0; + background-color: transparent; + } + + #mode{ + background:@color-warning; + font-weight:bold; + } + #pulseaudio {} + #pulseaudio.muted { + color:@color-critical; + } + + #battery.discharging { + color: @color-base-fg; + border-bottom: none; + } + + #battery.charging, #battery.plugged { + border-bottom: 1px solid @color-ok; + color: @color-selected; + } + + #battery.critical:not(.charging), + #cpu.critical, + #memory.critical{ + border-color: @color-critical; + color: @color-critical; + } + + #battery.warning:not(.charging), + #cpu.warning, + #memory.warning{ + border-color: @color-warning; + color: @color-warning; + } + + #tray { + font-family: "DejaVu sans"; + font-size: 12px; + } + ''; + }; + }; +} diff --git a/home-manager/desktop/sway/zsh-autostart.nix b/modules/home-manager/desktop/sway/includes/zsh-autostart.nix similarity index 100% rename from home-manager/desktop/sway/zsh-autostart.nix rename to modules/home-manager/desktop/sway/includes/zsh-autostart.nix diff --git a/nixos/default.nix b/nixos/default.nix index e96139e..8a7db4f 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -66,7 +66,6 @@ ../home-manager/cli ] ++ (if hostConfig.desktop then [ - ../home-manager/desktop ../home-manager/webcord.nix ../home-manager/firefox ../home-manager/foot.nix