# Enables all of my usual setup for desktop-oriented stuff. { config, options, lib, pkgs, ... }: let cfg = config.profiles.desktop; in { options.profiles.desktop = { enable = lib.mkEnableOption "installations of desktop apps"; graphics.enable = lib.mkEnableOption "installations of graphics-related apps"; audio.enable = lib.mkEnableOption "installations of audio-related apps"; video.enable = lib.mkEnableOption "installations of video-related apps"; documents.enable = lib.mkEnableOption "installations for document-related apps"; }; config = lib.mkIf cfg.enable (lib.mkMerge [ (lib.mkIf cfg.graphics.enable { home.packages = with pkgs; [ aseprite # Pixel art wannabe tool. blender # 3D modelling wannabe tool. emulsion-palette # Manage your color palettes. eyedropper # Gotta keep your monitor moist. inkscape # Illustration wannabe tool. gimp # Photo editing wannabe tool. krita # Digital art wannabe tool. ffmpeg-full # Ah yes, everyman's multimedia swiss army knife. imagemagick # Ah yes, everyman's image manipulation tool. gmic # Don't let the gimmicks fool you, it's a magical image framework. ]; }) (lib.mkIf cfg.audio.enable { home.packages = with pkgs; [ audacity # EGADS!!! musescore # You won't find muses to score, only music: a common misconception. zrythm # The freer FL Studio (if you're sailing by the high seven seas). supercollider # Not to be confused with the other Super Collider. sonic-pi # The only pie you'll get from this is worms which I heard is addicting. # !!! Be sure to install Wine for this one. yabridge # Building bridges to Windows and Linux audio tools. yabridgectl # The bridge controller. ffmpeg-full # Ah yes, everyman's multimedia swiss army knife. helvum # The Pipewire Patchbay. carla # The Carla Carla. ]; # This is assuming you're using Pipewire, yes? services.easyeffects.enable = true; services.fluidsynth = { enable = true; soundService = "pipewire-pulse"; }; }) (lib.mkIf cfg.video.enable { home.packages = with pkgs; [ ffmpeg-full # Ah yes, everyman's multimedia swiss army knife. ]; # The one-stop shop for your broadcasting and recording needs. Not to be # confused with the build service. programs.obs-studio = { enable = true; plugins = with pkgs.obs-studio-plugins; [ droidcam-obs obs-multi-rtmp obs-gstreamer obs-pipewire-audio-capture obs-source-switcher obs-vkcapture wlrobs ]; }; # The modern VLC if you have little sense of design. programs.mpv = { enable = true; config = { ytdl-format = "(webm,mkv,mp4)[height<=?1280]"; ordered-chapters = true; ab-loop-count = "inf"; chapter-seek-threshold = 15.0; no-osc = true; }; bindings = { "Alt+h" = "seek -5"; "Alt+l" = "seek 5"; "Alt+H" = "add chapter -1"; "Alt+L" = "add chapter 1"; "S" = "screenshot each-frame"; "!" = "show-text \${playlist}"; "@" = "show-text \${track-list}"; "SHARP" = "show-text \${chapter-list}"; # Ehhh, they're more getting in the way than just existing... "f" = "ignore"; "T" = "ignore"; "Ctrl+s" = "ignore"; "Alt+s" = "ignore"; }; profiles = { cjk = rec { profile-desc = "CJK prioritization"; vlang = "zho,zh,kor,ko,jpn,ja,eng,en"; alang = vlang; slang = with lib; concatStringsSep "," (reverseList (splitString "," vlang)); }; }; scripts = with pkgs.mpvScripts; [ mpris mpvacious thumbnail quality-menu ]; }; }) (lib.mkIf cfg.documents.enable { home.packages = with pkgs; [ brave # The only web browser that gives me money. dino # Some modern chat client featuring a dinosaur for what could be considered a dinosaur. foliate # The prettier PDF viewer. thunderbird # Email checks. languagetool # You're personal assistant for proper grammar, vale # Elevate your fanfics to an arguably higher caliber! ]; # Some PDF viewer with a penchant for research. programs.sioyek = { enable = true; # All of my keybindings based from my Neovim workflow. bindings = { "move_up" = [ "k" "" ]; "move_down" = [ "j" "" ]; "move_left" = [ "h" "" ]; "move_right" = [ "l" "" ]; "next_page" = [ "" ">" ]; "previous_page" = [ "" ">" ]; "screen_down" = [ "" "d" ]; "screen_up" = [ "" "u" ]; "fit_to_page_width_smart" = ""; "copy" = "y"; "goto_toc" = [ "t" "g" ]; "open_prev_doc" = [ "" "fbb" ]; "open_last_document" = [ "^" "" ]; }; config = { "search_url_b" = "https://search.brave.com/search?q="; "shift_middle_click_engine" = "b"; "ui_font" = "sans-serif"; "font_size" = "24"; }; }; }) ]); }