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) + ]; }; }