rose-pine-nix/CONTRIBUTING.md
seth a30f0ff077
feat: limit use of IFD, add auto updates & vm testing (#40)
* feat(modules): remove unnecessary IFD

by moving all upstream repos to our flake inputs, we no longer need
to have [IFD](https://nixos.wiki/wiki/Import_From_Derivation) in most
of our modules - making evaluation faster for all configurations. the
only remaining instances of IFD are in `lib.ctp.toYAML` and the themes
for kitty, which is due to it's use upstream in home-manager

* ci: start auto updating flake inputs

* ci: init basic vm tests

* ci: rename ci to format

* ci: use PAT for update-lock workflow

this is required to run tests such as test-vm after the pull request is
made

* fix(home-manager): make sure to use readFile in helix module

* ci: fix typo in test-vm

* ci: use verbose logging in test-vm & enable kvm

* docs: add flake inputs & vm testing to CONTRIBUTING.md

* feat(modules)!: use nvfetcher for upstream sources

* docs: add information about nvfetcher

* chore: don't include flake-compat in flake inputs

while this does make us lose out on easy updating, i think it's nice not
  have this as a required dependency for flake users

* chore: update flake inputs

Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/f58889c07efa8e1328fdf93dc1796ec2a5c47f38' (2023-07-29)
  → 'github:nix-community/home-manager/48b0a30202516e25d9885525fbb200a045f23f26' (2023-11-01)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/2a9d660ff0f7ffde9d73be328ee6e6f10ef66b28' (2023-07-28)
  → 'github:NixOS/nixpkgs/0cbe9f69c234a7700596e943bfae7ef27a31b735' (2023-10-29)

* chore: update nvfetcher sources

* refactor: don't instantiate nixpkgs in flake + cleanup vm test

* fix(home-manager): update paths from new lazygit theme revision

* feat(lib)!: use constant module arguments automatically
2023-11-02 13:55:47 -04:00

2.6 KiB

Contributing

Adding a port

Create a file in modules/<module>/ with the name of the port. Add the file to the imports declaration in modules/<module>/default.nix. All ports should have the catppuccin.enable and catppuccin.flavour options, and optionally the catppuccin.accent option. catppuccin.flavour and catppuccin.accent should default to config.catppuccin.flavour and config.catppuccin.accent, respectively.

nvfetcher is used to track our upstream sources to use in modules. This allows us to reduce IFD and auto-update all themes. Most repositories can be specified like so:

[program_name]
src.git = "https://github.com/catppuccin/program_name.git"
fetch.github = "catppuccin/program_name"

After creating your module, add the options to enable it in test.nix under the nodes.machine attrset. This will allow for your configuration to be tested along with the other modules in a VM automatically.

Commits that add ports should be of the format

feat(<nixos or home-manager>): add support for <port>

Commit messages

This repository uses Conventional Commits. Commit headers should be lowercase. Most commits should include a body that briefly describes the motivation and content of the commit.

Commit types

  • fix: A bug fix that doesn't modify the public API
  • feat: A code change that modifies the public API
  • refactor: A code change that doesn't change behavior
  • style: A style fix or change
  • docs: Any change to documentation
  • ci: Any change to CI files
  • revert: A revert commit. The message should describe the reasoning and the commit should include the Refs: footer with the short hashes of the commits being reverted.
  • chore: catch-all type

Commit scopes

Available commit scopes are port names, nixos, home-manager, and modules. If none of these apply, omit the scope.

Breaking changes

All breaking changes should be documented in the commit footer in the format described by Conventional Commits. Use the <type>! syntax in order to distinguish breaking commits in the log, but include the footer to provide a better description for the changelog generator.

feat(bar)!: foo the bars

BREAKING CHANGE: bars are now foo'ed

For Maintainers

Use squash merges when reasonable. They don't pollute the log with merge commits, and unlike rebase merges, list the author as the committer as well.