diff --git a/features/dev.nix b/features/dev.nix index fe5dce1..98d423f 100644 --- a/features/dev.nix +++ b/features/dev.nix @@ -1,25 +1,29 @@ { + nixos = + { lib, ... }: + { + options.features.dev.enable = lib.mkEnableOption "development tools"; + }; + home = - { pkgs, inputs, ... }: + { pkgs, lib, inputs, osConfig, ... }: let + cfg = osConfig.features.dev; packages = inputs.self.outputs.packages.${pkgs.stdenv.hostPlatform.system}; in { - home.packages = [ - pkgs.git - packages.git-linearize - packages.ggman + config = lib.mkIf cfg.enable { + home.packages = [ + pkgs.python3 + pkgs.osc - pkgs.python3 - pkgs.osc - - pkgs.google-cloud-sdk - pkgs.google-cloud-sql-proxy - - packages.ahab - pkgs.just - pkgs.presenterm - ]; + pkgs.google-cloud-sdk + pkgs.google-cloud-sql-proxy + packages.ahab + pkgs.just + pkgs.presenterm + ]; + }; }; } diff --git a/features/git.nix b/features/git.nix new file mode 100644 index 0000000..764eff3 --- /dev/null +++ b/features/git.nix @@ -0,0 +1,23 @@ +{ + nixos = + { lib, ... }: + { + options.features.git.enable = lib.mkEnableOption "git"; + }; + + home = + { pkgs, lib, inputs, osConfig, ... }: + let + cfg = osConfig.features.git; + packages = inputs.self.outputs.packages.${pkgs.stdenv.hostPlatform.system}; + in + { + config = lib.mkIf cfg.enable { + home.packages = [ + pkgs.git + packages.git-linearize + packages.ggman + ]; + }; + }; +} diff --git a/features/shell-minimal.nix b/features/shell-minimal.nix deleted file mode 100644 index 5ecde47..0000000 --- a/features/shell-minimal.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - nixos = _: { - programs.zsh.enable = true; - environment.etc."zshenv".text = '' - export ZDOTDIR=$HOME/.config/zsh - ''; - }; - - home = - { pkgs, ... }: - { - home.packages = with pkgs; [ - starship - ]; - }; -} diff --git a/features/shell.nix b/features/shell.nix index 23c2ce1..43f41cd 100644 --- a/features/shell.nix +++ b/features/shell.nix @@ -1,25 +1,28 @@ { - nixos = _: { - programs.zsh.enable = true; - environment.etc."zshenv".text = '' - export ZDOTDIR=$HOME/.config/zsh - ''; - }; + nixos = + { lib, ... }: + { + options.features.shell.enable = lib.mkEnableOption "shell extras"; + }; home = - { pkgs, ... }: + { pkgs, lib, osConfig, ... }: + let + cfg = osConfig.features.shell; + in { - home.packages = with pkgs; [ - starship - fzf - htop - jc - jq - openssl - pv - ripgrep - fd - tmux - ]; + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + fzf + htop + jc + jq + openssl + pv + ripgrep + fd + tmux + ]; + }; }; } diff --git a/features/user-matej.nix b/features/user-matej.nix index c47213d..50d3086 100644 --- a/features/user-matej.nix +++ b/features/user-matej.nix @@ -10,15 +10,12 @@ in }; nixos = - { pkgs, ... }: + { ... }: { - programs.zsh.enable = true; - users.users.matej = { uid = 1000; isNormalUser = true; home = "/home/matej"; - shell = pkgs.zsh; extraGroups = [ "wheel" ]; openssh.authorizedKeys.keys = sshKeys; }; diff --git a/features/zsh.nix b/features/zsh.nix new file mode 100644 index 0000000..646b62e --- /dev/null +++ b/features/zsh.nix @@ -0,0 +1,42 @@ +{ + nixos = + { config, lib, pkgs, user, ... }: + let + cfg = config.features.zsh; + in + { + options.features.zsh = { + enable = lib.mkEnableOption "zsh"; + + loginShell.enable = lib.mkOption { + type = lib.types.bool; + default = true; + + }; + }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + programs.zsh.enable = true; + environment.etc."zshenv".text = '' + export ZDOTDIR=$HOME/.config/zsh + ''; + } + + (lib.mkIf cfg.loginShell.enable { + users.users.${user}.shell = pkgs.zsh; + }) + ]); + }; + + home = + { pkgs, lib, osConfig, ... }: + let + cfg = osConfig.features.zsh; + in + { + config = lib.mkIf cfg.enable { + home.packages = [ pkgs.starship ]; + }; + }; +}