All my system configs and packages in one repo
at main 84 lines 2.3 kB view raw
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}