summaryrefslogtreecommitdiff
path: root/modules/sets.nix
diff options
context:
space:
mode:
authorSimon Parri <simonparri@ganzeria.com>2025-05-09 17:54:45 -0500
committerSimon Parri <simonparri@ganzeria.com>2025-05-09 17:54:45 -0500
commit4ea08b3976188eb01a74548d68b227a7794b4caa (patch)
tree505c0df98ed00ed592be15895b8ed3eb7aa9e2c3 /modules/sets.nix
downloadnixos-config-4ea08b3976188eb01a74548d68b227a7794b4caa.tar.gz
nixos-config-4ea08b3976188eb01a74548d68b227a7794b4caa.zip
Add current configuration
Diffstat (limited to 'modules/sets.nix')
-rw-r--r--modules/sets.nix170
1 files changed, 170 insertions, 0 deletions
diff --git a/modules/sets.nix b/modules/sets.nix
new file mode 100644
index 0000000..65ca568
--- /dev/null
+++ b/modules/sets.nix
@@ -0,0 +1,170 @@
+{ lib, config, pkgs, ... }:
+
+let
+ cfg = config.this.sets;
+
+ attrFromPath' = (path: attrs:
+ (lib.hasAttrByPath path attrs) &&
+ (lib.getAttrFromPath path attrs));
+ doSets = (sets:
+ let recur = (path: a:
+ if (builtins.typeOf a) == "set" then
+ builtins.attrValues
+ (builtins.mapAttrs (k: v: recur (path++[k]) v) a)
+ else
+ lib.optionals (attrFromPath' path cfg) a
+ ); in
+ lib.flatten (recur [] sets));
+in
+{
+ imports = [
+ ./locales.nix
+ ];
+
+ options.this.sets = {
+ arch.tools = lib.mkEnableOption "package set";
+ cli.tools.minimal = lib.mkEnableOption "package set" // { default = cfg.cli.tools.full; };
+ cli.tools.full = lib.mkEnableOption "package set";
+ cli.shell = lib.mkEnableOption "package set";
+ comm.im = lib.mkEnableOption "package set";
+ de.utils = lib.mkEnableOption "package set";
+ gui.minimal = lib.mkEnableOption "package set" // { default = cfg.gui.full; };
+ gui.full = lib.mkEnableOption "package set";
+ gui.theme = lib.mkEnableOption "package set";
+ gui.fonts = lib.mkEnableOption "package set";
+ image.utils = lib.mkEnableOption "package set";
+ image.tools = lib.mkEnableOption "package set";
+ manga.dl = lib.mkEnableOption "package set";
+ media.tools = lib.mkEnableOption "package set";
+ net.tools.minimal = lib.mkEnableOption "package set" // { default = cfg.net.tools.full; };
+ net.tools.full = lib.mkEnableOption "package set";
+ script.utils = lib.mkEnableOption "package set";
+ sound.tools = lib.mkEnableOption "package set";
+ sys.tools = lib.mkEnableOption "package set";
+ writing.tools = lib.mkEnableOption "package set";
+
+ gui.usePicom = lib.mkEnableOption "picom package" // { default = true; };
+ gui.useEmoji = lib.mkEnableOption "emoji font package" // { default = true; };
+ };
+
+ config = {
+ environment.systemPackages =
+ with pkgs;
+ doSets {
+ arch.tools = [
+ p7zip
+ unrar-free
+ unzip
+ zip
+ ];
+ cli.tools.minimal = [
+ pv
+ wget
+ ];
+ cli.tools.full = [
+ git
+ lftp
+ gnumake
+ jq
+ rsync
+ sshfs
+ tmux
+ ];
+ cli.shell = [
+ fzf
+ ];
+ comm.im = [
+ gajim
+ ];
+ de.utils = [
+ aspell
+ feh
+ pass
+ ];
+ gui.minimal = [
+ autocutsel
+ dunst
+ rxvt-unicode
+ unclutter-xfixes
+ ];
+ gui.full = [
+ arandr
+ redshift
+ screenkey
+ tigervnc
+ x11vnc
+ ];
+ gui.theme = [
+ adwaita-icon-theme
+ papirus-icon-theme
+ pywal
+ xsettingsd
+ ] ++ lib.optional cfg.gui.usePicom picom;
+ image.utils = [
+ imagemagick
+ ];
+ image.tools = [
+ gimp
+ inkscape
+ ];
+ manga.dl = [
+ gallery-dl
+ img2pdf
+ ];
+ media.tools = [
+ beets
+ exiftool
+ mpv
+ yt-dlp
+ ];
+ net.tools.minimal = [
+ host
+ traceroute
+ whois
+ ];
+ net.tools.full = [
+ nmap
+ ];
+ script.utils = [
+ espeak-ng
+ firejail
+ ruby
+ ];
+ sound.tools = [
+ alsa-tools
+ pulseaudio
+ pulsemixer
+ ];
+ sys.tools = [
+ lsof
+ pciutils
+ usbutils
+ vim
+ ];
+ writing.tools = [
+ pandoc
+ proselint
+ ];
+ };
+ programs.mosh.enable = cfg.cli.tools.full;
+ programs.zsh = {
+ enable = cfg.cli.shell;
+ syntaxHighlighting.enable = cfg.cli.shell;
+ };
+ programs.gnupg.agent = {
+ enable = cfg.de.utils;
+ pinentryPackage = pkgs.pinentry-qt;
+ };
+
+ fonts.packages = lib.optionals cfg.gui.fonts (
+ lib.optional cfg.gui.useEmoji
+ pkgs.noto-fonts-emoji ++
+ lib.optional (builtins.elem "jp" config.this.locales.all)
+ pkgs.noto-fonts-cjk-sans
+ ++ [
+ pkgs.dejavu_fonts
+ pkgs.unifont
+ ]);
+ fonts.enableDefaultPackages = lib.mkIf cfg.gui.fonts false;
+ };
+}