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 = lib.mkDefault true; package = lib.mkDefault (librewolf.override { cfg = { enableGnomeExtensions = true; pipewireSupport = true; }; }); extensions = lib.optionals (pkgs ? nur.repos.rycee.firefox-addons) (with pkgs.nur.repos.rycee.firefox-addons; [ darkreader bitwarden violentmonkey canvasblocker sponsorblock stylus vimium ]); profiles.default = { settings = { "browser.startup.homepage" = "https://wizbos.club"; # Make the browser usable, if I wanted autism privacy, I would use TOR browser. "privacy.resistFingerprinting" = false; "webgl.disabled" = false; "privacy.clearOnShutdown.history" = false; "privacy.clearOnShutdown.cookies" = false; "privacy.clearOnShutdown.sessions" = false; "privacy.clearOnShutdown.cache" = false; "places.history.enabled" = true; "network.dns.disableIPv6" = false; "media.peerconnection.ice.no_host" = false; # Make Jitsi work sanely "media.setsinkid.enabled" = true; "privacy.webrtc.legacyGlobalIndicator" = false; "privacy.webrtc.hideGlobalIndicator" = true; # good tweaks "toolkit.legacyUserProfileCustomizations.stylesheets" = true; "layers.acceleration.force-enabled" = true; "gfx.webrender.all" = true; "svg.context-properties.content.enabled" = true; "reader.color_scheme" = "dark"; # # LibreWolf ruins the user agent making sites unusable without RFP, so use the user agent from RFP manually. This also seems sane for compatibility when using Firefox. # "general.useragent.override" = "Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0"; # set the user agent to a _realistic_ user agent because cloudflare keeps sniffing my balls "general.useragent.override" = "Mozilla/5.0 (X11; Linux x86_64; rv:104.0) Gecko/20100101 Firefox/104.0"; }; }; }; 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; }; }; }