summaryrefslogtreecommitdiff
path: root/modules/default.nix
diff options
context:
space:
mode:
authorfreya <Freya Murphy>2025-01-21 02:43:35 +0000
committerFreya Murphy <freya@freyacat.org>2025-01-21 02:45:29 +0000
commit05ea082c5fed25655e59ed7851c0cd53b0624b35 (patch)
tree87390bf699e04027f042ccfc10743a42bf768788 /modules/default.nix
downloaddotfiles-nix-05ea082c5fed25655e59ed7851c0cd53b0624b35.tar.gz
dotfiles-nix-05ea082c5fed25655e59ed7851c0cd53b0624b35.tar.bz2
dotfiles-nix-05ea082c5fed25655e59ed7851c0cd53b0624b35.zip
initial
Diffstat (limited to 'modules/default.nix')
-rw-r--r--modules/default.nix175
1 files changed, 175 insertions, 0 deletions
diff --git a/modules/default.nix b/modules/default.nix
new file mode 100644
index 0000000..083e63c
--- /dev/null
+++ b/modules/default.nix
@@ -0,0 +1,175 @@
+{ config, lib, pkgs, ... }:
+
+{
+
+ imports = [
+ ./programs
+ ./home.nix
+ ./system.nix
+ ];
+
+ options = {
+
+ # Primary user of the system
+ user = lib.mkOption {
+ type = lib.types.str;
+ description = "Primary user of the system";
+ };
+ fullName = lib.mkOption {
+ type = lib.types.str;
+ description = "Human readable name of the user";
+ };
+ homePath = lib.mkOption {
+ type = lib.types.str;
+ description = "Home directory path of the user";
+ default = "/home/${config.user}";
+ };
+ email = lib.mkOption {
+ type = lib.types.str;
+ description = "Primary email of the user";
+ };
+
+ # Toggable components
+ desktop = {
+ enable = lib.mkEnableOption {
+ description = "Enable the gui.";
+ default = false;
+ };
+ };
+ system = {
+ enable = lib.mkEnableOption {
+ description = "Enable system services.";
+ default = false;
+ };
+ };
+
+ # Monitor
+ monitor = {
+ name = lib.mkOption {
+ type = lib.types.str;
+ description = "Name of the primary monitor.";
+ default = "";
+ };
+ scale = lib.mkOption {
+ type = lib.types.float;
+ description = "Scale of the primary monitor.";
+ default = 1.0;
+ };
+ };
+
+ # Theme of the system
+ theme = {
+ colors = lib.mkOption {
+ type = lib.types.attrs;
+ description = "base16 color scheme";
+ default = (import ./themes).catppuccin.mocha;
+ };
+
+ accentColor = lib.mkOption {
+ type = lib.types.str;
+ description = "Theme accent color.";
+ default = config.theme.colors.base0D;
+ };
+
+ opacity = lib.mkOption {
+ type = lib.types.float;
+ description = "Window opacity.";
+ default = 1.0;
+ };
+
+ font = lib.mkOption {
+ type = lib.types.str;
+ description = "Theme primary font.";
+ default = "JetBrains Mono";
+ };
+
+ fontSize = lib.mkOption {
+ type = lib.types.int;
+ description = "Theme primary font size.";
+ default = 14;
+ };
+
+ headerFont = lib.mkOption {
+ type = lib.types.str;
+ description = "Theme header font.";
+ default = "JetBrains Mono ExtraBold";
+ };
+
+ monospaceFont = lib.mkOption {
+ type = lib.types.str;
+ description = "Theme monospace font.";
+ default = "monospace";
+ };
+
+ iconFont = lib.mkOption {
+ type = lib.types.str;
+ description = "Theme icon font.";
+ default = "Font Awesome 6 Pro";
+ };
+
+ borderWidth = lib.mkOption {
+ type = lib.types.int;
+ description = "Theme border width";
+ default = 3;
+ };
+
+ outerRadius = lib.mkOption {
+ type = lib.types.int;
+ description = "Theme outer border radius.";
+ default = 5;
+ };
+
+ innerRadius = lib.mkOption {
+ type = lib.types.int;
+ description = "Theme inner border radius.";
+ default = 2;
+ };
+
+ outerGap = lib.mkOption {
+ type = lib.types.int;
+ description = "Theme outer gap/spacing.";
+ default = 10;
+ };
+
+ innerGap = lib.mkOption {
+ type = lib.types.int;
+ description = "Theme inner gap/spacing.";
+ default = 3;
+ };
+ };
+
+ wallpaper = lib.mkOption {
+ type = lib.types.str;
+ description = "Path to wallpaper image";
+ default = "";
+ };
+
+ avatar = lib.mkOption {
+ type = lib.types.str;
+ description = "Path to avatar image";
+ default = "";
+ };
+ };
+
+ config = {
+
+ # use system packages in home manager
+ home-manager.useGlobalPkgs = true;
+
+ # install user packages to /etc/profiles and not home directory
+ home-manager.useUserPackages = true;
+
+ # allow flakes
+ nix.settings.experimental-features = [ "nix-command" "flakes" ];
+
+ # allow unfree packages
+ nixpkgs.config.allowUnfree = true;
+
+ # set state version
+ home-manager.users.${config.user}.home.stateVersion = "25.05";
+ home-manager.users.root.home.stateVersion = "25.05";
+ system.stateVersion = "25.05";
+
+ };
+
+}