nixfiles/flake/TODO.md

1.6 KiB

flake-parts TODO

  • Move logic for generating system/home configs to module (most important, reason i wanted to use flake-parts)
    • Move common default args from the awful wrapper function to dedicated options:
      • default module imports
      • "common" module
        • currently defines stateVersion, nixpkgs.config.allowUnfree, a few others
      • make default module path configurable, but still default to ./hosts/${hostname}/configuration.nix
      • make "entrypoint" (./system, ./home/standalone.nix, etc) configurable
      • make nixfiles home manager initialization a configurable option
      • specialArgs (i want to deprecate this but one thing at a time)
      • define system "types" and generate all of them internally using lazy eval. export a specific one to the flake outputs.
        • generate as something like nixfiles.hosts.<name>.outputs
        • flake.nixosConfigurations.<name> is set from nixfiles.hosts.<name>.output
        • default chosen by option like nixfiles.hosts.<name>.type
        • types:
          • normal
          • WSL
          • ISO image
    • define deploy-rs outputs in same section as hosts
    • make common, central interface for configuring overlays to be consumed by various parts of flake, move hard-coded overlays out of common module
      • literally just a list, maybe process it using lib.composeManyExtensions
  • some top-level config is okay (e.g., defining hosts using nixfiles options). hide away all of the internal logic into imported modules.
  • move random functions into nixfiles lib
  • move top-level universal configs (username, mobileTimeZone) into option (honestly, this alone makes flake-parts worth it)