HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
freshshell
fresh
Ruby2012–2021
freshshell / fresh

fresh

Keep your dotfiles fresh.

6Distinct people
10Mentions
0Explicit recommenders
1.2KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Keep your dotfiles fresh.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year10 dated mentions

Observed mentions: 2012-11-12 03:00:57 UTC to 2021-09-15 19:31:17 UTC.

02462012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments20122013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC606
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC202
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC101
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC000
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC000
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC000
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101

What Hacker News says

10 sources
This is true. I usually call what the OP calls 'program managers' 'distro package managers' and what the OP calls 'module managers' 'language-specific package managers'. Neither pair of terms quite captures everything even though we do probably want a bipartite division here. For example, Conda is (sort of) language-specific, being for Python, but it also tries to put together a coherent distribution. At the same time, it also includes multiple languages because it wants to include native dependencies, which usually means C and C++ code. Still, Conda is used for development environments and libraries, not necessarily for installing finished programs. For another, Nix is firmly a distro-type package manager, even being used to power a whole Linux distribution. Nixpkgs forms a coherent collection, and only includes redundant versions of thi
Read the rest
ngs as exceptional cases. But Nix doesn't have a global installation system; the 'global' namespace is in Nixpkgs, and it exists only at build time. Each thing you install with Nix is its own 'top-level entity', which the OP describes as characteristic of 'module managers'. But practical Nix use also further complicates things: Nixpkgs is a distro, but the Nix ecosystem also includes overlays that more resemble something like collections of 'modules', as well as tools for ingesting version data entirely from bona fide 'module managers' in a non-destructive way (i.e., you keep your Cargo.lock file or whatever but still just build with Nix) for various language-specific ecosystems. As is usually the case with package management, we're looking at formations which, yes, cluster around technologiea with designs we can reasonably categorize, but are also substantially social or conventional. So sometimes it's useful to think not just of 'types of package managers' but 'types of packaging projects'. Without inventing better terms or thinking of a single hybrid concept that encapsulates both package managers and the packaging projects (collections and communities) associated with them, this gives us an obvious way to relate these exceptional cases to the straightforward ones: Conda and Nix are 'distribution/program manager tech' which has been further put to work for 'module management purposes' by their communities, in somewhat different ways. Maybe there's an analogous case in reverse with npx in the Node world, where what was originally 'module management tech' has been adapted to managing executables that end users want to run, because previously using the 'naive' module management tech (npm) to do that could lead to weird and unnecessary collisions in the global install locations on the disk. (There's also a bit of convergence there with Nix, since npx sort of vendorizes everything and also has you invoke it indirectly, as with `nix run`. And since Nix is also a programming language, it's growing its own 'module management' tech, for now in the form of 'flakes', which is largely modeled on Rust's 'module management'.) We might also identify a third type along these lines in something John Ericson (Ericson2314 here on HN and GH) in the Nix community has also advocated for a model we might call 'snippet extraction' for languages like Nix that are mostly glue code. Something like that is implemented in nix-thunk[1], which you can use to efficiently yank little bits of Nix out of large repositories of mostly non-Nix code. I've also seen something like it for shell snippets to be used in dotfiles[2]. Let's see if I can find that before the HN edit window closes on me. For now, these two tools both seem to pull code without specifying an interface for it (you decide how to use the code/files you pull in when you pull it), but we can also imagine a model that defines an interface for the bits you pull out, a kind of 'pseudo-module extraction' rather than 'snippet extraction'. If you use nix-thunk today to pull in a NixOS module or a flake or something, I guess that's what you're doing. Anyway I think OP is a good place to start in thinking through how to divide up different package management traditions. Source-based vs. binary is probably the other essential one opposition to examine, along with its own exceptional/problematic cases and convergences. — 1: https://github.com/obsidiansystems/nix-thunk 2: https://github.com/freshshell/fresh
In Two types of package managers
Recently spent some time organizing my dotfiles and discovered fresh[1] which I've been using to great success. Both for servers I manage and on my mac. The fact is that most people are going to be reusing (and probably be better of) a lot of code from other well tested dotfiles. `fresh` lets you pick and choose what you want directly from other's repos in addition to adding whatever you want and produces a single bundle (or multiple if you need it). As far as I can tell, its a self contained shell script and does not have any dependencies (if that is a concern). Its definitely worth checking out. [1] https://github.com/freshshell/fresh
In Using GNU Stow to manage your dotfiles
Fresh is great. It lets you pull fragments of dot files from different repositories and combine then into contiguous files. So you could pull some bits from a team repository, have your own customizations on github (so you can share with others), and then have some private bits in a small private repo. Fresh well grab them all and combine then for you. Fresh can also populate your $HOME/bin from various repos. There is a directory[1] of reusable bits, though there are trust/security issues you might want to consider ... [1]https://github.com/freshshell/fresh/wiki/Directory
In Dots - Modularize your dotfiles
The idea with modularizing things is it makes it easy to share the parts that people do want the same. Where I work we have slowly but surely come to an agreement on most of our git aliases. That's why we built [fresh] a similar tool to allow us to share the parts we want to. [fresh] allows us to easily override anything we don't like and keep the parts we do like up to date. My [freshrc] file is an example of mixing other peoples aliases and bin files with a collection of my own config. [fresh]: https://github.com/freshshell/fresh [freshrc]: https://github.com/twe4ked/dotfiles/blob/master/freshrc
In Dots - Modularize your dotfiles

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.