2025-01-10 22:54:32 -05:00
{
config ,
lib ,
pkgs ,
. . .
} :
let
cast_file_vaapi =
( pkgs . writeScriptBin " c a s t _ f i l e " ( builtins . readFile ./files/cast_file_vaapi ) ) . overrideAttrs
( old : {
buildCommand = " ${ old . buildCommand } \n p a t c h S h e b a n g s $ o u t " ;
} ) ;
cast_file_nvidia =
( pkgs . writeScriptBin " c a s t _ f i l e " ( builtins . readFile ./files/cast_file_nvidia ) ) . overrideAttrs
( old : {
buildCommand = " ${ old . buildCommand } \n p a t c h S h e b a n g s $ o u t " ;
} ) ;
in
{
imports = [ ] ;
2025-01-23 21:06:11 -05:00
options . me = {
media . enable = lib . mkOption {
type = lib . types . bool ;
default = false ;
example = true ;
description = " W h e t h e r w e w a n t t o i n s t a l l m e d i a . " ;
} ;
} ;
config = lib . mkIf config . me . media . enable (
2025-01-10 22:54:32 -05:00
lib . mkMerge [
{
environment . systemPackages = with pkgs ; [
ffmpeg
] ;
}
( lib . mkIf config . me . graphical {
environment . systemPackages = with pkgs ; [
mpv
evince
gimp
2025-01-18 12:16:11 -05:00
# So far I prefer imv over swayimg because imv supports the 'p' hotkey to print the currently-viewed file to stdout (useful for pipelines) and afaik doesn't support the exec:// protocol which seems like a massive risk.
imv
2025-01-10 22:54:32 -05:00
] ;
2025-01-23 21:06:11 -05:00
home-manager . users . talexander =
{ pkgs , . . . }:
{
home . file . " . c o n f i g / m p v / m p v . c o n f " = {
source = ./files/mpv.conf ;
} ;
} ;
2025-01-10 22:54:32 -05:00
} )
2025-01-23 19:09:59 -05:00
( lib . mkIf ( config . me . graphics_card_type = = " a m d " || config . me . graphics_card_type = = " i n t e l " ) {
2025-01-10 22:54:32 -05:00
environment . systemPackages = with pkgs ; [
cast_file_vaapi
] ;
} )
]
) ;
}