My Nix Configuration
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7let 8 cfg = config.py.programs; 9 inherit (lib) mkEnableOption mkIf; 10in 11{ 12 options.py.programs = { 13 bat.enable = mkEnableOption "bat"; 14 direnv.enable = mkEnableOption "direnv"; 15 fzf.enable = mkEnableOption "fzf"; 16 nix-index.enable = mkEnableOption "nix-index"; 17 obs.enable = mkEnableOption "OBS Studio"; 18 pandoc.enable = mkEnableOption "pandoc"; 19 wakatime.enable = mkEnableOption "wakatime"; 20 zoxide.enable = mkEnableOption "zoxide"; 21 }; 22 config = { 23 catppuccin = { 24 bat.enable = cfg.bat.enable; 25 fzf.enable = cfg.fzf.enable; 26 obs.enable = cfg.obs.enable; 27 }; 28 programs = { 29 bat = mkIf cfg.bat.enable { 30 enable = true; 31 }; 32 direnv = mkIf cfg.direnv.enable { 33 enable = true; 34 enableBashIntegration = true; 35 enableNushellIntegration = true; 36 enableZshIntegration = true; 37 nix-direnv.enable = true; 38 stdlib = builtins.readFile ./direnv-stdlib.sh; 39 }; 40 fzf = mkIf cfg.fzf.enable { 41 enable = true; 42 enableBashIntegration = true; 43 enableZshIntegration = true; 44 }; 45 nix-index = mkIf cfg.nix-index.enable { 46 enable = true; 47 enableBashIntegration = true; 48 enableFishIntegration = true; 49 enableZshIntegration = true; 50 }; 51 obs-studio = mkIf cfg.obs.enable { 52 enable = true; 53 plugins = with pkgs.obs-studio-plugins; [ 54 obs-text-pthread 55 obs-backgroundremoval 56 input-overlay 57 obs-tuna 58 obs-pipewire-audio-capture 59 obs-vkcapture 60 wlrobs 61 ]; 62 }; 63 pandoc = mkIf cfg.pandoc.enable { enable = true; }; 64 zoxide = mkIf cfg.zoxide.enable { 65 enable = true; 66 enableBashIntegration = true; 67 enableFishIntegration = true; 68 enableZshIntegration = true; 69 }; 70 }; 71 home = { 72 packages = mkIf cfg.wakatime.enable [ pkgs.wakatime-cli ]; 73 sessionVariables = { 74 WAKATIME_HOME = "${config.xdg.configHome}/wakatime"; 75 }; 76 }; 77 }; 78}