summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake.nix2
-rw-r--r--hosts/ahmed/configuration.nix8
-rw-r--r--hosts/muhammed/configuration.nix10
-rw-r--r--use-cases/cli-basics.nix (renamed from use-cases/sysadmin/default.nix)7
-rw-r--r--use-cases/default.nix40
-rw-r--r--use-cases/development/default.nix10
-rw-r--r--use-cases/git/default.nix (renamed from use-cases/development/git/default.nix)0
-rw-r--r--use-cases/neovim/default.nix (renamed from use-cases/development/neovim/default.nix)0
-rw-r--r--use-cases/neovim/filetype.nix (renamed from use-cases/development/neovim/filetype.nix)0
-rw-r--r--use-cases/neovim/lsp.nix (renamed from use-cases/development/neovim/lsp.nix)0
-rw-r--r--use-cases/zsh/default.nix (renamed from use-cases/development/zsh/default.nix)0
11 files changed, 27 insertions, 50 deletions
diff --git a/flake.nix b/flake.nix
index e9b375b..f294ae9 100644
--- a/flake.nix
+++ b/flake.nix
@@ -32,7 +32,7 @@
ahmed = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
- { _module.args = { inherit inputs; }; }
+ { _module.args = { flakeInputs = inputs; }; }
./hosts/ahmed/configuration.nix
home-manager.nixosModules.home-manager
./use-cases/default.nix
diff --git a/hosts/ahmed/configuration.nix b/hosts/ahmed/configuration.nix
index 530ad36..2ffa8a1 100644
--- a/hosts/ahmed/configuration.nix
+++ b/hosts/ahmed/configuration.nix
@@ -10,21 +10,20 @@
./ssh.nix
];
- # Create the main user
+ # Create the main user.
users.users.linus = {
isNormalUser = true;
hashedPassword = "$y$j9T$kNJ5L50Si0sAhdrHyO19I1$YcwXZ46dI.ApLMgZSj7qImq9FrSL0CEUeoJUS8P1103";
extraGroups = [ "wheel" ];
shell = pkgs.zsh;
};
- home-manager.users.linus.home.stateVersion = "22.05";
- my.use-cases.development.enable = true;
- my.use-cases.sysadmin.enable = true;
# Following are recommended when changing the default shell.
# https://nixos.wiki/wiki/Command_Shell#Changing_default_shelltrue;
programs.zsh.enable = true;
environment.shells = [ pkgs.zsh ];
+ my.use-cases = [ "development" "sysadmin" ];
+
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.grub.device = "/dev/mmcblk0p3"; # FIXME: Do we need to specify GRUB device?
@@ -67,4 +66,5 @@
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "23.05"; # Did you read the comment?
+ home-manager.users.linus.home.stateVersion = "22.05";
}
diff --git a/hosts/muhammed/configuration.nix b/hosts/muhammed/configuration.nix
index fb6a975..0e41669 100644
--- a/hosts/muhammed/configuration.nix
+++ b/hosts/muhammed/configuration.nix
@@ -1,27 +1,27 @@
# This file contains the configuration for my Macbook Pro.
-{ pkgs, inputs, lib, ... }:
+{ pkgs, flakeInputs, lib, ... }:
{
# Specify the location of this configuration file. Very meta.
- environment.darwinConfig = inputs.self + "/hosts/muhammed/configuration.nix";
+ environment.darwinConfig = flakeInputs.self + "/hosts/muhammed/configuration.nix";
# Use the Nix daemon.
services.nix-daemon.enable = true;
- # Set up main account.
+ # Set up main account with ZSH.
users.users.linus = {
description = "Personal user account";
home = "/Users/linus";
shell = pkgs.zsh;
};
- my.use-cases.development.enable = true;
- my.use-cases.sysadmin.enable = true;
# Following are recommended when changing the default shell.
# https://nixos.wiki/wiki/Command_Shell#Changing_default_shelltrue;
programs.zsh.enable = true; # TODO: move to common module
environment.shells = [ pkgs.zsh ];
+ my.use-cases = [ "gui" "development" ];
+
# Should match containing folder.
networking.hostName = "muhammed";
diff --git a/use-cases/sysadmin/default.nix b/use-cases/cli-basics.nix
index 1958797..cd1e333 100644
--- a/use-cases/sysadmin/default.nix
+++ b/use-cases/cli-basics.nix
@@ -3,14 +3,11 @@
{ pkgs, super, lib, ... }:
-let
- inherit (lib) optional;
-in
{
home.packages = with pkgs; [
tree
jc
jq
- # is this not the right it is the one passed to home-manager not nixos ???? 'config'?
- ] ++ (optional (!super.my.use-cases.development.enable) vim);
+ vim
+ ];
}
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;
};
}
diff --git a/use-cases/development/default.nix b/use-cases/development/default.nix
deleted file mode 100644
index 1acffec..0000000
--- a/use-cases/development/default.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ config, lib, ... }:
-
-{
- imports =
- [
- ./git
- ./neovim
- ./zsh # TODO: move to sysadmin?
- ];
-}
diff --git a/use-cases/development/git/default.nix b/use-cases/git/default.nix
index 8df44db..8df44db 100644
--- a/use-cases/development/git/default.nix
+++ b/use-cases/git/default.nix
diff --git a/use-cases/development/neovim/default.nix b/use-cases/neovim/default.nix
index 5c265b8..5c265b8 100644
--- a/use-cases/development/neovim/default.nix
+++ b/use-cases/neovim/default.nix
diff --git a/use-cases/development/neovim/filetype.nix b/use-cases/neovim/filetype.nix
index 66d5e68..66d5e68 100644
--- a/use-cases/development/neovim/filetype.nix
+++ b/use-cases/neovim/filetype.nix
diff --git a/use-cases/development/neovim/lsp.nix b/use-cases/neovim/lsp.nix
index 0c7321d..0c7321d 100644
--- a/use-cases/development/neovim/lsp.nix
+++ b/use-cases/neovim/lsp.nix
diff --git a/use-cases/development/zsh/default.nix b/use-cases/zsh/default.nix
index ac88554..ac88554 100644
--- a/use-cases/development/zsh/default.nix
+++ b/use-cases/zsh/default.nix