diff --git a/hosts/imxyy-nix-x16/home.nix b/hosts/imxyy-nix-x16/home.nix index 24151ba..7afef73 100644 --- a/hosts/imxyy-nix-x16/home.nix +++ b/hosts/imxyy-nix-x16/home.nix @@ -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" ]; }; }; diff --git a/hosts/imxyy-nix/home.nix b/hosts/imxyy-nix/home.nix index fff5ce5..4f5d45d 100644 --- a/hosts/imxyy-nix/home.nix +++ b/hosts/imxyy-nix/home.nix @@ -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" ]; }; diff --git a/modules/cli/misc.nix b/modules/cli/misc.nix index 0a525e4..8421082 100644 --- a/modules/cli/misc.nix +++ b/modules/cli/misc.nix @@ -53,6 +53,7 @@ in my.persist.homeDirs = [ ".local/share/zoxide" ".config/television/cable" + ".config/dconf" ]; my.hm = { programs.fish.shellAliases = { diff --git a/modules/coding/editor/neovim/default.nix b/modules/coding/editor/neovim/default.nix index 0679496..7d47fe3 100644 --- a/modules/coding/editor/neovim/default.nix +++ b/modules/coding/editor/neovim/default.nix @@ -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; + }; }; } diff --git a/modules/desktop/browser/default'.nix b/modules/desktop/browser/default'.nix index 55ddd65..ffbeac5 100644 --- a/modules/desktop/browser/default'.nix +++ b/modules/desktop/browser/default'.nix @@ -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; + }; + }; } diff --git a/modules/desktop/media/cine.nix b/modules/desktop/media/cine.nix index 7f6ac2b..5404d48 100644 --- a/modules/desktop/media/cine.nix +++ b/modules/desktop/media/cine.nix @@ -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; + }; }; } diff --git a/modules/desktop/media/loupe.nix b/modules/desktop/media/loupe.nix index 2aad4d8..90f56e9 100644 --- a/modules/desktop/media/loupe.nix +++ b/modules/desktop/media/loupe.nix @@ -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; + }; }; } diff --git a/modules/desktop/wm/niri/config/binds.kdl b/modules/desktop/wm/niri/config/binds.kdl index 22388f4..1c37e93 100644 --- a/modules/desktop/wm/niri/config/binds.kdl +++ b/modules/desktop/wm/niri/config/binds.kdl @@ -1,5 +1,4 @@ binds { - Mod+E { spawn "nautilus"; } Ctrl+Alt+Escape { spawn "missioncenter"; } Mod+R { spawn "noctalia-shell" "ipc" "call" "launcher" "toggle"; } diff --git a/modules/desktop/wm/niri/default.nix b/modules/desktop/wm/niri/default.nix index 26a7282..f5787dd 100644 --- a/modules/desktop/wm/niri/default.nix +++ b/modules/desktop/wm/niri/default.nix @@ -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 diff --git a/modules/programs/ayugram.nix b/modules/programs/ayugram.nix new file mode 100644 index 0000000..330bf6f --- /dev/null +++ b/modules/programs/ayugram.nix @@ -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" + ]; + }; +} diff --git a/modules/programs/element.nix b/modules/programs/element.nix new file mode 100644 index 0000000..4f2bc1f --- /dev/null +++ b/modules/programs/element.nix @@ -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" + ]; + }; +} diff --git a/modules/programs/fractal.nix b/modules/programs/fractal.nix new file mode 100644 index 0000000..c3e3b8e --- /dev/null +++ b/modules/programs/fractal.nix @@ -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" + ]; + }; +} diff --git a/modules/programs/localsend.nix b/modules/programs/localsend.nix new file mode 100644 index 0000000..946fe02 --- /dev/null +++ b/modules/programs/localsend.nix @@ -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" + ]; + }; +} diff --git a/modules/programs/nautilus.nix b/modules/programs/nautilus.nix new file mode 100644 index 0000000..ca3f060 --- /dev/null +++ b/modules/programs/nautilus.nix @@ -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" + ]; + }; +} diff --git a/modules/programs/papers.nix b/modules/programs/papers.nix new file mode 100644 index 0000000..4a78544 --- /dev/null +++ b/modules/programs/papers.nix @@ -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" ]; + }; +} diff --git a/modules/programs/qq.nix b/modules/programs/qq.nix new file mode 100644 index 0000000..f72fbab --- /dev/null +++ b/modules/programs/qq.nix @@ -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" + ]; + }; +} diff --git a/modules/programs/signal.nix b/modules/programs/signal.nix new file mode 100644 index 0000000..1785e89 --- /dev/null +++ b/modules/programs/signal.nix @@ -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" + ]; + }; +} diff --git a/modules/programs/wechat.nix b/modules/programs/wechat.nix new file mode 100644 index 0000000..a0a9b8d --- /dev/null +++ b/modules/programs/wechat.nix @@ -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" + ]; + }; +} diff --git a/modules/programs/wpsoffice.nix b/modules/programs/wpsoffice.nix new file mode 100644 index 0000000..5c5636b --- /dev/null +++ b/modules/programs/wpsoffice.nix @@ -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" + ]; + }; +}