summaryrefslogtreecommitdiff
path: root/modules/shared/base
diff options
context:
space:
mode:
authorseth <[email protected]>2024-02-07 18:03:24 -0500
committerseth <[email protected]>2024-02-07 18:27:45 -0500
commitcffffeb678e9a1078eeba0f19c9607cda9f31bed (patch)
tree8b8f68aa357becad06845f15b7e528474041371c /modules/shared/base
parent48712d44fde91d2685089cca7f9d88295fd59817 (diff)
modules/nixos+darwin: move to traits + archetypes model
Diffstat (limited to 'modules/shared/base')
-rw-r--r--modules/shared/base/default.nix23
-rw-r--r--modules/shared/base/documentation.nix19
-rw-r--r--modules/shared/base/nix.nix43
-rw-r--r--modules/shared/base/programs.nix16
4 files changed, 101 insertions, 0 deletions
diff --git a/modules/shared/base/default.nix b/modules/shared/base/default.nix
new file mode 100644
index 0000000..9154ae7
--- /dev/null
+++ b/modules/shared/base/default.nix
@@ -0,0 +1,23 @@
+{
+ config,
+ lib,
+ inputs,
+ ...
+}: let
+ cfg = config.base;
+ inherit (inputs) self;
+in {
+ options.base = {
+ enable = lib.mkEnableOption "basic configurations";
+ };
+
+ imports = [
+ ./documentation.nix
+ ./nix.nix
+ ./programs.nix
+ ];
+
+ config = lib.mkIf cfg.enable {
+ system.configurationRevision = self.rev or self.dirtyRev or "dirty-unknown";
+ };
+}
diff --git a/modules/shared/base/documentation.nix b/modules/shared/base/documentation.nix
new file mode 100644
index 0000000..0139f7d
--- /dev/null
+++ b/modules/shared/base/documentation.nix
@@ -0,0 +1,19 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.base.documentation;
+ enable = config.base.enable && cfg.enable;
+in {
+ options.base.documentation = {
+ enable = lib.mkEnableOption "documentation settings" // {default = true;};
+ };
+
+ config = lib.mkIf enable {
+ documentation = {
+ doc.enable = false;
+ info.enable = false;
+ };
+ };
+}
diff --git a/modules/shared/base/nix.nix b/modules/shared/base/nix.nix
new file mode 100644
index 0000000..6e1bdf3
--- /dev/null
+++ b/modules/shared/base/nix.nix
@@ -0,0 +1,43 @@
+{
+ config,
+ lib,
+ pkgs,
+ inputs,
+ ...
+}: let
+ cfg = config.base.nixSettings;
+ enable = config.base.enable && cfg.enable;
+in {
+ options.base.nixSettings = {
+ enable = lib.mkEnableOption "nix settings" // {default = true;};
+ };
+
+ config = lib.mkIf enable {
+ nix = {
+ registry.n.flake = lib.mkDefault inputs.nixpkgs;
+
+ nixPath = [
+ "nixpkgs=/etc/nix/inputs/nixpkgs"
+ ];
+
+ settings = {
+ auto-optimise-store = pkgs.stdenv.isLinux;
+ experimental-features = lib.mkDefault ["nix-command" "flakes" "auto-allocate-uids" "repl-flake"];
+
+ trusted-substituters = lib.mkDefault ["https://getchoo.cachix.org"];
+ trusted-public-keys = lib.mkDefault ["getchoo.cachix.org-1:ftdbAUJVNaFonM0obRGgR5+nUmdLMM+AOvDOSx0z5tE="];
+ nix-path = config.nix.nixPath;
+ };
+
+ gc = {
+ automatic = lib.mkDefault true;
+ options = lib.mkDefault "--delete-older-than 7d";
+ };
+ };
+
+ nixpkgs = {
+ overlays = [inputs.self.overlays.default];
+ config.allowUnfree = lib.mkDefault true;
+ };
+ };
+}
diff --git a/modules/shared/base/programs.nix b/modules/shared/base/programs.nix
new file mode 100644
index 0000000..796fce0
--- /dev/null
+++ b/modules/shared/base/programs.nix
@@ -0,0 +1,16 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.base.defaultPrograms;
+ enable = config.base.enable && cfg.enable;
+in {
+ options.base.defaultPrograms = {
+ enable = lib.mkEnableOption "default programs" // {default = true;};
+ };
+
+ config = lib.mkIf enable {
+ programs.gnupg.agent.enable = lib.mkDefault true;
+ };
+}