{ config , lib , pkgs , inputs , system , ... }: let qutebrowser_firejail = pkgs.writeShellScriptBin "qutebrowser" '' firejail -- ${lib.getExe pkgs.qutebrowser} "$@" ''; auto_rotate = pkgs.writeShellScriptBin "auto-rotate" (builtins.readFile ./auto-rotate.sh); in { imports = [ ../common/zsh.nix ../common/i3status-rust.nix ../common/sway.nix ../common/river.nix ../common/i3.nix ./home_packages.nix ./att_menu.nix ../common/whatsapp-for-linux.nix ]; home.stateVersion = "22.11"; home.username = "akill"; home.homeDirectory = "/home/akill"; xdg.enable = true; xdg.mimeApps = { enable = true; /* associations.added = { "application/pdf" = [ "org.pwmt.zathura-pdf-mupdf.desktop" "org.pwmt.zathura.desktop" ]; }; */ defaultApplications = { "application/pdf" = "okular.desktop"; "default-web-browser" = "org.qutebrowser.qutebrowser.desktop"; "text/html" = "org.qutebrowser.qutebrowser.desktop"; "x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop"; "x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop"; "x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop"; "x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop"; }; }; gtk = { enable = true; theme = { name = "Adwaita-dark"; package = pkgs.gnome-themes-extra; }; gtk4.theme = config.gtk.theme; }; qt = { enable = true; style.name = "breeze"; platformTheme.name = "kde"; }; fonts.fontconfig.enable = true; home.sessionVariables = rec { BROWSER = lib.getExe qutebrowser_firejail; DEFAULT_BROWSER = "${BROWSER}"; EDITOR = "nvim"; SUDO_EDITOR = "nvim"; }; home.pointerCursor = { package = pkgs.adwaita-icon-theme; name = "Adwaita"; size = 38; }; wayland.windowManager = { sway.enable = true; }; programs = { home-manager.enable = true; librewolf = { enable = true; settings = { "webgl.disable" = true; "middlemouse.paste" = false; }; }; tmux = { enable = true; clock24 = true; keyMode = "vi"; terminal = "screen-256color"; plugins = with pkgs.tmuxPlugins; [ sysstat net-speed gruvbox ]; }; mpv = { enable = true; scripts = [ pkgs.mpvScripts.autosubsync-mpv pkgs.mpvScripts.uosc pkgs.mpvScripts.webtorrent-mpv-hook ]; scriptOpts.webtorrent = { path = "/tmp"; }; config = { osc = "no"; osd-bar = "no"; border = "no"; slang = "eng,en"; alang = "eng,en"; hwdec = "auto"; vo = "dmabuf-wayland"; vf = "format=nv12"; ao = "pipewire"; ytdl-format = "bestvideo[height<=1080]+bestaudio/best[height<=1080]"; video-osd = "yes"; osd-back-color = "0.0/0.0/0.0/0.0"; }; scriptOpts = { uosc = { disable_elements = "buffering_indicator"; timeline_style = "bar"; top_bar = "no-border"; }; }; bindings = { "s" = "script-binding uosc/subtitles"; "a" = "script-binding uosc/audio"; WHEEL_UP = "ignore"; WHEEL_DOWN = "ignore"; WHEEL_LEFT = "ignore"; WHEEL_RIGHT = "ignore"; }; }; alacritty = { enable = true; settings = { font = { normal.family = "JetBrainsMono"; italic.family = "JetBrainsMono"; bold.family = "JetBrainsMono"; bold_italic.family = "JetBrainsMono"; size = 14.0; }; }; }; rofi = { enable = true; theme = "gruvbox-dark"; }; foot = { enable = true; server.enable = false; settings = { main = { font = "JetBrainsMono:size=10"; dpi-aware = "yes"; }; mouse = { hide-when-typing = "yes"; }; }; }; qutebrowser = { enable = true; keyBindings = { normal = { "j" = "scroll-px 0 25"; "k" = "scroll-px 0 -25"; "u" = "undo --window"; ";v" = "hint links spawn mpv {hint-url}"; }; }; settings = { qt.args = [ "ignore-gpu-blocklist" "disable-gpu-memory-buffer-video-frames=false" "enable-features=VaapiIgnoreDriverChecks,VaapiVideoDecoder,AcceleratedVideoDecoder,AcceleratedVideoDecodeLinuxGL,AcceleratedVideoEncoder,Vulkan,DefaultANGLEVulkan,VulkanFromANGLE,FluentOverlayScrollbar,MiddleClickAutoscroll" ]; content.notifications.enabled = false; content.pdfjs = true; content.webgl = false; fonts.completion.category = "14pt monospace"; fonts.completion.entry = "14pt monospace"; fonts.contextmenu = "14pt monospace"; fonts.debug_console = "14pt monospace"; fonts.downloads = "14pt monospace"; fonts.hints = "14pt monospace"; fonts.keyhint = "14pt monospace"; fonts.messages.info = "14pt monospace"; fonts.prompts = "14pt monospace"; fonts.statusbar = "14pt monospace"; hints.chars = "1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9ol0p"; tabs.last_close = "close"; tabs.position = "left"; tabs.show = "multiple"; tabs.tabs_are_windows = true; tabs.width = "12%"; zoom.default = "125%"; }; extraConfig = '' c.qt.environ = {"QTWEBENGINE_FORCE_USE_GBM": "0"} ''; }; git = { enable = true; settings = { user = { name = "Asmir A"; email = "asmir.abdulahovic@gmail.com"; }; init.defaultBranch = "master"; pull = { rebase = true; }; credential = { helper = "store"; }; }; signing.key = "020C42B7A9ABA3E2"; signing.signByDefault = true; }; obs-studio = { enable = true; plugins = with pkgs.obs-studio-plugins; [ obs-vkcapture input-overlay obs-multi-rtmp obs-pipewire-audio-capture wlrobs obs-vaapi ]; }; i3status-rust.enable = true; z-lua.enable = true; zsh.enable = true; }; services = { lorri.enable = false; mako.enable = true; cliphist.enable = true; gammastep = { enable = true; latitude = "44.53"; longitude = "18.67"; temperature.day = 5500; temperature.night = 2900; }; gnome-keyring.enable = true; gpg-agent = { enable = true; defaultCacheTtl = 1800; enableSshSupport = true; }; swayidle = let att_lock = pkgs.writeShellScriptBin "att_lock" '' ALL_IMGS="" LOCK_ARGS="" for OUTPUT in $( ${inputs.att_wm.packages.${system}.default}/bin/att_wmctl state | ${lib.getExe pkgs.jq} -r '.outputs[].name') do TMP_FILE=$(${pkgs.coreutils}/bin/mktemp /tmp/.swaylock_ss_XXXXXX.ppm) ${lib.getExe pkgs.grim} -t ppm -o $OUTPUT - | \ ${lib.getExe pkgs.ffmpeg} -y -loglevel 0 -i - -vframes 1 -vf "boxblur=10" "$TMP_FILE" ALL_IMGS="$ALL_IMGS $TMP_FILE" done ${lib.getExe inputs.att_lock.packages.${system}.default} -i $ALL_IMGS & ${pkgs.coreutils}/bin/sleep 0.2 ${pkgs.coreutils}/bin/shred $ALL_IMGS & ${pkgs.coreutils}/bin/rm $ALL_IMGS & ''; in { enable = true; events = { before-sleep = "${att_lock}/bin/att_lock"; lock = "${att_lock}/bin/att_lock"; }; timeouts = [ { timeout = 15 * 60; command = "${att_lock}/bin/att_lock"; } ]; }; kanshi = { enable = true; settings = [ { profile.name = "undocked"; profile.outputs = [ { criteria = "eDP-1"; } ]; } { profile.name = "docked"; profile.outputs = [ { criteria = "eDP-1"; position = "0,0"; } { criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026536"; mode = "1920x1080@74.973Hz"; position = "1920,0"; } { criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026535"; mode = "1920x1080@74.973Hz"; position = "3840,0"; } ]; } ]; }; }; dconf.settings = { "org/gnome/desktop/input-sources".sources = [ (lib.hm.gvariant.mkTuple [ "xkb" "us" ]) ]; "org/gnome/desktop/a11y/applications".screen-keyboard-enabled = true; }; systemd.user = { services = { wayland-pipewire-idle-inhibit = { Unit.Description = "inhibit sleep while audio output is active"; Service = { ExecStart = "${lib.getExe pkgs.wayland-pipewire-idle-inhibit}"; Restart = "always"; RestartSec = 10; }; Install.WantedBy = [ "graphical-session.target" ]; }; auto-rotate = { Unit = { Description = "Rotate eDP-1 from iio-sensor-proxy orientation events"; PartOf = [ "graphical-session.target" ]; After = [ "graphical-session.target" ]; }; Service = { Environment = [ "PATH=${lib.makeBinPath [ pkgs.iio-sensor-proxy # monitor-sensor pkgs.wlr-randr pkgs.coreutils # stdbuf, kill pkgs.gawk pkgs.bash # hooks run via bash -c ]}" ]; ExecStart = "${auto_rotate}/bin/auto-rotate"; ExecReload = "${pkgs.coreutils}/bin/kill -USR2 $MAINPID"; Restart = "on-failure"; RestartSec = 5; }; Install.WantedBy = [ "graphical-session.target" ]; }; lisgd = { Unit = { Description = "Libinput gesture daemon"; PartOf = [ "graphical-session.target" ]; After = [ " graphical-session.target" ]; }; Service = { Environment = [ "PATH=/run/current-system/sw/bin:/etc/profiles/per-user/%u/bin" ]; ExecStart = '' ${pkgs.lisgd}/bin/lisgd -d \ /dev/input/by-path/pci-0000:00:15.1-platform-i2c_designware.1-event \ -g ''\'2,DU,*,*,B,${pkgs.procps}/bin/pkill -SIGRTMIN wvkbd-mobintl''\' \ -g ''\'2,LR,*,*,swaymsg workspace prev''\' \ -g ''\'2,RL,*,*,swaymsg workspace next''\' \ -g ''\'3,DU,*,*,B,${pkgs.sway}/bin/swaymsg exec ${pkgs.kdePackages.dolphin}/bin/dolphin''\' \ -g ''\'3,UD,*,*,B,${pkgs.sway}/bin/swaymsg exec ${lib.getExe pkgs.nwg-drawer}''\' \ -g ''\'4,UD,*,*,B,${pkgs.sway}/bin/swaymsg kill''\' \ ''; Restart = "on-failure"; }; Install.WantedBy = [ "graphical-session.target" ]; }; wvkbd = { Unit = { Description = "Wayland virtual keyboard"; PartOf = [ "graphical-session.target" ]; }; Service = { ExecStart = "${pkgs.wvkbd}/bin/wvkbd-mobintl -l full --hidden"; Restart = "on-failure"; }; Install.WantedBy = [ "graphical-session.target" ]; }; squeekboard = { Unit = { Description = "squeekboard on-screen keyboard (tablet mode)"; PartOf = [ "graphical-session.target" ]; After = [ "graphical-session.target" ]; StartLimitIntervalSec = 0; }; Service = { ExecStart = "${pkgs.squeekboard}/bin/squeekboard"; Restart = "on-failure"; RestartSec = 3; }; }; }; }; }