This commit is contained in:
2026-07-31 22:06:53 +09:00
parent 3dae1d26ef
commit a51e9584b0
17 changed files with 139 additions and 7 deletions
+3 -3
View File
@@ -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
+4
View File
@@ -0,0 +1,4 @@
{ pkgs, ... }:
{
environment.systemPackages = [ pkgs.atuin ];
}
+4
View File
@@ -0,0 +1,4 @@
{ pkgs, lib, ... }:
lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
home.packages = [ pkgs.baobab ];
}
+31
View File
@@ -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"
]
);
};
}
@@ -0,0 +1,4 @@
{ pkgs, lib, ... }:
lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
home.packages = [ pkgs.easyeffects ];
}
@@ -0,0 +1,4 @@
{ pkgs, lib, ... }:
lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
home.packages = [ pkgs.gnome-disk-utility ];
}
+28
View File
@@ -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"
]
);
};
}
+17
View File
@@ -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" ];
};
};
}
@@ -0,0 +1,4 @@
{ pkgs, lib, ... }:
lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
home.packages = [ pkgs.qalculate-gtk ];
}
+4
View File
@@ -0,0 +1,4 @@
{ pkgs, lib, ... }:
lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
home.packages = [ pkgs.resources ];
}
+4
View File
@@ -0,0 +1,4 @@
{ pkgs, ... }:
{
environment.systemPackages = [ pkgs.tealdeer ];
}
+4
View File
@@ -0,0 +1,4 @@
{ pkgs, ... }:
{
environment.systemPackages = [ pkgs.trippy ];
}
+4
View File
@@ -0,0 +1,4 @@
{ pkgs, lib, ... }:
lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
home.packages = [ pkgs.vlc ];
}
+4
View File
@@ -0,0 +1,4 @@
{ pkgs, ... }:
{
environment.systemPackages = [ pkgs.xh ];
}
+3 -2
View File
@@ -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
+8 -2
View File
@@ -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"
];
}
@@ -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"