{"id":13538949,"url":"https://github.com/ssleert/nitch","last_synced_at":"2026-02-24T11:33:55.795Z","repository":{"id":45209538,"uuid":"511540716","full_name":"ssleert/nitch","owner":"ssleert","description":"nitch - incredibly fast system fetch written in nim","archived":false,"fork":false,"pushed_at":"2024-06-22T19:57:29.000Z","size":805,"stargazers_count":639,"open_issues_count":33,"forks_count":62,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-13T02:48:08.916Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Nim","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/ssleert.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-07T13:34:25.000Z","updated_at":"2026-02-12T22:27:13.000Z","dependencies_parsed_at":"2024-08-01T09:22:20.359Z","dependency_job_id":"e490884c-29b1-447b-abb6-02ce1991c30d","html_url":"https://github.com/ssleert/nitch","commit_stats":null,"previous_names":["unxsh/nitch"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/ssleert/nitch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssleert%2Fnitch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssleert%2Fnitch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssleert%2Fnitch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssleert%2Fnitch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ssleert","download_url":"https://codeload.github.com/ssleert/nitch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssleert%2Fnitch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29780604,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T10:45:18.109Z","status":"ssl_error","status_checked_at":"2026-02-24T10:45:09.911Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-08-01T09:01:18.124Z","updated_at":"2026-02-24T11:33:55.774Z","avatar_url":"https://github.com/ssleert.png","language":"Nim","readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://cdn.discordapp.com/attachments/955362477137362954/996769449480826971/2022-07-13_16-25.png\" width=\"350px\"\u003e\n\n# `NiTch`\n\n\u003ch3\u003e\n  incredibly fast system fetch written in \u003ccode\u003enim👑\u003c/code\u003e\n\u003c/h3\u003e\n\u003cbr\u003e\n\n![Maintenance](https://shields.io/maintenance/yes/2022?style=for-the-badge)\n![License](https://shields.io/github/license/unxsh/nitch?style=for-the-badge)\n![Commits](https://shields.io/github/commit-activity/m/unxsh/nitch?style=for-the-badge)\n\n![GitHub Repo stars](https://img.shields.io/github/stars/unxsh/nitch?style=for-the-badge)\n![GitHub issues](https://img.shields.io/github/issues/unxsh/nitch?style=for-the-badge)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/unxsh/nitch?style=for-the-badge)\n\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/unxsh/nitch?style=for-the-badge)\n\n\u003c/div\u003e\n\n# Description 📖\n\n\u003cimg src=\"https://media.discordapp.net/attachments/955362477137362954/997839005460725841/2022-07-16_15-15_1.png\" width=\"42%\" align=\"right\"\u003e\n\n`nitch` is a small and incredibly fast system fetch written fully in `nim👑` without any dependencies, on my pc\nit executes in around 1.70 miliseconds.\n\nThe source code of `nitch` is highly documented and I hope it will act as a learning resource for nim\nand linux systems architecture\n\nIf anything in the source code is unclear or is lacking in its explanation, open an issue. Sometimes you get too close to something and you fail to see the \"bigger picture\"!\n\n\nbtw written in `nim👑`\n\nwhy `nim👑`? because it's fast and simple\n\n\u003cbr\u003e\n\n# Installation ☁️\n```fish\nwget https://raw.githubusercontent.com/unxsh/nitch/main/setup.sh \u0026\u0026 sh setup.sh\n```\n\n# Usage 🪨\n```\nnitch\n```\n\nflags:\n```\n -f --fetch   | return fetch about system\n -h --help    | return help message\n -v --version | return version of program\n```\n\n\u003cbr\u003e\n\n# Configuration ⚙️\n### `nitch` is configured by changing the source code\n### `src/funcs/drawing.nim` - config file\n```nim\nimport std/terminal       # import standard terminal lib\nimport getDistroId        # import to get distro id through /etc/os-release\n#import ../assets/logos   # uncomment if you use your own logo\nimport ../nitches/[getUser, getHostname,\n                   getDistro, getKernel,\n                   getUptime, getShell,\n                   getPkgs, getRam,\n                   getLogo, getLogoColor]  # import nitches to get info about user system\n\n# the main function for drawing fetch\nproc drawInfo*() =\n  let  # distro id (arch, manjaro, debian)\n    distroId: string = getDistroId()\n\n  let  # logo and it color\n    logoColor: ForegroundColor = getLogoColor(distroId)  # color for logo\n    defaultLogo: string  = getLogo(distroId)             # default logo from nitch/src/assets/logos\n\n  const  # icons before cotegores\n    userIcon: string   = \" \"  # recomended: \" \" or \"|\u003e\"\n    hnameIcon: string  = \" \"  # recomended: \" \" or \"|\u003e\"\n    distroIcon: string = \"󰻀 \"  # recomended: \"󰻀 \" or \"|\u003e\"\n    kernelIcon: string = \"󰌢 \"  # recomended: \"󰌢 \" or \"|\u003e\"\n    uptimeIcon: string = \" \"  # recomended: \" \" or \"|\u003e\"\n    shellIcon: string  = \" \"  # recomended: \" \" or \"|\u003e\"\n    pkgsIcon: string   = \"󰏖 \"  # recomended: \"󰏖 \" or \"|\u003e\"\n    ramIcon: string    = \"󰍛 \"  # recomended: \"󰍛 \" or \"|\u003e\"\n    colorsIcon: string = \"󰏘 \"  # recomended: \"󰏘 \" or \"-\u003e\"\n    # please insert any char after the icon\n    # to avoid the bug with cropping the edge of the icon\n\n    dotIcon: string = \"\"  # recomended: \"\" or \"■\"\n    # icon for demonstrate colors\n\n  const  # categories\n    userCat: string   = \" user   │ \"  # recomended: \" user   │ \"\n    hnameCat: string  = \" hname  │ \"  # recomended: \" hname  │ \"\n    distroCat: string = \" distro │ \"  # recomended: \" distro │ \"\n    kernelCat: string = \" kernel │ \"  # recomended: \" kernel │ \"-\n    uptimeCat: string = \" uptime │ \"  # recomended: \" uptime │ \"\n    shellCat: string  = \" shell  │ \"  # recomended: \" shell  │ \"\n    pkgsCat: string   = \" pkgs   │ \"  # recomended: \" pkgs   │ \"\n    ramCat: string    = \" memory │ \"  # recomended: \" memory │ \"\n    colorsCat: string = \" colors │ \"  # recomended: \" colors │ \"\n\n  let  # all info about system\n    userInfo: string     = getUser()          # get user through $USER env variable\n    hostnameInfo: string = getHostname()      # get Hostname hostname through /etc/hostname\n    distroInfo: string   = getDistro()        # get distro through /etc/os-release\n    kernelInfo: string   = getKernel()        # get kernel through /proc/version\n    uptimeInfo: string   = getUptime()        # get Uptime through /proc/uptime file\n    shellInfo: string    = getShell()         # get shell through $SHELL env variable\n    pkgsInfo: string     = getPkgs(distroId)  # get amount of packages in distro\n    ramInfo: string      = getRam()           # get ram through /proc/meminfo\n\n  const  # aliases for colors\n    color1: ForegroundColor = fgRed\n    color2: ForegroundColor = fgYellow\n    color3: ForegroundColor = fgGreen\n    color4: ForegroundColor = fgCyan\n    color5: ForegroundColor = fgBlue\n    color6: ForegroundColor = fgMagenta\n    color7: ForegroundColor = fgWhite\n    color8: ForegroundColor = fgBlack\n    color0: ForegroundColor = fgDefault\n\n  # colored out\n  stdout.styledWrite(styleBright, logoColor, defaultLogo)\n  stdout.styledWrite(styleBright, \"  ╭───────────╮\\n\")\n  stdout.styledWrite(styleBright, \"  │ \", color1, userIcon, color0, userCat, color1, userInfo, \"\\n\")\n  stdout.styledWrite(styleBright, \"  │ \", color2, hnameIcon, color0, hnameCat, color2, hostnameInfo, \"\\n\")\n  stdout.styledWrite(styleBright, \"  │ \", color3, distroIcon, color0, distroCat, color3, distroInfo, \"\\n\")\n  stdout.styledWrite(styleBright, \"  │ \", color4, kernelIcon, color0, kernelCat, color4, kernelInfo, \"\\n\")\n  stdout.styledWrite(styleBright, \"  │ \", color5, uptimeIcon, color0, uptimeCat, color5, uptimeInfo, \"\\n\")\n  stdout.styledWrite(styleBright, \"  │ \", color6, shellIcon, color0, shellCat, color6, shellInfo, \"\\n\")\n  stdout.styledWrite(styleBright, \"  │ \", color1, pkgsIcon, color0, pkgsCat, color1, pkgsInfo, \"\\n\")\n  stdout.styledWrite(styleBright, \"  │ \", color2, ramIcon, color0, ramCat, fgYellow, ramInfo, \"\\n\")\n  stdout.styledWrite(styleBright, \"  ├───────────┤\\n\")\n  stdout.styledWrite(styleBright, \"  │ \", color7, colorsIcon, color0, colorsCat, color7, dotIcon, \" \", color1, dotIcon, \" \", color2, dotIcon, \" \", color3, dotIcon, \" \", color4, dotIcon, \" \", color5, dotIcon, \" \", color6, dotIcon, \" \", color8, dotIcon, \"\\n\")\n  stdout.styledWrite(styleBright, \"  ╰───────────╯\\n\\n\")\n```\n\n# Building 📦\n### 0) install [nim](https://nim-lang.org/)\n\n### 1) clone repo\n```fish\ngit clone https://github.com/unxsh/nitch.git\n```\n### 2) change dir to `nitch`\n```fish\ncd nitch/\n```\n\n### 3) build program with `nimble`\n```fish\nnimble build\n```\nAfter that you will get a ready-made binary file in the root directory of the project.\n\n\u003cbr\u003e\n\n# File architecture 📁\n```fish\nnitch\n  ├── LICENSE\n  ├── nitch\n  ├── nitch.nimble\n  ├── README.md\n  ├── src\n  │   ├── assets\n  │   │   ├── assets.nim\n  │   │   └── logos.nim\n  │   ├── flags\n  │   │   └── argParser.nim\n  │   ├── funcs\n  │   │   ├── drawing.nim\n  │   │   ├── packages\n  │   │   │   └── getPacmanPkgs.nim\n  │   │   └── perform.nim\n  │   ├── nitches\n  │   │   ├── getDistro.nim\n  │   │   ├── getHostname.nim\n  │   │   ├── getKernel.nim\n  │   │   ├── getPkgs.nim\n  │   │   ├── getRam.nim\n  │   │   ├── getShell.nim\n  │   │   ├── getUptime.nim\n  │   │   └── getUser.nim\n  │   ├── nitch.nim\n  │   └── nitch.nim.cfg\n  └── templates\n      ├── cfgParser\n      ├── cfgParser.nim\n      ├── data.dat\n      ├── listFiles.nim\n      ├── readLine.nim\n      ├── refTest.nim\n      ├── shellCheck.nim\n      ├── test.cfg\n      ├── testFile\n      └── testProc.nim\n\n  7 directories, 30 files\n```\n\n# Thanks for ideas \u0026 examples 💬\n- [pfetch](https://github.com/dylanaraps/pfetch/)\n- [neofetch](https://github.com/dylanaraps/neofetch)\n- [paleofetch](https://github.com/ss7m/paleofetch)\n- [rxfetch](https://github.com/Mangeshrex/rxfetch)\n- [nerdfetch](https://github.com/ThatOneCalculator/NerdFetch)\n","funding_links":[],"categories":["Nim","Operation System","Terminal"],"sub_categories":["GNU/Linux Only","Fetch"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssleert%2Fnitch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fssleert%2Fnitch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssleert%2Fnitch/lists"}