From cceb4da0416332ca460c26936fb458f318269397 Mon Sep 17 00:00:00 2001 From: Danilo Reyes Date: Fri, 16 Jan 2026 13:28:18 -0600 Subject: [PATCH] Add custom font management and multimedia video editing support Enhanced the configuration by introducing a custom font management system, allowing for the installation of additional fonts. Updated multimedia settings to include video editing applications, enabling users to manage multimedia and video editing packages more effectively. Removed the deprecated fonts module to streamline the configuration. --- config/base.nix | 36 +++++++++++++++++++++++- config/derek.nix | 10 ++----- hosts/emacs/configuration.nix | 1 - hosts/workstation/toggles.nix | 1 - modules/apps/fonts.nix | 44 ----------------------------- modules/apps/multimedia.nix | 52 +++++++++++++++++++++++++---------- 6 files changed, 74 insertions(+), 70 deletions(-) delete mode 100644 modules/apps/fonts.nix diff --git a/config/base.nix b/config/base.nix index 6c4f013..34a22b2 100644 --- a/config/base.nix +++ b/config/base.nix @@ -72,6 +72,7 @@ }; nixpkgs.config = { allowUnfree = true; + allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "corefonts" ]; permittedInsecurePackages = [ "aspnetcore-runtime-wrapped-6.0.36" "aspnetcore-runtime-6.0.36" @@ -165,6 +166,39 @@ }; }; }; - fonts.fontconfig.enable = true; + fonts = { + fontconfig.enable = true; + packages = let + customFonts = pkgs.stdenvNoCC.mkDerivation { + name = "custom-fonts"; + src = inputs.fonts; + installPhase = '' + mkdir -p $out/share/fonts + find $src -type f \( \ + -name "*.ttf" -o \ + -name "*.otf" -o \ + -name "*.woff" -o \ + -name "*.woff2" \ + \) -exec cp {} $out/share/fonts/ \; + ''; + }; + in + builtins.attrValues { + inherit customFonts; + inherit (pkgs) + symbola + comic-neue + cascadia-code + corefonts + ; + inherit (pkgs.nerd-fonts) + caskaydia-cove + open-dyslexic + comic-shanns-mono + iosevka + agave + ; + }; + }; powerManagement.cpuFreqGovernor = lib.mkDefault "performance"; } diff --git a/config/derek.nix b/config/derek.nix index 1de1878..7c81a6f 100644 --- a/config/derek.nix +++ b/config/derek.nix @@ -9,10 +9,10 @@ apps = { art.enable = true; art.users = "bearded_dragonn"; - fonts.enable = true; - fonts.users = "bearded_dragonn"; gaming.enable = true; gaming.users = "bearded_dragonn"; + multimedia.videoEditing.enable = true; + multimedia.videoEditing.users = "bearded_dragonn"; }; dev = { nix.enable = true; @@ -50,18 +50,12 @@ hashedPasswordFile = config.sops.secrets.derek-password.path; packages = builtins.attrValues { inherit (pkgs) - davinci-resolve - shotcut - pitivi bottles vscode nextcloud-client firefox warp ; - inherit (pkgs.kdePackages) - kdenlive - ; }; extraGroups = [ "audio" diff --git a/hosts/emacs/configuration.nix b/hosts/emacs/configuration.nix index 058a567..46230b5 100644 --- a/hosts/emacs/configuration.nix +++ b/hosts/emacs/configuration.nix @@ -21,7 +21,6 @@ secureHost = false; stylix.enable = true; emacs.enable = true; - apps.fonts.enable = true; shell.tools.enable = true; services.network.enable = true; dev = { diff --git a/hosts/workstation/toggles.nix b/hosts/workstation/toggles.nix index 5f12e62..18cfb40 100644 --- a/hosts/workstation/toggles.nix +++ b/hosts/workstation/toggles.nix @@ -10,7 +10,6 @@ in apps = enableList mkEnabled [ "art" "dictionaries" - "fonts" "gaming" "switch" "internet" diff --git a/modules/apps/fonts.nix b/modules/apps/fonts.nix deleted file mode 100644 index 3e72cdf..0000000 --- a/modules/apps/fonts.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ - config, - lib, - pkgs, - inputs, - ... -}: -let - customFonts = pkgs.stdenvNoCC.mkDerivation { - name = "custom-fonts"; - src = inputs.fonts; - installPhase = '' - mkdir -p $out/share/fonts - find $src -type f \( \ - -name "*.ttf" -o \ - -name "*.otf" -o \ - -name "*.woff" -o \ - -name "*.woff2" \ - \) -exec cp {} $out/share/fonts/ \; - ''; - }; -in -{ - options.my.apps.fonts.enable = lib.mkEnableOption "additional fonts and typography"; - config = lib.mkIf config.my.apps.fonts.enable { - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "corefonts" ]; - fonts.packages = builtins.attrValues { - inherit customFonts; - inherit (pkgs) - symbola - comic-neue - cascadia-code - corefonts - ; - inherit (pkgs.nerd-fonts) - caskaydia-cove - open-dyslexic - comic-shanns-mono - iosevka - agave - ; - }; - }; -} diff --git a/modules/apps/multimedia.nix b/modules/apps/multimedia.nix index 3c50477..7a8b32f 100644 --- a/modules/apps/multimedia.nix +++ b/modules/apps/multimedia.nix @@ -5,6 +5,30 @@ pkgs, ... }: +let + cfg = config.my.apps.multimedia; + attrValuesIf = cond: attrs: if cond then builtins.attrValues attrs else [ ]; + multimediaPackages = attrValuesIf cfg.enable { + inherit (pkgs) + curtail # image compressor + easyeffects # equalizer + identity # compare images or videos + mousai # poor man shazam + shortwave # listen to world radio + tagger # tag music files + ; + }; + videoEditingPackages = attrValuesIf cfg.videoEditing.enable { + inherit (pkgs) + davinci-resolve + shotcut + pitivi + ; + inherit (pkgs.kdePackages) + kdenlive + ; + }; +in { options.my.apps.multimedia = { enable = lib.mkEnableOption "multimedia applications and media players"; @@ -13,21 +37,19 @@ default = config.my.toggleUsers.apps; description = "Users to install multimedia packages for"; }; + videoEditing = { + enable = lib.mkEnableOption "video editing applications"; + users = lib.mkOption { + type = lib.types.either lib.types.str (lib.types.listOf lib.types.str); + default = config.my.toggleUsers.apps; + description = "Users to install video editing packages for"; + }; + }; }; - config = lib.mkIf config.my.apps.multimedia.enable { - users.users = - let - packages = builtins.attrValues { - inherit (pkgs) - curtail # image compressor - easyeffects # equalizer - identity # compare images or videos - mousai # poor man shazam - shortwave # listen to world radio - tagger # tag music files - ; - }; - in - inputs.self.lib.mkUserPackages lib config.my.apps.multimedia.users packages; + config = lib.mkIf (cfg.enable || cfg.videoEditing.enable) { + users.users = lib.mkMerge [ + (inputs.self.lib.mkUserPackages lib cfg.users multimediaPackages) + (inputs.self.lib.mkUserPackages lib cfg.videoEditing.users videoEditingPackages) + ]; }; }