feat: massive refactor

This commit is contained in:
2025-12-20 12:57:47 +08:00
parent f4c1b313ce
commit 454ad5885d
97 changed files with 1023 additions and 960 deletions

View File

@@ -1,12 +1,13 @@
{ config, lib, ... }:
lib.my.makeSwitch {
inherit config;
optionName = "all desktop things";
optionPath = [
"desktop"
"all"
];
config' = {
let
cfg = config.my.desktop.all;
in
{
options.my.desktop.all = {
enable = lib.mkEnableOption "all desktop things";
};
config = lib.mkIf cfg.enable {
my.desktop = {
browser.all.enable = true;
gaming.all.enable = true;

View File

@@ -1,13 +1,13 @@
{ config, lib, ... }:
lib.my.makeSwitch {
inherit config;
optionName = "all desktop browsers";
optionPath = [
"desktop"
"browser"
"all"
];
config' = {
let
cfg = config.my.desktop.browser.all;
in
{
options.my.desktop.browser.all = {
enable = lib.mkEnableOption "all desktop browsers";
};
config = lib.mkIf cfg.enable {
my.desktop.browser = {
firefox.enable = true;
chromium.enable = true;

View File

@@ -4,15 +4,16 @@
pkgs,
...
}:
lib.my.makeHomeProgramConfig {
inherit config;
programName = "chromium";
optionPath = [
"desktop"
"browser"
"chromium"
];
extraConfig = {
let
cfg = config.my.desktop.browser.chromium;
in
{
options.my.desktop.browser.chromium = {
enable = lib.mkEnableOption "chromium";
};
config = lib.mkIf cfg.enable {
my.hm.programs.chromium.enable = true;
my.hm.programs.chromium = {
package = pkgs.ungoogled-chromium;
extensions = [

View File

@@ -1,13 +1,14 @@
{ config, lib, ... }:
lib.my.makeHomeProgramConfig {
inherit config;
programName = "firefox";
optionPath = [
"desktop"
"browser"
"firefox"
];
extraConfig = {
let
cfg = config.my.desktop.browser.firefox;
in
{
options.my.desktop.browser.firefox = {
enable = lib.mkEnableOption "firefox";
};
config = lib.mkIf cfg.enable {
my.hm.programs.firefox.enable = true;
my.persist.homeDirs = [
".mozilla"
];

View File

@@ -4,15 +4,15 @@
pkgs,
...
}:
lib.my.makeHomeProgramConfig {
inherit config;
programName = "zen-browser";
optionPath = [
"desktop"
"browser"
"zen"
];
extraConfig = {
let
cfg = config.my.desktop.browser.zen;
in
{
options.my.desktop.browser.zen = {
enable = lib.mkEnableOption "zen-browser";
};
config = lib.mkIf cfg.enable {
my.hm.programs.zen-browser = {
enable = true;
nativeMessagingHosts = [ pkgs.firefoxpwa ];

View File

@@ -1,13 +1,13 @@
{ config, lib, ... }:
lib.my.makeSwitch {
inherit config;
optionName = "all desktop gaming things";
optionPath = [
"desktop"
"gaming"
"all"
];
config' = {
let
cfg = config.my.desktop.gaming.all;
in
{
options.my.desktop.gaming.all = {
enable = lib.mkEnableOption "all desktop gaming things";
};
config = lib.mkIf cfg.enable {
my.desktop.gaming = {
minecraft.enable = true;
steam.enable = true;

View File

@@ -4,15 +4,15 @@
pkgs,
...
}:
lib.my.makeSwitch {
inherit config;
optionName = "minecraft";
optionPath = [
"desktop"
"gaming"
"minecraft"
];
config' = {
let
cfg = config.my.desktop.gaming.minecraft;
in
{
options.my.desktop.gaming.minecraft = {
enable = lib.mkEnableOption "minecraft";
};
config = lib.mkIf cfg.enable {
my.hm.home.packages = [
(pkgs.hmcl.overrideAttrs {
postFixup = ''

View File

@@ -4,15 +4,15 @@
pkgs,
...
}:
lib.my.makeSwitch {
inherit config;
optionName = "steam";
optionPath = [
"desktop"
"gaming"
"steam"
];
config' = {
let
cfg = config.my.desktop.gaming.steam;
in
{
options.my.desktop.gaming.steam = {
enable = lib.mkEnableOption "steam";
};
config = lib.mkIf cfg.enable {
programs.steam = {
enable = true;
package = pkgs.steam;

View File

@@ -1,13 +1,13 @@
{ config, lib, ... }:
lib.my.makeSwitch {
inherit config;
optionName = "all desktop media things";
optionPath = [
"desktop"
"media"
"all"
];
config' = {
let
cfg = config.my.desktop.media.all;
in
{
options.my.desktop.media.all = {
enable = lib.mkEnableOption "all desktop media things";
};
config = lib.mkIf cfg.enable {
my.desktop.media = {
mpv.enable = true;
shotwell.enable = true;

View File

@@ -4,13 +4,15 @@
pkgs,
...
}:
lib.my.makeHomePackageConfig {
inherit config pkgs;
packageName = "mpv";
packagePath = [ "mpv" ];
optionPath = [
"desktop"
"media"
"mpv"
];
let
cfg = config.my.desktop.media.mpv;
in
{
options.my.desktop.media.mpv = {
enable = lib.mkEnableOption "mpv";
};
config = lib.mkIf cfg.enable {
my.hm.home.packages = [ pkgs.mpv ];
};
}

View File

@@ -4,13 +4,15 @@
pkgs,
...
}:
lib.my.makeHomePackageConfig {
inherit config pkgs;
packageName = "shotwell";
packagePath = [ "shotwell" ];
optionPath = [
"desktop"
"media"
"shotwell"
];
let
cfg = config.my.desktop.media.shotwell;
in
{
options.my.desktop.media.shotwell = {
enable = lib.mkEnableOption "shotwell";
};
config = lib.mkIf cfg.enable {
my.hm.home.packages = [ pkgs.shotwell ];
};
}

View File

@@ -4,13 +4,15 @@
pkgs,
...
}:
lib.my.makeHomePackageConfig {
inherit config pkgs;
packageName = "spotify";
packagePath = [ "spotify" ];
optionPath = [
"desktop"
"media"
"spotify"
];
let
cfg = config.my.desktop.media.spotify;
in
{
options.my.desktop.media.spotify = {
enable = lib.mkEnableOption "spotify";
};
config = lib.mkIf cfg.enable {
my.hm.home.packages = [ pkgs.spotify ];
};
}

View File

@@ -4,16 +4,16 @@
pkgs,
...
}:
lib.my.makeHomePackageConfig {
inherit config pkgs;
packageName = "spotube";
packagePath = [ "spotube" ];
optionPath = [
"desktop"
"media"
"spotube"
];
extraConfig = {
let
cfg = config.my.desktop.media.spotube;
in
{
options.my.desktop.media.spotube = {
enable = lib.mkEnableOption "spotube";
};
config = lib.mkIf cfg.enable {
my.hm.home.packages = [ pkgs.spotube ];
my.persist.homeDirs = [
".local/share/oss.krtirtho.spotube"
];

View File

@@ -4,16 +4,16 @@
pkgs,
...
}:
lib.my.makeHomePackageConfig {
inherit config pkgs;
packageName = "thunderbird";
packagePath = [ "thunderbird" ];
optionPath = [
"desktop"
"media"
"thunderbird"
];
extraConfig = {
let
cfg = config.my.desktop.media.thunderbird;
in
{
options.my.desktop.media.thunderbird = {
enable = lib.mkEnableOption "thunderbird";
};
config = lib.mkIf cfg.enable {
my.hm.home.packages = [ pkgs.thunderbird ];
my.persist.homeDirs = [
".thunderbird"
];

View File

@@ -4,13 +4,15 @@
pkgs,
...
}:
lib.my.makeHomePackageConfig {
inherit config pkgs;
packageName = "vlc";
packagePath = [ "vlc" ];
optionPath = [
"desktop"
"media"
"vlc"
];
let
cfg = config.my.desktop.media.vlc;
in
{
options.my.desktop.media.vlc = {
enable = lib.mkEnableOption "vlc";
};
config = lib.mkIf cfg.enable {
my.hm.home.packages = [ pkgs.vlc ];
};
}

View File

@@ -1,13 +1,13 @@
{ config, lib, ... }:
lib.my.makeSwitch {
inherit config;
optionName = "all screencast tools";
optionPath = [
"desktop"
"screencast"
"all"
];
config' = {
let
cfg = config.my.desktop.screencast.all;
in
{
options.my.desktop.screencast.all = {
enable = lib.mkEnableOption "all screencast tools";
};
config = lib.mkIf cfg.enable {
my.desktop.screencast = {
obs-studio.enable = true;
};

View File

@@ -4,15 +4,15 @@
pkgs,
...
}:
lib.my.makeSwitch {
inherit config;
optionName = "obs-studio";
optionPath = [
"desktop"
"screencast"
"obs-studio"
];
config' = {
let
cfg = config.my.desktop.screencast.obs-studio;
in
{
options.my.desktop.screencast.obs-studio = {
enable = lib.mkEnableOption "obs-studio";
};
config = lib.mkIf cfg.enable {
my.hm.home.packages = with pkgs; [
(pkgs.wrapOBS {
plugins = with pkgs.obs-studio-plugins; [

View File

@@ -4,14 +4,15 @@
pkgs,
...
}:
lib.my.makeSwitch {
inherit config;
optionName = "style";
optionPath = [
"desktop"
"style"
];
config' = {
let
cfg = config.my.desktop.style;
in
{
options.my.desktop.style = {
enable = lib.mkEnableOption "style";
};
config = lib.mkIf cfg.enable {
catppuccin.sddm = {
enable = true;
font = "Jetbrains Mono";

View File

@@ -1,13 +1,14 @@
{ config, lib, ... }:
lib.my.makeHomeProgramConfig {
inherit config;
programName = "alacritty";
optionPath = [
"desktop"
"terminal"
"alacritty"
];
extraConfig = {
let
cfg = config.my.desktop.terminal.alacritty;
in
{
options.my.desktop.terminal.alacritty = {
enable = lib.mkEnableOption "alacritty";
};
config = lib.mkIf cfg.enable {
my.hm.programs.alacritty.enable = true;
my.hm.programs.alacritty.settings = {
general.import = [ ./tokyonight-storm.toml ];
cursor.style = {

View File

@@ -1,13 +1,13 @@
{ config, lib, ... }:
lib.my.makeSwitch {
inherit config;
optionName = "all terminals";
optionPath = [
"desktop"
"terminal"
"all"
];
config' = {
let
cfg = config.my.desktop.terminal.all;
in
{
options.my.desktop.terminal.all = {
enable = lib.mkEnableOption "all terminals";
};
config = lib.mkIf cfg.enable {
my.desktop.terminal = {
alacritty.enable = true;
foot.enable = true;

View File

@@ -1,13 +1,14 @@
{ config, lib, ... }:
lib.my.makeHomeProgramConfig {
inherit config;
programName = "foot";
optionPath = [
"desktop"
"terminal"
"foot"
];
extraConfig = {
let
cfg = config.my.desktop.terminal.foot;
in
{
options.my.desktop.terminal.foot = {
enable = lib.mkEnableOption "foot";
};
config = lib.mkIf cfg.enable {
my.hm.programs.foot.enable = true;
my.hm.programs.foot = {
server.enable = true;
settings = {

View File

@@ -1,13 +1,14 @@
{ config, lib, ... }:
lib.my.makeHomeProgramConfig {
inherit config;
programName = "ghostty";
optionPath = [
"desktop"
"terminal"
"ghostty"
];
extraConfig = {
let
cfg = config.my.desktop.terminal.ghostty;
in
{
options.my.desktop.terminal.ghostty = {
enable = lib.mkEnableOption "ghostty";
};
config = lib.mkIf cfg.enable {
my.hm.programs.ghostty.enable = true;
my.hm.programs.ghostty = {
enableBashIntegration = true;
enableZshIntegration = true;

View File

@@ -1,13 +1,14 @@
{ config, lib, ... }:
lib.my.makeHomeProgramConfig {
inherit config;
programName = "kitty";
optionPath = [
"desktop"
"terminal"
"kitty"
];
extraConfig = {
let
cfg = config.my.desktop.terminal.kitty;
in
{
options.my.desktop.terminal.kitty = {
enable = lib.mkEnableOption "kitty";
};
config = lib.mkIf cfg.enable {
my.hm.programs.kitty.enable = true;
my.hm.programs.kitty = {
settings = {
cursor_blink_interval = 0;

View File

@@ -4,14 +4,15 @@
pkgs,
...
}:
lib.my.makeSwitch {
inherit config;
optionName = "wine";
optionPath = [
"desktop"
"wine"
];
config' = {
let
cfg = config.my.desktop.wine;
in
{
options.my.desktop.wine = {
enable = lib.mkEnableOption "wine";
};
config = lib.mkIf cfg.enable {
my.hm.home.packages = with pkgs; [
wine-wayland
bottles

View File

@@ -3,15 +3,15 @@
lib,
...
}:
lib.my.makeSwitch {
inherit config;
optionName = "all window managers";
optionPath = [
"desktop"
"wm"
"all"
];
config' = {
let
cfg = config.my.desktop.wm.all;
in
{
options.my.desktop.wm.all = {
enable = lib.mkEnableOption "all window managers";
};
config = lib.mkIf cfg.enable {
my.desktop.wm = {
cage.enable = true;
niri.enable = true;

View File

@@ -4,13 +4,15 @@
pkgs,
...
}:
lib.my.makeHomePackageConfig {
inherit config pkgs;
packageName = "cage";
packagePath = [ "cage" ];
optionPath = [
"desktop"
"wm"
"cage"
];
let
cfg = config.my.desktop.wm.cage;
in
{
options.my.desktop.wm.cage = {
enable = lib.mkEnableOption "cage";
};
config = lib.mkIf cfg.enable {
my.hm.home.packages = [ pkgs.cage ];
};
}