{"id":13721284,"url":"https://github.com/dom96/choosenim","last_synced_at":"2025-04-07T03:19:50.293Z","repository":{"id":37546334,"uuid":"82104707","full_name":"dom96/choosenim","owner":"dom96","description":"Tool for easily installing and managing multiple versions of the Nim programming language.","archived":false,"fork":false,"pushed_at":"2024-04-03T18:41:11.000Z","size":292,"stargazers_count":684,"open_issues_count":62,"forks_count":64,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-03-30T23:23:57.277Z","etag":null,"topics":["hacktoberfest","installer","nim","toolchains"],"latest_commit_sha":null,"homepage":"","language":"Nim","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dom96.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.markdown","contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2017-02-15T20:43:58.000Z","updated_at":"2025-03-25T05:31:29.000Z","dependencies_parsed_at":"2024-10-24T19:34:09.686Z","dependency_job_id":null,"html_url":"https://github.com/dom96/choosenim","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dom96%2Fchoosenim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dom96%2Fchoosenim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dom96%2Fchoosenim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dom96%2Fchoosenim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dom96","download_url":"https://codeload.github.com/dom96/choosenim/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247584112,"owners_count":20962075,"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":["hacktoberfest","installer","nim","toolchains"],"created_at":"2024-08-03T01:01:14.989Z","updated_at":"2025-04-07T03:19:50.275Z","avatar_url":"https://github.com/dom96.png","language":"Nim","funding_links":[],"categories":["Build Systems/Package Management","Development Tools","Nim"],"sub_categories":["Build Systems / Package Management"],"readme":"# choosenim\n\nchoosenim installs the [Nim programming language](https://nim-lang.org) from\nofficial downloads and sources, enabling you to easily switch between stable\nand development compilers.\n\nThe aim of this tool is two-fold:\n\n* Provide an easy way to install the Nim compiler and tools.\n* Manage multiple Nim installations and allow them to be selected on-demand.\n\n## Typical usage\n\nTo select the current `stable` release of Nim:\n\n```bash\n$ choosenim stable\n  Installed component 'nim'\n  Installed component 'nimble'\n  Installed component 'nimgrep'\n  Installed component 'nimpretty'\n  Installed component 'nimsuggest'\n  Installed component 'testament'\n   Switched to Nim 1.0.0\n$ nim -v\nNim Compiler Version 1.0.0 [Linux: amd64]\n```\n\nTo update to the latest `stable` release of Nim:\n\n```bash\n$ choosenim update stable\n```\n\nTo display which versions are currently installed:\n\n```bash\n$ choosenim show\n  Selected: 1.6.6\n   Channel: stable\n      Path: /home/dom/.choosenim/toolchains/nim-1.6.6\n\n  Versions:\n            #devel\n          * 1.6.6\n            1.0.0\n            #v1.0.0\n```\n\nVersions can be selected via `choosenim 1.6.6` or by branch/tag name via `choosenim #devel` (note that selecting branches is likely to require Nim to be bootstrapped which may be slow).\n\n## Installation\n\n### Windows\n\nDownload the latest Windows version from the\n[releases](https://github.com/dom96/choosenim/releases) page (the .zip file, for example here is [``v0.7.4``](https://github.com/dom96/choosenim/releases/download/v0.7.4/choosenim-0.7.4_windows_amd64.zip)).\n\nExtract the zip archive and run the ``runme.bat`` script. Follow any on screen\nprompts and enjoy your new Nim and choosenim installation.\n\n----\n\nThere is also a third-party project to provide an installer for choosenim,\nyou can find it [here](https://gitlab.com/ArMour85/choosenim-setup) (note that\nthis isn't vetted by the Nim team so you do so at your own risk).\n\n### Unix\n\n```\ncurl https://nim-lang.org/choosenim/init.sh -sSf | sh\n```\n```\nwget -qO - https://nim-lang.org/choosenim/init.sh | sh\n```\n\n**Optional:** You can specify the initial version you would like the `init.sh`\n              script to install by specifying the ``CHOOSENIM_CHOOSE_VERSION``\n              environment variable.\n\n## How choosenim works\n\nSimilar to the likes of ``rustup`` and ``pyenv``, ``choosenim`` is a\n_toolchain multiplexer_. It installs and manages multiple Nim toolchains and\npresents them all through a single set of tools installed in ``~/.nimble/bin``.\n\nThe ``nim``, ``nimble`` and other tools installed in ``~/.nimble/bin`` are\nproxies that delegate to the real toolchain. ``choosenim`` then allows you\nto change the active toolchain by reconfiguring the behaviour of the proxies.\n\nThe toolchains themselves are installed into ``~/.choosenim/toolchains``. For\nexample running ``nim`` will execute the proxy in ``~/.nimble/bin/nim``, which\nin turn will run the compiler in ``~/.choosenim/toolchains/nim-1.0.0/bin/nim``,\nassuming that 1.0.0 was selected.\n\n### How toolchains are installed\n\n``choosenim`` downloads and installs the official release\n[binaries](https://nim-lang.org/install.html) on Windows and Linux. On other\nplatforms, the official source [release](https://nim-lang.org/install_unix.html)\nis downloaded and built. This operation is only performed once when a new\nversion is selected.\n\nAs official binaries are made available for more platforms, ``choosenim`` will\ninstall them accordingly.\n\n## Dependencies\n\n|            |           Windows             |        Linux            |        macOS (*)      |\n|------------|:-----------------------------:|:-----------------------:|:---------------------:|\n| C compiler | *Downloaded automatically*    |      gcc/clang          |      gcc/clang        |\n| OpenSSL    |             N/A               |         N/A             |         N/A           |\n| curl       |             N/A               | Any recent version (※) | Any recent version    |\n\n\\* Many macOS dependencies should already be installed. You may need to install\n   a C compiler however. More information on dependencies is available\n   [here](https://nim-lang.org/install_unix.html).\n   \n※ Some users needed to install `libcurl4-gnutls-dev` (see [here](https://github.com/dom96/choosenim/issues/303))\n\nGit is required when installing #HEAD or a specific commit of Nim. The `unxz`\nbinary is optional but will allow choosenim to download the smallest tarballs.\n\n## Usage\n\n```\n\u003e choosenim -h\nchoosenim: The Nim toolchain installer.\n\nChoose a job. Choose a mortgage. Choose life. Choose Nim.\n\nUsage:\n  choosenim \u003cversion/path/channel\u003e\n\nExample:\n  choosenim 1.0.0\n    Installs (if necessary) and selects version 0.16.0 of Nim.\n  choosenim stable\n    Installs (if necessary) Nim from the stable channel (latest stable release)\n    and then selects it.\n  choosenim #head\n    Installs (if necessary) and selects the latest current commit of Nim.\n    Warning: Your shell may need quotes around `#head`: choosenim \"#head\".\n  choosenim ~/projects/nim\n    Selects the specified Nim installation.\n  choosenim update stable\n    Updates the version installed on the stable release channel.\n  choosenim versions [--installed]\n    Lists the available versions of Nim that choosenim has access to.\n\nChannels:\n  stable\n    Describes the latest stable release of Nim.\n  devel\n    Describes the latest development (or nightly) release of Nim taken from\n    the devel branch.\n\nCommands:\n  update    \u003cversion/channel\u003e    Installs the latest release of the specified\n                                 version or channel.\n  show                           Displays the selected version and channel.\n  show      path                 Prints only the path of the current Nim version.\n  update    self                 Updates choosenim itself.\n  versions  [--installed]        Lists available versions of Nim, passing\n                                 `--installed` only displays versions that\n                                 are installed locally (no network requests).\n\nOptions:\n  -h --help             Show this output.\n  -y --yes              Agree to every question.\n  --version             Show version.\n  --verbose             Show low (and higher) priority output.\n  --debug               Show debug (and higher) priority output.\n  --noColor             Don't colorise output.\n\n  --choosenimDir:\u003cdir\u003e  Specify the directory where toolchains should be\n                        installed. Default: ~/.choosenim.\n  --nimbleDir:\u003cdir\u003e     Specify the Nimble directory where binaries will be\n                        placed. Default: ~/.nimble.\n  --firstInstall        Used by install script.\n```\n\n## Analytics\n\nCheck out the\n[analytics](https://github.com/dom96/choosenim/blob/master/analytics.md)\ndocument for details.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdom96%2Fchoosenim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdom96%2Fchoosenim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdom96%2Fchoosenim/lists"}