{"id":17786668,"url":"https://github.com/ypares/nushellwith","last_synced_at":"2025-09-09T19:28:58.583Z","repository":{"id":257423189,"uuid":"858217351","full_name":"YPares/nushellWith","owner":"YPares","description":"Isolated nushell envs with specific plugins and libraries (with Nix)","archived":false,"fork":false,"pushed_at":"2025-06-26T22:51:00.000Z","size":97,"stargazers_count":25,"open_issues_count":3,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-27T08:56:51.252Z","etag":null,"topics":["nix","nix-flakes","nu","nushell"],"latest_commit_sha":null,"homepage":"","language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YPares.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-16T14:12:07.000Z","updated_at":"2025-07-19T19:58:39.000Z","dependencies_parsed_at":"2024-10-27T06:37:16.214Z","dependency_job_id":"863e1746-e195-4872-9df5-a7faf21db90a","html_url":"https://github.com/YPares/nushellWith","commit_stats":null,"previous_names":["ypares/nushellwith"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/YPares/nushellWith","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YPares%2FnushellWith","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YPares%2FnushellWith/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YPares%2FnushellWith/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YPares%2FnushellWith/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YPares","download_url":"https://codeload.github.com/YPares/nushellWith/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YPares%2FnushellWith/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268672049,"owners_count":24288242,"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","status":"online","status_checked_at":"2025-08-04T02:00:09.867Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["nix","nix-flakes","nu","nushell"],"created_at":"2024-10-27T10:04:20.030Z","updated_at":"2025-09-09T19:28:58.572Z","avatar_url":"https://github.com/YPares.png","language":"Nix","readme":"[![built with garnix](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgarnix.io%2Fapi%2Fbadges%2FYPares%2FnushellWith%3Fbranch%3Dmaster)](https://garnix.io/repo/YPares/nushellWith)\n\n# nushellWith\n\nBuild an isolated [nushell](https://www.nushell.sh/) environment with a\nspecific set of plugins (from either nixpkgs or built from source) and nu\nlibraries (from source).\n\nSee the [`examples`](./examples) folder for how to use it. Examples show\nusage with a regular nix flake.\n\n## Outputs of this flake\n\n- the flake itself (or [`lib.nushellWith`](./nix-src/nushell-with.nix)): a function\n  that takes a description of a nushell configuration (which libraries, plugins and\n  `config.nu` \u0026 `env.nu` files to use) and outputs a nushell wrapper. This nushell\n  wrapper derivation also has the following attributes:\n  - `plugins-env`: a nix env (from `pkgs.buildEnv`) containing symlinks to all\n      the wanted plugins. This can be useful if you want a set of plugins grouped\n      together in one place.\n- [`lib.makeNuLibrary`](./nix-src/lib.nix): a function that takes a nushell library as a\n  folder (e.g. obtained from github via one of your flake inputs flagged with\n  `flake = false;`) and patches it to add some binary dependencies to its path\n  when it is imported. It outputs the resulting patched folder as a derivation,\n  ready to be passed to the `libraries.source` argument of `nushellWith`.\n  See my [monurepo](https://github.com/ypares/monurepo) repository as an example of how\n  external repositories can packages Nu libraries with it\n- [`packages.\u003csystem\u003e`](./nix-src/nu-libs-and-plugins.nix): a set of pre-packaged\n  nushell libraries and plugins (see below)\n\n## Pre-packaged nushell libraries \u0026 plugins\n\nThis flake also provides as Nix derivations some nushell libraries and\nplugins, so you don't have to write nix derivations for them and deal with\ntheir own dependencies. All plugins from crates.io (ie. every crate named\n`nu_plugin_*`) are procedurally packaged, but their system dependencies\nhave to be added on a [case-by-case fashion](./nix-src/plugin-sysdeps.nix).\nBesides, plugins are tested to check that they can be loaded with the latest\nNushell version (notably, some may build successfully but not be usable\nbecause they use too old a version of the `nu-plugin` or `nu-protocol` crates).\n\nSee the [garnix build results](https://garnix.io/repo/YPares/nushellWith)\nto know which plugins failed to build or load, and [this list from\n`awesome-nu`](https://github.com/nushell/awesome-nu/blob/main/plugin_details.md)\nto check which plugins are based on an up-to-date version of the nu crates.\n\nPRs to add new entries to the list of [packaged libraries \u0026\nplugins](./nix-src/nu-libs-and-plugins.nix) are very much welcome.\n\n## Limitations \u0026 important notes\n\nOnly plugins written in Rust can be passed to `plugins.source`, and they will\nbe built by [`crane`](https://github.com/ipetkov/crane). `plugins.nix` on the\nother hand accepts any derivation that builds a proper plugin, ie. that builds\na `$out/bin/nu_plugin_*` executable which implements the [nu-plugin\nprotocol](https://www.nushell.sh/contributor-book/plugins.html). In both\ncases, the plugin executable is automatically discovered by `nushellWith`.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fypares%2Fnushellwith","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fypares%2Fnushellwith","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fypares%2Fnushellwith/lists"}