nix/NOTES.md

1.7 KiB

ToDo's

  • Investigate https://crane.dev/examples/quick-start-simple.html for ruszt builds
  • https://nix.dev/tutorials/packaging-existing-software
  • this looks awesome: https://github.com/erictossell/nixflakes/tree/main
  • https://nixos.wiki/wiki/Binary_Cache
  • build a good abstraction for systems
    • allows setting nixpkgs.localSystem per systems
    • should yield a nixosConfiguration.${hostname} = nixpkgs.lib.nixosSystem {...}
    • example module abstraction
      # TODO think about partitions/hardware/system specific conf
      # TODO think about hardware.nix like things
      { config,
        inputs,
        lib,
        ...
      }: {
        home_conf = {
          # ...
        };
        os_conf = {
          # ...
        };
      }
      
    • example mkSystem abstraction
      let opts = {
        hostname = "test";
        opt = "znver2";
        users = {
          { name = "tristand", groups=[..] },
          { name = "tester", groups=[..] },
        };
        modules = [
          ./my_module.nix
        ];
      };
      in {
        mylib.mkSystem opts?            #
        # take a path? just let the user call import ?
      }
      
    • example localSystem conf
      # to allow building
      nix.extraOptions = ''
        system-features = system-features = gccarch-znver2
      '';
      # to actually build (after rebuilding with the feature before)
      localSystem = {
        inherit system;
        gcc = {
          arch = "znver2";
          tune = "znver2";
        };
      };
      pkgs-args = {
        inherit localSystem overlays;
        config = {
          # ....
        };
      };
      pkgs = import nixpkgs pkgs-args;
      nixpkgs.pkgs = pkgs;
      
  • switch from security.sudo.* to security.sudo-rs.*