programs, xdg: move app packages and MIME defaults into modules
This commit is contained in:
@@ -1,26 +1,28 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
{
|
||||
my.programs = {
|
||||
ollama.enable = true;
|
||||
|
||||
localsend.enable = true;
|
||||
|
||||
wpsoffice.enable = true;
|
||||
papers.enable = true;
|
||||
|
||||
nautilus.enable = true;
|
||||
|
||||
ayugram.enable = true;
|
||||
signal.enable = true;
|
||||
element.enable = true;
|
||||
fractal.enable = true;
|
||||
qq.enable = true;
|
||||
wechat.enable = true;
|
||||
};
|
||||
my.hm = {
|
||||
home.packages = with pkgs; [
|
||||
localsend
|
||||
|
||||
wpsoffice-cn
|
||||
wps-office-fonts
|
||||
ttf-wps-fonts
|
||||
papers
|
||||
|
||||
ayugram-desktop
|
||||
signal-desktop-wayland
|
||||
element-desktop
|
||||
fractal
|
||||
qq-wayland
|
||||
wechat
|
||||
|
||||
gnome-clocks
|
||||
];
|
||||
programs.zsh = {
|
||||
@@ -50,52 +52,9 @@
|
||||
coding.all.enable = true;
|
||||
desktop.all.enable = true;
|
||||
virt.moonlight.enable = true;
|
||||
|
||||
i18n.fcitx5.enable = true;
|
||||
xdg.enable = true;
|
||||
|
||||
xdg = {
|
||||
enable = true;
|
||||
defaultApplications =
|
||||
let
|
||||
browser = [ config.my.desktop.browser.default.desktop ];
|
||||
editor = [ "nvim.desktop" ];
|
||||
imageviewer = [ "org.gnome.Loupe.desktop" ];
|
||||
in
|
||||
{
|
||||
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
||||
|
||||
"application/pdf" = [ "org.gnome.Papers.desktop" ];
|
||||
|
||||
"text/*" = editor;
|
||||
"application/json" = editor;
|
||||
"text/xml" = editor;
|
||||
"application/xml" = editor;
|
||||
"application/xhtml+xml" = editor;
|
||||
"application/xhtml_xml" = editor;
|
||||
"application/rdf+xml" = editor;
|
||||
"application/rss+xml" = editor;
|
||||
"application/x-extension-htm" = editor;
|
||||
"application/x-extension-html" = editor;
|
||||
"application/x-extension-shtml" = editor;
|
||||
"application/x-extension-xht" = editor;
|
||||
"application/x-extension-xhtml" = editor;
|
||||
|
||||
"text/html" = browser;
|
||||
"x-scheme-handler/about" = browser;
|
||||
"x-scheme-handler/ftp" = browser;
|
||||
"x-scheme-handler/http" = browser;
|
||||
"x-scheme-handler/https" = browser;
|
||||
"x-scheme-handler/unknown" = browser;
|
||||
|
||||
"audio/*" = imageviewer;
|
||||
"video/*" = imageviewer;
|
||||
"image/*" = imageviewer;
|
||||
"image/gif" = imageviewer;
|
||||
"image/jpeg" = imageviewer;
|
||||
"image/png" = imageviewer;
|
||||
"image/webp" = imageviewer;
|
||||
};
|
||||
};
|
||||
persist = {
|
||||
enable = true;
|
||||
homeDirs = [
|
||||
@@ -110,18 +69,6 @@
|
||||
|
||||
".cache"
|
||||
".local/state"
|
||||
".local/share/Kingsoft"
|
||||
|
||||
".local/share/AyuGramDesktop"
|
||||
".local/share/fractal"
|
||||
".config/Signal"
|
||||
".config/Element"
|
||||
".config/QQ"
|
||||
".xwechat"
|
||||
|
||||
".config/Kingsoft"
|
||||
".config/dconf"
|
||||
".config/sunshine"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
+18
-73
@@ -1,26 +1,28 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
{
|
||||
my.programs = {
|
||||
ollama.enable = true;
|
||||
|
||||
localsend.enable = true;
|
||||
|
||||
wpsoffice.enable = true;
|
||||
papers.enable = true;
|
||||
|
||||
nautilus.enable = true;
|
||||
|
||||
ayugram.enable = true;
|
||||
signal.enable = true;
|
||||
element.enable = true;
|
||||
fractal.enable = true;
|
||||
qq.enable = true;
|
||||
wechat.enable = true;
|
||||
};
|
||||
my.hm = {
|
||||
home.packages = with pkgs; [
|
||||
localsend
|
||||
|
||||
wpsoffice-cn
|
||||
wps-office-fonts
|
||||
ttf-wps-fonts
|
||||
papers
|
||||
|
||||
ayugram-desktop
|
||||
signal-desktop-wayland
|
||||
element-desktop
|
||||
fractal
|
||||
qq-wayland
|
||||
wechat
|
||||
|
||||
gnome-clocks
|
||||
];
|
||||
programs.zsh = {
|
||||
@@ -72,56 +74,9 @@
|
||||
cli.all.enable = true;
|
||||
coding.all.enable = true;
|
||||
desktop.all.enable = true;
|
||||
|
||||
i18n.fcitx5.enable = true;
|
||||
xdg.enable = true;
|
||||
|
||||
programs = {
|
||||
ollama.enable = true;
|
||||
};
|
||||
|
||||
xdg = {
|
||||
enable = true;
|
||||
defaultApplications =
|
||||
let
|
||||
browser = [ config.my.desktop.browser.default.desktop ];
|
||||
editor = [ "nvim.desktop" ];
|
||||
imageviewer = [ "org.gnome.Loupe.desktop" ];
|
||||
in
|
||||
{
|
||||
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
||||
|
||||
"application/pdf" = [ "org.gnome.Papers.desktop" ];
|
||||
|
||||
"text/*" = editor;
|
||||
"application/json" = editor;
|
||||
"text/xml" = editor;
|
||||
"application/xml" = editor;
|
||||
"application/xhtml+xml" = editor;
|
||||
"application/xhtml_xml" = editor;
|
||||
"application/rdf+xml" = editor;
|
||||
"application/rss+xml" = editor;
|
||||
"application/x-extension-htm" = editor;
|
||||
"application/x-extension-html" = editor;
|
||||
"application/x-extension-shtml" = editor;
|
||||
"application/x-extension-xht" = editor;
|
||||
"application/x-extension-xhtml" = editor;
|
||||
|
||||
"text/html" = browser;
|
||||
"x-scheme-handler/about" = browser;
|
||||
"x-scheme-handler/ftp" = browser;
|
||||
"x-scheme-handler/http" = browser;
|
||||
"x-scheme-handler/https" = browser;
|
||||
"x-scheme-handler/unknown" = browser;
|
||||
|
||||
"audio/*" = imageviewer;
|
||||
"video/*" = imageviewer;
|
||||
"image/*" = imageviewer;
|
||||
"image/gif" = imageviewer;
|
||||
"image/jpeg" = imageviewer;
|
||||
"image/png" = imageviewer;
|
||||
"image/webp" = imageviewer;
|
||||
};
|
||||
};
|
||||
persist = {
|
||||
enable = true;
|
||||
homeDirs = [
|
||||
@@ -134,17 +89,7 @@
|
||||
|
||||
".cache"
|
||||
".local/state"
|
||||
".local/share/Kingsoft"
|
||||
|
||||
".local/share/AyuGramDesktop"
|
||||
".local/share/fractal"
|
||||
".config/Signal"
|
||||
".config/Element"
|
||||
".config/QQ"
|
||||
".xwechat"
|
||||
|
||||
".config/Kingsoft"
|
||||
".config/dconf"
|
||||
".config/sunshine"
|
||||
];
|
||||
};
|
||||
|
||||
@@ -53,6 +53,7 @@ in
|
||||
my.persist.homeDirs = [
|
||||
".local/share/zoxide"
|
||||
".config/television/cable"
|
||||
".config/dconf"
|
||||
];
|
||||
my.hm = {
|
||||
programs.fish.shellAliases = {
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
}:
|
||||
let
|
||||
cfg = config.my.coding.editor.neovim;
|
||||
desktop = [ "nvim.desktop" ];
|
||||
in
|
||||
{
|
||||
options.my.coding.editor.neovim = {
|
||||
@@ -49,5 +50,20 @@ in
|
||||
my.persist.homeDirs = [
|
||||
".local/share/nvim"
|
||||
];
|
||||
my.xdg.defaultApplications = {
|
||||
"text/*" = desktop;
|
||||
"application/json" = desktop;
|
||||
"text/xml" = desktop;
|
||||
"application/xml" = desktop;
|
||||
"application/xhtml+xml" = desktop;
|
||||
"application/xhtml_xml" = desktop;
|
||||
"application/rdf+xml" = desktop;
|
||||
"application/rss+xml" = desktop;
|
||||
"application/x-extension-htm" = desktop;
|
||||
"application/x-extension-html" = desktop;
|
||||
"application/x-extension-shtml" = desktop;
|
||||
"application/x-extension-xht" = desktop;
|
||||
"application/x-extension-xhtml" = desktop;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
{ lib, ... }:
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.my.desktop.browser.default;
|
||||
desktop = [ cfg.desktop ];
|
||||
in
|
||||
{
|
||||
options.my.desktop.browser.default = {
|
||||
command = lib.mkOption {
|
||||
@@ -10,4 +14,15 @@
|
||||
default = "zen-beta.desktop";
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
my.xdg.defaultApplications = {
|
||||
"text/html" = desktop;
|
||||
"x-scheme-handler/about" = desktop;
|
||||
"x-scheme-handler/ftp" = desktop;
|
||||
"x-scheme-handler/http" = desktop;
|
||||
"x-scheme-handler/https" = desktop;
|
||||
"x-scheme-handler/unknown" = desktop;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
}:
|
||||
let
|
||||
cfg = config.my.desktop.media.cine;
|
||||
desktop = [ "io.github.diegopvlk.Cine.desktop" ];
|
||||
in
|
||||
{
|
||||
options.my.desktop.media.cine = {
|
||||
@@ -14,5 +15,9 @@ in
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
my.hm.home.packages = [ pkgs.cine ];
|
||||
my.xdg.defaultApplications = {
|
||||
"audio/*" = desktop;
|
||||
"video/*" = desktop;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
}:
|
||||
let
|
||||
cfg = config.my.desktop.media.loupe;
|
||||
desktop = [ "org.gnome.Loupe.desktop" ];
|
||||
in
|
||||
{
|
||||
options.my.desktop.media.loupe = {
|
||||
@@ -14,5 +15,12 @@ in
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
my.hm.home.packages = [ pkgs.loupe ];
|
||||
my.xdg.defaultApplications = {
|
||||
"image/*" = desktop;
|
||||
"image/gif" = desktop;
|
||||
"image/jpeg" = desktop;
|
||||
"image/png" = desktop;
|
||||
"image/webp" = desktop;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
binds {
|
||||
Mod+E { spawn "nautilus"; }
|
||||
Ctrl+Alt+Escape { spawn "missioncenter"; }
|
||||
|
||||
Mod+R { spawn "noctalia-shell" "ipc" "call" "launcher" "toggle"; }
|
||||
|
||||
@@ -33,6 +33,7 @@ in
|
||||
};
|
||||
|
||||
security.pam.services.login.enableGnomeKeyring = true;
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
my.persist.homeDirs = [
|
||||
{
|
||||
directory = ".local/share/keyrings";
|
||||
@@ -79,7 +80,6 @@ in
|
||||
cliphist
|
||||
brightnessctl
|
||||
|
||||
nautilus
|
||||
mission-center
|
||||
|
||||
noctalia-shell
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.programs.ayugram;
|
||||
in
|
||||
{
|
||||
options.my.programs.ayugram = {
|
||||
enable = lib.mkEnableOption "ayugram";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
my.hm.home.packages = [
|
||||
pkgs.ayugram-desktop
|
||||
];
|
||||
my.persist.homeDirs = [
|
||||
".local/share/AyuGramDesktop"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.programs.element;
|
||||
in
|
||||
{
|
||||
options.my.programs.element = {
|
||||
enable = lib.mkEnableOption "element";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
my.hm.home.packages = [
|
||||
pkgs.element-desktop
|
||||
];
|
||||
my.persist.homeDirs = [
|
||||
".config/Element"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.programs.fractal;
|
||||
in
|
||||
{
|
||||
options.my.programs.fractal = {
|
||||
enable = lib.mkEnableOption "fractal";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
my.hm.home.packages = [
|
||||
pkgs.fractal
|
||||
];
|
||||
my.persist.homeDirs = [
|
||||
".local/share/fractal"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.programs.localsend;
|
||||
in
|
||||
{
|
||||
options.my.programs.localsend = {
|
||||
enable = lib.mkEnableOption "localsend";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
my.hm.home.packages = [
|
||||
pkgs.localsend
|
||||
];
|
||||
my.persist.homeDirs = [
|
||||
".local/share/org.localsend.localsend_app"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.programs.nautilus;
|
||||
in
|
||||
{
|
||||
options.my.programs.nautilus = {
|
||||
enable = lib.mkEnableOption "nautilus";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
my.hm.home.packages = [
|
||||
pkgs.nautilus
|
||||
];
|
||||
my.xdg.defaultApplications = {
|
||||
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
||||
};
|
||||
my.hm.wayland.windowManager.niri.settings.binds."Mod+E".spawn = [
|
||||
"nautilus"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.programs.papers;
|
||||
in
|
||||
{
|
||||
options.my.programs.papers = {
|
||||
enable = lib.mkEnableOption "papers";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
my.hm.home.packages = [
|
||||
pkgs.papers
|
||||
];
|
||||
my.xdg.defaultApplications."application/pdf" = [ "org.gnome.Papers.desktop" ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.programs.qq;
|
||||
in
|
||||
{
|
||||
options.my.programs.qq = {
|
||||
enable = lib.mkEnableOption "qq";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
my.hm.home.packages = [
|
||||
pkgs.qq-wayland
|
||||
];
|
||||
my.persist.homeDirs = [
|
||||
".config/QQ"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.programs.signal;
|
||||
in
|
||||
{
|
||||
options.my.programs.signal = {
|
||||
enable = lib.mkEnableOption "signal";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
my.hm.home.packages = [
|
||||
pkgs.signal-desktop-wayland
|
||||
];
|
||||
my.persist.homeDirs = [
|
||||
".config/Signal"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.programs.wechat;
|
||||
in
|
||||
{
|
||||
options.my.programs.wechat = {
|
||||
enable = lib.mkEnableOption "wechat";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
my.hm.home.packages = [
|
||||
pkgs.wechat
|
||||
];
|
||||
my.persist.homeDirs = [
|
||||
".xwechat"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.programs.wpsoffice;
|
||||
in
|
||||
{
|
||||
options.my.programs.wpsoffice = {
|
||||
enable = lib.mkEnableOption "wpsoffice";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
my.hm.home.packages = with pkgs; [
|
||||
wpsoffice-cn
|
||||
wps-office-fonts
|
||||
ttf-wps-fonts
|
||||
];
|
||||
my.persist.homeDirs = [
|
||||
".config/Kingsoft"
|
||||
".local/share/Kingsoft"
|
||||
];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user