summaryrefslogtreecommitdiffstats
path: root/home-manager
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager')
-rw-r--r--home-manager/default.nix18
-rw-r--r--home-manager/firefox.nix113
-rw-r--r--home-manager/fontconfig.nix11
-rw-r--r--home-manager/gammastep.nix18
-rw-r--r--home-manager/home-cleanup.nix21
-rw-r--r--home-manager/htop.nix46
-rw-r--r--home-manager/mint-theme.nix43
-rw-r--r--home-manager/pcmanfm.nix14
-rw-r--r--home-manager/qt-gtk-theme.nix15
-rw-r--r--home-manager/resources/pcmanfm/root.desktop11
-rw-r--r--home-manager/resources/xdg-mime/audio65
-rw-r--r--home-manager/resources/xdg-mime/directory2
-rw-r--r--home-manager/resources/xdg-mime/email6
-rw-r--r--home-manager/resources/xdg-mime/image21
-rw-r--r--home-manager/resources/xdg-mime/pdf4
-rw-r--r--home-manager/resources/xdg-mime/text15
-rw-r--r--home-manager/resources/xdg-mime/video55
-rw-r--r--home-manager/theme-st.nix46
-rw-r--r--home-manager/wallpapers.nix17
-rw-r--r--home-manager/xdg-mime.nix42
20 files changed, 583 insertions, 0 deletions
diff --git a/home-manager/default.nix b/home-manager/default.nix
new file mode 100644
index 0000000..226552a
--- /dev/null
+++ b/home-manager/default.nix
@@ -0,0 +1,18 @@
+{
+ imports = [
+ ./firefox.nix
+ ./fontconfig.nix
+ ./gammastep.nix
+ ./home-cleanup.nix
+ ./htop.nix
+ ./mint-theme.nix
+ ./pcmanfm.nix
+ ./qt-gtk-theme.nix
+ ./theme-st.nix
+ ./wallpapers.nix
+ ./xdg-mime.nix
+ ];
+
+ # Let Home Manager install and manage itself.
+ programs.home-manager.enable = true;
+}
diff --git a/home-manager/firefox.nix b/home-manager/firefox.nix
new file mode 100644
index 0000000..a6cbd24
--- /dev/null
+++ b/home-manager/firefox.nix
@@ -0,0 +1,113 @@
+{ config, lib, pkgs, inputs, ... }: let
+ cfg = config.programs.firefox;
+ search = {
+ engines = {
+ "Timmy Search" = {
+ urls = [{
+ template = "https://search.tjkeller.xyz/search";
+ params = [ { name = "q"; value = "{searchTerms}"; } ];
+ }];
+ iconURI = "https://search.tjkeller.xyz/static/themes/simple/img/favicon.svg"; # TODO doesn't seem to work
+ };
+ "Nix Packages" = {
+ urls = [{
+ template = "https://search.nixos.org/packages";
+ params = [ { name = "query"; value = "{searchTerms}"; } ];
+ }];
+ icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+ definedAliases = [ "@np" ];
+ };
+ "NixOS Options" = {
+ urls = [{
+ template = "https://search.nixos.org/options";
+ params = [ { name = "query"; value = "{searchTerms}"; } ];
+ }];
+ icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+ definedAliases = [ "@no" ];
+ };
+ };
+ default = "Timmy Search";
+ privateDefault = "Timmy Search";
+ force = true; # Overwrite old
+ };
+ userChrome = inputs.ff-userchrome.userChrome;
+ uiCustomization = {
+ placements = {
+ nav-bar = [
+ "back-button"
+ "forward-button"
+ "stop-reload-button"
+ "vertical-spacer"
+ "home-button"
+ "urlbar-container"
+ "downloads-button"
+ "_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action" # Bitwarden
+ "unified-extensions-button"
+ ];
+ TabsToolbar = [ "tabbrowser-tabs" "new-tab-button" ];
+ # Ensure these extensions go to overflow menu instead of nav-bar
+ unified-extensions-area = [
+ "ublock0_raymondhill_net-browser-action"
+ "sponsorblocker_ajay_app-browser-action"
+ ];
+ };
+ currentVersion = 23; # Required
+ };
+ arkenfox = {
+ enable = true;
+ enableAllSections = true;
+ "0100"."0102"."browser.startup.page".value = 3; # 0=blank, 1=home, 2=last visited page, 3=resume previous session
+ "0100"."0103"."browser.startup.homepage".enable = false;
+ "0100"."0104"."browser.newtabpage.enabled".enable = false;
+ #"2800"."2811"."privacy.clearOnShutdown.history".enable = false;
+ };
+ settings = {
+ "browser.compactmode.show" = true;
+ "browser.uiCustomization.state" = builtins.toJSON uiCustomization; # Toolbar etc.
+ "browser.uidensity" = 1; # Compact
+ "toolkit.legacyUserProfileCustomizations.stylesheets" = true; # userchrome
+
+ "app.normandy.first_run" = false;
+ "browser.aboutConfig.showWarning" = false; # arkenfox does
+ #"browser.download.dir" = userDetails.userDirs.downloads;
+ "browser.newtabpage.activity-stream.feeds.section.topstories" = false;
+ "browser.newtabpage.activity-stream.feeds.topsites" = false;
+ "browser.urlbar.suggest.topsites" = false;
+ "devtools.toolbox.host" = "window";
+ "dom.push.enabled" = false; #
+ "extensions.pocket.enabled" = false;
+ "general.smoothScroll" = false;
+ #"geo.provider.use_geoclue" = true;
+ };
+ workSettings = settings // {
+ "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org"; # Use builtin dark theme instead of system theme
+ };
+in {
+ options.programs.firefox = {
+ _configure = lib.mkEnableOption "configure firefox profiles";
+ };
+
+ config = lib.mkIf cfg._configure {
+ programs.firefox = {
+ enable = lib.mkDefault true;
+ arkenfox.enable = lib.mkDefault true;
+ profiles = {
+ Personal = {
+ id = 0;
+ isDefault = true;
+ inherit search;
+ inherit userChrome;
+ inherit arkenfox;
+ inherit settings;
+ };
+ Work = {
+ id = 1;
+ inherit search;
+ inherit userChrome;
+ inherit arkenfox;
+ settings = workSettings;
+ };
+ };
+ };
+ };
+}
diff --git a/home-manager/fontconfig.nix b/home-manager/fontconfig.nix
new file mode 100644
index 0000000..7c12b7e
--- /dev/null
+++ b/home-manager/fontconfig.nix
@@ -0,0 +1,11 @@
+{ lib, config, ... }: {
+ config = {
+ # Warn whenever subpixelRendering is not enabled
+ warnings = [
+ (lib.mkIf (config.fonts.fontconfig.subpixelRendering == null)
+ ''fonts.fontconfig.subpixelRendering is unset; this may result in suboptimal font rendering. Set this value to "none" to disable the feature explicitly.'')
+ (lib.mkIf (config.fonts.fontconfig.hinting == null)
+ ''fonts.fontconfig.hinting is unset; this may result in suboptimal font clarity. Set this value to "none" to disable the feature explicitly.'')
+ ];
+ };
+}
diff --git a/home-manager/gammastep.nix b/home-manager/gammastep.nix
new file mode 100644
index 0000000..f7ea3b3
--- /dev/null
+++ b/home-manager/gammastep.nix
@@ -0,0 +1,18 @@
+{ config, lib, ... }: let
+ cfg = config.services._gammastep;
+in {
+ options.services._gammastep = {
+ enable = lib.mkEnableOption "configure gammastep";
+ };
+
+ config = lib.mkIf cfg.enable {
+ services.gammastep = {
+ enable = true;
+ provider = lib.mkDefault "geoclue2";
+ temperature = {
+ day = lib.mkDefault 6500; # gammastep default, the hm module defaults to 5500
+ night = lib.mkDefault 3600;
+ };
+ };
+ };
+}
diff --git a/home-manager/home-cleanup.nix b/home-manager/home-cleanup.nix
new file mode 100644
index 0000000..1f7c426
--- /dev/null
+++ b/home-manager/home-cleanup.nix
@@ -0,0 +1,21 @@
+{ config, lib, ... }: let
+ cacheHome = config.xdg.cacheHome;
+ configHome = config.xdg.configHome;
+ dataHome = config.xdg.dataHome;
+in {
+ # Gtk 2
+ # This file may be generated by home-manager, so this will need to be set
+ # so that it ends up in the correct location
+ gtk.gtk2.configLocation = "${configHome}/gtk-2.0/gtkrc";
+
+ # Npm
+ xdg.configFile.npmrc = {
+ enable = lib.mkDefault true;
+ text = builtins.replaceStrings ["\t"] [""] ''
+ prefix=${dataHome}/npm
+ cache=${cacheHome}/npm
+ init-module=${dataHome}/npm/npm-init.js
+ '';
+ target = "npm/npmrc";
+ };
+}
diff --git a/home-manager/htop.nix b/home-manager/htop.nix
new file mode 100644
index 0000000..36ccbac
--- /dev/null
+++ b/home-manager/htop.nix
@@ -0,0 +1,46 @@
+{ config, lib, ... }: let
+ cfg = config.programs.htop;
+in {
+ options.programs.htop = {
+ _configure = lib.mkEnableOption "apply sensible defaults to htop";
+ };
+
+ config = lib.mkIf cfg._configure {
+ programs.htop.enable = lib.mkDefault true;
+ programs.htop.settings = {
+ fields = with config.lib.htop.fields; [
+ PID
+ USER
+ 124 # EXE
+ PERCENT_CPU
+ PERCENT_MEM
+ STARTTIME
+ ELAPSED # time elapsed since process start
+ IO_READ_RATE
+ RBYTES # num read bytes
+ IO_WRITE_RATE
+ WBYTES # num written bytes
+ TIME
+ STIME # sys time
+ CSTIME # child sys time
+ NICE
+ STATE
+ PRIORITY
+ 125 # CWD
+ ];
+ } // (with config.lib.htop; leftMeters [
+ (bar "AllCPUs2")
+ (bar "CPU")
+ (bar "Memory")
+ (bar "DiskIO")
+ (bar "NetworkIO")
+ ]) // (with config.lib.htop; rightMeters [
+ (text "Hostname")
+ (text "Clock")
+ (text "Uptime")
+ (text "Battery")
+ (text "LoadAverage")
+ (text "Tasks")
+ ]);
+ };
+}
diff --git a/home-manager/mint-theme.nix b/home-manager/mint-theme.nix
new file mode 100644
index 0000000..a77be6a
--- /dev/null
+++ b/home-manager/mint-theme.nix
@@ -0,0 +1,43 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.gtk._mintTheme; # gtk.theme type is null or submodule under the hood so gtk.theme._mint, etc. can't be used
+ transformColorValue = color: dark:
+ "Mint-Y" + lib.optionalString dark "-Dark"
+ + lib.optionalString (color != "Green") ("-" + color)
+ ;
+in {
+ options.gtk._mintTheme = {
+ enable = lib.mkEnableOption "enables mint theme";
+ color = lib.mkOption {
+ type = lib.types.enum [
+ "Aqua" "Blue" "Green" "Grey" "Orange"
+ "Pink" "Purple" "Red" "Sand" "Teal"
+ ];
+ default = "Green";
+ description = "mint-y theme color";
+ };
+ dark = lib.mkEnableOption "whether to use dark variant of mint theme";
+ icons.color = lib.mkOption {
+ type = lib.types.enum [
+ "Aqua" "Blue" "Green" "Grey" "Orange" "Pink" "Purple" "Red"
+ "Sand" "Teal"
+ ];
+ default = "Aqua";
+ description = "mint-y icons color eg. 'Aqua' or 'Red'";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ gtk = {
+ enable = true;
+ theme = {
+ package = pkgs.mint-themes;
+ name = transformColorValue cfg.color cfg.dark;
+ };
+ iconTheme = {
+ package = pkgs.mint-y-icons;
+ name = transformColorValue cfg.icons.color false;
+ };
+ };
+ };
+}
diff --git a/home-manager/pcmanfm.nix b/home-manager/pcmanfm.nix
new file mode 100644
index 0000000..fc2737a
--- /dev/null
+++ b/home-manager/pcmanfm.nix
@@ -0,0 +1,14 @@
+{ config, lib, ... }: let
+ cfg = config.programs._pcmanfm.openAsRootOption;
+in {
+ options.programs._pcmanfm.openAsRootOption = {
+ enable = lib.mkEnableOption "enable 'open as root' option in pcmanfm right-click menu";
+ };
+
+ config = lib.mkIf cfg.enable {
+ home.file.pcmanfm-root = {
+ target = ".local/share/file-manager/actions/root.desktop";
+ source = ./resources/pcmanfm/root.desktop;
+ };
+ };
+}
diff --git a/home-manager/qt-gtk-theme.nix b/home-manager/qt-gtk-theme.nix
new file mode 100644
index 0000000..2e53ccc
--- /dev/null
+++ b/home-manager/qt-gtk-theme.nix
@@ -0,0 +1,15 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.qt._gtkPlatformTheme;
+in {
+ options.qt._gtkPlatformTheme = {
+ enable = lib.mkEnableOption "use gtk theme in qt";
+ };
+
+ config = lib.mkIf cfg.enable {
+ qt = {
+ enable = lib.mkDefault true;
+ platformTheme.name = "gtk3";
+ };
+ };
+}
diff --git a/home-manager/resources/pcmanfm/root.desktop b/home-manager/resources/pcmanfm/root.desktop
new file mode 100644
index 0000000..f5863e9
--- /dev/null
+++ b/home-manager/resources/pcmanfm/root.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Type=Action
+Tooltip=Open Directory As Root
+Name=Open Directory As Root
+Profiles=profile-zero;
+Icon=gtk-dialog-authentication
+
+[X-Action-Profile profile-zero]
+MimeTypes=inode/directory;
+Exec=pkexec env DISPLAY="$DISPLAY" XAUTHORITY="$XAUTHORITY" XDG_DATA_DIRS="$XDG_DATA_DIRS" XDG_CONFIG_HOME="$XDG_CONFIG_HOME" pcmanfm %u
+Name=Default profile
diff --git a/home-manager/resources/xdg-mime/audio b/home-manager/resources/xdg-mime/audio
new file mode 100644
index 0000000..fd00b26
--- /dev/null
+++ b/home-manager/resources/xdg-mime/audio
@@ -0,0 +1,65 @@
+application/x-cue
+application/x-extension-m4a
+application/x-ogm-audio
+application/x-shorten
+audio/3gpp
+audio/3gpp2
+audio/AMR
+audio/aac
+audio/ac3
+audio/aiff
+audio/amr-wb
+audio/dv
+audio/eac3
+audio/flac
+audio/m3u
+audio/m4a
+audio/mp1
+audio/mp2
+audio/mp3
+audio/mp4
+audio/mpeg
+audio/mpeg2
+audio/mpeg3
+audio/mpegurl
+audio/mpg
+audio/musepack
+audio/ogg
+audio/opus
+audio/rn-mpeg
+audio/scpls
+audio/vnd.dolby.heaac.1
+audio/vnd.dolby.heaac.2
+audio/vnd.dts
+audio/vnd.dts.hd
+audio/vnd.rn-realaudio
+audio/vorbis
+audio/wav
+audio/webm
+audio/x-aac
+audio/x-adpcm
+audio/x-aiff
+audio/x-ape
+audio/x-m4a
+audio/x-matroska
+audio/x-mp1
+audio/x-mp2
+audio/x-mp3
+audio/x-mpegurl
+audio/x-mpg
+audio/x-ms-asf
+audio/x-ms-wma
+audio/x-musepack
+audio/x-pls
+audio/x-pn-au
+audio/x-pn-realaudio
+audio/x-pn-wav
+audio/x-pn-windows-pcm
+audio/x-realaudio
+audio/x-scpls
+audio/x-shorten
+audio/x-tta
+audio/x-vorbis
+audio/x-vorbis+ogg
+audio/x-wav
+audio/x-wavpack
diff --git a/home-manager/resources/xdg-mime/directory b/home-manager/resources/xdg-mime/directory
new file mode 100644
index 0000000..4284766
--- /dev/null
+++ b/home-manager/resources/xdg-mime/directory
@@ -0,0 +1,2 @@
+inode/directory
+inode/mount-point
diff --git a/home-manager/resources/xdg-mime/email b/home-manager/resources/xdg-mime/email
new file mode 100644
index 0000000..db65256
--- /dev/null
+++ b/home-manager/resources/xdg-mime/email
@@ -0,0 +1,6 @@
+application/mbox
+application/vnd.ms-outlook
+message/rfc822
+text/calendar
+x-scheme-handler/mailto
+x-scheme-handler/mid
diff --git a/home-manager/resources/xdg-mime/image b/home-manager/resources/xdg-mime/image
new file mode 100644
index 0000000..1e2623b
--- /dev/null
+++ b/home-manager/resources/xdg-mime/image
@@ -0,0 +1,21 @@
+application/postscript
+image/avif
+image/bmp
+image/gif
+image/heic
+image/heif
+image/jp2
+image/jpeg
+image/jpg
+image/jxl
+image/png
+image/svg+xml
+image/svg+xml-compressed
+image/tiff
+image/webp
+image/x-bmp
+image/x-portable-anymap
+image/x-portable-bitmap
+image/x-portable-graymap
+image/x-tga
+image/x-xpixmap
diff --git a/home-manager/resources/xdg-mime/pdf b/home-manager/resources/xdg-mime/pdf
new file mode 100644
index 0000000..73bd5d0
--- /dev/null
+++ b/home-manager/resources/xdg-mime/pdf
@@ -0,0 +1,4 @@
+application/epub+zip
+application/oxps
+application/pdf
+application/x-fictionbook
diff --git a/home-manager/resources/xdg-mime/text b/home-manager/resources/xdg-mime/text
new file mode 100644
index 0000000..709cb57
--- /dev/null
+++ b/home-manager/resources/xdg-mime/text
@@ -0,0 +1,15 @@
+application/x-shellscript
+text/english
+text/plain
+text/x-c
+text/x-c++
+text/x-c++hdr
+text/x-c++src
+text/x-chdr
+text/x-csrc
+text/x-java
+text/x-makefile
+text/x-moc
+text/x-pascal
+text/x-tcl
+text/x-tex
diff --git a/home-manager/resources/xdg-mime/video b/home-manager/resources/xdg-mime/video
new file mode 100644
index 0000000..6a0839e
--- /dev/null
+++ b/home-manager/resources/xdg-mime/video
@@ -0,0 +1,55 @@
+application/mxf
+application/ogg
+application/sdp
+application/smil
+application/streamingmedia
+application/vnd.apple.mpegurl
+application/vnd.ms-asf
+application/vnd.rn-realmedia
+application/vnd.rn-realmedia-vbr
+application/x-extension-mp4
+application/x-matroska
+application/x-mpegurl
+application/x-ogg
+application/x-ogm
+application/x-ogm-video
+application/x-smil
+application/x-streamingmedia
+video/3gp
+video/3gpp
+video/3gpp2
+video/avi
+video/divx
+video/dv
+video/fli
+video/flv
+video/mkv
+video/mp2t
+video/mp4
+video/mp4v-es
+video/mpeg
+video/msvideo
+video/ogg
+video/quicktime
+video/vnd.divx
+video/vnd.mpegurl
+video/vnd.rn-realvideo
+video/webm
+video/x-avi
+video/x-flc
+video/x-flic
+video/x-flv
+video/x-m4v
+video/x-matroska
+video/x-mpeg2
+video/x-mpeg3
+video/x-ms-afs
+video/x-ms-asf
+video/x-ms-wmv
+video/x-ms-wmx
+video/x-ms-wvxvideo
+video/x-msvideo
+video/x-ogm
+video/x-ogm+ogg
+video/x-theora
+video/x-theora+ogg
diff --git a/home-manager/theme-st.nix b/home-manager/theme-st.nix
new file mode 100644
index 0000000..0a2cf34
--- /dev/null
+++ b/home-manager/theme-st.nix
@@ -0,0 +1,46 @@
+{ config, lib, pkgs, ... }: let
+ cfg = config.programs._st;
+ toString = x: if lib.isBool x then (if x then "true" else "false") else builtins.toString x;
+ # http://freedesktop.org/software/fontconfig/fontconfig-user.html
+ generateFontConfigString = name: attrs:
+ name + lib.optionalString (attrs != {}) (
+ ":" + lib.concatStringsSep ":" (
+ lib.mapAttrsToList (key: value: "${key}=${toString value}") attrs
+ )
+ )
+ ;
+ themed-st = pkgs.stdenv.mkDerivation {
+ name = "themed-st";
+ dontUnpack = true;
+ buildInputs = [ pkgs.makeWrapper ];
+ installPhase = ''
+ mkdir -p $out/bin
+ makeWrapper ${pkgs.st}/bin/st $out/bin/st \
+ --add-flags '-f"${generateFontConfigString cfg.font.name cfg.font.attrs}"'
+ '';
+ };
+in {
+ options.programs._st = {
+ enable = lib.mkEnableOption "enables theming st with home manager";
+ font = {
+ name = lib.mkOption {
+ type = lib.types.str;
+ example = "JetBrainsMonoNL Nerd Font Mono";
+ default = "monospace";
+ };
+ attrs = lib.mkOption {
+ type = lib.types.attrs;
+ default = {};
+ example = {
+ size = 12;
+ antialias = true;
+ autohint = true;
+ };
+ };
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ home.packages = [ themed-st ];
+ };
+}
diff --git a/home-manager/wallpapers.nix b/home-manager/wallpapers.nix
new file mode 100644
index 0000000..de64d76
--- /dev/null
+++ b/home-manager/wallpapers.nix
@@ -0,0 +1,17 @@
+{ lib, config, pkgs, ... }: let
+ cfg = config.programs._seasonalwallpaper.wallpapers;
+in {
+ options.programs._seasonalwallpaper.wallpapers = {
+ download = lib.mkEnableOption "enables all wallpapers";
+ };
+
+ config = lib.mkIf cfg.download {
+ home.file.wallpapers = {
+ target = ".local/share/wallpaper";
+ source = pkgs.fetchzip {
+ url = "https://tjkeller.xyz/permalinks/wallpapers.tar";
+ hash = "sha256-lhj9wUMZfd0XOrUtWY9HB64oXrS/EjsvsaJHzu4ucFg=";
+ };
+ };
+ };
+}
diff --git a/home-manager/xdg-mime.nix b/home-manager/xdg-mime.nix
new file mode 100644
index 0000000..e74b4b3
--- /dev/null
+++ b/home-manager/xdg-mime.nix
@@ -0,0 +1,42 @@
+{ config, lib, pkgs, ... }: let
+ cfg = config.xdg.mimeApps._defaultCategoryApplications;
+
+ # Mime-type category files are stored here
+ mimeResources = ./resources/xdg-mime;
+
+ # Files present in mimeResources with newline separated mime-types
+ # Would be more fun to load these dynamically with builtins.readDir, but I will be disciplined
+ categories = [ "audio" "directory" "email" "image" "pdf" "text" "video" ];
+
+ # Dynamically generate categories
+ categoryApplications = (lib.genAttrs categories (category: lib.mkOption {
+ type = lib.types.listOf lib.types.str;
+ default = [ ];
+ description = "set the default application used for ${category} files. omit '.desktop'";
+ }));
+
+ # Create list of mime-types from the category file
+ getCategoryMimeTypes = category: lib.filter (s: s != "") (lib.splitString "\n" (builtins.readFile "${mimeResources}/${category}"));
+
+ # Structure default applications for a specified category how home-manager expects
+ assignMimeTypes = applications: category: lib.map (mimetype:
+ { "${mimetype}" = lib.mkIf (applications != []) (lib.map (app: "${app}.desktop") applications); }
+ ) (getCategoryMimeTypes category);
+
+ # Combine all category applications
+ defaultApplications = lib.mkMerge (lib.flatten (
+ lib.map (category: assignMimeTypes cfg.categoryApplications.${category} category) categories
+ ));
+in {
+ options.xdg.mimeApps._defaultCategoryApplications = {
+ enable = lib.mkEnableOption "set default applications as defined in the resources dir";
+ inherit categoryApplications;
+ };
+
+ config = lib.mkIf cfg.enable {
+ xdg.mimeApps = {
+ enable = lib.mkDefault true;
+ inherit defaultApplications;
+ };
+ };
+}