about summary refs log tree commit diff
path: root/modules/common/profiles/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/common/profiles/default.nix')
-rw-r--r--modules/common/profiles/default.nix90
1 files changed, 90 insertions, 0 deletions
diff --git a/modules/common/profiles/default.nix b/modules/common/profiles/default.nix
new file mode 100644
index 0000000..06ddaf4
--- /dev/null
+++ b/modules/common/profiles/default.nix
@@ -0,0 +1,90 @@
+{
+  config,
+  lib,
+  pkgs,
+  this,
+  ...
+}:
+with lib; let
+  cfg = config.nixfiles.modules.profiles.default;
+in {
+  imports = [
+    ./dev
+    ./headful.nix
+    ./headless.nix
+    (mkAliasOptionModule ["colourScheme"] [
+      "nixfiles"
+      "modules"
+      "profiles"
+      "default"
+      "colourScheme"
+    ])
+  ];
+
+  options.nixfiles.modules.profiles.default = {
+    enable =
+      mkEnableOption "The most default profile of them all."
+      // {
+        default = true;
+      };
+
+    colourScheme = let
+      mkColour = default:
+        mkOption {
+          type = types.str;
+          inherit default;
+          description = "Colour in a standard hexadecimal notation.";
+          example = "#000000";
+        };
+    in rec {
+      black = mkColour "#161719";
+      red = mkColour "#cc6666";
+      green = mkColour "#b5bd68";
+      yellow = mkColour "#f0c674";
+      blue = mkColour "#81a2be";
+      magenta = mkColour "#b294bb";
+      cyan = mkColour "#8abeb7";
+      white = mkColour "#c5c8c6";
+
+      brightBlack = mkColour "#969896";
+      brightRed = mkColour "#cc6666";
+      brightGreen = mkColour "#b5bd68";
+      brightYellow = mkColour "#f0c674";
+      brightBlue = mkColour "#81a2be";
+      brightMagenta = mkColour "#b294bb";
+      brightCyan = mkColour "#8abeb7";
+      brightWhite = mkColour "#ffffff";
+
+      background = black;
+      foreground = white;
+    };
+  };
+
+  config = mkIf cfg.enable {
+    assertions = [
+      {
+        assertion = !(with this; isHeadless && isHeadful);
+        message = ''
+          The configuration cannot be both "headful" and "headless" at the same
+          time.
+        '';
+      }
+    ];
+
+    nixfiles.modules = {
+      htop.enable = true;
+      tmux.enable = true;
+      vim.enable = true;
+    };
+
+    time.timeZone = "Europe/Moscow";
+
+    environment.systemPackages = with pkgs; [
+      ddrescue
+      file
+      git
+      gnupg
+      tree
+    ];
+  };
+}

Consider giving Nix/NixOS a try! <3