diff options
author | Linnnus <[email protected]> | 2023-09-06 08:18:38 +0200 |
---|---|---|
committer | Linnnus <[email protected]> | 2023-09-06 08:18:38 +0200 |
commit | 17d483c8c8a96fad2200acaf802b7ef0b0eb494d (patch) | |
tree | d7807d842accf3730e6f4277d0b2dea00d8a811d /use-cases/default.nix | |
parent | 326cf19b227f04cb5fa6291943334f7c91b279d9 (diff) |
hej gør lige mere
Diffstat (limited to 'use-cases/default.nix')
-rw-r--r-- | use-cases/default.nix | 40 |
1 files changed, 15 insertions, 25 deletions
diff --git a/use-cases/default.nix b/use-cases/default.nix index 5af2903..6823d9c 100644 --- a/use-cases/default.nix +++ b/use-cases/default.nix @@ -1,43 +1,33 @@ -# This configuration is centered around use cases, rather than profiles. Since -# all of the machines I manage are single-user machines, there's no point in -# creating multiple users. -# -# While the users don't differ, the use cases definitely do. I use some -# machines for homework and gaming, while others are used for web-browsing and -# development. Each use case is a subdirectory with (home-manager) -# configuration options. -# -# Note that e.g. "running a DNS server" is not a use case. That's specified in -# the respective host's `configuration.nix`. - { config, lib, flakeInputs, ... }: let - inherit (lib) mkEnableOption mkIf; - cfg = config.my.use-cases; + inherit (lib) mkOption types optional elem; + + hasUseCase = c: elem c config.my.use-cases; in { - options.my.use-cases = { - development.enable = mkEnableOption "development use case"; - sysadmin.enable = mkEnableOption "sysadmin use case"; + options.my.use-cases = mkOption { + description = "use-cases/modules to enable"; + type = types.listOf (types.enum ["gui" "development" "sysadmin"]); }; config = { home-manager.users.linus = { - imports = - (lib.optional cfg.development.enable ./development) ++ - (lib.optional cfg.sysadmin.enable ./sysadmin); - # TODO: Graphical linux config (remember assertion). + imports = + (optional (hasUseCase "development") ./neovim) ++ + (optional (hasUseCase "development") && (hasUseCase "gui" && pkgs.stdenv.isDarwin) ./kitty) ++ + (optional (hasUseCase "development") && (hasUseCase "gui" && pkgs.stdenv.isLinux) ./st) ++ + (optional (hasUseCase "sysadmin") || (hasUseCase "development") ./zsh) ++ + (optional (hasUseCase "sysadmin") || (hasUseCase "development") ./cli-basics.nix); - xdg.enable = true; + xdg.enable = true; }; - # Pass - home-manager.extraSpecialArgs = { + home.extraSpecialArgs = { super = config; inherit flakeInputs; }; - home-manager.useGlobalPkgs = true; + home.useGlobalPkgs = true; }; } |