# 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 ```nix # 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 ```nix 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 ```nix # 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.*