diff options
Diffstat (limited to 'modules/default.nix')
-rw-r--r-- | modules/default.nix | 175 |
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"; + + }; + +} |