From 57d9646b8094d0ca37af087d14ae677698e4efab Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Fri, 18 Sep 2026 15:46:46 +0200 Subject: Archive filter-dotfiles-by-platform and add-gnome-desktop Sync main specs with both completed changes: dotfiles-management gains the platform-exclude requirement, and gnome-desktop becomes a new main spec. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn --- openspec/specs/dotfiles-management/spec.md | 15 +++++++++++++ openspec/specs/gnome-desktop/spec.md | 35 ++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 openspec/specs/gnome-desktop/spec.md (limited to 'openspec/specs') diff --git a/openspec/specs/dotfiles-management/spec.md b/openspec/specs/dotfiles-management/spec.md index 7585cc9..2d45dc1 100644 --- a/openspec/specs/dotfiles-management/spec.md +++ b/openspec/specs/dotfiles-management/spec.md @@ -43,3 +43,18 @@ If symlinking one package would conflict with an existing file or symlink not ow #### Scenario: One package conflicts - **WHEN** one dotfiles package's target path is already occupied by an unrelated existing file - **THEN** that package is skipped with a visible warning, and every other package is still processed + +### Requirement: Platform-irrelevant packages are skipped +The system SHALL skip stowing a dotfiles package when that package is platform-irrelevant, either because it matches a built-in platform default (based on the current OS) or because it has been explicitly listed for exclusion, rather than always stowing every top-level package directory. + +#### Scenario: A package is excluded by built-in platform default +- **WHEN** the dotfiles repository contains a top-level package directory that is known to be relevant only to a different platform than the one currently running (for example, a macOS-only package on a Linux system, or a Linux-only package on a macOS system) +- **THEN** that package is not symlinked, and a visible message indicates it was skipped as not relevant on this platform + +#### Scenario: A package is excluded via explicit configuration +- **WHEN** a package name has been explicitly configured for exclusion, regardless of the built-in platform defaults +- **THEN** that package is not symlinked, and a visible message indicates it was skipped + +#### Scenario: A non-excluded package is still stowed +- **WHEN** a top-level package directory is neither a built-in platform-mismatched package nor explicitly excluded +- **THEN** that package is symlinked into the home directory as described by the existing package-symlinking requirement diff --git a/openspec/specs/gnome-desktop/spec.md b/openspec/specs/gnome-desktop/spec.md new file mode 100644 index 0000000..3351d13 --- /dev/null +++ b/openspec/specs/gnome-desktop/spec.md @@ -0,0 +1,35 @@ +# gnome-desktop Specification + +## Purpose + +Provides a working GNOME desktop environment, including login, networking, audio, and printing, on every NixOS host built from this flake. + +## Requirements + +### Requirement: GNOME is the default desktop on every NixOS host +Every NixOS host built from this flake's shared system module SHALL boot into a GNOME desktop session via a graphical login manager, without requiring per-host opt-in. + +#### Scenario: Graphical login is available after boot +- **WHEN** a NixOS host built from this flake's shared system module finishes booting +- **THEN** a graphical login manager is presented, and selecting the default session starts a GNOME desktop + +### Requirement: Desktop networking is functional +The desktop environment SHALL provide working network configuration through its own UI, not require a separate manual networking setup step. + +#### Scenario: Network settings are usable from the desktop +- **WHEN** a user opens the desktop's network configuration UI +- **THEN** available networks can be viewed and configured without additional manual setup outside the desktop environment + +### Requirement: Desktop audio is functional +The desktop environment SHALL provide working audio output and input, including compatibility with applications expecting a PulseAudio-compatible audio server. + +#### Scenario: Audio applications can play sound +- **WHEN** an application on the desktop attempts to play or capture audio +- **THEN** the audio server is running and available to handle the request + +### Requirement: Printing is supported and printers are discoverable +The desktop environment SHALL support printing to CUPS-compatible printers, and SHALL be able to discover network printers automatically without requiring the firewall to be manually reconfigured. + +#### Scenario: A network printer is discoverable +- **WHEN** a network printer advertises itself on the local network +- **THEN** it can be discovered and configured for printing without the host's firewall blocking the discovery traffic -- cgit v1.3