summaryrefslogtreecommitdiff
path: root/modules/shared
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
parent48712d44fde91d2685089cca7f9d88295fd59817 (diff)
modules/nixos+darwin: move to traits + archetypes model
Diffstat (limited to 'modules/shared')
-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
-rw-r--r--modules/shared/default.nix22
-rw-r--r--modules/shared/nix.nix34
-rw-r--r--modules/shared/suites/default.nix5
-rw-r--r--modules/shared/suites/personal.nix15
-rw-r--r--modules/shared/traits/default.nix6
-rw-r--r--modules/shared/traits/home-manager.nix21
-rw-r--r--modules/shared/traits/locale.nix19
-rw-r--r--modules/shared/users/default.nix15
-rw-r--r--modules/shared/users/seth.nix35
13 files changed, 149 insertions, 124 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;
+ };
+}
diff --git a/modules/shared/default.nix b/modules/shared/default.nix
index edd1f34..cf3dd84 100644
--- a/modules/shared/default.nix
+++ b/modules/shared/default.nix
@@ -1,24 +1,6 @@
{
- lib,
- inputs,
- ...
-}: let
- inherit (inputs) self;
-in {
imports = [
- ./nix.nix
- ./suites
- ./users
+ ./base
+ ./traits
];
-
- system.configurationRevision = self.rev or self.dirtyRev or "dirty-unknown";
-
- documentation = {
- doc.enable = false;
- info.enable = false;
- };
-
- time.timeZone = lib.mkDefault "America/New_York";
-
- programs.gnupg.agent.enable = lib.mkDefault true;
}
diff --git a/modules/shared/nix.nix b/modules/shared/nix.nix
deleted file mode 100644
index 770e7e4..0000000
--- a/modules/shared/nix.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- config,
- lib,
- pkgs,
- inputs,
- ...
-}: {
- 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/suites/default.nix b/modules/shared/suites/default.nix
deleted file mode 100644
index b4bd1b5..0000000
--- a/modules/shared/suites/default.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- imports = [
- ./personal.nix
- ];
-}
diff --git a/modules/shared/suites/personal.nix b/modules/shared/suites/personal.nix
deleted file mode 100644
index 1a9278a..0000000
--- a/modules/shared/suites/personal.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- config,
- lib,
- ...
-}: let
- cfg = config.suites.personal;
-in {
- options.suites.personal = {
- enable = lib.mkEnableOption "Personal configuration set";
- };
-
- config = lib.mkIf cfg.enable {
- users.seth.enable = lib.mkDefault true;
- };
-}
diff --git a/modules/shared/traits/default.nix b/modules/shared/traits/default.nix
new file mode 100644
index 0000000..fa5ba25
--- /dev/null
+++ b/modules/shared/traits/default.nix
@@ -0,0 +1,6 @@
+{
+ imports = [
+ ./locale.nix
+ ./home-manager.nix
+ ];
+}
diff --git a/modules/shared/traits/home-manager.nix b/modules/shared/traits/home-manager.nix
new file mode 100644
index 0000000..732f4f9
--- /dev/null
+++ b/modules/shared/traits/home-manager.nix
@@ -0,0 +1,21 @@
+{
+ config,
+ lib,
+ inputs,
+ inputs',
+ ...
+}: let
+ cfg = config.traits.home-manager;
+in {
+ options.traits.home-manager = {
+ enable = lib.mkEnableOption "home-manager configuration";
+ };
+
+ config = lib.mkIf cfg.enable {
+ home-manager = {
+ useGlobalPkgs = true;
+ useUserPackages = true;
+ extraSpecialArgs = {inherit inputs inputs';};
+ };
+ };
+}
diff --git a/modules/shared/traits/locale.nix b/modules/shared/traits/locale.nix
new file mode 100644
index 0000000..9c07c14
--- /dev/null
+++ b/modules/shared/traits/locale.nix
@@ -0,0 +1,19 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.traits.locale;
+in {
+ options.traits.locale = {
+ US-east = {
+ enable = lib.mkEnableOption "eastern United States locale";
+ };
+ };
+
+ config = lib.mkMerge [
+ (lib.mkIf cfg.US-east.enable {
+ time.timeZone = "America/New_York";
+ })
+ ];
+}
diff --git a/modules/shared/users/default.nix b/modules/shared/users/default.nix
deleted file mode 100644
index bb3062e..0000000
--- a/modules/shared/users/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- inputs,
- inputs',
- ...
-}: {
- imports = [
- ./seth.nix
- ];
-
- home-manager = {
- useGlobalPkgs = true;
- useUserPackages = true;
- extraSpecialArgs = {inherit inputs inputs';};
- };
-}
diff --git a/modules/shared/users/seth.nix b/modules/shared/users/seth.nix
deleted file mode 100644
index 0c98fc9..0000000
--- a/modules/shared/users/seth.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}: let
- cfg = config.users.seth;
-in {
- options.users.seth = {
- enable = lib.mkEnableOption "Seth's configuration & home";
- };
-
- config = lib.mkIf cfg.enable {
- users.users.seth =
- {
- shell = pkgs.fish;
- home = lib.mkDefault (
- if pkgs.stdenv.isDarwin
- then "/Users/seth"
- else "/home/seth"
- );
- }
- // lib.optionalAttrs pkgs.stdenv.isLinux {
- extraGroups = ["wheel"];
- isNormalUser = true;
- hashedPasswordFile = lib.mkDefault config.age.secrets.sethPassword.path;
- };
-
- programs.fish.enable = lib.mkDefault true;
-
- home-manager.users.seth = {
- imports = [../../../users/seth];
- };
- };
-}