diff --git a/README.md b/README.md index c8e490c..5fda9e2 100644 --- a/README.md +++ b/README.md @@ -16,5 +16,4 @@ My NixOS and home-manager flake This configuration was massively inspired by the following amazing projects: - (major inspiration) -- - diff --git a/home/programs/xdg/mime-apps.nix b/home/programs/xdg/mime-apps.nix index 2edeb70..4c5ae71 100644 --- a/home/programs/xdg/mime-apps.nix +++ b/home/programs/xdg/mime-apps.nix @@ -9,7 +9,7 @@ in { browser = "firefox.desktop"; textEditor = browser; # nvim doesn't work properly with xdg-open, just use the browser emailClient = browser; - documentViewer = browser; # TODO: consider zathura (org.pwmt.zathura.desktop.desktop) + pdfViewer = browser; # TODO: consider zathura (org.pwmt.zathura.desktop.desktop) fileManager = "pcmanfm-qt.desktop"; # TODO: change archiveManager = "org.kde.ark.desktop"; imageViewer = @@ -18,10 +18,10 @@ in { else if cfg.applications.nomacs.enable then "org.nomacs.ImageLounge.desktop" else browser; - mediaPlayer = "mpv.desktop"; + videoPlayer = "mpv.desktop"; + audioPlayer = "mpv.desktop"; associations = { - # Browser "text/html" = [browser]; "x-scheme-handler/http" = [browser]; "x-scheme-handler/https" = [browser]; @@ -30,172 +30,36 @@ in { "application/x-extension-htm" = [browser]; "application/x-extension-html" = [browser]; "application/x-extension-shtml" = [browser]; + "application/xhtml+xml" = [browser]; "application/x-extension-xhtml" = [browser]; "application/x-extension-xht" = [browser]; - "application/xhtml+xml" = [browser]; - "application/xhtml_xml" = [browser]; - # Image viewer - "image/*" = [imageViewer]; # wildcard associations don't work everywhere - "image/bmp" = [imageViewer]; - "image/gif" = [imageViewer]; - "image/jpeg" = [imageViewer]; - "image/jpg" = [imageViewer]; - "image/png" = [imageViewer]; - "image/tiff" = [imageViewer]; - "image/x-bmp" = [imageViewer]; - "image/x-pcx" = [imageViewer]; - "image/x-tga" = [imageViewer]; - "image/x-portable-pixmap" = [imageViewer]; - "image/x-portable-bitmap" = [imageViewer]; - "image/x-portable-greymap" = [imageViewer]; - "image/x-targa" = [imageViewer]; - "image/svg+xml" = [imageViewer]; - "image/svg_xml" = [imageViewer]; + "application/pdf" = [pdfViewer]; + "x-scheme-handler/mailto" = [emailClient]; - # Media Player (video + audio) - "video/*" = [mediaPlayer]; # wildcard associations don't work everywhere - "audio/*" = [mediaPlayer]; # -||- - "video/mpeg" = [mediaPlayer]; - "video/x-mpeg2" = [mediaPlayer]; - "video/x-mpeg3" = [mediaPlayer]; - "video/mp4v-es" = [mediaPlayer]; - "video/x-m4v" = [mediaPlayer]; - "video/mp4" = [mediaPlayer]; - "video/divx" = [mediaPlayer]; - "video/vnd.divx" = [mediaPlayer]; - "video/msvideo" = [mediaPlayer]; - "video/x-msvideo" = [mediaPlayer]; - "video/ogg" = [mediaPlayer]; - "video/quicktime" = [mediaPlayer]; - "video/vnd.rn-realvideo" = [mediaPlayer]; - "video/x-avi" = [mediaPlayer]; - "video/avi" = [mediaPlayer]; - "video/x-flic" = [mediaPlayer]; - "video/fli" = [mediaPlayer]; - "video/x-flc" = [mediaPlayer]; - "video/flv" = [mediaPlayer]; - "video/x-flv" = [mediaPlayer]; - "video/x-theora" = [mediaPlayer]; - "video/x-theora+ogg" = [mediaPlayer]; - "video/x-matroska" = [mediaPlayer]; - "video/mkv" = [mediaPlayer]; - "video/webm" = [mediaPlayer]; - "video/x-ogm" = [mediaPlayer]; - "video/x-ogm+ogg" = [mediaPlayer]; - "video/dv" = [mediaPlayer]; - "video/mp2t" = [mediaPlayer]; - "video/vnd.mpegurl" = [mediaPlayer]; - "video/3gp" = [mediaPlayer]; - "video/3gpp" = [mediaPlayer]; - "video/3gpp2" = [mediaPlayer]; - - "application/x-cue" = [mediaPlayer]; - "application/vnd.ms-asf" = [mediaPlayer]; - "application/x-matroska" = [mediaPlayer]; - "application/x-ogm" = [mediaPlayer]; - "application/x-ogm-audio" = [mediaPlayer]; - "application/x-ogm-video" = [mediaPlayer]; - "application/x-shorten" = [mediaPlayer]; - "application/x-mpegurl" = [mediaPlayer]; - "application/vnd.apple.mpegurl" = [mediaPlayer]; - "application/ogg" = [mediaPlayer]; - "application/x-ogg" = [mediaPlayer]; - "application/mxf" = [mediaPlayer]; - "application/sdp" = [mediaPlayer]; - "application/smil" = [mediaPlayer]; - "application/x-smil" = [mediaPlayer]; - "application/streamingmedia" = [mediaPlayer]; - "application/x-streamingmedia" = [mediaPlayer]; - "application/vnd.rn-realmedia" = [mediaPlayer]; - "application/vnd.rn-realmedia-vbr" = [mediaPlayer]; - "application/x-extension-m4a" = [mediaPlayer]; - - "audio/x-matroska" = [mediaPlayer]; - "audio/webm" = [mediaPlayer]; - "audio/vorbis" = [mediaPlayer]; - "audio/x-vorbis" = [mediaPlayer]; - "audio/x-vorbis+ogg" = [mediaPlayer]; - "audio/x-shorten" = [mediaPlayer]; - "audio/x-ape" = [mediaPlayer]; - "audio/x-wavpack" = [mediaPlayer]; - "audio/x-tta" = [mediaPlayer]; - "audio/AMR" = [mediaPlayer]; - "audio/ac3" = [mediaPlayer]; - "audio/eac3" = [mediaPlayer]; - "audio/amr-wb" = [mediaPlayer]; - "audio/flac" = [mediaPlayer]; - "audio/mp4" = [mediaPlayer]; - "audio/x-pn-au" = [mediaPlayer]; - "audio/3gpp" = [mediaPlayer]; - "audio/3gpp2" = [mediaPlayer]; - "audio/dv" = [mediaPlayer]; - "audio/opus" = [mediaPlayer]; - "audio/x-ms-asf" = [mediaPlayer]; - "audio/vnd.dts" = [mediaPlayer]; - "audio/vnd.dts.hd" = [mediaPlayer]; - "audio/x-adpcm" = [mediaPlayer]; - "audio/m3u" = [mediaPlayer]; - "audio/aac" = [mediaPlayer]; - "audio/x-aac" = [mediaPlayer]; - "audio/vnd.dolby.heaac.1" = [mediaPlayer]; - "audio/vnd.dolby.heaac.2" = [mediaPlayer]; - "audio/aiff" = [mediaPlayer]; - "audio/x-aiff" = [mediaPlayer]; - "audio/m4a" = [mediaPlayer]; - "audio/x-m4a" = [mediaPlayer]; - "audio/mp1" = [mediaPlayer]; - "audio/x-mp1" = [mediaPlayer]; - "audio/mp2" = [mediaPlayer]; - "audio/x-mp2" = [mediaPlayer]; - "audio/mp3" = [mediaPlayer]; - "audio/x-mp3" = [mediaPlayer]; - "audio/mpeg" = [mediaPlayer]; - "audio/mpeg2" = [mediaPlayer]; - "audio/mpeg3" = [mediaPlayer]; - "audio/mpegurl" = [mediaPlayer]; - "audio/x-mpegurl" = [mediaPlayer]; - "audio/mpg" = [mediaPlayer]; - "audio/x-mpg" = [mediaPlayer]; - "audio/rn-mpeg" = [mediaPlayer]; - "audio/musepack" = [mediaPlayer]; - "audio/x-musepack" = [mediaPlayer]; - "audio/ogg" = [mediaPlayer]; - "audio/scpls" = [mediaPlayer]; - "audio/x-scpls" = [mediaPlayer]; - "audio/vnd.rn-realaudio" = [mediaPlayer]; - "audio/wav" = [mediaPlayer]; - "audio/x-pn-wav" = [mediaPlayer]; - "audio/x-pn-windows-pcm" = [mediaPlayer]; - "audio/x-realaudio" = [mediaPlayer]; - "audio/x-pn-realaudio" = [mediaPlayer]; - "audio/x-ms-wma" = [mediaPlayer]; - "audio/x-pls" = [mediaPlayer]; - "audio/x-wav" = [mediaPlayer]; - - # Document Viewer - "application/pdf" = [documentViewer]; - "application/epub" = [documentViewer]; - "application/djvu" = [documentViewer]; - "application/mobi" = [documentViewer]; - - # File & archive manager(s) "inode/directory" = [fileManager]; "application/zip" = [archiveManager]; "application/x-xz-compressed-tar" = [archiveManager]; - # Plain-text + "image/*" = [imageViewer]; + "audio/*" = [audioPlayer]; + "video/*" = [videoPlayer]; + + # The wildcard associations don't work everywhere, so we + # still need specific ones + "image/jpeg" = [imageViewer]; + "image/png" = [imageViewer]; + "image/svg+xml" = [imageViewer]; + "image/gif" = [imageViewer]; + "video/mp4" = [videoPlayer]; + "text/plain" = [textEditor]; "application/json" = [textEditor]; - # Application specific schemes "x-scheme-handler/spotify" = ["spotify.desktop"]; "x-scheme-handler/tg" = ["telegramdesktop.desktop"]; "x-scheme-handler/discord" = ["vesktop.desktop"]; "x-scheme-handler/msteams" = ["teams.desktop"]; # I need it for school, don't judge me - - # Misc - "x-scheme-handler/mailto" = [emailClient]; }; in { enable = true; diff --git a/hosts/herugrim/default.nix b/hosts/herugrim/default.nix index 894c92d..5872cd2 100644 --- a/hosts/herugrim/default.nix +++ b/hosts/herugrim/default.nix @@ -30,6 +30,7 @@ username = "itsdrike"; sound.enable = true; + bluetooth.enable = true; impermanence = { root = { @@ -60,7 +61,6 @@ cpu.type = "amd"; gpu.type = "hybrid-nvidia"; hasTPM = true; - bluetooth.enable = true; }; security = { diff --git a/hosts/voyager/default.nix b/hosts/voyager/default.nix index 8e17d6b..c83db29 100644 --- a/hosts/voyager/default.nix +++ b/hosts/voyager/default.nix @@ -35,6 +35,7 @@ username = "itsdrike"; sound.enable = true; + bluetooth.enable = true; impermanence = { root = { @@ -114,7 +115,6 @@ cpu.type = "amd"; gpu.type = "amd"; hasTPM = true; - bluetooth.enable = true; }; security = { diff --git a/options/device/hardware.nix b/options/device/hardware.nix index c097978..5b03a78 100644 --- a/options/device/hardware.nix +++ b/options/device/hardware.nix @@ -1,5 +1,4 @@ -{ lib, ... }: let - inherit (lib) mkOption mkEnableOption types; +{ lib, ... }: with lib; let in { options.myOptions.device = { @@ -35,25 +34,9 @@ in }; hasTPM = mkOption { - type = types.bool; + type = lib.types.bool; default = false; description = "Does this device have a TPM (Trusted Platform Module)?"; }; - - bluetooth = { - enable = mkEnableOption "bluetooth modules, drivers and configuration program(s)"; - powerOnBoot = mkOption { - type = types.bool; - default = false; - description = '' - Should bluetooth be powered on automatically during boot? - - This will worsen the battery life and is not recommended. Instead, you can - always turn bluetooth on manually once booted, when you need it. Unless you - have constant need for bluetooth / have some devices to connect to automatically - you, leave this off. - ''; - }; - }; }; } diff --git a/system/shared/hardware/bluetooth.nix b/system/shared/hardware/bluetooth.nix index a4ef4d1..f32fba8 100644 --- a/system/shared/hardware/bluetooth.nix +++ b/system/shared/hardware/bluetooth.nix @@ -6,14 +6,14 @@ }: let inherit (lib) mkIf; - cfg = config.myOptions.device.bluetooth; + sys = config.myOptions.system.bluetooth; in { - config = mkIf cfg.enable { + config = mkIf sys.enable { hardware.bluetooth = { enable = true; package = pkgs.bluez5-experimental; - powerOnBoot = cfg.powerOnBoot; #hsphfpd.enable = true; + powerOnBoot = true; disabledPlugins = ["sap"]; settings = { General = {