diff --git a/examples/flakes/flake.nix b/examples/flakes/flake.nix index 9b8f6a9..6e030a8 100644 --- a/examples/flakes/flake.nix +++ b/examples/flakes/flake.nix @@ -8,19 +8,11 @@ nixosConfigurations.mynode = nix-bitcoin.inputs.nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ - ## Note: - ## If you use a custom nixpkgs version for evaluating your system, - ## consider using `withLockedPkgs` instead of `withSystemPkgs` to use the exact - ## pkgs versions for nix-bitcoin services that are tested by nix-bitcoin. - ## The downsides are increased evaluation times and increased system - ## closure size. - # - # nix-bitcoin.nixosModules.withLockedPkgs - nix-bitcoin.nixosModules.withSystemPkgs + nix-bitcoin.nixosModule - ## Optional: - ## Import the secure-node preset, an opinionated config to enhance security - ## and privacy. + # Optional: + # Import the secure-node preset, an opinionated config to enhance security + # and privacy. # # "${nix-bitcoin}/modules/presets/secure-node.nix" @@ -46,6 +38,15 @@ isNormalUser = true; password = "a"; }; + + # If you use a custom nixpkgs version for evaluating your system + # (instead of `nix-bitcoin.inputs.nixpkgs` like in this example), + # consider setting `useVersionLockedPkgs = true` to use the exact pkgs + # versions for nix-bitcoin services that are tested by nix-bitcoin. + # The downsides are increased evaluation times and increased system + # closure size. + # + # nix-bitcoin.useVersionLockedPkgs = true; } ]; }; diff --git a/flake.nix b/flake.nix index 4d0267d..96fb8a5 100644 --- a/flake.nix +++ b/flake.nix @@ -28,19 +28,33 @@ nbPkgs = lib.mkNbPkgs { inherit (final) system; pkgs = final; }; in removeAttrs nbPkgs [ "pinned" "nixops19_09" "krops" ]; - nixosModules = { - # Uses the default system pkgs for nix-bitcoin.pkgs - withSystemPkgs = { pkgs, ... }: { - imports = [ ./modules/modules.nix ]; - nix-bitcoin.pkgs = (lib.mkNbPkgs { inherit (pkgs) system; inherit pkgs; }).modulesPkgs; + nixosModule = { config, pkgs, lib, ... }: { + imports = [ ./modules/modules.nix ]; + + options = with lib; { + nix-bitcoin.useVersionLockedPkgs = mkOption { + type = types.bool; + default = false; + description = '' + Use the nixpkgs version locked by this flake for `nix-bitcoin.pkgs`. + Only relevant if you are using a nixpkgs version for evaluating your system + that differs from the one that is locked by this flake (via input `nixpkgs`). + If this is the case, enabling this option may result in a more stable system + because the nix-bitcoin services use the exact pkgs versions that are tested + by nix-bitcoin. + The downsides are increased evaluation times and increased system + closure size. + + If `false`, the default system pkgs are used. + ''; + }; }; - # Uses the nixpkgs version locked by this flake for nix-bitcoin.pkgs. - # More stable, but slightly slower to evaluate and needs more space if the - # locked and the system nixpkgs versions differ. - withLockedPkgs = { config, ... }: { - imports = [ ./modules/modules.nix ]; - nix-bitcoin.pkgs = (lib.mkNbPkgs { inherit (config.nixpkgs) system; }).modulesPkgs; + config = { + nix-bitcoin.pkgs = + if config.nix-bitcoin.useVersionLockedPkgs + then (self.lib.mkNbPkgs { inherit (config.nixpkgs) system; }).modulesPkgs + else (self.lib.mkNbPkgs { inherit (pkgs) system; inherit pkgs; }).modulesPkgs; }; }; @@ -77,7 +91,7 @@ inherit system; configuration = { imports = [ - nix-bitcoin.nixosModules.withSystemPkgs + nix-bitcoin.nixosModule "${nix-bitcoin}/modules/presets/secure-node.nix" ];