diff --git a/modules/core.nix b/modules/core.nix index 743ff5c..472597d 100644 --- a/modules/core.nix +++ b/modules/core.nix @@ -1,190 +1,19 @@ -{ - config, - lib, - pkgs, - inputs, - ... -}: { - options = { - module = { - enable = lib.mkEnableOption "enables packages"; - core.enable = lib.mkEnableOption "enables required packages"; - gui.enable = lib.mkEnableOption "enables gui+DE packages"; - wayland.enable = lib.mkEnableOption "enables wayland packages"; - x11.enable = lib.mkEnableOption "enables x11 packages"; - programming.enable = lib.mkEnableOption "enables programming packages"; - hacking.enable = lib.mkEnableOption "enables hacking packages"; - mudding.enable = lib.mkEnableOption "enables mudding packages"; - gaming.enable = lib.mkEnableOption "enables gaming packages"; - appdevel.enable = lib.mkEnableOption "enables app development in flutter"; - vr.enable = lib.mkEnableOption "enables VR utilities"; - art.enable = lib.mkEnableOption "enabled graphical art stuff"; - }; +{pkgs}: { + system.stateVersion = "24.05"; + time.timeZone = "America/New_York"; + nix.settings.experimental-features = ["flakes" "nix-command"]; + nix.settings.trusted-users = ["@wheel"]; - user = { - enable = lib.mkEnableOption "enables users"; - crow = { - enable = lib.mkEnableOption "enable crow"; - home.enable = lib.mkEnableOption "enable home configuration"; - }; - overseer = { - enable = lib.mkEnableOption "enable container overseer user"; - }; - }; + environment.variables = { + EDITOR = "nvim"; + VISUAL = "nvim"; + NIXPKGS_ALLOW_UNFREE = 1; }; - config = { - system.stateVersion = "24.05"; - time.timeZone = "America/New_York"; - nix.settings.experimental-features = ["flakes" "nix-command"]; - nix.settings.trusted-users = ["@wheel"]; - - environment.variables = { - EDITOR = "nvim"; - VISUAL = "nvim"; - }; - - security.sudo.wheelNeedsPassword = false; - - user = { - enable = lib.mkDefault true; - crow = { - enable = lib.mkDefault false; - home.enable = lib.mkDefault config.user.crow.enable; - }; - overseer = { - enable = lib.mkDefault false; - }; - }; - - fonts.packages = with pkgs; [ - font-awesome - nerd-fonts.noto - nerd-fonts.hack - nerd-fonts.jetbrains-mono - ]; - - module = { - enable = lib.mkDefault true; - core.enable = lib.mkDefault true; - gui.enable = lib.mkDefault false; - programming.enable = lib.mkDefault false; - wayland.enable = lib.mkDefault false; - x11.enable = lib.mkDefault false; - hacking.enable = lib.mkDefault false; - mudding.enable = lib.mkDefault false; - gaming.enable = lib.mkDefault false; - appdevel.enable = lib.mkDefault false; - vr.enable = lib.mkDefault false; - art.enable = lib.mkDefault false; - }; - - desktop = { - sway.enable = lib.mkDefault false; - i3.enable = lib.mkDefault false; - }; - - xdg.portal = { - xdgOpenUsePortal = true; - enable = true; - wlr.enable = true; - lxqt.enable = true; - extraPortals = [ - pkgs.xdg-desktop-portal-wlr - pkgs.xdg-desktop-portal-gtk - pkgs.xdg-desktop-portal-kde - ]; - }; - - programs.zsh = { - enable = true; - autosuggestions = { - enable = true; - async = true; - }; - syntaxHighlighting = { - enable = true; - }; - }; - - programs.starship = { - enable = true; - settings = { - format = "[░▒▓](#a3aed2)[  ](bg:#a3aed2 fg:#090c0c)[](bg:#769ff0 fg:#a3aed2)$directory[](fg:#769ff0 bg:#394260)$git_branch$git_status[](fg:#394260 bg:#212736)$php[](fg:#212736 bg:#1d2230)$time[ ](fg:#1d2230)$character"; - - directory = { - style = "fg:#e3e5e5 bg:#769ff0"; - format = "[ $path ]($style)"; - truncation_length = 3; - truncation_symbol = "…/"; - }; - git_branch = { - symbol = ""; - style = "bg:#394260"; - format = "[[ $symbol $branch ](fg:#769ff0 bg:#394260)]($style)"; - }; - git_status = { - style = "bg:#394260"; - format = "[[($all_status$ahead_behind )](fg:#769ff0 bg:#394260)]($style)"; - }; - php = { - symbol = ""; - style = "bg:#212736"; - format = "[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)"; - }; - time = { - disabled = false; - time_format = "%R"; # Hour:Minute Format - style = "bg:#1d2230"; - format = "[[  $time ](fg:#a0a9cb bg:#1d2230)]($style)"; - }; - }; - }; - - users.defaultUserShell = pkgs.zsh; - - # Configure pulseaudio - hardware.graphics.enable32Bit = config.module.gaming.enable; - hardware.pulseaudio.support32Bit = config.module.gaming.enable; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; - services.keyd = { - enable = true; - keyboards.default = { - ids = ["*"]; - extraConfig = '' - [global] - - default_layout = main - - [main:layout] - - capslock = layer(standardL2) - - [standardL2] - - w = up - s = down - a = left - d = right - - b = C-b - - space = playpause - . = nextsong - , = previoussong - - [ = delete - ] = end - escape = ~ - - home = end - ''; - }; - }; - }; + fonts.packages = with pkgs; [ + font-awesome + nerd-fonts.noto + nerd-fonts.hack + nerd-fonts.jetbrains-mono + ]; } diff --git a/modules/default.nix b/modules/default.nix index aa5782f..3d923c7 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,14 +1,11 @@ { - lib, - config, - ... -}: { imports = [ ./core.nix - ./boot.nix - ./networking.nix + ./options.nix ./programs.nix ./users ./desktops + ./hardware + ./security ]; } diff --git a/modules/hardware/audio.nix b/modules/hardware/audio.nix new file mode 100644 index 0000000..16713a0 --- /dev/null +++ b/modules/hardware/audio.nix @@ -0,0 +1,9 @@ +{ + hardware.pulseaudio.support32Bit = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; +} diff --git a/modules/boot.nix b/modules/hardware/boot.nix similarity index 100% rename from modules/boot.nix rename to modules/hardware/boot.nix diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix new file mode 100644 index 0000000..4517f2a --- /dev/null +++ b/modules/hardware/default.nix @@ -0,0 +1,11 @@ +{ + lib, + config, + ... +}: { + imports = [ + ./network.nix + ./audio.nix + ./boot.nix + ]; +} diff --git a/modules/networking.nix b/modules/hardware/network.nix similarity index 55% rename from modules/networking.nix rename to modules/hardware/network.nix index 0169bec..f29d881 100644 --- a/modules/networking.nix +++ b/modules/hardware/network.nix @@ -1,4 +1,3 @@ { networking.networkmanager.enable = true; - networking.firewall.enable = false; } diff --git a/modules/options.nix b/modules/options.nix new file mode 100644 index 0000000..914290f --- /dev/null +++ b/modules/options.nix @@ -0,0 +1,68 @@ +{ + config, + lib, + ... +}: { + # Start definitions for mkEnableOptions + options = { + module = { + enable = lib.mkEnableOption "enables packages"; + core.enable = lib.mkEnableOption "enables required packages"; + gui.enable = lib.mkEnableOption "enables gui+DE packages"; + wayland.enable = lib.mkEnableOption "enables wayland packages"; + x11.enable = lib.mkEnableOption "enables x11 packages"; + programming.enable = lib.mkEnableOption "enables programming packages"; + hacking.enable = lib.mkEnableOption "enables hacking packages"; + mudding.enable = lib.mkEnableOption "enables mudding packages"; + gaming.enable = lib.mkEnableOption "enables gaming packages"; + appdevel.enable = lib.mkEnableOption "enables app development in flutter"; + vr.enable = lib.mkEnableOption "enables VR utilities"; + art.enable = lib.mkEnableOption "enabled graphical art stuff"; + }; + + user = { + enable = lib.mkEnableOption "enables users"; + crow = { + enable = lib.mkEnableOption "enable crow"; + home.enable = lib.mkEnableOption "enable home configuration"; + }; + overseer = { + enable = lib.mkEnableOption "enable container overseer user"; + }; + }; + }; + + # Set default option states in config + config = { + user = { + enable = lib.mkDefault true; + crow = { + enable = lib.mkDefault false; + home.enable = lib.mkDefault config.user.crow.enable; + }; + overseer = { + enable = lib.mkDefault false; + }; + }; + + module = { + enable = lib.mkDefault true; + core.enable = lib.mkDefault true; + gui.enable = lib.mkDefault false; + programming.enable = lib.mkDefault false; + wayland.enable = lib.mkDefault false; + x11.enable = lib.mkDefault false; + hacking.enable = lib.mkDefault false; + mudding.enable = lib.mkDefault false; + gaming.enable = lib.mkDefault false; + appdevel.enable = lib.mkDefault false; + vr.enable = lib.mkDefault false; + art.enable = lib.mkDefault false; + }; + + desktop = { + sway.enable = lib.mkDefault false; + i3.enable = lib.mkDefault false; + }; + }; +} diff --git a/modules/security/default.nix b/modules/security/default.nix new file mode 100644 index 0000000..e6e5275 --- /dev/null +++ b/modules/security/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./users.nix + ]; +} diff --git a/modules/security/users.nix b/modules/security/users.nix new file mode 100644 index 0000000..af947a8 --- /dev/null +++ b/modules/security/users.nix @@ -0,0 +1,3 @@ +{ + security.sudo.wheelNeedsPassword = false; +} diff --git a/modules/software/default.nix b/modules/software/default.nix new file mode 100644 index 0000000..f101d0c --- /dev/null +++ b/modules/software/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./keyd.nix + ./usershell.nix + ./xdg.nix + ]; +} diff --git a/modules/software/keyd.nix b/modules/software/keyd.nix new file mode 100644 index 0000000..e98cb1d --- /dev/null +++ b/modules/software/keyd.nix @@ -0,0 +1,36 @@ +{ + services.keyd = { + enable = true; + keyboards.default = { + ids = ["*"]; + extraConfig = '' + [global] + + default_layout = main + + [main:layout] + + capslock = layer(standardL2) + + [standardL2] + + w = up + s = down + a = left + d = right + + b = C-b + + space = playpause + . = nextsong + , = previoussong + + [ = delete + ] = end + escape = ~ + + home = end + ''; + }; + }; +} diff --git a/modules/software/usershell.nix b/modules/software/usershell.nix new file mode 100644 index 0000000..919d81a --- /dev/null +++ b/modules/software/usershell.nix @@ -0,0 +1,48 @@ +{pkgs}: { + programs.zsh = { + enable = true; + autosuggestions = { + enable = true; + async = true; + }; + syntaxHighlighting = { + enable = true; + }; + }; + + programs.starship = { + enable = true; + settings = { + format = "[░▒▓](#a3aed2)[  ](bg:#a3aed2 fg:#090c0c)[](bg:#769ff0 fg:#a3aed2)$directory[](fg:#769ff0 bg:#394260)$git_branch$git_status[](fg:#394260 bg:#212736)$php[](fg:#212736 bg:#1d2230)$time[ ](fg:#1d2230)$character"; + + directory = { + style = "fg:#e3e5e5 bg:#769ff0"; + format = "[ $path ]($style)"; + truncation_length = 3; + truncation_symbol = "…/"; + }; + git_branch = { + symbol = ""; + style = "bg:#394260"; + format = "[[ $symbol $branch ](fg:#769ff0 bg:#394260)]($style)"; + }; + git_status = { + style = "bg:#394260"; + format = "[[($all_status$ahead_behind )](fg:#769ff0 bg:#394260)]($style)"; + }; + php = { + symbol = ""; + style = "bg:#212736"; + format = "[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)"; + }; + time = { + disabled = false; + time_format = "%R"; # Hour:Minute Format + style = "bg:#1d2230"; + format = "[[  $time ](fg:#a0a9cb bg:#1d2230)]($style)"; + }; + }; + }; + + users.defaultUserShell = pkgs.zsh; +} diff --git a/modules/software/xdg.nix b/modules/software/xdg.nix new file mode 100644 index 0000000..04eff61 --- /dev/null +++ b/modules/software/xdg.nix @@ -0,0 +1,13 @@ +{pkgs}: { + xdg.portal = { + xdgOpenUsePortal = true; + enable = true; + wlr.enable = true; + lxqt.enable = true; + extraPortals = [ + pkgs.xdg-desktop-portal-wlr + pkgs.xdg-desktop-portal-gtk + pkgs.xdg-desktop-portal-kde + ]; + }; +}