From 17d483c8c8a96fad2200acaf802b7ef0b0eb494d Mon Sep 17 00:00:00 2001 From: Linnnus Date: Wed, 6 Sep 2023 08:18:38 +0200 Subject: =?UTF-8?q?hej=20g=C3=B8r=20lige=20mere?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- use-cases/default.nix | 40 +++++++++++++++------------------------- 1 file changed, 15 insertions(+), 25 deletions(-) (limited to 'use-cases/default.nix') 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; }; } -- cgit v1.2.3