From 244b244c1047a153fcac846be507edcf1c2f5622 Mon Sep 17 00:00:00 2001 From: Tyler Starr Date: Thu, 29 May 2025 22:19:15 -0700 Subject: [PATCH] rework cfg options for programs --- provision/modules/base/plus.nix | 11 +++++++ provision/modules/desktop/default.nix | 11 +++++-- provision/modules/programs/appgate-sdp.nix | 1 + provision/modules/programs/beancount.nix | 4 ++- provision/modules/programs/borg.nix | 4 ++- provision/modules/programs/chezmoi.nix | 33 +++++++-------------- provision/modules/programs/chrome.nix | 7 +---- provision/modules/programs/default.nix | 9 ++++++ provision/modules/programs/firefox.nix | 7 +---- provision/modules/programs/git.nix | 31 +++++++------------ provision/modules/programs/kitty.nix | 4 ++- provision/modules/programs/virt-manager.nix | 1 + provision/modules/programs/yt-dlp.nix | 4 ++- 13 files changed, 65 insertions(+), 62 deletions(-) diff --git a/provision/modules/base/plus.nix b/provision/modules/base/plus.nix index ce35f71b..4c52d89a 100644 --- a/provision/modules/base/plus.nix +++ b/provision/modules/base/plus.nix @@ -7,5 +7,16 @@ in { ../programs/borg.nix ../programs/yt-dlp.nix ]; + options.modules.base-plus.enable = lib.mkEnableOption "base-plus"; + + config = { + modules = { + programs = { + borg.enable = true; + beancount.enable = true; + yt-dlp.enable = true; + }; + }; + }; } diff --git a/provision/modules/desktop/default.nix b/provision/modules/desktop/default.nix index 2b20c161..3d07d563 100644 --- a/provision/modules/desktop/default.nix +++ b/provision/modules/desktop/default.nix @@ -7,9 +7,6 @@ in { ./keyd.nix ./gnome.nix ./peripherals.nix - ../programs/chrome.nix - ../programs/firefox.nix - ../programs/kitty.nix ]; options.modules.desktop.enable = lib.mkEnableOption "desktop"; @@ -46,5 +43,13 @@ in { "application/x-extension-xht" = [ "google-chrome.desktop" ]; "application/pdf" = [ "google-chrome.desktop" ]; }; }; + + modules = { + programs = { + chrome.enable = true; + firefox.enable = true; + kitty.enable = true; + }; + }; }; } diff --git a/provision/modules/programs/appgate-sdp.nix b/provision/modules/programs/appgate-sdp.nix index 6c03b525..f57213f1 100644 --- a/provision/modules/programs/appgate-sdp.nix +++ b/provision/modules/programs/appgate-sdp.nix @@ -3,6 +3,7 @@ let cfg = config.modules.programs.appgate-sdp; in { options.modules.programs.appgate-sdp.enable = lib.mkEnableOption "appgate-sdp"; + config = lib.mkIf cfg.enable { environment.systemPackages = with pkgs; [ appgate-sdp diff --git a/provision/modules/programs/beancount.nix b/provision/modules/programs/beancount.nix index 8f55ff43..b5621b19 100644 --- a/provision/modules/programs/beancount.nix +++ b/provision/modules/programs/beancount.nix @@ -1,7 +1,9 @@ { config, lib, pkgs, user, ... }: -let cfg = config.modules.base-plus; +let cfg = config.modules.programs.beancount; in { + options.modules.programs.beancount.enable = lib.mkEnableOption "beancount"; + config = lib.mkIf cfg.enable { environment.systemPackages = with pkgs; [ fava # Web interface for the double-entry bookkeeping software Beancount diff --git a/provision/modules/programs/borg.nix b/provision/modules/programs/borg.nix index 94a9693d..16837559 100644 --- a/provision/modules/programs/borg.nix +++ b/provision/modules/programs/borg.nix @@ -1,7 +1,9 @@ { config, pkgs, user, lib, ... }: -let cfg = config.modules.base-plus; +let cfg = config.modules.programs.borg; in { + options.modules.programs.borg.enable = lib.mkEnableOption "borg"; + config = lib.mkIf cfg.enable { environment.systemPackages = with pkgs; [ borgbackup # Deduplicating backup program diff --git a/provision/modules/programs/chezmoi.nix b/provision/modules/programs/chezmoi.nix index 92e325de..aa4620d6 100644 --- a/provision/modules/programs/chezmoi.nix +++ b/provision/modules/programs/chezmoi.nix @@ -1,26 +1,15 @@ { config, lib, pkgs, user, home-manager, ... }: +{ + environment.systemPackages = with pkgs; [ + chezmoi # Manage your dotfiles across multiple machines, securely + ]; -let cfg = config.modules.programs.chezmoi; -in { - options.modules.programs.chezmoi = with lib; { - apply = lib.mkOption { - type = with types; bool; - default = true; - }; - }; - - config = { - environment.systemPackages = with pkgs; [ - chezmoi # Manage your dotfiles across multiple machines, securely - ]; - - home-manager.users.${user} = lib.mkIf cfg.apply { - home.activation.chezmoi = home-manager.lib.hm.dag.entryAfter [ "installPackages" ] '' - _saved_path=$PATH - PATH="${pkgs.git}/bin:$PATH" - run ${pkgs.chezmoi}/bin/chezmoi apply --force - PATH=$_saved_path - ''; - }; + home-manager.users.${user} = { + home.activation.chezmoi = home-manager.lib.hm.dag.entryAfter [ "installPackages" ] '' + _saved_path=$PATH + PATH="${pkgs.git}/bin:$PATH" + run ${pkgs.chezmoi}/bin/chezmoi apply --force + PATH=$_saved_path + ''; }; } diff --git a/provision/modules/programs/chrome.nix b/provision/modules/programs/chrome.nix index bc78fdc7..7ca65e56 100644 --- a/provision/modules/programs/chrome.nix +++ b/provision/modules/programs/chrome.nix @@ -2,12 +2,7 @@ let cfg = config.modules.programs.chrome; in { - options.modules.programs.chrome = with lib; { - enable = lib.mkOption { - type = types.bool; - default = true; - }; - }; + options.modules.programs.chrome.enable = lib.mkEnableOption "chrome"; config = lib.mkIf cfg.enable { environment.systemPackages = with pkgs; [ diff --git a/provision/modules/programs/default.nix b/provision/modules/programs/default.nix index 721b01e4..8fb1dfd3 100644 --- a/provision/modules/programs/default.nix +++ b/provision/modules/programs/default.nix @@ -2,6 +2,15 @@ { imports = [ ./appgate-sdp.nix + ./beancount.nix + ./borg.nix + ./chezmoi.nix + ./chrome.nix + ./firefox.nix + ./git.nix + ./kitty.nix + ./nvim.nix ./virt-manager.nix + ./yt-dlp.nix ]; } diff --git a/provision/modules/programs/firefox.nix b/provision/modules/programs/firefox.nix index 177e60ff..d68c14dc 100644 --- a/provision/modules/programs/firefox.nix +++ b/provision/modules/programs/firefox.nix @@ -2,12 +2,7 @@ let cfg = config.modules.programs.firefox; in { - options.modules.programs.firefox = with lib; { - enable = lib.mkOption { - type = types.bool; - default = true; - }; - }; + options.modules.programs.firefox.enable = lib.mkEnableOption "firefox"; config = lib.mkIf cfg.enable { environment.systemPackages = with pkgs; [ diff --git a/provision/modules/programs/git.nix b/provision/modules/programs/git.nix index 8de77862..fedff542 100644 --- a/provision/modules/programs/git.nix +++ b/provision/modules/programs/git.nix @@ -1,25 +1,14 @@ { config, lib, pkgs, user, ... }: +{ + environment.systemPackages = with pkgs; [ + git # Version control system for tracking changes in source code during software development + git-annex # Manages files with git, without checking the file contents into git + lazygit # Terminal-based GUI for git, making it easier to use and visualize git repositories + ]; -let cfg = config.modules.programs.git; -in { - options.modules.programs.git = with lib; { - keys = lib.mkOption { - type = with types; bool; - default = true; - }; - }; - - config = { - environment.systemPackages = with pkgs; [ - git # Version control system for tracking changes in source code during software development - git-annex # Manages files with git, without checking the file contents into git - lazygit # Terminal-based GUI for git, making it easier to use and visualize git repositories - ]; - - age.secrets."git/github_personal" = lib.mkIf cfg.keys { - file = ../../secrets/git/github_personal.age; - owner = "${user}"; - group = "users"; - }; + age.secrets."git/github_personal" = { + file = ../../secrets/git/github_personal.age; + owner = "${user}"; + group = "users"; }; } diff --git a/provision/modules/programs/kitty.nix b/provision/modules/programs/kitty.nix index 0a8bbb0f..681e5463 100644 --- a/provision/modules/programs/kitty.nix +++ b/provision/modules/programs/kitty.nix @@ -1,7 +1,9 @@ { config, lib, pkgs, user, inputs, home-manager, ... }: -let cfg = config.modules.desktop; +let cfg = config.modules.programs.kitty; in { + options.modules.programs.kitty.enable = lib.mkEnableOption "kitty"; + config = lib.mkIf cfg.enable { home-manager.users.${user} = { home.packages = with pkgs; [ diff --git a/provision/modules/programs/virt-manager.nix b/provision/modules/programs/virt-manager.nix index 9c27f4ad..7bab3af2 100644 --- a/provision/modules/programs/virt-manager.nix +++ b/provision/modules/programs/virt-manager.nix @@ -3,6 +3,7 @@ let cfg = config.modules.programs.virt-manager; in { options.modules.programs.virt-manager.enable = lib.mkEnableOption "virt-manager"; + config = lib.mkIf cfg.enable { environment.systemPackages = with pkgs; [ virt-manager # Desktop application for managing virtual machines through libvirt diff --git a/provision/modules/programs/yt-dlp.nix b/provision/modules/programs/yt-dlp.nix index dd6ca632..66a92621 100644 --- a/provision/modules/programs/yt-dlp.nix +++ b/provision/modules/programs/yt-dlp.nix @@ -1,7 +1,9 @@ { config, lib, pkgs, user, ... }: -let cfg = config.modules.base-plus; +let cfg = config.modules.programs.yt-dlp; in { + options.modules.programs.yt-dlp.enable = lib.mkEnableOption "yt-dlp"; + config = lib.mkIf cfg.enable { environment.systemPackages = with pkgs; [ yt-dlp # Command-line tool to download videos