316 lines
		
	
	
	
		
			7.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			316 lines
		
	
	
	
		
			7.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ config, pkgs, lib, font, ... }:
 | 
						|
let inherit (import ./variables.nix) key theme color accent font;
 | 
						|
in {
 | 
						|
  config = {
 | 
						|
    xdg.desktopEntries = {
 | 
						|
      kak = {
 | 
						|
        name = "Kakoune";
 | 
						|
        genericName = "Text Editor";
 | 
						|
        comment = "Edit text files";
 | 
						|
        exec = "kak %F";
 | 
						|
        terminal = true;
 | 
						|
        type = "Application";
 | 
						|
        icon = "kak.desktop";
 | 
						|
        categories = [ "Utility" "TextEditor" ];
 | 
						|
        startupNotify = true;
 | 
						|
        mimeType = [
 | 
						|
          "text/english"
 | 
						|
          "text/plain"
 | 
						|
          "text/x-makefile"
 | 
						|
          "text/x-c++hdr"
 | 
						|
          "text/x-c++src"
 | 
						|
          "text/x-chdr"
 | 
						|
          "text/x-csrc"
 | 
						|
          "text/x-java"
 | 
						|
          "text/x-moc"
 | 
						|
          "text/x-pascal"
 | 
						|
          "text/x-tcl"
 | 
						|
          "text/x-tex"
 | 
						|
          "application/x-shellscript"
 | 
						|
          "text/x-c"
 | 
						|
          "text/x-c++"
 | 
						|
        ];
 | 
						|
        settings = {
 | 
						|
          Keywords = "Text;editor;";
 | 
						|
          TryExec = "kak";
 | 
						|
        };
 | 
						|
      };
 | 
						|
      neomutt = {
 | 
						|
        name = "Neomutt";
 | 
						|
        genericName = "Email Client";
 | 
						|
        comment = "View and Send Emails";
 | 
						|
        exec = "neomutt %U";
 | 
						|
        terminal = true;
 | 
						|
        type = "Application";
 | 
						|
        icon = "mutt";
 | 
						|
        categories = [ "Network" "Email" ];
 | 
						|
        startupNotify = false;
 | 
						|
        mimeType = [ "x-scheme-handler/mailto" ];
 | 
						|
        settings = { Keywords = "Mail;E-mail;"; };
 | 
						|
      };
 | 
						|
    };
 | 
						|
    # workaround to allow overriding mimeapps file
 | 
						|
    # btw, whatever it was that decided that damn file should always be written is an asshole
 | 
						|
    xdg.configFile."mimeapps.list".force = true;
 | 
						|
    xdg.mimeApps = let
 | 
						|
 | 
						|
      createMimeAssociation = (mime_prefix: application: mime_suffix: {
 | 
						|
        "${mime_prefix}/${mime_suffix}" = application;
 | 
						|
      });
 | 
						|
 | 
						|
      createMimeAssociations = (mime_prefix: application: mime_suffixes:
 | 
						|
        lib.foldAttrs (n: _: n) { }
 | 
						|
        (map (createMimeAssociation mime_prefix application) mime_suffixes));
 | 
						|
 | 
						|
      mimes = simple
 | 
						|
        // (createMimeAssociations "image" "pqiv.desktop" image_suffixes)
 | 
						|
        // (createMimeAssociations "video" "mpv.desktop" video_suffixes);
 | 
						|
 | 
						|
      simple = {
 | 
						|
        "text/plain" = "kak.desktop";
 | 
						|
        "inode/directory" = "thunar.desktop";
 | 
						|
 | 
						|
        "application/pdf" = "org.pwmt.zathura.desktop";
 | 
						|
        "application/epub+zip" = "org.pwmt.zathura.desktop";
 | 
						|
 | 
						|
        "text/html" = "firefox";
 | 
						|
        "x-scheme-handler/http" = "firefox";
 | 
						|
        "x-scheme-handler/https" = "firefox";
 | 
						|
 | 
						|
        "x-scheme-handler/magnet" = "torrent.desktop";
 | 
						|
        "application/x-bittorrent" = "torrent.desktop";
 | 
						|
 | 
						|
        "x-scheme-handler/mailto" = "thunderbird.desktop";
 | 
						|
      };
 | 
						|
 | 
						|
      image_suffixes = [
 | 
						|
        "bmp"
 | 
						|
        "cgm"
 | 
						|
        "dicom-rle"
 | 
						|
        "emf"
 | 
						|
        "example"
 | 
						|
        "fits"
 | 
						|
        "g3fax"
 | 
						|
        "gif"
 | 
						|
        "heic"
 | 
						|
        "heif"
 | 
						|
        "ief"
 | 
						|
        "jls"
 | 
						|
        "jp2"
 | 
						|
        "jpeg"
 | 
						|
        "jpeg"
 | 
						|
        "jpg"
 | 
						|
        "jpm"
 | 
						|
        "jpx"
 | 
						|
        "ktx"
 | 
						|
        "naplps"
 | 
						|
        "pjpeg"
 | 
						|
        "png"
 | 
						|
        "prs.btif"
 | 
						|
        "prs.pti"
 | 
						|
        "pwg-raster"
 | 
						|
        "svg+xml-compressed"
 | 
						|
        "svg+xml"
 | 
						|
        "t38"
 | 
						|
        "tiff-fx"
 | 
						|
        "tiff"
 | 
						|
        "vnd.adobe.photoshop"
 | 
						|
        "vnd.airzip.accelerator.azv"
 | 
						|
        "vnd.cns.inf2"
 | 
						|
        "vnd.dece.graphic"
 | 
						|
        "vnd.djvu"
 | 
						|
        "vnd.dvb.subtitle"
 | 
						|
        "vnd.dwg"
 | 
						|
        "vnd.dxf"
 | 
						|
        "vnd.fastbidsheet"
 | 
						|
        "vnd.fpx"
 | 
						|
        "vnd.fst"
 | 
						|
        "vnd.fujixerox.edmics-mmr"
 | 
						|
        "vnd.fujixerox.edmics-rlc"
 | 
						|
        "vnd.globalgraphics.pgb"
 | 
						|
        "vnd.microsoft.icon"
 | 
						|
        "vnd.mix"
 | 
						|
        "vnd.mozilla.apng"
 | 
						|
        "vnd.ms-modi"
 | 
						|
        "vnd.net-fpx"
 | 
						|
        "vnd.radiance"
 | 
						|
        "vnd.rn-realpix"
 | 
						|
        "vnd.sealed.png"
 | 
						|
        "vnd.sealedmedia.softseal.gif"
 | 
						|
        "vnd.sealedmedia.softseal.jpg"
 | 
						|
        "vnd.svf"
 | 
						|
        "vnd.tencent.tap"
 | 
						|
        "vnd.valve.source.texture"
 | 
						|
        "vnd.wap.wbmp"
 | 
						|
        "vnd.xiff"
 | 
						|
        "vnd.zbrush.pcx"
 | 
						|
        "webp"
 | 
						|
        "wmf"
 | 
						|
        "x-bmp"
 | 
						|
        "x-cmu-raster"
 | 
						|
        "x-compressed-xcf"
 | 
						|
        "x-emf"
 | 
						|
        "x-eps"
 | 
						|
        "x-exr"
 | 
						|
        "x-fits"
 | 
						|
        "x-freehand"
 | 
						|
        "x-gimp-gbr"
 | 
						|
        "x-gimp-gih"
 | 
						|
        "x-gimp-pat"
 | 
						|
        "x-icon"
 | 
						|
        "x-pcx"
 | 
						|
        "x-png"
 | 
						|
        "x-portable-anymap"
 | 
						|
        "x-portable-bitmap"
 | 
						|
        "x-portable-graymap"
 | 
						|
        "x-portable-pixmap"
 | 
						|
        "x-psd"
 | 
						|
        "x-psp"
 | 
						|
        "x-rgb"
 | 
						|
        "x-sgi"
 | 
						|
        "x-targa"
 | 
						|
        "x-tga"
 | 
						|
        "x-vsd"
 | 
						|
        "x-webp"
 | 
						|
        "x-wmf"
 | 
						|
        "x-xbitmap"
 | 
						|
        "x-xcdr"
 | 
						|
        "x-xcf"
 | 
						|
        "x-xcursor"
 | 
						|
        "x-xpixmap"
 | 
						|
        "x-xwindowdump"
 | 
						|
      ];
 | 
						|
 | 
						|
      video_suffixes = [
 | 
						|
        "1d-interleaved-parityfec"
 | 
						|
        "3gp"
 | 
						|
        "3gpp"
 | 
						|
        "3gpp-tt"
 | 
						|
        "3gpp2"
 | 
						|
        "BMPEG"
 | 
						|
        "BT656"
 | 
						|
        "CelB"
 | 
						|
        "DV"
 | 
						|
        "H261"
 | 
						|
        "H263"
 | 
						|
        "H263-1998"
 | 
						|
        "H263-2000"
 | 
						|
        "H264"
 | 
						|
        "H264-RCDO"
 | 
						|
        "H264-SVC"
 | 
						|
        "H265"
 | 
						|
        "JPEG"
 | 
						|
        "MP1S"
 | 
						|
        "MP2P"
 | 
						|
        "MP2T"
 | 
						|
        "MP4V-ES"
 | 
						|
        "MPV"
 | 
						|
        "SMPTE292M"
 | 
						|
        "VP8"
 | 
						|
        "avi"
 | 
						|
        "divx"
 | 
						|
        "dv"
 | 
						|
        "encaprtp"
 | 
						|
        "example"
 | 
						|
        "fli"
 | 
						|
        "flv"
 | 
						|
        "iso.segment"
 | 
						|
        "jpeg2000"
 | 
						|
        "mj2"
 | 
						|
        "mkv"
 | 
						|
        "mp2t"
 | 
						|
        "mp4"
 | 
						|
        "mp4v-es"
 | 
						|
        "mpeg"
 | 
						|
        "mpeg-system"
 | 
						|
        "mpeg4-generic"
 | 
						|
        "msvideo"
 | 
						|
        "nv"
 | 
						|
        "ogg"
 | 
						|
        "parityfec"
 | 
						|
        "pointer"
 | 
						|
        "quicktime"
 | 
						|
        "raptorfec"
 | 
						|
        "raw"
 | 
						|
        "rtp-enc-aescm128"
 | 
						|
        "rtploopback"
 | 
						|
        "rtx"
 | 
						|
        "ulpfec"
 | 
						|
        "vc1"
 | 
						|
        "vnd.CCTV"
 | 
						|
        "vnd.dece.hd"
 | 
						|
        "vnd.dece.mobile"
 | 
						|
        "vnd.dece.mp4"
 | 
						|
        "vnd.dece.pd"
 | 
						|
        "vnd.dece.sd"
 | 
						|
        "vnd.dece.video"
 | 
						|
        "vnd.directv.mpeg"
 | 
						|
        "vnd.directv.mpeg-tts"
 | 
						|
        "vnd.divx"
 | 
						|
        "vnd.dlna.mpeg-tts"
 | 
						|
        "vnd.dvb.file"
 | 
						|
        "vnd.fvt"
 | 
						|
        "vnd.hns.video"
 | 
						|
        "vnd.iptvforum.1dparityfec-1010"
 | 
						|
        "vnd.iptvforum.1dparityfec-2005"
 | 
						|
        "vnd.iptvforum.2dparityfec-1010"
 | 
						|
        "vnd.iptvforum.2dparityfec-2005"
 | 
						|
        "vnd.iptvforum.ttsavc"
 | 
						|
        "vnd.iptvforum.ttsmpeg2"
 | 
						|
        "vnd.motorola.video"
 | 
						|
        "vnd.motorola.videop"
 | 
						|
        "vnd.mpegurl"
 | 
						|
        "vnd.ms-playready.media.pyv"
 | 
						|
        "vnd.nokia.interleaved-multimedia"
 | 
						|
        "vnd.nokia.mp4vr"
 | 
						|
        "vnd.nokia.videovoip"
 | 
						|
        "vnd.objectvideo"
 | 
						|
        "vnd.radgamettools.bink"
 | 
						|
        "vnd.radgamettools.smacker"
 | 
						|
        "vnd.rn-realvideo"
 | 
						|
        "vnd.sealed.mpeg1"
 | 
						|
        "vnd.sealed.mpeg4"
 | 
						|
        "vnd.sealed.swf"
 | 
						|
        "vnd.sealedmedia.softseal.mov"
 | 
						|
        "vnd.uvvu.mp4"
 | 
						|
        "vnd.vivo"
 | 
						|
        "webm"
 | 
						|
        "x-anim"
 | 
						|
        "x-annodex"
 | 
						|
        "x-avi"
 | 
						|
        "x-flc"
 | 
						|
        "x-fli"
 | 
						|
        "x-flic"
 | 
						|
        "x-flv"
 | 
						|
        "x-javafx"
 | 
						|
        "x-m4v"
 | 
						|
        "x-matroska"
 | 
						|
        "x-matroska-3d"
 | 
						|
        "x-mpeg"
 | 
						|
        "x-mpeg-system"
 | 
						|
        "x-mpeg2"
 | 
						|
        "x-mpeg3"
 | 
						|
        "x-ms-afs"
 | 
						|
        "x-ms-asf"
 | 
						|
        "x-ms-asf-plugin"
 | 
						|
        "x-ms-asx"
 | 
						|
        "x-ms-wm"
 | 
						|
        "x-ms-wmv"
 | 
						|
        "x-ms-wmx"
 | 
						|
        "x-ms-wvx"
 | 
						|
        "x-ms-wvxvideo"
 | 
						|
        "x-msvideo"
 | 
						|
        "x-nsv"
 | 
						|
        "x-ogm"
 | 
						|
        "x-ogm+ogg"
 | 
						|
        "x-sgi-movie"
 | 
						|
        "x-theora"
 | 
						|
        "x-theora+ogg"
 | 
						|
      ];
 | 
						|
    in {
 | 
						|
      enable = true;
 | 
						|
      defaultApplications = mimes;
 | 
						|
    };
 | 
						|
 | 
						|
  };
 | 
						|
}
 |