All my system configs and packages in one repo
1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7let
8 cfg = config.ext.programs.vesktop;
9 format = pkgs.formats.json { };
10in
11{
12 options.ext.programs.vesktop = {
13 enable = lib.mkEnableOption "Vesktop";
14 package = lib.mkPackageOption pkgs "vesktop" { };
15 autostart = lib.mkEnableOption "autostarting Vesktop";
16
17 settings = lib.mkOption {
18 inherit (format) type;
19 description = ''
20 Configuration written to {file}`$XDG_CONFIG_HOME/vesktop/settings.json`.
21 '';
22 default = { };
23 };
24
25 vencord = {
26 enable = lib.mkEnableOption "Vencord";
27
28 useSystemPackage = lib.mkOption {
29 type = lib.types.bool;
30 description = "Use the Vencord package in Nixpkgs, instead of allowing Vesktop to manage its own Vencord install";
31 default = false;
32 };
33
34 settings = lib.mkOption {
35 inherit (format) type;
36 description = ''
37 Configuration of the bundled client mod, Vencord, written to {file}`$XDG_CONFIG_HOME/vesktop/settings/settings.json`.
38 '';
39 default = { };
40 };
41
42 css = lib.mkOption {
43 type = lib.types.lines;
44 description = ''
45 Style sheet of the bundled client mod, Vencord, written to {file}`$XDG_CONFIG_HOME/vesktop/settings/quickCss.css`.
46 '';
47 default = "";
48 };
49 };
50 };
51
52 config = lib.mkIf cfg.enable {
53 packages = lib.mkMerge [
54 [
55 (cfg.package.override {
56 withSystemVencord = cfg.vencord.useSystemPackage;
57 })
58 ]
59 (lib.mkIf cfg.autostart [
60 (pkgs.makeAutostartItem {
61 name = "vesktop";
62 package = pkgs.vesktop;
63 prependExtraArgs = [ "--wayland-text-input-version=3" ];
64 })
65 ])
66 ];
67
68 xdg.config.files = lib.mkMerge [
69 {
70 "vesktop/settings.json" = lib.mkIf (cfg.settings != { }) {
71 generator = format.generate "vesktop-settings.json";
72 value = cfg.settings;
73 };
74 }
75 (lib.mkIf cfg.vencord.enable {
76 "vesktop/settings/settings.json" = lib.mkIf (cfg.vencord.settings != { }) {
77 generator = format.generate "vencord-settings.json";
78 value = cfg.vencord.settings;
79 };
80 "vesktop/settings/quickCss.css".text = lib.mkIf (cfg.vencord.css != "") cfg.vencord.css;
81 })
82 ];
83 };
84}