inputs: { config, lib, pkgs, ... }: with lib; let cfg = config.de3u; in { imports = [ inputs.plasma-manager.homeManagerModules.plasma-manager ]; options.de3u = { enable = mkEnableOption "Enable de3 user stuff"; tiling = mkOption { type = types.bool; default = true; description = "Enable tiling stuff"; }; touch = mkOption { type = types.bool; default = false; description = "Make usable for touchscreens"; }; }; config = mkIf cfg.enable { ezcolors.enable = lib.mkDefault true; ezcolors.plasma = lib.mkDefault true; ezfonts.enable = lib.mkDefault true; ezfonts.plasma = lib.mkDefault true; home.file."${config.home.homeDirectory}/.gtkrc-2.0".force = true; gtk.cursorTheme.name = "breeze_cursors"; gtk.cursorTheme.size = 24; gtk.iconTheme.name = "breeze-dark"; gtk.gtk2.extraConfig = '' gtk-primary-button-warps-slider=0 gtk-toolbar-style=3 gtk-menu-images=1 gtk-button-images=1 ''; programs.plasma = { enable = true; workspace = { clickItemTo = "open"; }; files = { kwinrc = { Plugins.bismuthEnabled = true; "Effect-windowview".BorderActivateAll = 9; Windows = { SeparateScreenFocus = true; FocusPolicy = "FocusFollowsMouse"; DelayFocusInterval = 150; }; Desktops = { Name_1 = "Desktop 1"; Name_2 = "Desktop 2"; Name_3 = "Desktop 3"; Name_4 = "Desktop 4"; Name_5 = "Desktop 5"; Name_6 = "Desktop 6"; Name_7 = "Desktop 7"; Name_8 = "Desktop 8"; Name_9 = "Desktop 9"; Id_1 = "00b35302-cb53-4916-a0dc-298be5ff8aa5"; Id_2 = "42f85748-5f93-4071-a52e-98d073ffaeb5"; Id_3 = "08fadbbc-5dcd-4cb6-b2f1-c2c75ac7f502"; Id_4 = "cb38b6b0-6027-4ef0-a249-0cdb74bfcb82"; Id_5 = "18e21702-5ee1-4093-85e8-ba7fc2d97f56"; Id_6 = "012bd0db-84ab-4f9a-8eb2-8ea50b23357e"; Id_7 = "97465b5b-3409-47d6-9b89-a57e1906edc3"; Id_8 = "f7d25083-250e-4bcf-84ee-340af7ad0eeb"; Id_9 = "b8c3616c-7cef-4e67-92cf-661f3d32833e"; Number = 9; }; "Script-bismuth" = { untileByDragging = false; ignoreClass = "yakuake,spectacle,Conky,zoom,pinentry-qt"; maximizeSoleTile = true; }; }; kcminputrc = { Mouse.cursorSize = 24; }; plasmashellrc = { "PlasmaViews.Panel 28.Defaults".thickness = 34; }; kdeglobals = { KDE = { LookAndFeelPackage = "org.kde.breezedark.desktop"; }; General = { BrowserApplication = if config.programs.firefox.enable then ( if config.programs.firefox.package.pname == "firefox" then "firefox.desktop" else "librewolf.desktop" ) else "chromium-browser.desktop"; TerminalApplication = "kermit"; TerminalService = "kermit.desktop"; }; }; kwalletrc = { Wallet.Enabled = false; "org.freedesktop.secrets".apiEnabled = false; }; }; hotkeys.commands."Launch Kermit" = { key = "Meta+T"; command = "kermit"; }; shortcuts = { "org.kde.krunner.desktop"."_launch" = ["Meta+D" "Search" "Alt+Space"]; "org.kde.plasma.emojier.desktop"."_launch" = []; plasmashell = { "activate task manager entry 1" = []; "activate task manager entry 2" = []; "activate task manager entry 3" = []; "activate task manager entry 4" = []; "activate task manager entry 5" = []; "activate task manager entry 6" = []; "activate task manager entry 7" = []; "activate task manager entry 8" = []; "activate task manager entry 9" = []; "activate task manager entry 10" = []; "next activity" = []; "manage activities" = []; }; kwin = { "Window Quick Tile Left" = []; "Window Quick Tile Right" = []; "Window Quick Tile Top" = []; "Window Quick Tile Bottom" = []; "Switch to Desktop 1" = "Meta+1"; "Switch to Desktop 2" = "Meta+2"; "Switch to Desktop 3" = "Meta+3"; "Switch to Desktop 4" = "Meta+4"; "Switch to Desktop 5" = "Meta+5"; "Switch to Desktop 6" = "Meta+6"; "Switch to Desktop 7" = "Meta+7"; "Switch to Desktop 8" = "Meta+8"; "Switch to Desktop 9" = "Meta+9"; "Window to Desktop 1" = "Meta+!"; "Window to Desktop 2" = "Meta+@"; "Window to Desktop 3" = "Meta+#"; "Window to Desktop 4" = "Meta+$"; "Window to Desktop 5" = "Meta+%"; "Window to Desktop 6" = "Meta+^"; "Window to Desktop 7" = "Meta+&"; "Window to Desktop 8" = "Meta+*"; "Window to Desktop 9" = "Meta+("; "Window Close" = "Meta+Q"; "Window Fullscreen" = "Meta+F"; view_zoom_in = "Meta++"; view_zoom_out = "Meta+_"; "Window to Next Screen" = "Meta+>"; "Window to Previous Screen" = "Meta+<"; "Switch to Next Screen" = "Meta+."; "Switch to Previous Screen" = "Meta+,"; "Show Desktop" = []; "Window On All Desktops" = "Meta+A"; }; bismuth = { focus_next_window = "Meta+Tab"; focus_prev_window = "Meta+Shift+Tab"; focus_bottom_window = "Meta+Down"; focus_left_window = "Meta+Left"; focus_right_window = "Meta+Right"; focus_upper_window = "Meta+Up"; next_layout = "Meta+Space"; prev_layout = "Meta+Shift+Space"; toggle_window_floating = "Meta+S"; increase_window_height = "Meta+Ctrl+Up"; decrease_window_height = "Meta+Ctrl+Down"; increase_window_width = "Meta+Ctrl+Right"; decrease_window_width = "Meta+Ctrl+Left"; increase_master_size = "Meta+="; decrease_master_size = "Meta+-"; move_window_to_bottom_pos = "Meta+Shift+Down"; move_window_to_left_pos = "Meta+Shift+Left"; move_window_to_right_pos = "Meta+Shift+Right"; move_window_to_upper_pos = "Meta+Shift+Up"; push_window_to_master = "Meta+M"; move_window_to_next_pos = []; move_window_to_prev_pos = []; decrease_master_win_count = []; increase_master_win_count = []; rotate = []; rotate_part = []; rotate_reverse = []; toggle_float_layout = []; toggle_monocle_layout = []; toggle_quarter_layout = []; toggle_spiral_layout = []; toggle_spread_layout = []; toggle_stair_layout = []; toggle_three_column_layout = []; toggle_tile_layout = []; }; }; }; systemd.user.services.yubikey-touch-detector = { Service = { ExecStart = toString (pkgs.writeShellScript "yubikey-touch-detector-libnotify" '' export SSH_AUTH_SOCK="$(${pkgs.gnupg}/bin/gpgconf --list-dirs agent-ssh-socket)" ${pkgs.yubikey-touch-detector}/bin/yubikey-touch-detector -libnotify ''); }; Install = rec { WantedBy = ["graphical-session.target"]; }; }; programs.firefox.enable = true; programs.kermit = { enable = lib.mkDefault true; settings = { key = lib.mkDefault "shift"; opacity = lib.mkDefault "1"; }; }; home.packages = with pkgs; [ plasma5Packages.bismuth plasma5Packages.kate thunderbird xdg-desktop-portal-kde ]; systemd.user.sessionVariables = { MOZ_ENABLE_WAYLAND = "1"; QT_WAYLAND_DISABLE_WINDOWDECORATION = lib.mkIf (cfg.tiling && !cfg.touch) "1"; }; xdg.configFile."mimeapps.list".force = true; xdg.mimeApps = let browser = if config.programs.firefox.enable then ( if config.programs.firefox.package.pname == "firefox" then "firefox.desktop" else "librewolf.desktop" ) else "chromium-browser.desktop"; apps = { "text/plain" = "org.kde.kate.desktop"; "inode/directory" = "org.kde.dolphin.desktop"; "image/*" = "org.kde.gwenview.desktop"; # and because mimeapps.list is DUMB "image/jpeg" = "org.kde.gwenview.desktop"; "image/bmp" = "org.kde.gwenview.desktop"; "image/gif" = "org.kde.gwenview.desktop"; "image/jpg" = "org.kde.gwenview.desktop"; "image/pjpeg" = "org.kde.gwenview.desktop"; "image/png" = "org.kde.gwenview.desktop"; "image/tiff" = "org.kde.gwenview.desktop"; "image/x-bmp" = "org.kde.gwenview.desktop"; "image/x-gray" = "org.kde.gwenview.desktop"; "image/x-icb" = "org.kde.gwenview.desktop"; "image/x-ico" = "org.kde.gwenview.desktop"; "image/x-png" = "org.kde.gwenview.desktop"; "image/x-portable-anymap" = "org.kde.gwenview.desktop"; "image/x-portable-bitmap" = "org.kde.gwenview.desktop"; "image/x-portable-graymap" = "org.kde.gwenview.desktop"; "image/x-portable-pixmap" = "org.kde.gwenview.desktop"; "image/x-xbitmap" = "org.kde.gwenview.desktop"; "image/x-xpixmap" = "org.kde.gwenview.desktop"; "image/x-pcx" = "org.kde.gwenview.desktop"; "image/svg+xml" = "org.kde.gwenview.desktop"; "image/svg+xml-compressed" = "org.kde.gwenview.desktop"; "image/vnd.wap.wbmp" = "org.kde.gwenview.desktop"; "image/x-icns" = "org.kde.gwenview.desktop"; # "video/*" = "org.gnome.Totem.desktop"; "text/html" = browser; "x-scheme-handler/http" = browser; "x-scheme-handler/https" = browser; "x-scheme-handler/about" = browser; # "x-scheme-handler/mailto" = "org.gnome.Geary.desktop"; # "application/zip" = "org.gnome.FileRoller.desktop"; # "application/rar" = "org.gnome.FileRoller.desktop"; # "application/7z" = "org.gnome.FileRoller.desktop"; # "application/*tar" = "org.gnome.FileRoller.desktop"; # "x-scheme-handler/sms" = "org.gnome.Shell.Extensions.GSConnect.desktop"; # "x-scheme-handler/tel" = "org.gnome.Shell.Extensions.GSConnect.desktop"; }; in { enable = true; associations.added = apps; defaultApplications = apps; }; }; }