{"id":14128209,"url":"https://github.com/divnix/devos-ext-lib","last_synced_at":"2025-05-07T15:29:21.115Z","repository":{"id":45077540,"uuid":"392083687","full_name":"divnix/devos-ext-lib","owner":"divnix","description":"A kick ass library to dominate your Extensions (with DevOS).","archived":false,"fork":false,"pushed_at":"2022-11-24T18:59:07.000Z","size":47,"stargazers_count":14,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-27T19:03:36.407Z","etag":null,"topics":["devos","extensions-management","nix","nvfetcher"],"latest_commit_sha":null,"homepage":"","language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/divnix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-08-02T20:21:22.000Z","updated_at":"2025-04-04T10:48:28.000Z","dependencies_parsed_at":"2023-01-21T19:33:16.523Z","dependency_job_id":null,"html_url":"https://github.com/divnix/devos-ext-lib","commit_stats":null,"previous_names":["divnix/vs-ext"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/divnix%2Fdevos-ext-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/divnix%2Fdevos-ext-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/divnix%2Fdevos-ext-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/divnix%2Fdevos-ext-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/divnix","download_url":"https://codeload.github.com/divnix/devos-ext-lib/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252905145,"owners_count":21822746,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devos","extensions-management","nix","nvfetcher"],"created_at":"2024-08-15T16:01:24.186Z","updated_at":"2025-05-07T15:29:21.096Z","avatar_url":"https://github.com/divnix.png","language":"Nix","funding_links":[],"categories":["Nix"],"sub_categories":[],"readme":"[![MIT License](https://img.shields.io/github/license/divnix/devos)][mit] [![NixOS](https://img.shields.io/badge/NixOS-release--21.11-blue.svg?style=flat\u0026logo=NixOS\u0026logoColor=white)](https://nixos.org)\n\n# Introduction\n\nThis is a kick ass library to dominate your Extensions (with [DevOS][devos]).\n\nCurrently [VS Code] extensions and some other package sets are supported. See also [flake.nix](./flake.nix).\n\n# Usage\n\nFor now, let's use [VS Code] as an example.\n\nWithin `devos` itself, you can use as follow:\n\nIn `flake.nix`:\n```nix\n{\n  inputs.devos-ext-lib.url = \"github:divnix/devos-ext-lib\";\n  outputs = inputs@{ devos-ext-lib, ... }: digga.lib.mkFlake {\n    channels.nixos.overlays = [ devos-ext-lib.overlays.vscode ];\n  };\n}\n```\n\nIn `pkgs/default.nix`:\n```nix\nfinal: prev:\nlet\n  sources = callPackage ./_sources/generated.nix { };\nin {\n  vscode-extensions = final.vscode-extensions-builder sources {\n    # a function to merge previous extensions from a publisher\n    # with new ones from `sources`\n    # note: publisher and extension name are automatically converted\n    #       to lower case\n    pkgBuilder = final.vscode-utils.pkgBuilder';\n\n    # a function that filters the sources by a prefix\n    # and group them by their publishers (i.e. \"${publisher}.${extension-name}\")\n    filterSources = final.lib.vscode-extensions.filterSources';\n\n    # A typical nvfetcher toml:\n    # [vscode-extensions-paulmolluzzo-convert-css-in-js]\n    # src.manual = \"0.3.0\"\n    # fetch.url = \"https://open-vsx.org/api/paulmolluzzo/convert-css-in-js/0.3.0/file/paulmolluzzo.convert-css-in-js-0.3.0.vsix\"\n    # passthru = { publisher = \"paulmolluzzo\", name = \"convert-css-in-js\", description = \"Convert kebab-case CSS to camelCase CSS and vice versa\", license = \"MIT\" }\n    #\n    prefix = \"vscode-extensions\";\n  };\n}\n```\n\nIt simply map through sources for VS Code extensions with `pkgBuilder`,\nand you can override each extensions using //.\n\nYou can now refer to them as `pkgs.vscode-extensions.${publisher}.${extension-name}`,\nsuch as `pkgs.vscode-extensions.paulmolluzzo.convert-css-in-js`.\n\n## Metadata\n\nFor my personal use case, I use [openvsx-updater](https://github.com/danielphan2003/nixpkgs/blob/main/cells/nixpkgs/cli/updaters/openvsx.bash)\nand more generally [danielphan2003/nixpkgs](https://github.com/danielphan2003/nixpkgs) to generate metadata automatically.\n\nIt uses GitHub Actions to fetch metadata from [OpenVSX], and [nvfetcher]\nto get the sources and pass through the metadata for [VS Code] extensions.\n\nNote that [VS Marketplace] extensions does not have a clear API for metadata extraction.\nAs a result, only [OpenVSX] ones are able to do so.\n\n## TODOs:\n- [ ] Documentation:\n  - [ ] [minecraft-mods](./src/pkgs/misc/minecraft-mods)\n  - [ ] [papermc](./src/pkgs/games/papermc)\n  - [ ] [python3Packages](./src/pkgs/development/python-modules)\n  - [ ] [vimPlugins](./src/pkgs/misc/vim-plugins)\n  - [ ] [vscode-extensions](./src/pkgs/misc/vscode-extensions)\n- [ ] Simplify API.\n- [ ] Overlays or just plain `packages.${...}`?\n- [ ] Tests for packaging extensions.\n\n## Shoulders\nThis work does not reinvent the wheel. It stands on the [shoulders of the\nfollowing giants][giants]:\n\n### :onion: \u0026mdash; like the layers of an onion\n- [`divnix/devos`][devos]\n- [`gytis-ivaskevicius/flake-utils-plus`][fup]\n- [`numtide/flake-utils`][fu]\n\n### :family: \u0026mdash; like family\n- [`numtide/devshell`][devshell]\n- [`berberman/nvfetcher`][nvfetcher]\n- [`NixOS/nixpkgs`][nixpkgs]\n\n:heart:\n\n[mit]: https://mit-license.org\n\n[devos]: https://github.com/divnix/devos\n\n[VS Code]: https://code.visualstudio.com\n[VS Marketplace]: https://marketplace.visualstudio.com/vscode\n[OpenVSX]: https://open-vsx.org\n\n[fu]: https://github.com/numtide/flake-utils\n[fup]: https://github.com/gytis-ivaskevicius/flake-utils-plus\n[giants]: https://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants\n[devshell]: https://github.com/numtide/devshell\n[nixpkgs]: https://github.com/NixOS/nixpkgs\n[nvfetcher]: https://github.com/berberman/nvfetcher\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdivnix%2Fdevos-ext-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdivnix%2Fdevos-ext-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdivnix%2Fdevos-ext-lib/lists"}