forked from aylac.top/nixcfg
this repo has no description

fix typescript being recognised as an mpeg file

aylac.top 9a175b51 2d798e4b

verified
Changed files
+58 -2
homes
modules
home
profiles
defaultApps
fixMimeTypes
nixos
desktop
gnome
+3 -1
homes/ayla/default.nix
···
profiles = {
betterLocations.enable = true;
shell.enable = true;
+
fixMimeTypes.enable = true;
defaultApps = {
enable = true;
forceMimeAssociations = true;
archiveViewer.package = pkgs.file-roller;
audioPlayer.package = config.programs.mpv.finalPackage;
videoPlayer.package = config.programs.mpv.finalPackage;
-
editor.package = pkgs.gnome-text-editor;
+
#editor.package = pkgs.gnome-text-editor;
+
editor.package = pkgs.helix;
fileManager.package = pkgs.nautilus;
imageViewer.package = pkgs.loupe;
pdfViewer.package = pkgs.papers;
+1
modules/home/profiles/default.nix
···
./betterLocations
./defaultApps
./shell
+
./fixMimeTypes
];
}
+3
modules/home/profiles/defaultApps/mimeTypes.nix
···
"text/markdown"
"text/plain"
"text/x-python"
+
"text/x-typescript"
+
"text/x-javascript"
+
"text/x-svelte"
];
imageFiles = [
+47
modules/home/profiles/fixMimeTypes/default.nix
···
+
{
+
lib,
+
pkgs,
+
config,
+
...
+
}: let
+
cfg = config.myHome.profiles.fixMimeTypes;
+
+
xml = pkgs.formats.xml {};
+
+
# thank you chatgpt ig
+
makeMimeFile = {
+
type, # e.g. "text/x-typescript"
+
comment, # e.g. "TypeScript source file"
+
globs, # list of patterns: [ "*.ts" "*.tsx" ]
+
}:
+
xml.generate (builtins.replaceStrings ["/"] ["_"] "${type}.xml") {
+
"mime-info" = {
+
"@xmlns" = "http://www.freedesktop.org/standards/shared-mime-info";
+
"mime-type" = {
+
"@type" = type;
+
comment = comment;
+
glob = map (pattern: {"@pattern" = pattern;}) globs;
+
};
+
};
+
};
+
in {
+
options.myHome.profiles.fixMimeTypes = {
+
enable = lib.mkEnableOption "mimetypes are dumb and they don't always register the right formats";
+
};
+
+
config = lib.mkIf cfg.enable {
+
xdg.dataFile = {
+
"mime/packages/typescript-ts.xml".source = makeMimeFile {
+
type = "text/x-typescript";
+
comment = "TypeScript source file";
+
globs = ["*.ts" "*.tsx"];
+
};
+
+
"mime/packages/svelte.xml".source = makeMimeFile {
+
type = "text/x-svelte";
+
comment = "Svelte source file";
+
globs = ["*.svelte" "*.svelte.ts" "*.svelte.js"];
+
};
+
};
+
};
+
}
+4 -1
modules/nixos/desktop/gnome/default.nix
···
i18n.inputMethod.type = "ibus";
security.pam.services.greetd.enableGnomeKeyring = true;
-
services.gnome.gcr-ssh-agent.enable = true;
+
services.gnome = {
+
gcr-ssh-agent.enable = true;
+
gnome-remote-desktop.enable = lib.mkForce false;
+
};
programs = {
kdeconnect = {