nixfiles/home-manager/modules/de3u.nix
2022-10-03 17:08:32 -07:00

398 lines
13 KiB
Nix

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;
};
};
}