{ config, lib, pkgs, inputs, ... }: let artPkgs = lib.attrVals [ #"armorpaint" "blender" "gimp" "inkscape" "krita" #"prusa-slicer" ] pkgs; handheldPkgs = lib.attrVals [ "chatty" "fluffychat" "gnome-console" "gnome-text-editor" "megapixels" ] pkgs; pcPkgs = lib.attrVals [ #osu-lazer "dracula-theme" "wl-clipboard" "brightnessctl" "powertop" "easyeffects" "mutt-wizard" "gamescope" "cyrus-sasl-xoauth2" "libnotify" "networkmanager-openvpn" # temporary home manager things "inotify-tools" "eww" "jq" "texliveFull" "pandoc" "img2pdf" "socat" "libimobiledevice" "ifuse" ] pkgs ++ [ inputs.osu-nixos pkgs.wineWowPackages.stableFull ]; serverPkgs = lib.attrVals [ #"package" ] pkgs; in { options = { stitchyconf = { form = lib.mkOption { default = "pc"; description = "Add moar packages I don't need"; type = lib.types.enum [ "pc" "handheld" "server" ]; }; artPkgs.enable = lib.mkEnableOption "Standard Linux Creative Suite"; }; }; config = { environment.systemPackages = (lib.attrVals [ "btop" "eza" "fd" "git" "glib" "gnumake" "gnupg" "pinentry" "neofetch" "wget" "zoxide" ] pkgs) ++ (lib.optionals config.stitchyconf.artPkgs.enable artPkgs) ++ (lib.optionals (config.stitchyconf.form == "pc") pcPkgs) ++ (lib.optionals (config.stitchyconf.form == "handheld") handheldPkgs) ++ (lib.optionals (config.stitchyconf.form == "server") serverPkgs); # To-do figure out how to section these off programs = { neovim = { enable = true; viAlias = true; vimAlias = true; defaultEditor = true; configure = { customRC = builtins.readFile ../config/nvim/init.vim; packages.myVimPackage = with pkgs.vimPlugins; { start = [ nvim-lspconfig nvim-cmp cmp-nvim-lsp luasnip cmp_luasnip tokyonight-nvim vim-lsp-cxx-highlight typst-vim ]; }; }; }; nix-ld.enable = true; virt-manager.enable = true; zsh.enable = true; }; nixpkgs.overlays = [ (final: prev: { # Because Luck Smith hasn't released in 2 years mutt-wizard = prev.mutt-wizard.overrideAttrs (old: { src = prev.fetchFromGitHub { owner = "LukeSmithxyz"; repo = "mutt-wizard"; rev = "a8863a750a360bad6759f5f2c4df5d2001b31e18"; hash = "sha256-8zPkzQ1Tt9t8G+uCKybBm4yMqfF2y4L7nmuaWWz9t6s="; }; }); }) ]; fonts.packages = lib.attrVals [ "noto-fonts" "noto-fonts-emoji" "liberation_ttf" "nerdfonts" "ipafont" ] pkgs; }; }