diff --git a/system/desktop.nix b/system/desktop.nix index e29b02a6..7171de99 100644 --- a/system/desktop.nix +++ b/system/desktop.nix @@ -1,6 +1,5 @@ { pkgs, username, ... }: { - imports = [ ./plasma.nix ]; home-manager.users.${username}.imports = [ ./home/desktop.nix ]; nixpkgs.config.chromium.commandLineArgs = "--password-store='gnome-libsecret' --enable-features=UseOzonePlatform --ozone-platform=wayland"; hardware.bluetooth.enable = true; @@ -16,6 +15,11 @@ hunspell hunspellDicts.en_GB-large ]; + plasma6.excludePackages = with pkgs.kdePackages; [ + plasma-browser-integration + konsole + kate + ]; }; security = { polkit.enable = true; @@ -36,7 +40,14 @@ }; gtk.iconCache.enable = true; services = { - dbus.packages = [ pkgs.gcr ]; + displayManager.sddm = { + enable = true; + wayland.enable = true; + }; + desktopManager.plasma6 = { + enable = true; + enableQt5Integration = true; + }; flatpak.enable = true; printing.enable = true; pipewire = { diff --git a/system/home/icons/nix/nix-owo-transparent.png b/system/home/icons/nix/nix-owo-transparent.png deleted file mode 100644 index e3f939fd..00000000 Binary files a/system/home/icons/nix/nix-owo-transparent.png and /dev/null differ diff --git a/system/home/icons/nix/nix-owo-white.png b/system/home/icons/nix/nix-owo-white.png deleted file mode 100644 index c43e400e..00000000 Binary files a/system/home/icons/nix/nix-owo-white.png and /dev/null differ diff --git a/system/home/icons/nix/nix-shooting.png b/system/home/icons/nix/nix-shooting.png deleted file mode 100644 index ca578cf8..00000000 Binary files a/system/home/icons/nix/nix-shooting.png and /dev/null differ diff --git a/system/home/icons/nix/nix-snowflake-cute.png b/system/home/icons/nix/nix-snowflake-cute.png deleted file mode 100644 index e2654f74..00000000 Binary files a/system/home/icons/nix/nix-snowflake-cute.png and /dev/null differ diff --git a/system/home/icons/nix/nixos-confetti.png b/system/home/icons/nix/nixos-confetti.png deleted file mode 100644 index 0874854b..00000000 Binary files a/system/home/icons/nix/nixos-confetti.png and /dev/null differ diff --git a/system/home/lib/to_capital.nix b/system/home/lib/to_capital.nix deleted file mode 100644 index 91620550..00000000 --- a/system/home/lib/to_capital.nix +++ /dev/null @@ -1,13 +0,0 @@ -lib: string: -with lib; -let - chars = - let - lc = strings.splitString "" string; - in - (lists.sublist 1 (lists.length lc - 2) lc); -in -(strings.concatStringsSep "" ( - (lists.singleton (strings.toUpper (lists.elemAt chars 0))) - ++ (lists.sublist 1 (lists.length chars) chars) -)) diff --git a/system/home/sway/default.nix b/system/home/sway/default.nix deleted file mode 100644 index e88fb952..00000000 --- a/system/home/sway/default.nix +++ /dev/null @@ -1,257 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -{ - imports = [ ./waybar/default.nix ]; - stylix.targets.swaylock.useImage = false; # Using swaylock-effects instead - home.packages = with pkgs; [ - libreoffice-fresh - ffmpeg - grim - slurp - swappy - wl-clipboard - swayimg - swaybg - (writeShellScriptBin "swaylockfx" '' - ${swaylock-effects}/bin/swaylock --screenshots --clock --indicator --effect-blur 7x5 --effect-vignette 0.5:0.5 - '') - (writeShellScriptBin "protonmail-setup-bridge" '' - pkill -9 -f protonmail-bridge - ${protonmail-bridge}/bin/protonmail-bridge -c - swaymsg exec "${protonmail-bridge}/bin/protonmail-bridge -n" - '') - ]; - programs = { - waybar.systemd.target = "sway-session.target"; - fuzzel = { - enable = true; - settings = { - main = { - icon-theme = config.gtk.iconTheme.name; - icons-enabled = true; - fields = "filename,name,generic,categories"; - fuzzy = true; - filter-desktop = true; - terminal = "${config.programs.alacritty.package}/bin/alacritty -e"; - lines = 24; - width = 80; - tabs = 4; - layer = "overlay"; - }; - border = { - width = 1; - radius = 5; - }; - }; - }; - swaylock = { - enable = true; - package = pkgs.swaylock-effects; - }; - wlogout = { - enable = true; - layout = [ - { - label = "reboot"; - action = "systemctl reboot"; - text = "Reboot"; - keybind = "r"; - } - { - label = "shutdown"; - action = "systemctl poweroff"; - text = "Shutdown"; - keybind = "s"; - } - { - label = "logout"; - action = "swaymsg exit"; - text = "Logout"; - keybind = "l"; - } - ]; - }; - }; - services = { - kanshi.systemdTarget = "sway-session.target"; - gpg-agent.pinentryPackage = pkgs.pinentry-gnome3; - avizo = { - enable = true; - settings.default.image-opacity = lib.mkForce "1.0"; - }; - kdeconnect = { - enable = true; - indicator = true; - }; - mako = { - enable = true; - anchor = "top-right"; - width = 600; - height = 600; - layer = "top"; - markup = true; - maxVisible = 10; - icons = true; - iconPath = with config.gtk.iconTheme; "${package}/share/icons/${name}"; - borderRadius = 5; - borderSize = 1; - defaultTimeout = 0; - }; - swayidle = { - enable = true; - timeouts = [ - { - timeout = 60 * 15; # 15 minutes - command = "swaylockfx"; - } - ]; - }; - udiskie = { - enable = true; - notify = true; - automount = true; - tray = "never"; - }; - }; - wayland.windowManager.sway = { - enable = true; - package = pkgs.swayfx.overrideAttrs (old: { - passthru.providedSessions = [ "sway" ]; - }); - swaynag.enable = true; - systemd.enable = true; - xwayland = true; - checkConfig = false; - config = { - input = { - "*" = { - xkb_layout = "gb"; - xkb_options = "ctrl:nocaps"; - }; - "type:touchpad" = { - tap = "enabled"; - natural_scroll = "enabled"; - }; - }; - seat = { - "seat0" = { - xcursor_theme = "${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"; - }; - }; - modifier = "Mod4"; - terminal = "${config.programs.alacritty.package}/bin/alacritty"; - menu = "${config.programs.fuzzel.package}/bin/fuzzel"; - workspaceAutoBackAndForth = true; - bars = [ ]; - gaps = { - inner = 5; - outer = 0; - }; - startup = [ - { command = "${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"; } - { command = "${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"; } - { command = "${pkgs.dex}/bin/dex -a"; } - { command = "${config.services.mako.package}/bin/mako"; } - ]; - window = { - border = 1; - titlebar = false; - commands = [ - { - criteria.window_role = "(?:pop-up|bubble|dialog)"; - command = "floating enable"; - } - { - criteria.app_id = "(?:org\.kde\.polkit-kde-authentication-agent-1|Pinentry|pavucontrol|\.blueman-manager-wrapped|nm-connection-editor)"; - command = "floating enable"; - } - { - criteria.class = "(?:[Mm]atplotlib|.*\.py|Idl)"; - command = "floating enable"; - } - { - # Catch-all for file dialog windows - criteria.title = "(?:Open|Save) (?:File|Folder|As)"; - command = "floating enable, resize set width 1030 height 710"; - } - { - # Inhibit idle when watching vidoes - criteria.app_id = "(?:firefox|mpv)"; - command = "inhibit_idle fullscreen"; - } - { - # Window rules for game sessions. - # Note: controllers don't reset idle timer - criteria.class = "(?:steam_app|Minecraft).*"; - command = "floating enable, fullscreen enable, inhibit_idle focus"; - } - ]; - }; - floating.border = 1; - keybindings = - let - modifier = config.wayland.windowManager.sway.config.modifier; - in - lib.mkOptionDefault { - # Movement - "${modifier}+comma" = "workspace prev"; - "${modifier}+period" = "workspace next"; - "${modifier}+shift+comma" = "move workspace prev"; - "${modifier}+shift+period" = "move workspace next"; - "${modifier}+bracketleft" = "move workspace to output left"; - "${modifier}+bracketright" = "move workspace to output right"; - - # Function keys - ## Screenshot - "Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -"; - - ## Sound - "XF86AudioMute" = "exec ${config.services.avizo.package}/bin/volumectl %"; - "XF86AudioMicMute" = "exec ${config.services.avizo.package}/bin/volumectl -m %"; - "XF86AudioRaiseVolume" = "exec ${config.services.avizo.package}/bin/volumectl -u + 5"; - "XF86AudioLowerVolume" = "exec ${config.services.avizo.package}/bin/volumectl -u - 5"; - - ## Playback - "XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause"; - "XF86AudioStop" = "exec ${pkgs.playerctl}/bin/playerctl play-pause"; - "XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous"; - "XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next"; - - ## Brightness - "XF86MonBrightnessUp" = "exec ${config.services.avizo.package}/bin/lightctl + 5"; - "XF86MonBrightnessDown" = "exec ${config.services.avizo.package}/bin/lightctl - 5"; - - # System utilities - "Mod4+Mod1+l" = "exec swaylockfx"; - "${modifier}+z" = "exec ${config.services.mako.package}/bin/makoctl restore"; - "${modifier}+Shift+z" = "exec ${config.services.mako.package}/bin/makoctl dismiss -a"; - "${modifier}+Shift+p" = "exec ${config.programs.wlogout.package}/bin/wlogout"; - "${modifier}+Shift+Return" = "exec ${config.programs.emacs.finalPackage}/bin/emacsclient -c"; - }; - }; - extraConfig = '' - bindgesture swipe:right workspace prev - bindgesture swipe:left workspace next - corner_radius 5 - blur enable - blur_xray disable - blur_passes 3 - blur_radius 5 - shadows enable - shadow_blur_radius 5 - layer_effects "system-menu" blur enable; blur_ignore_transparent enable; shadows enable - layer_effects "gtk-layer-shell" blur enable; blur_ignore_transparent enable; shadows enable - layer_effects "notifications" blur enable; blur_ignore_transparent enable; shadows enable - layer_effects "launcher" blur enable; blur_ignore_transparent enable; shadows enable - layer_effects "logout_dialog" blur enable; blur_ignore_transparent enable; shadows enable - layer_effects "waybar" blur enable; blur_ignore_transparent enable; shadows enable - layer_effects "avizo" blur enable; blur_ignore_transparent enable; shadows enable - titlebar_separator enable - ''; - }; - xdg.configFile."swappy/config".source = ./swappy.conf; -} diff --git a/system/home/sway/swappy.conf b/system/home/sway/swappy.conf deleted file mode 100644 index dee88eb3..00000000 --- a/system/home/sway/swappy.conf +++ /dev/null @@ -1,10 +0,0 @@ -[Default] -save_dir=$HOME/Pictures/Screenshots/ -save_filename_format=swappy-%Y%m%d-%H%M%S.png -show_panel=false -line_size=5 -text_size=20 -text_font=sans-serif -paint_mode=brush -early_exit=false -fill_shape=false \ No newline at end of file diff --git a/system/home/sway/waybar/default.nix b/system/home/sway/waybar/default.nix deleted file mode 100644 index 7d379882..00000000 --- a/system/home/sway/waybar/default.nix +++ /dev/null @@ -1,390 +0,0 @@ -{ config, pkgs, ... }: -{ - stylix.targets.waybar.enable = false; - systemd.user.targets.tray.Unit = { - Description = "Home Manager System Tray"; - Requires = [ "graphical-session.target" ]; - }; - programs.waybar = { - enable = true; - systemd.enable = true; - settings.main = { - name = "main"; - layer = "top"; - position = "top"; - # Layout - "modules-left" = [ - "sway/window" - "mpris" - ]; - "modules-center" = [ "sway/workspaces" ]; - "modules-right" = [ - "custom/notification" - "pulseaudio" - "network" - "bluetooth" - "clock#calendar" - "clock" - "backlight" - "battery" - "custom/weather" - "tray" - ]; - # Module config - "sway/workspaces" = { - format = "{icon}"; - format-icons = { - "1" = "󰫃 "; - "2" = "󰫄 "; - "3" = "󰫅 "; - "4" = "󰫆 "; - "5" = "󰫇 "; - "6" = "󰫈 "; - default = "󰋙 "; - urgent = "󰁡 "; - }; - all-outputs = false; - persistent-workspaces = { - "1" = [ ]; - "2" = [ ]; - "3" = [ ]; - "4" = [ ]; - "5" = [ ]; - "6" = [ ]; - }; - }; - "sway/window" = { - "format" = "{title}"; - "max-length" = 50; - "rewrite" = { - "(.*) - GNU Emacs at (.*)" = " $1 [$2]"; - "(alacritty.*)" = " $1"; - "(.*) - mpv" = "󰦟 $1"; - "swayimg: (.*)" = "󰋩 $1"; - "swappy" = "󰹑 swappy"; - "(btm)" = " Resource Usage [$1]"; - "(cava)" = "󰝚 Music Visualiser [$1]"; - "(.*) - Thunar" = "󰝰 $1"; - "Mozilla Firefox" = "󰈹 $1"; - "(.*) — Mozilla Firefox" = "󰈹 $1"; - "Nyxt - (.*)" = "󰀹 $1"; - "(.*) - Chromium" = "󰊯 $1"; - "(Signal.*)" = "󰭹 $1"; - "((?:.*)WebCord.*)" = "󰙯 $1"; - "(Cartridges.*)" = "󰊗 $1"; - "([Ss]team.*)" = "󰓓 $1"; - "(Prism Launcher.*)" = "󰍳 Minecraft ($1)"; - "(.*)(?: *)PrusaSlicer-(.*)" = "󰐫 $1 PrusaSlicer ($2)"; - "(.*)(?: *)PrusaSlicer G-code Viewer-(.*)" = "󰹛 $1 G-code Viewer ($2)"; - "FreeCAD (.*)" = "󰻬 FreeCAD $1"; - "(.*) - Blender.* " = "󰂫 $1"; - "(X2Go Client)" = "󰢹 $1"; - "(NoMachine|Nxplayer.bin) (.*)" = "󰢹 $1 $2"; - }; - }; - mpris = { - "format" = "{player_icon} {artist} - {title} {status_icon}"; - "tooltip-format" = "{player_icon} ({player}) {dynamic}"; - "title-len" = 64; - "interval" = 1; - "dynamic-order" = [ - "album" - "artist" - "title" - "position" - "length" - ]; - "player-icons" = { - "default" = "󰲸 "; - "emms" = " "; - "firefox" = "󰈹 "; - "mpv" = "󰦟 "; - }; - "status-icons" = { - "playing" = "󰐊"; - "paused" = "󰏤"; - "stopped" = "󰓛"; - }; - "ignored-players" = [ ]; - }; - pulseaudio = { - scroll-step = 5; - format = "{format_source}{icon}{volume}%"; - format-muted = "{format_source} 󰝟 "; - format-source = "󰍬 "; - format-source-muted = "󰍭 "; - format-icons = { - car = "󰄍 "; - default = [ - "󰕿 " - "󰖀 " - "󰕾 " - ]; - hands-free = "󰥰 "; - headset = "󰋎 "; - phone = "󰏲 "; - portable = "󰏳 "; - headphone = "󰋋 "; - }; - on-click = "${pkgs.pavucontrol}/bin/pavucontrol"; - on-click-right = "${pkgs.pamixer}/bin/pamixer -t"; - on-scroll-up = "${pkgs.pamixer}/bin/pamixer -i 5"; - on-scroll-down = "${pkgs.pamixer}/bin/pamixer -d 5"; - }; - disk = { - format = "󰋊 {percentage_used}%"; - path = config.home.homeDirectory; - }; - cpu = { - format = "󰻠 {usage}%"; - tooltip = false; - }; - memory = { - format = "󰍛 {}%"; - }; - temperature = { - critical-threshold = 80; - format = "{icon} {temperatureC}°C"; - format-icons = [ - "󱃃" - "󰔏" - "󱃂" - ]; - }; - network = { - format-icons = [ - "󰤟 " - "󰤢 " - "󰤥 " - "󰤨 " - ]; - format-wifi = "{icon}"; - format-ethernet = "󰈁 "; - format-linked = "󰈂 "; - format-disconnected = "󰈂 "; - tooltip-format = "{essid} ({signalStrength}%)"; - on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor"; - }; - bluetooth = { - format = "󰂯"; - format-disabled = "󰂲"; - format-off = "󰂲"; - format-on = "󰂯"; - format-connected = "󰂱"; - tooltip-format = "{status} | {device_alias}"; - on-click = "${pkgs.blueman}/bin/blueman-manager"; - }; - "clock#calendar" = { - format = "󰃭 {:%Y-%m-%d}"; - tooltip-format = "{calendar}"; - calendar = { - mode = "month"; - mode-mon-col = 3; - weeks-pos = "left"; - on-scroll = 1; - format = - let - scheme = config.lib.stylix.scheme.withHashtag; - in - { - months = "{}"; - weeks = "W{}"; - weekdays = "{}"; - days = "{}"; - today = "{}"; - }; - }; - actions = { - on-scroll-up = "shift_up"; - on-scroll-down = "shift_down"; - }; - }; - clock.format = "󰥔 {:%R}"; - backlight = { - format = "{icon}"; - tooltip-format = "{percent}%"; - format-icons = [ - " " - " " - " " - " " - " " - " " - " " - " " - " " - ]; - }; - battery = { - states = { - warning = 20; - critical = 10; - }; - format = "{icon}"; - format-time = "{H}:{m}"; - format-charging = "󰂄 ({time})"; - format-plugged = "󰚥 "; - format-warning = "{icon}{capacity}%"; - format-critical = "{icon}{capacity}% ({time})"; - tooltip-format = "{capacity}% | {power}W | {time}"; - format-icons = [ - "󱃍 " - "󰁺 " - "󰁻 " - "󰁼 " - "󰁽 " - "󰁾 " - "󰁿 " - "󰂀 " - "󰂁 " - "󰂂 " - "󰁹 " - ]; - }; - "custom/notification" = - let - makoctl = "${config.services.mako.package}/bin/makoctl"; - jq = "${pkgs.jq}/bin/jq"; - in - { - exec = "( ${makoctl} list | ${jq} -e '.data[] | length > 0' >/dev/null && echo '󱅫 ' ) || echo '󰂚 ' "; - format = "{}"; - on-click = "${makoctl} dismiss -a"; - interval = 3; - }; - "custom/weather" = - let - date-format = "%Y-%m-%d"; - custom-indicator = "{ICON}{temp_C}({FeelsLikeC})"; - in - { - format = "{}°"; - tooltip = true; - interval = 900; # Every 15 minutes - exec = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"''; - return-type = "json"; - }; - tray = { - icon-size = 20; - show-passive-items = true; - spacing = 5; - }; - }; - style = - let - scheme = config.lib.stylix.scheme.withHashtag; - alpha = "0.8"; - in - '' - * { - all: unset; - font-family: ${config.stylix.fonts.monospace.name}; - font-size: ${toString config.stylix.fonts.sizes.popups}px; - } - - window { - background: transparent; - box-shadow: none; - border: none; - } - - window > box { - color: ${scheme.base05}; - background: ${scheme.base00}; - margin: 5px 5px 0px; - padding: 0px; - border-top: 1px solid ${scheme.base04}; - border-radius: 5px; - } - - tooltip { - background: alpha(${scheme.base00}, ${alpha}); - border: 1px solid ${scheme.base0D}; - border-radius: 5px; - box-shadow: none; - } - - tooltip label { - color: ${scheme.base05}; - border: none; - padding: 5px; - margin: 0px; - } - - #workspaces, - #window, - #mpris, - #pulseaudio, - #network, - #bluetooth, - #backlight, - #battery, - #clock, - #custom-notification, - #custom-weather, - #tray { - margin: 0px; - padding: 1px 5px; - } - - #workspaces, - #window, - #tray, - #backlight, - #battery, - #custom-weather { - color: ${scheme.base05}; - } - - #workspaces button { - background: transparent; - color: ${scheme.base05}; - margin: 0px; - padding: 0px 5px; - } - #workspaces button.persistent { - color: ${scheme.base03}; - } - #workspaces button.focused { - color: ${scheme.base0D}; - } - #workspaces button.urgent { - color: ${scheme.base09}; - } - - #mpris { - color: ${scheme.base04}; - } - - #custom-notification { - color: ${scheme.base08}; - } - #pulseaudio { - color: ${scheme.base09}; - } - #network { - color: ${scheme.base0A}; - } - #bluetooth { - color: ${scheme.base0B}; - } - #clock.calendar { - color: ${scheme.base0C}; - } - #clock { - color: ${scheme.base0D}; - } - - #battery.warning { - color: ${scheme.base09}; - } - #battery.critical { - color: ${scheme.base08}; - } - #battery.charging, - #battery.plugged { - color: ${scheme.base0B}; - } - ''; - }; -} diff --git a/system/plasma.nix b/system/plasma.nix deleted file mode 100644 index e87d20ca..00000000 --- a/system/plasma.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ pkgs, ... }: -{ - environment.plasma6.excludePackages = with pkgs.kdePackages; [ - plasma-browser-integration - konsole - kate - ]; - services = { - displayManager.sddm = { - enable = true; - wayland.enable = true; - }; - desktopManager.plasma6 = { - enable = true; - enableQt5Integration = true; - }; - }; -} diff --git a/system/sway.nix b/system/sway.nix deleted file mode 100644 index a603ebfa..00000000 --- a/system/sway.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ pkgs, username, ... }: -{ - environment = { - sessionVariables.GRIM_DEFAULT_DIR = "$HOME/Pictures/Screenshots"; - systemPackages = [ pkgs.xarchiver ]; - }; - programs = { - thunar = { - enable = true; - plugins = with pkgs.xfce; [ - thunar-archive-plugin - thunar-volman - ]; - }; - sway.enable = true; - }; - services = { - tumbler.enable = true; - udisks2.enable = true; - gvfs = { - enable = true; - package = pkgs.gnome3.gvfs; - }; - greetd = { - enable = true; - settings = - let - default_session.command = "sway"; - in - { - inherit default_session; - initial_session = { - inherit (default_session) command; - user = username; - }; - }; - }; - }; - qt = { - enable = true; - style = "adwaita"; - platformTheme = "gnome"; - }; - xdg.portal = { - enable = true; - config.common.default = "*"; # TODO change for xdg-desktop-portal > 1.17 changes - extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; - }; -}