37 lines
No EOL
1.4 KiB
Nix
37 lines
No EOL
1.4 KiB
Nix
{config, pkgs, lib, ...}:
|
|
|
|
let
|
|
nixos-unstable-exprs = builtins.fetchTarball https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz;
|
|
nixos-unstable = import nixos-unstable-exprs {
|
|
inherit (config.nixpkgs) config localSystem crossSystem;
|
|
overlays = if config.unstable.usePkgsOverlays then config.pkgs.overlays else [];
|
|
};
|
|
nixos-unstable-version = builtins.concatStringsSep "." [
|
|
(builtins.readFile "${builtins.toString nixos-unstable-exprs}/.version")
|
|
(builtins.readFile "${builtins.toString nixos-unstable-exprs}/.version-suffix")
|
|
];
|
|
in
|
|
{
|
|
options.unstable = {
|
|
enable = lib.mkEnableOption (lib.mkDoc ''
|
|
use of unstable packages in configuration. You can use `unstablePkgs` in configuration modules
|
|
'') // { default = true; };
|
|
usePkgsOverlays = lib.mkEnableOption (lib.mkDoc ''
|
|
use overlays from `nixpkgs.overlays`
|
|
'');
|
|
pkgs = lib.mkOption {
|
|
default = if config.unstable.enable then nixos-unstable else pkgs;
|
|
description = lib.mkDoc ''
|
|
acts like pkgs, but it has unstable packages if `unstable.enable` is enabled.
|
|
You can also use `unstablePkgs` in module arguments.
|
|
'';
|
|
visible = true;
|
|
readOnly = true;
|
|
type = lib.types.pkgs;
|
|
};
|
|
};
|
|
config._module.args.unstablePkgs = config.unstable.pkgs;
|
|
config.system.extraSystemBuilderCmds = lib.mkIf config.unstable.enable ''
|
|
echo ${nixos-unstable-version} > $out/nixos-unstable-version
|
|
'';
|
|
} |