{"id":23879340,"url":"https://github.com/ceedubs/unison-nix","last_synced_at":"2025-05-09T00:04:07.317Z","repository":{"id":37212548,"uuid":"302770996","full_name":"ceedubs/unison-nix","owner":"ceedubs","description":"Nix support for the Unison programming language","archived":false,"fork":false,"pushed_at":"2025-05-05T14:40:47.000Z","size":279,"stargazers_count":57,"open_issues_count":4,"forks_count":12,"subscribers_count":6,"default_branch":"trunk","last_synced_at":"2025-05-09T00:04:01.061Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/ceedubs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2020-10-09T23:05:20.000Z","updated_at":"2025-05-05T14:40:47.000Z","dependencies_parsed_at":"2023-02-17T00:00:52.623Z","dependency_job_id":"85ff2575-4289-4701-a757-0385ca254034","html_url":"https://github.com/ceedubs/unison-nix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceedubs%2Funison-nix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceedubs%2Funison-nix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceedubs%2Funison-nix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceedubs%2Funison-nix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ceedubs","download_url":"https://codeload.github.com/ceedubs/unison-nix/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253166514,"owners_count":21864475,"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":[],"created_at":"2025-01-03T22:51:34.758Z","updated_at":"2025-05-09T00:04:07.305Z","avatar_url":"https://github.com/ceedubs.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"# unison-nix\n\n[Nix] support for the [Unison] programming language\n\n## usage\n\n**NOTE:** If you don't already have Nix installed, follow [the instructions on the Nix site](https://nixos.org/download.html).\n\n### install Unison code manager\n\n**If your version of Nix supports [Nix flakes]**:\n\n```\nnix profile install github:ceedubs/unison-nix#ucm-bin\n```\n\n**Use from home-manager:**\n\nIn your home-manager's `flake.nix`, reference this repository under `inputs`, e.g.:\n\n```nix\nunison-lang = {\n  url = \"github:ceedubs/unison-nix\";\n  inputs.nixpkgs.follows = \"nixpkgs\";\n};\n```\n\nthen add the unison-lang overlay:\n\n```nix\npkgs = import nixpkgs {\n  inherit system;\n  overlays = [ unison-lang.overlay ];\n};\n```\n\nFinally, in your `home.nix`, just add the `unison-ucm` package as you normally would.\n\nAn example is available [here](https://github.com/bbarker/dotfiles/tree/6b0c9c2b5a59e55a4a25700fe0833e5a95d7f84c).\n\n**Older versions of Nix:**\n\n```\nnix-env -iA unison-ucm -f https://github.com/ceedubs/unison-nix/archive/trunk.tar.gz\n```\n\n### try out Unison without installing it to your PATH/Nix profile\n\n**If your version of Nix supports [Nix flakes]:**\n\n```\nnix run github:ceedubs/unison-nix#ucm-bin\n```\n\n**Older versions of Nix:**\n\n```\nnix-build https://github.com/ceedubs/unison-nix/archive/trunk.tar.gz -A unison-ucm\n```\n\nThis will create a symlink named `result` in your current directory. Now run:\n\n```sh\n./result/bin/ucm\n```\n\nOnce you are done trying out Unison you can `rm ./result`.\n\n## available packages/tools\n\n* `ucm-bin`: a binary release of the Unison code manager\n  * This is named `unison-ucm` in the overlay and for older versions of Nix (pre-flakes)\n* `ucm`: a release of the Unison code manager built from source (without some of the niceties provided by `ucm-bin`)\n* `vim-unison`: a vim plugin providing syntax highlighting for Unison files\n  * This is provided as `vimPlugins.vim-unison` in the overlay\n* VS Code extensions\n  * [unison-lang.unison](https://marketplace.visualstudio.com/items?itemName=unison-lang.unison) – the official extension from the [Unison](https://www.unison-lang.org/) team, provides syntax highlighting and LSP support\n  * [TomSherman.unison-ui](https://marketplace.visualstudio.com/items?itemName=TomSherman.unison-ui) – adds a codebase explorer sidebar\n* `overlay`: A nixpkgs overlay that adds the Unison packages in the relevant places (ex: `vim-unison` in `vimPlugins.vim-unison`)\n* `buildUnisonShareProject` a function for turning functions in a Unison Share project into executable derivations.\n  * See [unison-nix-snake](https://github.com/ceedubs/unison-nix-snake) for an example.\n  * See [nix/build-share-project.nix](nix/build-share-project.nix) for documentation.\n* `buildUnisonFromTranscript` a lower-level function for turning a Unison transcript into an executable derivation.\n  * See [nix/build-from-transcript.nix](nix/build-from-transcript.nix) for documentation.\n\nIn the future this repository would be a natural home for derivations for other Unison tools.\n\n**NOTE**: the [unison github repo](https://github.com/unisonweb/unison) repo has a `flake.nix` that you can use with `nix develop` to get an environment with the expected versions of `stack`, `ormolu`, etc.\n\n## FAQ\n\n*Fabricated/Anticipated Questions*\n\n### Why don't these derivations live in nixpkgs?\n\nThe [nixpkgs repository][nixpkgs] was the original home of Unison Nix dervations, but Unison is evolving quickly and getting Unison updates merged into nixpkgs turned out to be a bottleneck in getting these new features and bug fixes out to Unison users.\n\n[Nix]: https://nixos.org/\n[Nix Flakes]: https://nixos.wiki/wiki/Flakes\n[nixpkgs]: https://github.com/nixos/nixpkgs\n[Stack]: https://docs.haskellstack.org/en/stable/README/\n[Unison]: https://www.unisonweb.org/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceedubs%2Funison-nix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fceedubs%2Funison-nix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceedubs%2Funison-nix/lists"}