Skip to content

Commit

Permalink
feat(modules): add catppuccin.sources option (#129)
Browse files Browse the repository at this point in the history
* feat(modules): add `catppuccin.sources` option

* refactor(modules)!: nvfetcher -> npins

npins gives us a nicer file to import that is a simple name value pair
of the port and the path in the store. this allows for easier overriding
with the catppuccin.sources option

* fix(modules): ensure default sources are applied to `catppuccin.sources`
  • Loading branch information
getchoo committed May 13, 2024
1 parent ef4ffb6 commit 28e6d8a
Show file tree
Hide file tree
Showing 54 changed files with 697 additions and 1,444 deletions.
19 changes: 11 additions & 8 deletions .github/checkSources.nix
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
let
sourceFile = ../_sources/generated.json;
sources = builtins.fromJSON (builtins.readFile sourceFile);
isFromOrg = v: v.src.owner == "catppuccin";
badSources = builtins.filter (src: !(isFromOrg src)) (builtins.attrValues sources);
sources = (builtins.fromJSON (builtins.readFile ../.sources/sources.json)).pins;

isGithubSource = source: source.repository.type or "" == "GitHub";
isInOrg = source: source.repository.owner or "" == "catppuccin";

# all github sources should be from the org
isGoodSource = source: isGithubSource source -> isInOrg source;
# find the ones that aren't
badSources = builtins.filter (source: !(isGoodSource source)) (builtins.attrValues sources);
in
# error if any sources are found that don't originate
# from the catppuccin org
if ((builtins.length badSources) == 0)
then "GOOD"
else builtins.throw "BAD"
then "OK"
else throw "BAD"
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches: [main]
paths:
- '.sources/**'
- '**.lock'
- '**.nix'
pull_request:
Expand Down
8 changes: 5 additions & 3 deletions .github/workflows/update-lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,12 @@ jobs:
popd
- name: Update upstream sources
- name: Update port sources
run: |
nix run --inputs-from ./dev \
nixpkgs#nvfetcher -- --commit-changes
nix run --inputs-from ./dev nixpkgs#npins -- update --directory ./.sources
if ! git diff --color=always --exit-code; then
git commit -am "chore: update port sources"
fi
- name: Make PR if needed
env:
Expand Down
7 changes: 2 additions & 5 deletions .github/workflows/validate-sources.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,10 @@ name: Validate sources
on:
push:
paths:
- '_sources/**'
- 'nvfetcher.toml'
branches: [main]
- '.sources/**'
pull_request:
paths:
- '_sources/**'
- 'nvfetcher.toml'
- '.sources/**'
workflow_dispatch:

jobs:
Expand Down
47 changes: 47 additions & 0 deletions .sources/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Generated by npins. Do not modify; will be overwritten regularly
let
data = builtins.fromJSON (builtins.readFile ./sources.json);
version = data.version;

mkSource = spec:
assert spec ? type; let
path =
if spec.type == "Git" then mkGitSource spec
else if spec.type == "GitRelease" then mkGitSource spec
else if spec.type == "PyPi" then mkPyPiSource spec
else if spec.type == "Channel" then mkChannelSource spec
else builtins.throw "Unknown source type ${spec.type}";
in
spec // { outPath = path; };

mkGitSource = { repository, revision, url ? null, hash, ... }:
assert repository ? type;
# At the moment, either it is a plain git repository (which has an url), or it is a GitHub/GitLab repository
# In the latter case, there we will always be an url to the tarball
if url != null then
(builtins.fetchTarball {
inherit url;
sha256 = hash; # FIXME: check nix version & use SRI hashes
})
else assert repository.type == "Git"; builtins.fetchGit {
url = repository.url;
rev = revision;
# hash = hash;
};

mkPyPiSource = { url, hash, ... }:
builtins.fetchurl {
inherit url;
sha256 = hash;
};

mkChannelSource = { url, hash, ... }:
builtins.fetchTarball {
inherit url;
sha256 = hash;
};
in
if version == 3 then
builtins.mapAttrs (_: mkSource) data.pins
else
throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`"
Loading

0 comments on commit 28e6d8a

Please sign in to comment.