summaryrefslogtreecommitdiff
path: root/shared/nixos/common-nix-settings/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'shared/nixos/common-nix-settings/default.nix')
-rw-r--r--shared/nixos/common-nix-settings/default.nix60
1 files changed, 60 insertions, 0 deletions
diff --git a/shared/nixos/common-nix-settings/default.nix b/shared/nixos/common-nix-settings/default.nix
new file mode 100644
index 0000000..b5c0a02
--- /dev/null
+++ b/shared/nixos/common-nix-settings/default.nix
@@ -0,0 +1,60 @@
+# This module sets common settings related to Nix such as enabling flakes and
+# using overlays everywhere..
+#
+# NOTE: Even though this lives under `shared/nixos` the configuration in here
+# should also be compatible with nix-darwin!!
+{
+ pkgs,
+ lib,
+ config,
+ flakeInputs,
+ flakeOutputs,
+ ...
+}:
+lib.mkMerge [
+ {
+ # Enable de facto stable features.
+ nix.settings.experimental-features = ["nix-command" "flakes"];
+
+ nixpkgs.overlays = [
+ # Use local overlays.
+ flakeOutputs.overlays.additions
+ flakeOutputs.overlays.modifications
+
+ # Add unstable nixpkgs.
+ (final: prev: {unstable = flakeInputs.nixpkgs-unstable.legacyPackages.${pkgs.system};})
+ ];
+
+ # I'm not *that* vegan.
+ nixpkgs.config.allowUnfree = true;
+
+ # This will add each flake input as a registry
+ # To make nix3 commands consistent with your flake
+ nix.registry = lib.mapAttrs (_: value: {flake = value;}) flakeInputs;
+
+ nix.nixPath =
+ [
+ # Use overlays from this repo for building system configuration as well as system-wide.
+ # See: https://nixos.wiki/wiki/Overlays#Using_nixpkgs.overlays_from_configuration.nix_as_.3Cnixpkgs-overlays.3E_in_your_NIX_PATH
+ "nixpkgs-overlays=${flakeInputs.self}/overlays/compat.nix"
+
+ # This will additionally add out inputs to the system's legacy channels
+ # Making legacy nix commands consistent as well, awesome!
+ ]
+ ++ lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
+
+ # Add shell-utilities which are only relevant if Nix is enabled.
+ environment.systemPackages = with pkgs; [
+ # For running programs easily.
+ nix-index # Also includes nix-locate
+ flakeInputs.comma.packages.${system}.default
+
+ # For editing secrets.
+ flakeInputs.agenix.packages.${system}.default
+ ];
+ }
+ (lib.mkIf pkgs.stdenv.isLinux {
+ # There is not nix-darwin equivalent to this NixOS option.
+ nix.enable = true;
+ })
+]