summaryrefslogtreecommitdiff
path: root/use-cases/default.nix
diff options
context:
space:
mode:
authorLinnnus <[email protected]>2023-09-06 08:18:38 +0200
committerLinnnus <[email protected]>2023-09-06 08:18:38 +0200
commit17d483c8c8a96fad2200acaf802b7ef0b0eb494d (patch)
treed7807d842accf3730e6f4277d0b2dea00d8a811d /use-cases/default.nix
parent326cf19b227f04cb5fa6291943334f7c91b279d9 (diff)
hej gør lige mere
Diffstat (limited to 'use-cases/default.nix')
-rw-r--r--use-cases/default.nix40
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;
};
}