{"id":13702392,"url":"https://github.com/shivamashtikar/haskell-setup","last_synced_at":"2025-05-05T04:31:01.622Z","repository":{"id":108935677,"uuid":"219292951","full_name":"shivamashtikar/haskell-setup","owner":"shivamashtikar","description":"Haskell setup for vscode with cabal and nix","archived":false,"fork":false,"pushed_at":"2019-11-04T15:59:19.000Z","size":620,"stargazers_count":8,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-13T09:40:53.584Z","etag":null,"topics":["cabal","haskell","ide","nix","nix-shell","vscode"],"latest_commit_sha":null,"homepage":"","language":"Vim script","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/shivamashtikar.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}},"created_at":"2019-11-03T11:51:22.000Z","updated_at":"2024-07-01T07:56:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"631e1549-ff01-46e7-84e9-4f786f33ac2d","html_url":"https://github.com/shivamashtikar/haskell-setup","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/shivamashtikar%2Fhaskell-setup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shivamashtikar%2Fhaskell-setup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shivamashtikar%2Fhaskell-setup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shivamashtikar%2Fhaskell-setup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shivamashtikar","download_url":"https://codeload.github.com/shivamashtikar/haskell-setup/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252439510,"owners_count":21748018,"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":["cabal","haskell","ide","nix","nix-shell","vscode"],"created_at":"2024-08-02T21:00:35.042Z","updated_at":"2025-05-05T04:31:01.179Z","avatar_url":"https://github.com/shivamashtikar.png","language":"Vim script","readme":"# My Haskell IDE Setup with cabal and nix\n\nAn inteligent IDE makes development a child's play. In a strongly typed environment, being able infer `types` while coding makes life haven!\n\nI use `vscode` for most of the development and somtimes `nvim`. Projects I work on are usually build with `nix` + `cabal`, so I needed plugins which will extract the capabilities of `nix` as well.\n\n## Plugins\n\nFollwing are the plugins list for `vscode` for haskell projects.\n\n### [direnv](https://github.com/direnv/direnv#install)\n\n  It let us load and unload environment variables depending on the current directory.\n  After installing bot `direnv` executable and vscode plugin, [follow this instructions](https://github.com/direnv/direnv/wiki/Nix) to add `use_nix` function in `~/.direnvrc`. Then under your projects root folder create a `.envrc` file which will only have\n\n  ``` shell\n  use_nix -s shell.nix\n  ```\n\n  Here is how my [~/.direnvrc](./.direnvrc) looks like. Next time you open your project, vscode will automatically load `nix` environment for you.\n\n### [ghcide](https://github.com/digital-asset/ghcide)\n\n  It provides all the necessary functionality that we need. It displays `type`, `dignostics`, `jump to definition` and `quick fixes` features. After installing [executable](https://github.com/digital-asset/ghcide) and [plugin](https://marketplace.visualstudio.com/items?itemName=DigitalAssetHoldingsLLC.ghcide) you will be able to see type and definition.\n\n### [haskell-linter](https://marketplace.visualstudio.com/items?itemName=hoovercj.haskell-linter)\n\n   It highlights hlint warnings and errors inline and provides a code-action to accept hlint suggestions. You need to install `hlint` for this plugin. You can also add `.hlint.yaml` in your projects root directory.\n\n### [haskell-ghcid](https://marketplace.visualstudio.com/items?itemName=ndmitchell.haskell-ghcid)\n\n  Integrates vscode with [ghcid](https://github.com/ndmitchell/ghcid)\n\n### [Haskell Code Formatter](https://marketplace.visualstudio.com/items?itemName=sergey-kintsel.haskell-formatter-vscode-extension)\n\n  This will help you format your code. Will make more readable and preety.\n\n### [stylish-haskell](https://marketplace.visualstudio.com/items?itemName=vigoo.stylish-haskell)\n\n  Another code formatter for Haskell.\n\n### [Haskell Syntax Highlighting](https://marketplace.visualstudio.com/items?itemName=justusadam.language-haskell)\n\n  Support for the Haskell programming language in visual studio code.\n\n### [TabNine](https://marketplace.visualstudio.com/items?itemName=TabNine.tabnine-vscode)\n\n  It indexes your whole project and provides useful suggestions.\n\n### [hoogel-vscode](https://marketplace.visualstudio.com/items?itemName=jcanero.hoogle-vscode)\n\n  Makes hoogle search easier.\n\n### [Trailing Spaces](https://marketplace.visualstudio.com/items?itemName=shardulm94.trailing-spaces)\n\n  highlight trailing spaces.\n\n## Fonts\n\n### [Fira Code](https://github.com/tonsky/FiraCode)\n\n  Monospaced font with programming ligatures\n\n## Aditional\n\n- If you use `zsh` then you can add this plugin [zsh-nix-shell](https://github.com/chisui/zsh-nix-shell) which will lets you use zsh in nix-shell shell\n\n- Here is my [.nvimrc](./.nvimrc) and [.nvimrc.plug](./.nvimrc.plug) with haskell plugins.\n\n## Screenshots\n\n![Code](./screenshots/code-1.png)\n![Code](./screenshots/code-2.png)\n","funding_links":[],"categories":["IDE"],"sub_categories":["Dependencies analysers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshivamashtikar%2Fhaskell-setup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshivamashtikar%2Fhaskell-setup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshivamashtikar%2Fhaskell-setup/lists"}