diff --git a/homeManagerModules/cliPrograms/bun.nix b/homeManagerModules/cliPrograms/bun.nix deleted file mode 100644 index 42fde89..0000000 --- a/homeManagerModules/cliPrograms/bun.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ ... }: -{ - programs.bun = { - enable = true; - enableGitIntegration = true; - }; -} diff --git a/homeManagerModules/cliPrograms/fastfetch/fastfetch.nix b/homeManagerModules/cliPrograms/fastfetch/fastfetch.nix index 31399e6..bb6855e 100644 --- a/homeManagerModules/cliPrograms/fastfetch/fastfetch.nix +++ b/homeManagerModules/cliPrograms/fastfetch/fastfetch.nix @@ -1,7 +1,13 @@ -{ ... }: +{ config, lib, ... }: { - programs.fastfetch = { - enable = true; - settings = builtins.fromJSON (builtins.readFile ./config.jsonc); + options.settings.programs.fastfetch = { + enable = lib.mkEnableOption "enable fastfetch"; + }; + + config = lib.mkIf config.settings.programs.fastfetch.enable { + programs.fastfetch = { + enable = true; + settings = builtins.fromJSON (builtins.readFile ./config.jsonc); + }; }; } diff --git a/homeManagerModules/cliPrograms/git.nix b/homeManagerModules/cliPrograms/git.nix index 7473852..34059f3 100644 --- a/homeManagerModules/cliPrograms/git.nix +++ b/homeManagerModules/cliPrograms/git.nix @@ -1,12 +1,18 @@ -{ ... }: +{ config, lib, ... }: { - programs.git = { - enable = true; - userEmail = "85629831+veneficium42@users.noreply.github.com"; - userName = "Veneficium"; - extraConfig = { - init.defaultBranch = "main"; - credential.credentialStore = "gpg"; + options.settings.programs.git = { + enable = lib.mkEnableOption "enable git"; + }; + + config = lib.mkIf config.settings.programs.git.enable { + programs.git = { + enable = true; + userEmail = "85629831+veneficium42@users.noreply.github.com"; + userName = "Veneficium"; + extraConfig = { + init.defaultBranch = "main"; + credential.credentialStore = "gpg"; + }; }; }; } diff --git a/homeManagerModules/cliPrograms/hyfetch.nix b/homeManagerModules/cliPrograms/hyfetch.nix index c197e21..782b777 100644 --- a/homeManagerModules/cliPrograms/hyfetch.nix +++ b/homeManagerModules/cliPrograms/hyfetch.nix @@ -1,7 +1,13 @@ -{ ... }: +{ config, lib, ... }: { - programs.hyfetch = { - enable = true; - #todo add hyfetch config + options.settings.programs.hyfetch = { + enable = lib.mkEnableOption "enables hyfetch"; + }; + + config = lib.mkIf config.settings.programs.hyfetch.enable { + programs.hyfetch = { + enable = true; + #todo add hyfetch config + }; }; } diff --git a/homeManagerModules/cliPrograms/pass.nix b/homeManagerModules/cliPrograms/pass.nix index 545e2de..9f584d3 100644 --- a/homeManagerModules/cliPrograms/pass.nix +++ b/homeManagerModules/cliPrograms/pass.nix @@ -1,10 +1,22 @@ -{ pkgs, ... }: { - programs.password-store = { - enable = true; - package = pkgs.pass-wayland.withExtensions (exts: [ - exts.pass-checkup - exts.pass-audit - ]); + config, + lib, + pkgs, + ... +}: +{ + + options.settings.programs.pass = { + enable = lib.mkEnableOption "enable pass"; + }; + + config = lib.mkIf config.settings.programs.pass.enable { + programs.password-store = { + enable = true; + package = pkgs.pass-wayland.withExtensions (exts: [ + exts.pass-checkup + exts.pass-audit + ]); + }; }; } diff --git a/homeManagerModules/cliPrograms/starship/starship.nix b/homeManagerModules/cliPrograms/starship/starship.nix index 4e7f8a0..e7e9e59 100644 --- a/homeManagerModules/cliPrograms/starship/starship.nix +++ b/homeManagerModules/cliPrograms/starship/starship.nix @@ -1,11 +1,17 @@ -{ ... }: +{ config, lib, ... }: { - programs.starship = { - enable = true; - #enableZshIntegration = true; - enableTransience = true; - enableFishIntegration = true; + options.settings.programs.starship = { + enable = lib.mkEnableOption "enable starship prompt"; + }; - settings = builtins.fromTOML (builtins.readFile ./starship.toml); + config = lib.mkIf config.settings.programs.starship.enable { + programs.starship = { + enable = true; + #enableZshIntegration = true; + enableTransience = true; + enableFishIntegration = true; + + settings = builtins.fromTOML (builtins.readFile ./starship.toml); + }; }; } diff --git a/homeManagerModules/default.nix b/homeManagerModules/default.nix new file mode 100644 index 0000000..fea0983 --- /dev/null +++ b/homeManagerModules/default.nix @@ -0,0 +1,51 @@ +{ lib, ... }: +{ + imports = [ + #./zsh.nix + ./fish.nix + ./niri.nix + + ./development/rust.nix + ./development/bun.nix + + ./cliPrograms/pass.nix + ./cliPrograms/hyfetch.nix + ./cliPrograms/git.nix + + ./cliPrograms/starship/starship.nix + ./cliPrograms/fastfetch/fastfetch.nix + + ./desktopPrograms/firefox.nix + ./desktopPrograms/amberol.nix + + ./desktopPrograms/wezterm/wezterm.nix + ./desktopPrograms/vscodium/vscodium.nix + ]; + + settings = { + shell.fish.enable = lib.mkDefault true; + + development = { + rust = { + enable = lib.mkDefault false; + enableVSCode = lib.mkDefault false; + }; + + bun.enable = lib.mkDefault false; + }; + + programs = { + firefox.enable = lib.mkDefault false; + amberol.enable = lib.mkDefault false; + wezterm.enable = lib.mkDefault false; + vscodium.enable = lib.mkDefault false; + + pass.enable = lib.mkDefault true; + hyfetch.enable = lib.mkDefault false; + git.enable = lib.mkDefault true; + starship.enable = lib.mkDefault false; + fastfetch.enable = lib.mkDefault true; + }; + }; + +} diff --git a/homeManagerModules/desktopPrograms/amberol.nix b/homeManagerModules/desktopPrograms/amberol.nix index afc32d6..d53768b 100644 --- a/homeManagerModules/desktopPrograms/amberol.nix +++ b/homeManagerModules/desktopPrograms/amberol.nix @@ -1,4 +1,10 @@ -{ ... }: +{ config, lib, ... }: { - services.amberol.enable = true; + options.settings.programs.amberol = { + enable = lib.mkEnableOption "enable amberol music player"; + }; + + config = lib.mkIf config.settings.programs.amberol.enable { + services.amberol.enable = true; + }; } diff --git a/homeManagerModules/desktopPrograms/firefox.nix b/homeManagerModules/desktopPrograms/firefox.nix index 924956d..2356cf5 100644 --- a/homeManagerModules/desktopPrograms/firefox.nix +++ b/homeManagerModules/desktopPrograms/firefox.nix @@ -1,9 +1,20 @@ -{ pkgs, ... }: { - #todo config - programs.firefox = { - enable = true; - #todo make sure this on only if gnome is setup correctly - nativeMessagingHosts = [ pkgs.gnome-browser-connector ]; + config, + lib, + pkgs, + ... +}: +{ + options.settings.programs.firefox = { + enable = lib.mkEnableOption "enable firefox"; + }; + + config = lib.mkIf config.settings.programs.firefox.enable { + #todo config + programs.firefox = { + enable = true; + #todo make sure this on only if gnome is setup correctly + nativeMessagingHosts = [ pkgs.gnome-browser-connector ]; + }; }; } diff --git a/homeManagerModules/desktopPrograms/vscodium/vscodium.nix b/homeManagerModules/desktopPrograms/vscodium/vscodium.nix index d327524..c259c2e 100644 --- a/homeManagerModules/desktopPrograms/vscodium/vscodium.nix +++ b/homeManagerModules/desktopPrograms/vscodium/vscodium.nix @@ -1,16 +1,26 @@ -{ pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: { #The VSCoderrrrrrrr #codepilled nixmaxxer #god I love tumblr #tumblrpilled mememaxxer - programs.vscode = { - enable = true; - package = pkgs.vscodium; - enableUpdateCheck = false; - enableExtensionUpdateCheck = false; - mutableExtensionsDir = false; + options.settings.programs.vscodium = { + enable = lib.mkEnableOption "enable vscode for development"; + }; + + config = lib.mkIf config.settings.programs.vscodium.enable { + programs.vscode = { + enable = true; + package = pkgs.vscodium; + enableUpdateCheck = false; + enableExtensionUpdateCheck = false; + mutableExtensionsDir = false; extensions = with pkgs.vscode-extensions; @@ -32,6 +42,7 @@ bierner.markdown-preview-github-styles ]); - userSettings = builtins.fromJSON (builtins.readFile ./settings.json); + userSettings = builtins.fromJSON (builtins.readFile ./settings.json); + }; }; } diff --git a/homeManagerModules/desktopPrograms/wezterm/wezterm.nix b/homeManagerModules/desktopPrograms/wezterm/wezterm.nix index 3f08048..9d8af6f 100644 --- a/homeManagerModules/desktopPrograms/wezterm/wezterm.nix +++ b/homeManagerModules/desktopPrograms/wezterm/wezterm.nix @@ -1,8 +1,14 @@ -{ ... }: +{ config, lib, ... }: { - programs.wezterm = { - enable = true; - #enableZshIntegration = true; - extraConfig = builtins.replaceStrings [ "-- nix-replace" ] [ "" ] (builtins.readFile ./wezterm.lua); + options.settings.programs.wezterm = { + enable = lib.mkEnableOption "enable wezterm terminal emulator"; + }; + + config = lib.mkIf config.settings.programs.wezterm.enable { + programs.wezterm = { + enable = true; + #enableZshIntegration = true; + extraConfig = builtins.replaceStrings [ "-- nix-replace" ] [ "" ] (builtins.readFile ./wezterm.lua); + }; }; } diff --git a/homeManagerModules/development/bun.nix b/homeManagerModules/development/bun.nix new file mode 100644 index 0000000..903669e --- /dev/null +++ b/homeManagerModules/development/bun.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +{ + options.settings.development.bun = { + enable = lib.mkEnableOption "enable bun for js development"; + }; + + config = lib.mkIf config.settings.development.bun.enable { + programs.bun = { + enable = true; + enableGitIntegration = true; + }; + }; +} diff --git a/homeManagerModules/development/rust.nix b/homeManagerModules/development/rust.nix index f80390c..e44a4f3 100644 --- a/homeManagerModules/development/rust.nix +++ b/homeManagerModules/development/rust.nix @@ -1,17 +1,30 @@ -{ pkgs, ... }: { - home.packages = with pkgs; [ - cargo - rustc - rustfmt - ]; + config, + lib, + pkgs, + ... +}: +{ + options.settings.development.rust = { + enable = lib.mkEnableOption "enable rust toolchain and various dev tools"; + enableVSCode = lib.mkEnableOption "enable VSCode extension for rust"; + }; - programs.vscode.extensions = - with pkgs.vscode-extensions; - [ - rust-lang.rust-analyzer - ] - ++ (with pkgs.open-vsx; [ - tamasfe.even-better-toml - ]); + config = lib.mkIf config.settings.development.rust.enable { + home.packages = with pkgs; [ + cargo + rustc + rustfmt + ]; + + programs.vscode.extensions = lib.mkIf config.settings.development.rust.enableVSCode ( + with pkgs.vscode-extensions; + [ + rust-lang.rust-analyzer + ] + ++ (with pkgs.open-vsx; [ + tamasfe.even-better-toml + ]) + ); + }; } diff --git a/homeManagerModules/fish.nix b/homeManagerModules/fish.nix index 32c4965..afe532d 100644 --- a/homeManagerModules/fish.nix +++ b/homeManagerModules/fish.nix @@ -1,12 +1,23 @@ -{ pkgs, ... }: { - programs.fish = { - enable = true; - plugins = [ - { - name = "fish-you-should-use"; - src = pkgs.fishPlugins.fish-you-should-use; - } - ]; + config, + lib, + pkgs, + ... +}: +{ + options.settings.shell.fish = { + enable = lib.mkEnableOption "enable fish shell"; + }; + + config = lib.mkIf config.settings.shell.fish.enable { + programs.fish = { + enable = true; + plugins = [ + { + name = "fish-you-should-use"; + src = pkgs.fishPlugins.fish-you-should-use; + } + ]; + }; }; } diff --git a/homeManagerModules/niri.nix b/homeManagerModules/niri.nix index 5710797..5def2f3 100644 --- a/homeManagerModules/niri.nix +++ b/homeManagerModules/niri.nix @@ -1,4 +1,4 @@ { ... }: { - programs.niri.config = ""; + programs.niri.config = null; } diff --git a/hosts/main-laptop/home.nix b/hosts/main-laptop/home.nix index 2e82c30..f9f11d4 100644 --- a/hosts/main-laptop/home.nix +++ b/hosts/main-laptop/home.nix @@ -1,25 +1,32 @@ -{ pkgs, ... }: +{ lib, pkgs, ... }: { imports = [ #../../homeManagerModules/zsh.nix - ../../homeManagerModules/fish.nix - - ../../homeManagerModules/development/rust.nix - - ../../homeManagerModules/desktopPrograms/firefox.nix - ../../homeManagerModules/desktopPrograms/wezterm/wezterm.nix - ../../homeManagerModules/desktopPrograms/vscodium/vscodium.nix - ../../homeManagerModules/desktopPrograms/amberol.nix - - ../../homeManagerModules/cliPrograms/starship/starship.nix - ../../homeManagerModules/cliPrograms/fastfetch/fastfetch.nix - ../../homeManagerModules/cliPrograms/hyfetch.nix - ../../homeManagerModules/cliPrograms/bun.nix - ../../homeManagerModules/cliPrograms/git.nix - ../../homeManagerModules/cliPrograms/pass.nix + ../../homeManagerModules/default.nix ]; + settings = { + development = { + rust = { + enable = lib.mkForce true; + enableVSCode = lib.mkForce true; + }; + + bun.enable = lib.mkForce true; + }; + + programs = { + firefox.enable = lib.mkForce true; + amberol.enable = lib.mkForce true; + wezterm.enable = lib.mkForce true; + vscodium.enable = lib.mkForce true; + + starship.enable = lib.mkForce true; + hyfetch.enable = lib.mkForce true; + }; + }; + #todo: EditorConfig support ( https://editorconfig.org ) programs.gnome-shell = {