Distro Focuses - eviltoast
  • Zozano@lemy.lol
    link
    fedilink
    English
    arrow-up
    10
    ·
    8 days ago

    I’m still a Linux noob all things considered, and I’ve been using NixOS for six months or more.

    It is HARD, but I see the true value of it. I will never need to reinstall Linux because I broke it, that’s simply impossible.

    If I ever need to migrate my system, it’s all backed up to github. With a single

    Bash update.sh
    

    every single .config file backed up, system upgraded, all packages updated.

    I just love Nix, it’s the perfect OS for me.

    Now I just need to learn how to use flakes…

    Sidebar: I’ve never asked before, but maybe someone can help me out. If I install a flake of an application, am I supposed to add it to the existing flake, or can I modulate flakes?

    I’ve noticed when installing the nixvim flake it generates a new flake and it runs when I issue the

    nix run ~/.dotfiles/nixvim/flake.nix
    

    command, but I don’t want to have to run that command every time. I feel like making a fish abbreviation isn’t the correct way of doing this.

    • tinkling4938@lemmynsfw.com
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      7 days ago

      So I’ve only been using nix about a year and only used flakes. I use in two ways.

      First, I have my main nix flake. Most everything is controlled from that. It has several outputs from full blown nixos builds per host or some home manager builds for non-nixos systems.

      Third-party flakes I use as inputs to my own flake then use the override system to inject them into nixpkgs. Then I just install whatever like normal from nixpkgs. I can either override an existing pkg (neovim nightly replaces regular neovim for me), or you can just add as a new package to nixpkgs by using a different attribute name.

      Second way is for projects with their own repo. I’ll add a project flake that has a devshell with direnv so as soon as I enter that directory it sets up a sort of virtual environment just for that project. You can add outputs to it so others can use as a third-party flake.

      My main starting point was https://github.com/Misterio77/nix-config for this design.