Giter Club home page Giter Club logo

Comments (11)

juliosueiras avatar juliosueiras commented on May 15, 2024 8

another candidate could be nix, since it work on almost any distro(fedora silverblue will require workaround using this though)

and all the currently listed tools are in the repo already

example:

shell.nix

with import <nixpkgs> {};

mkShell {
  buildInputs = [
    bat
    exa
    lsd
    delta
    dust
    duf
    broot
    fd
    ripgrep
    ag
    fzf
    mcfly
    choose
    jq
    sd
    cheat
    tldr
    bottom
    glances
    gtop
    hyperfine
    gping
    procs
    httpie
    curlie
    xh
    zoxide
    dogdns
  ];
}

and run nix-shell (this is also a disposable shell)

Demo: (from fresh ubuntu)

asciicast

from modern-unix.

dlaehnemann avatar dlaehnemann commented on May 15, 2024 3

Basically, conda / mamba is something like npm, just agnostic of languages. So you can package anything for it. And isolating environments from each other is actually a great plus in my view -- you can use it to install tools into separate environments, whose dependencies conflict. That is something you can't do with a package manager that installs everything system-wide. But I think we're trailing off-topic, here... 😅

from modern-unix.

dlaehnemann avatar dlaehnemann commented on May 15, 2024 2

I would suggest something like conda-forge for the packaging, which then allows installation without admin privileges and on Windows, Linux and Mac OSX:
https://conda-forge.org/

It would mean ensuring all the packages are in conda-forge individually, and they could then be installed into a joint environment using conda or its faster drop-in replacement mamba. With the latter, creating a named environment tools for the tools already on conda-forge is as easy as the following (after having installed mamba):

mamba create -n tools bat exa broot ripgrep fzf jq cheat glances hyperfine httpie zoxide

To use the tools, you just have to activate the respective environment with:

conda activate tools

And you can of course create separate environments for separate sets of tools, whichever you often use together. I went through all the packages currently in the list and a bunch are already on conda-forge. Everything that has a link, is are already there:

For each of the linked packages, a quick install help could be included in the list, with a linkout to mamba installation to get you going.

For some of the other packages, they seem to be packaged for Debian, at least. So one could do a similar search and include relevant info in the list wherever that is the case. And then it's simply a question of contributions from users of different platforms to fill the installation info.

from modern-unix.

ibraheemdev avatar ibraheemdev commented on May 15, 2024 2

I'm spoiled by pacman and the AUR so I don't really have a need for this 😄 It's an interesting idea though.

from modern-unix.

juliosueiras avatar juliosueiras commented on May 15, 2024 2
  1. vagrant ssh is just to show case that I am in a clean fresh ubuntu (vagrant is a tool to create/manage vms), since the purpose to show how to use it from a clean ubuntu with no nix installed

  2. asciinema

  3. all the deps are under /nix/store , so if you do nix-shell again, it won't need to redownload it, and the /nix/store is created as part of the nix installation process, lastly, if you do want remove the actual deps files you can just do nix-collect-garbage

from modern-unix.

yozachar avatar yozachar commented on May 15, 2024 1

How about docker?

I'm learning about all these cools stuff so I'm still green. Suppose I want these commands on a *nix-based system, how can I achieve that?

  • In Arch you can have package groups, which is cool.
  • There are other packages like coreutils which provides a set of commands. I don't exactly how it's packed - do they download all dependencies and put them in the path or is it a big package with all the sub-utilities (like box within box). I'd love to know.

Docker would be a cross platform solution. A docker file instructs to pull appropriate binaries from individual repositories (suppose they provide one) and then places them in path. If binaries don't exists then the docker file can instruct to initiate a GitHub action or CI/CD pipeline to build binaries (that might be messy).

PS: It looks like a stupid idea.. but nonetheless exciting..

from modern-unix.

dlaehnemann avatar dlaehnemann commented on May 15, 2024 1

I find that Docker usually leads to a lot of overhead. First of all, you have to get Docker to run on your system, which has been cumbersome for me in the past (haven't tried recently, though). And then you drag along a full operating system just to get a couple of programs to run. And you will only be able to operate inside the Docker container. So I think Docker is good if you want to make a system reproducible, but cumbersome when you just want things to work on the command line (which I think these tools are meant to).

For getting things to work easily, I really like the conda / mamba system. Easy to setup and easy to use. And most things on conda-forge are truly cross-platform.

from modern-unix.

ebb-earl-co avatar ebb-earl-co commented on May 15, 2024 1

Instead of Docker, if you're on Fedora like me you could make a toolbox out of all of the tools in this repository. As the name implies,

Toolbox makes it easy to use a containerized environment for everyday software development and debugging
...
In other words, toolbox containers look, feel and behave like a standard Linux command line environment.

So you get the benefit of containerization (using Podman under the hood which is arguably more lightweight than Docker) at the same time as the benefit of your own, cozy command-line environment with all of these modern Unix tools.

from modern-unix.

yozachar avatar yozachar commented on May 15, 2024

Ah thanks for the input. I don't think you've to have a whole OS layer to install docker apps.. (I need a double check though). Conda is great but then again I have had some dependency issues and the conda env needs to be active right.. I'm looking for something like npm or pdm, but one is for JS and other Python... mm.

from modern-unix.

ebb-earl-co avatar ebb-earl-co commented on May 15, 2024

@juliosueiras I've head about NixOS and especially its manager that you show here, but man is this cool and exactly in line with what I imagined! A couple of questions, though:

  1. What does vagrant ssh, your first command in the above video (GIF?), do?
  2. How in the world did you make a video (or GIF?) that allows me to copy the text from the video!? That felt like magic
  3. When you say that running nix-shell is disposable, do you mean that all of the dependencies are download in a temporary directory, or is it something particular to Nix that I don't have a feeling for?

from modern-unix.

ebb-earl-co avatar ebb-earl-co commented on May 15, 2024

@juliosueiras amazing, thank you for the information. Looks like it's time to learn some Nix, because it exactly fits the bill for making a container-like environment for all of the modern-unix tools!

from modern-unix.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.