freetube: add module
This commit is contained in:
parent
f8e6694eda
commit
3c0df2a7e4
7 changed files with 112 additions and 0 deletions
60
modules/programs/freetube.nix
Normal file
60
modules/programs/freetube.nix
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
{ lib, pkgs, config, ... }:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
concatStringsSep mapAttrsToList mkIf mkEnableOption mkPackageOption mkOption
|
||||
literalExpression;
|
||||
|
||||
cfg = config.programs.freetube;
|
||||
|
||||
settings = settings:
|
||||
let
|
||||
convertSetting = name: value:
|
||||
builtins.toJSON {
|
||||
"_id" = name;
|
||||
"value" = value;
|
||||
};
|
||||
in concatStringsSep "\n" (mapAttrsToList convertSetting settings) + "\n";
|
||||
in {
|
||||
meta.maintainers = with lib.maintainers; [ vonixxx ];
|
||||
|
||||
options.programs.freetube = {
|
||||
enable = mkEnableOption "FreeTube, a YT client for Windows, Mac, and Linux";
|
||||
|
||||
package = mkPackageOption pkgs "freetube" { };
|
||||
|
||||
settings = mkOption {
|
||||
type = lib.types.attrs;
|
||||
default = { };
|
||||
example = literalExpression ''
|
||||
{
|
||||
allowDashAv1Formats = true;
|
||||
checkForUpdates = false;
|
||||
defaultQuality = "1080";
|
||||
baseTheme = "catppuccinMocha";
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Configuration settings for FreeTube.
|
||||
|
||||
All configurable options can be deduced by enabling them through the
|
||||
GUI and observing the changes in {file}`settings.db`.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
|
||||
xdg.configFile."FreeTube/hm_settings.db" = {
|
||||
source = pkgs.writeText "hm_settings.db" (settings cfg.settings);
|
||||
|
||||
onChange = let
|
||||
hmSettingsDb = "${config.xdg.configHome}/FreeTube/hm_settings.db";
|
||||
settingsDb = "${config.xdg.configHome}/FreeTube/settings.db";
|
||||
in ''
|
||||
run install -Dm644 $VERBOSE_ARG '${hmSettingsDb}' '${settingsDb}'
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue