# Get a repl for this flake # nix repl --expr "builtins.getFlake \"$PWD\"" # TODO maybe use `nix eval --raw .#odo.iso.outPath` # # Install on a new machine: # # # doas nix --substituters "http://10.0.2.2:8080?trusted=1 https://cache.nixos.org/" --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount hosts/odo/disk-config.nix # for f in /persist/manual/manual_add_to_store/*; do nix-store --add-fixed sha256 "$f"; done # nixos-install --substituters "http://10.0.2.2:8080?trusted=1 https://cache.nixos.org/" --flake ".#vm_ionlybootzfs" # { description = "My system configuration"; inputs = { impermanence.url = "github:nix-community/impermanence"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-unoptimized.url = "github:NixOS/nixpkgs/nixos-unstable"; lanzaboote = { url = "github:nix-community/lanzaboote/v0.4.2"; inputs.nixpkgs.follows = "nixpkgs"; }; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { nixpkgs, nixpkgs-unoptimized, disko, impermanence, lanzaboote, ... }: let forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed; nodes = { odo = { system = "x86_64-linux"; }; quark = { system = "x86_64-linux"; }; }; nixosConfigs = builtins.mapAttrs ( hostname: nodeConfig: format: nixpkgs.lib.nixosSystem { inherit (nodeConfig) system; specialArgs = { pkgs-unoptimized = import nixpkgs-unoptimized { inherit (nodeConfig) system; hostPlatform.gcc.arch = "default"; hostPlatform.gcc.tune = "default"; }; }; modules = [ impermanence.nixosModules.impermanence lanzaboote.nixosModules.lanzaboote disko.nixosModules.disko ./configuration.nix (./. + "/hosts/${hostname}") (./. + "/formats/${format}.nix") ]; } ) nodes; in { nixosConfigurations = (builtins.mapAttrs (name: value: value "toplevel") nixosConfigs); } // { packages = ( forAllSystems ( system: (builtins.mapAttrs (hostname: nodeConfig: { iso = (nixosConfigs."${hostname}" "iso").config.system.build.isoImage; vm_iso = (nixosConfigs."${hostname}" "vm_iso").config.system.build.isoImage; sd = (nixosConfigs."${hostname}" "sd").config.system.build.sdImage; }) (nixpkgs.lib.attrsets.filterAttrs (hostname: nodeConfig: nodeConfig.system == system) nodes)) ) ); }; }