338
you are viewing a single comment's thread
view the rest of the comments
[-] Vuraniute@vlemmy.net 0 points 1 year ago

Right now I have a VM running NixOS, so I can figure things out. What annoys me is that when asked to list all the programs I want to use, I struggle, but installing things on the fly is so much more easier. Nix-env does that, but it doesn't add it to a /etc/nixos/configuration.nix, does it? Also, I know about home-manager, but I've heard it's extrememly difficult.

[-] Laser@feddit.de 4 points 1 year ago* (last edited 1 year ago)

No, nix-env installs to your user environment, which the nixos-rebuild command barely touches. It doesn't touch the global configuration file. In fact you can even manage user accounts imperatively.

My approach is the following: try a program using nix run (or nix-shell, depending on the case) and if it does what I want, add it to my configuration and nixos-rebuild test. It will then be available permanently on next update.

What I also do is keep all nix-related files in a git repository under main user control and have the flake.nix (if using flakes, otherwise configuration.nix) soft linked into /etc/nixos. This also enables rollback on your configuration, not only on the actual system state.

I agree that each package takes more time, but OTOH, you save a lot of time and effort in the longer run. Also I don't really have that high fluctuation of packages that it actually matters.

home-manager is a bit in a weird spot in my opinion as in it's not very clear how it should be installed. If it's a NixOS module, your changes will only be applied during rebuild - which only root can trigger. But if you're already triggering those as root, you might as well as the packages globally. I generally install globally and configure the options using home-manager.

[-] Vuraniute@vlemmy.net 0 points 1 year ago

Sounds great, but I don't like editing a config file every time I want to install an app,.

[-] Laser@feddit.de 6 points 1 year ago* (last edited 1 year ago)

Alright, if that's too much of a hassle you shouldn't switch. I'm unaware how to do all of that in one step on the command line. All I can say is that the last time I added programs to the array was two weeks ago. So the workload is negligibleā€¦ on the other hand, on Arch, when installing something new that you then decide not to keep, you need to track the dependencies that you no longer need (pacman -Rs $(pacman -Qqdt)) if I'm not mistaken.

Also, the amount of work saved depends on what you're installing: let's say you install OpenSSH on your machine. On NixOS, that's editing about six lines in my configuration and then rebuilding. On Arch, that's

  1. installing OpenSSH (pacman -S openssh)
  2. Editing /etc/ssh/sshd_config
  3. Editing your firewall settings (This happens automatically on NixOS)
  4. Enabling and starting the OpenSSH service (NixOS does this for you)
  5. Applying your changed firewall rules (again, automatically on NixOS and guaranteed to be correct)

So you have double the configuration files to be edited and triple the commands to be ran, while during all of this, nix actually does the thinking for you (e.g. you change a port in your OpenSSH config -> the firewall configuration is updated automatically).

[-] Vuraniute@vlemmy.net 0 points 1 year ago

Sounds neat. I am really considering NixOS, that's why I'm asking for advice here. It really sounds like a nice and more convenient distro. Sadly, I still haven't figured out how to make my own builders, even after Nix Pills. Thankfully, programs like crate2nix exist.

[-] Laser@feddit.de 1 points 1 year ago

Do you want to create your own builder or create derivations?

[-] Vuraniute@vlemmy.net 1 points 1 year ago

create derivations

this post was submitted on 07 Jul 2023
338 points (96.2% liked)

linuxmemes

21172 readers
878 users here now

Hint: :q!


Sister communities:


Community rules (click to expand)

1. Follow the site-wide rules

2. Be civil
  • Understand the difference between a joke and an insult.
  • Do not harrass or attack members of the community for any reason.
  • Leave remarks of "peasantry" to the PCMR community. If you dislike an OS/service/application, attack the thing you dislike, not the individuals who use it. Some people may not have a choice.
  • Bigotry will not be tolerated.
  • These rules are somewhat loosened when the subject is a public figure. Still, do not attack their person or incite harrassment.
  • 3. Post Linux-related content
  • Including Unix and BSD.
  • Non-Linux content is acceptable as long as it makes a reference to Linux. For example, the poorly made mockery of sudo in Windows.
  • No porn. Even if you watch it on a Linux machine.
  • 4. No recent reposts
  • Everybody uses Arch btw, can't quit Vim, and wants to interject for a moment. You can stop now.

  • Please report posts and comments that break these rules!

    founded 1 year ago
    MODERATORS