From a51e9584b05be2e5778328ae767cadccfd7118a5 Mon Sep 17 00:00:00 2001 From: moons Date: Fri, 31 Jul 2026 22:06:53 +0900 Subject: [PATCH] apps --- AGENTS.md | 6 ++-- modules/applications/atuin/common.nix | 4 +++ modules/applications/baobab/home.nix | 4 +++ modules/applications/celluloid/home.nix | 31 +++++++++++++++++++ modules/applications/easyeffects/home.nix | 4 +++ .../applications/gnome-disk-utility/home.nix | 4 +++ modules/applications/loupe/home.nix | 28 +++++++++++++++++ modules/applications/papers/home.nix | 17 ++++++++++ modules/applications/qalculate-gtk/home.nix | 4 +++ modules/applications/resources/home.nix | 4 +++ modules/applications/tealdeer/common.nix | 4 +++ modules/applications/trippy/common.nix | 4 +++ modules/applications/vlc/home.nix | 4 +++ modules/applications/xh/common.nix | 4 +++ modules/profiles/README.md | 5 +-- modules/profiles/base/meta.nix | 10 ++++-- .../profiles/interface/linux-desktop/meta.nix | 9 ++++++ 17 files changed, 139 insertions(+), 7 deletions(-) create mode 100644 modules/applications/atuin/common.nix create mode 100644 modules/applications/baobab/home.nix create mode 100644 modules/applications/celluloid/home.nix create mode 100644 modules/applications/easyeffects/home.nix create mode 100644 modules/applications/gnome-disk-utility/home.nix create mode 100644 modules/applications/loupe/home.nix create mode 100644 modules/applications/papers/home.nix create mode 100644 modules/applications/qalculate-gtk/home.nix create mode 100644 modules/applications/resources/home.nix create mode 100644 modules/applications/tealdeer/common.nix create mode 100644 modules/applications/trippy/common.nix create mode 100644 modules/applications/vlc/home.nix create mode 100644 modules/applications/xh/common.nix diff --git a/AGENTS.md b/AGENTS.md index bb04ed8..fb75709 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -371,9 +371,9 @@ do not retain compatibility aliases. The profile layers have these responsibilities: -- `base` contains only invariants required by every supported host. It currently - includes only `systems.nix`; optional secrets, interface, hardware, and - workloads do not belong there. +- `base` contains only invariants required by every supported host. It includes + `systems.nix` and the universal Atuin, tealdeer, trippy, and xh CLI tools; + optional secrets, interface, hardware, and workloads do not belong there. - `interface` describes how the host is operated. `interface.cli` is shared by NixOS and macOS and includes `tio`. `interface.gui` owns cross-platform graphical interface applications such as Vicinae. `interface.macos` owns the diff --git a/modules/applications/atuin/common.nix b/modules/applications/atuin/common.nix new file mode 100644 index 0000000..bd326ad --- /dev/null +++ b/modules/applications/atuin/common.nix @@ -0,0 +1,4 @@ +{ pkgs, ... }: +{ + environment.systemPackages = [ pkgs.atuin ]; +} diff --git a/modules/applications/baobab/home.nix b/modules/applications/baobab/home.nix new file mode 100644 index 0000000..1fc901a --- /dev/null +++ b/modules/applications/baobab/home.nix @@ -0,0 +1,4 @@ +{ pkgs, lib, ... }: +lib.mkIf pkgs.stdenv.hostPlatform.isLinux { + home.packages = [ pkgs.baobab ]; +} diff --git a/modules/applications/celluloid/home.nix b/modules/applications/celluloid/home.nix new file mode 100644 index 0000000..8f712ce --- /dev/null +++ b/modules/applications/celluloid/home.nix @@ -0,0 +1,31 @@ +{ pkgs, lib, ... }: +lib.mkIf pkgs.stdenv.hostPlatform.isLinux { + home.packages = [ pkgs.celluloid ]; + + xdg.mimeApps = { + enable = true; + defaultApplicationPackages = [ pkgs.celluloid ]; + defaultApplications = builtins.listToAttrs ( + map + (mime: { + name = mime; + value = [ "io.github.celluloid_player.Celluloid.desktop" ]; + }) + [ + "video/3gpp" + "video/3gpp2" + "video/mp2t" + "video/mp4" + "video/mpeg" + "video/ogg" + "video/quicktime" + "video/webm" + "video/x-flv" + "video/x-m4v" + "video/x-matroska" + "video/x-msvideo" + "video/x-ms-wmv" + ] + ); + }; +} diff --git a/modules/applications/easyeffects/home.nix b/modules/applications/easyeffects/home.nix new file mode 100644 index 0000000..bad3bef --- /dev/null +++ b/modules/applications/easyeffects/home.nix @@ -0,0 +1,4 @@ +{ pkgs, lib, ... }: +lib.mkIf pkgs.stdenv.hostPlatform.isLinux { + home.packages = [ pkgs.easyeffects ]; +} diff --git a/modules/applications/gnome-disk-utility/home.nix b/modules/applications/gnome-disk-utility/home.nix new file mode 100644 index 0000000..5c02c0d --- /dev/null +++ b/modules/applications/gnome-disk-utility/home.nix @@ -0,0 +1,4 @@ +{ pkgs, lib, ... }: +lib.mkIf pkgs.stdenv.hostPlatform.isLinux { + home.packages = [ pkgs.gnome-disk-utility ]; +} diff --git a/modules/applications/loupe/home.nix b/modules/applications/loupe/home.nix new file mode 100644 index 0000000..2feece2 --- /dev/null +++ b/modules/applications/loupe/home.nix @@ -0,0 +1,28 @@ +{ pkgs, lib, ... }: +lib.mkIf pkgs.stdenv.hostPlatform.isLinux { + home.packages = [ pkgs.loupe ]; + + xdg.mimeApps = { + enable = true; + defaultApplicationPackages = [ pkgs.loupe ]; + defaultApplications = builtins.listToAttrs ( + map + (mime: { + name = mime; + value = [ "org.gnome.Loupe.desktop" ]; + }) + [ + "image/avif" + "image/bmp" + "image/gif" + "image/heic" + "image/heif" + "image/jpeg" + "image/jxl" + "image/png" + "image/svg+xml" + "image/webp" + ] + ); + }; +} diff --git a/modules/applications/papers/home.nix b/modules/applications/papers/home.nix new file mode 100644 index 0000000..9d95e85 --- /dev/null +++ b/modules/applications/papers/home.nix @@ -0,0 +1,17 @@ +{ pkgs, lib, ... }: +lib.mkIf pkgs.stdenv.hostPlatform.isLinux { + home.packages = [ pkgs.papers ]; + + xdg.mimeApps = { + enable = true; + defaultApplicationPackages = [ pkgs.papers ]; + defaultApplications = { + "application/pdf" = [ "org.gnome.Papers.desktop" ]; + "application/postscript" = [ "org.gnome.Papers.desktop" ]; + "application/x-bzpdf" = [ "org.gnome.Papers.desktop" ]; + "application/x-gzpdf" = [ "org.gnome.Papers.desktop" ]; + "application/x-xzpdf" = [ "org.gnome.Papers.desktop" ]; + "image/tiff" = [ "org.gnome.Papers.desktop" ]; + }; + }; +} diff --git a/modules/applications/qalculate-gtk/home.nix b/modules/applications/qalculate-gtk/home.nix new file mode 100644 index 0000000..a0d43c4 --- /dev/null +++ b/modules/applications/qalculate-gtk/home.nix @@ -0,0 +1,4 @@ +{ pkgs, lib, ... }: +lib.mkIf pkgs.stdenv.hostPlatform.isLinux { + home.packages = [ pkgs.qalculate-gtk ]; +} diff --git a/modules/applications/resources/home.nix b/modules/applications/resources/home.nix new file mode 100644 index 0000000..95d46d0 --- /dev/null +++ b/modules/applications/resources/home.nix @@ -0,0 +1,4 @@ +{ pkgs, lib, ... }: +lib.mkIf pkgs.stdenv.hostPlatform.isLinux { + home.packages = [ pkgs.resources ]; +} diff --git a/modules/applications/tealdeer/common.nix b/modules/applications/tealdeer/common.nix new file mode 100644 index 0000000..e561af6 --- /dev/null +++ b/modules/applications/tealdeer/common.nix @@ -0,0 +1,4 @@ +{ pkgs, ... }: +{ + environment.systemPackages = [ pkgs.tealdeer ]; +} diff --git a/modules/applications/trippy/common.nix b/modules/applications/trippy/common.nix new file mode 100644 index 0000000..076ec17 --- /dev/null +++ b/modules/applications/trippy/common.nix @@ -0,0 +1,4 @@ +{ pkgs, ... }: +{ + environment.systemPackages = [ pkgs.trippy ]; +} diff --git a/modules/applications/vlc/home.nix b/modules/applications/vlc/home.nix new file mode 100644 index 0000000..f3bc249 --- /dev/null +++ b/modules/applications/vlc/home.nix @@ -0,0 +1,4 @@ +{ pkgs, lib, ... }: +lib.mkIf pkgs.stdenv.hostPlatform.isLinux { + home.packages = [ pkgs.vlc ]; +} diff --git a/modules/applications/xh/common.nix b/modules/applications/xh/common.nix new file mode 100644 index 0000000..e6215c3 --- /dev/null +++ b/modules/applications/xh/common.nix @@ -0,0 +1,4 @@ +{ pkgs, ... }: +{ + environment.systemPackages = [ pkgs.xh ]; +} diff --git a/modules/profiles/README.md b/modules/profiles/README.md index 4e02d51..c8349e2 100644 --- a/modules/profiles/README.md +++ b/modules/profiles/README.md @@ -15,8 +15,9 @@ hardware configuration remains in its owning unit. | `networking` | Network roles and topology | Per-profile | | `security` | Optional security and secret-management policies | Per-profile | -`base` intentionally contains only `systems.nix`. A unit belongs there only -when removing it from any supported host would make that host invalid. +`base` contains the shared Nix foundation plus the universally available CLI +tools (Atuin, tealdeer, trippy, and xh). A unit belongs there only when it is +required on every supported host. ## Compatibility diff --git a/modules/profiles/base/meta.nix b/modules/profiles/base/meta.nix index 6ac3558..8068ed6 100644 --- a/modules/profiles/base/meta.nix +++ b/modules/profiles/base/meta.nix @@ -1,5 +1,11 @@ { - description = "Host-independent Nix foundation required everywhere"; + description = "Host-independent Nix foundation and command-line tools required everywhere"; - includes = [ "systems.nix" ]; + includes = [ + "applications.atuin" + "applications.tealdeer" + "applications.trippy" + "applications.xh" + "systems.nix" + ]; } diff --git a/modules/profiles/interface/linux-desktop/meta.nix b/modules/profiles/interface/linux-desktop/meta.nix index 076a784..1f88da4 100644 --- a/modules/profiles/interface/linux-desktop/meta.nix +++ b/modules/profiles/interface/linux-desktop/meta.nix @@ -4,9 +4,18 @@ includes = [ "profiles.interface.gui" "applications.fcitx5" + "applications.baobab" + "applications.celluloid" + "applications.easyeffects" + "applications.gnome-disk-utility" "applications.ghostty" "applications.gtk" + "applications.loupe" "applications.nautilus" + "applications.papers" + "applications.qalculate-gtk" + "applications.resources" + "applications.vlc" "hardwares.graphics" "services.gvfs" "services.polkit-gnome"