diff --git a/packages/nixos-options/default.nix b/packages/nixos-options/default.nix new file mode 100644 index 0000000..244f24c --- /dev/null +++ b/packages/nixos-options/default.nix @@ -0,0 +1,55 @@ +{ + lib, + pkgs, + inputs, + stdenv, + supportedSystems ? [ "x86_64-linux" ], +}: + +with import "${inputs.nixpkgs}/pkgs/top-level/release-lib.nix" { inherit supportedSystems; }; + +let + + version = "nixos-unstable"; + versionSuffix = "pre${toString pkgs.revCount}.${pkgs.shortRev}"; + + buildFromConfig = + module: sel: + forAllSystems ( + system: + lib.hydraJob ( + sel + (import "${inputs.nixpkgs}/nixos/lib/eval-config.nix" { + inherit system; + modules = [ + module + ( + { config, ... }: + { + system.nixos.versionSuffix = versionSuffix; + system.nixos.revision = pkgs.rev or pkgs.shortRev; + # At creation time we do not have state yet, so just default to latest. + system.stateVersion = config.system.nixos.version; + fileSystems."/".device = mkDefault "/dev/sda1"; + boot.loader.grub.device = mkDefault "/dev/sda"; + } + ) + ]; + }).config + ) + ); + + options = + (buildFromConfig ({ ... }: { }) (config: config.system.build.manual.optionsJSON)).x86_64-linux; +in +stdenv.mkDerivation { + pname = "nixos-options"; + inherit version; + + src = inputs.nixpkgs; + + installPhase = '' + mkdir $out + cp -r ${options} $out/options + ''; +}