• onlinepersona@programming.dev
    link
    fedilink
    English
    arrow-up
    1
    arrow-down
    1
    ·
    3 months ago

    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

    • Shareni@programming.devOP
      link
      fedilink
      arrow-up
      0
      arrow-down
      1
      ·
      3 months ago

      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;
                };
              };
            };
          };
      }