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.
This commit is contained in:
Danilo Reyes
2026-01-16 13:28:18 -06:00
parent cbe7c25812
commit cceb4da041
6 changed files with 74 additions and 70 deletions

View File

@@ -72,6 +72,7 @@
}; };
nixpkgs.config = { nixpkgs.config = {
allowUnfree = true; allowUnfree = true;
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "corefonts" ];
permittedInsecurePackages = [ permittedInsecurePackages = [
"aspnetcore-runtime-wrapped-6.0.36" "aspnetcore-runtime-wrapped-6.0.36"
"aspnetcore-runtime-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"; powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
} }

View File

@@ -9,10 +9,10 @@
apps = { apps = {
art.enable = true; art.enable = true;
art.users = "bearded_dragonn"; art.users = "bearded_dragonn";
fonts.enable = true;
fonts.users = "bearded_dragonn";
gaming.enable = true; gaming.enable = true;
gaming.users = "bearded_dragonn"; gaming.users = "bearded_dragonn";
multimedia.videoEditing.enable = true;
multimedia.videoEditing.users = "bearded_dragonn";
}; };
dev = { dev = {
nix.enable = true; nix.enable = true;
@@ -50,18 +50,12 @@
hashedPasswordFile = config.sops.secrets.derek-password.path; hashedPasswordFile = config.sops.secrets.derek-password.path;
packages = builtins.attrValues { packages = builtins.attrValues {
inherit (pkgs) inherit (pkgs)
davinci-resolve
shotcut
pitivi
bottles bottles
vscode vscode
nextcloud-client nextcloud-client
firefox firefox
warp warp
; ;
inherit (pkgs.kdePackages)
kdenlive
;
}; };
extraGroups = [ extraGroups = [
"audio" "audio"

View File

@@ -21,7 +21,6 @@
secureHost = false; secureHost = false;
stylix.enable = true; stylix.enable = true;
emacs.enable = true; emacs.enable = true;
apps.fonts.enable = true;
shell.tools.enable = true; shell.tools.enable = true;
services.network.enable = true; services.network.enable = true;
dev = { dev = {

View File

@@ -10,7 +10,6 @@ in
apps = enableList mkEnabled [ apps = enableList mkEnabled [
"art" "art"
"dictionaries" "dictionaries"
"fonts"
"gaming" "gaming"
"switch" "switch"
"internet" "internet"

View File

@@ -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
;
};
};
}

View File

@@ -5,19 +5,10 @@
pkgs, pkgs,
... ...
}: }:
{ let
options.my.apps.multimedia = { cfg = config.my.apps.multimedia;
enable = lib.mkEnableOption "multimedia applications and media players"; attrValuesIf = cond: attrs: if cond then builtins.attrValues attrs else [ ];
users = lib.mkOption { multimediaPackages = attrValuesIf cfg.enable {
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
default = config.my.toggleUsers.apps;
description = "Users to install multimedia packages for";
};
};
config = lib.mkIf config.my.apps.multimedia.enable {
users.users =
let
packages = builtins.attrValues {
inherit (pkgs) inherit (pkgs)
curtail # image compressor curtail # image compressor
easyeffects # equalizer easyeffects # equalizer
@@ -27,7 +18,38 @@
tagger # tag music files tagger # tag music files
; ;
}; };
in videoEditingPackages = attrValuesIf cfg.videoEditing.enable {
inputs.self.lib.mkUserPackages lib config.my.apps.multimedia.users packages; inherit (pkgs)
davinci-resolve
shotcut
pitivi
;
inherit (pkgs.kdePackages)
kdenlive
;
};
in
{
options.my.apps.multimedia = {
enable = lib.mkEnableOption "multimedia applications and media players";
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 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 (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)
];
}; };
} }