Look at the following guix snippet:
(modify-services %desktop-services (guix-service-type config => (guix-configuration (inherit config) (substitute-urls (append (list "https://substitutes.nonguix.org") %default-substitute-urls)) (authorized-keys (append (list (local-file "/etc/guix/nonguix/signing-key.pub") (local-file "/etc/guix/guix-past/signing-key.pub")) %default-authorized-guix-keys)))))
The above snippet demonstrates how you can modify services on the fly. In GN, consider a dump:
(define-dump dump-species (tables (Species)) (schema-triples (gn:name rdfs:range rdfs:Literal) (gn:displayName rdfs:range rdfs:Literal) (gn:binomialName rdfs:range rdfs:Literal) (gn:family rdfs:range rdfs:Literal)) (triples (string->identifier "species" (field Species FullName)) (set rdf:type 'gn:species) (set gn:name (field Species SpeciesName)) (set gn:displayName (field Species MenuName)) (set gn:binomialName (field Species FullName)) (set gn:family (field Species Family)) (set gn:organism (ontology 'ncbiTaxon: (field Species TaxonomyId)))))
We could have all the dumps in one file, say:
%genenetwork-tables-dump
which have the default dumps that were defined earlier. Should someone want to change something, one possible interface would be:
(modify-dump %genenetwork-tables-dump (dump-species schema-triples => (schema-triples (inherit schema-triples) (replace (gn:name rdfs:range rdfs:Literal) (gn:name rdfs:range gn:something-