about summary refs log tree commit diff
path: root/modules/nix.nix
diff options
context:
space:
mode:
authorsefidel <contact@sefidel.net>2023-08-21 19:20:36 +0900
committersefidel <contact@sefidel.net>2023-08-21 19:22:01 +0900
commitbc4039ae8c86f794cece9d9ceb43b838e61cf445 (patch)
tree3991ec87c676fcfbb22a72de866ca0e14b137403 /modules/nix.nix
parent76dc3decd5e8b9d0494cd65be2303784f64d1a24 (diff)
downloadnixrc-bc4039ae8c86f794cece9d9ceb43b838e61cf445.tar.gz
nixrc-bc4039ae8c86f794cece9d9ceb43b838e61cf445.zip
chore: nixos/modules -> modules
Diffstat (limited to 'modules/nix.nix')
-rw-r--r--modules/nix.nix34
1 files changed, 34 insertions, 0 deletions
diff --git a/modules/nix.nix b/modules/nix.nix
new file mode 100644
index 0000000..8396739
--- /dev/null
+++ b/modules/nix.nix
@@ -0,0 +1,34 @@
+{ config, lib, ... }:
+
+let
+  allowed = config.nix.allowedUnfree;
+in
+{
+  options.nix = {
+    experimentalFeatures = lib.mkOption {
+      type = lib.types.separatedString " ";
+      default = "";
+      description = ''
+        Enables experimental features
+      '';
+    };
+
+    allowedUnfree = lib.mkOption {
+      type = lib.types.listOf lib.types.str;
+      default = [ ];
+      description = ''
+        Allows for  unfree packages by their name.
+      '';
+    };
+  };
+
+  config = lib.mkMerge [
+    (lib.mkIf (config.nix.experimentalFeatures != "") { nix.extraOptions = "experimental-features = ${config.nix.experimentalFeatures}"; })
+    (lib.mkIf (allowed != [ ]) { nixpkgs.config.allowUnfreePredicate = (pkg: __elem (lib.getName pkg) allowed); })
+    { nix.settings.auto-optimise-store = lib.mkDefault true; }
+    {
+      nix.gc.automatic = lib.mkDefault true;
+      nix.gc.options = lib.mkDefault "--delete-older-than 10d";
+    }
+  ];
+}