The product of a chat with @QuazarOmega@lemy.lol

8 points

Still haven’t reached the flakes stage. An experimental feature that the maintainers are too afraid to treat as experimental and make breaking changes, but unwilling to name stable because it requires bug-fixes and changes that would be breaking, but too afraid to break because… reasons.

Anti Commercial-AI license

permalink
report
reply
2 points

It’s pretty easy for home-manager use, but still really useful. You can:

  • choose which packages to install from stable and which from unstable
  • add packages from repos that have flake.nix in them
  • correctly match nix and home-manager versions, and always update them at the same time
  • allow-unfree without nixpkgs conf, so 1 less directory required in .config (if they accepted the “experimental” features it’d be down to 1)

Here’s an example:

flake.nix
{
  description = "home flake";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    home-manager.url = "github:nix-community/home-manager/master";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";
    nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11";

    # nixgl.url = "github:guibou/nixGL";
  };

  outputs =
    {
      self,
      nixpkgs,
      nixpkgs-stable,
      home-manager,
      # nixgl,
      ...
    }@inputs:
    let
      system = "x86_64-linux";
      pkgs = import nixpkgs {
        system = system;
        config = {
          allowUnfree = true;
        };
      };
      pkgsStable = import nixpkgs-stable {
        system = system;
        config = {
          allowUnfree = true;
        };
      };
    in
    {
      homeConfigurations = {
        shareni = home-manager.lib.homeManagerConfiguration {
          inherit pkgs;
          modules = [ ./home.nix ];
          extraSpecialArgs = {
            inherit inputs;
            inherit system;

            kmonad = pkgsStable.kmonad;
          };
        };
      };
    };
}
permalink
report
parent
reply
1 point
*

The ‘code’ tag here does not respect newlines, I tried to fix it but this is the best I could do:

`{ description = “home flake”;

 inputs = {     nixpkgs.url = “github:nixos/nixpkgs/nixos-unstable”;

 home-manager.url = “github:nix-community/home-manager/master”;

 home-manager.inputs.nixpkgs.follows = “nixpkgs”;

 nixpkgs-stable.url = “github:nixos/nixpkgs/nixos-23.11;

  # nixgl.url = “github:guibou/nixGL”;

};

outputs =     {

   self,

   nixpkgs,

   nixpkgs-stable,

   home-manager,

   # nixgl,

   …

 }

@inputs:

 let

   system = “x86_64-linux”;

   pkgs = import nixpkgs {

     system = system;

     config = {

       allowUnfree = true;

     };

   };

   pkgsStable = import nixpkgs-stable {

     system = system;

     config = {

       allowUnfree = true;

     };

   };

 in     {

   homeConfigurations = {

     shareni = home-manager.lib.homeManagerConfiguration {

       inherit pkgs;

       modules = [ ./home.nix ];

       extraSpecialArgs = {

         inherit inputs;

         inherit system;

          kmonad = pkgsStable.kmonad;

       };

     };

   };

 };

}`

permalink
report
parent
reply
2 points

It’s working perfectly fine for me on desktop, jerboa, and voyager. Also, add a spoiler.

permalink
report
parent
reply
1 point

The ‘code’ tag here does not respect newlines,

Now there’s a newline between every single line of code

permalink
report
parent
reply
4 points

[rest of post]
Anti Commercial-AI license

Hey look, the trend is spreading: you’re the second user I’ve seen doing that.

It’d be nice if the Lemmy devs added some sort of metadata field to support that so that (a) we could have a preference to insert it into every new comment automatically, and (b) it could be reduced to a badge on the comment header or something so that it would be less obtrusive to those of us who aren’t trying to do anything that would require us to pay attention to it.

permalink
report
parent
reply
43 points

Nix has the same mix of conceptual simplicity and atrocious user interface as git, but somehow magnified three times over. I’ve tried it multiple times, but could never get over the unintuitive gaggle of commands.

permalink
report
reply
14 points

It’s simple. Like git, you search the command on the internet

permalink
report
parent
reply
6 points

Yes but git can be reasonable

permalink
report
parent
reply
4 points
*

It’s much simpler because you’re using text files to define the expected state, the cli is there only to tell nix to figure out what it needs to do and to get on with it. Meanwhile with git you’re manually doing each of the steps until you reach the desired state.

I only need cd ~/dotfiles/nix/ && nix-channel --update && nix flake update && home-manager switch for everyday package management. It’s the nix version of apt update upgrade and install.

nix shell and nix run are pretty useful as well, and you’d want home-manager generations to rollback.

The confusion arises because there are 5 different ways to do the same thing, the non-experimental methods shouldn’t be used even though they’re recommended in the official docs, and you need to get lucky to get the info that you can use home-manager and that one liner.

permalink
report
parent
reply
29 points

The confusion arises because there are 5 different ways to do the same thing, the non-experimental methods shouldn’t be used even though they’re recommended in the official docs

I appreciate what you’re trying to say, but you’re kind of illustrating exactly the point I was making about conceptual simplicity and atrocious UX.

permalink
report
parent
reply
-2 points

You’re ignoring the difference between using something declaratory and imperatively. Just because it’s difficult to get to that one liner, it doesn’t change the fact you’ll still only use that one command. Git by it’s nature requires you to use different commands to achieve different results. Home-manager allows you to both update your packages and delete all of them with the same command, because that command is “sync the state with the source of truth”.

permalink
report
parent
reply
9 points

Have you considered GUIX instead? Same concept, but with added GNU and configured entirely with Guile Scheme, apparently.

permalink
report
parent
reply
19 points

It’s far better in theory, but in practice it’s got some massive issues:

  • non-free packages are taboo in the official guix community
  • binary support was lacking the last time I used it (firefox didn’t have a precompiled bin for example, and that means you need to leave your browser to compile overnight)
  • far less packages than nixpkgs even when you account for the non-free repo
  • packages are seriously out of date (I tried using it as an additional pm a few months ago, and debian 12 was newer in a lot of cases)
  • essentially no support for some programming languages and package managers (node and npm for example)

In it’s current state it’s really only good for emacs, lisps, and some other languages like haskell.

permalink
report
parent
reply
1 point

…which are going to die

permalink
report
reply
6 points
*

I started with NixOS and now I installed something called “Lix

Yeah I’m deep in it to return

permalink
report
reply
3 points

That’s such a bad name, I only see lixmaballs.

How do you like it, that’s one of the earlier forks, right?

permalink
report
parent
reply
2 points

The product of a chat with @QuazarOmega@lemy.lol

Can confirm, very productive indeed ;)

There is only a way forward, and once you start, you cannot stop

permalink
report
reply

linuxmemes

!linuxmemes@lemmy.world

Create post

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!

Community stats

  • 7.2K

    Monthly active users

  • 1.3K

    Posts

  • 70K

    Comments