diff options
-rw-r--r-- | flake.nix | 2 | ||||
-rw-r--r-- | hosts/ahmed/configuration.nix | 8 | ||||
-rw-r--r-- | hosts/muhammed/configuration.nix | 10 | ||||
-rw-r--r-- | use-cases/cli-basics.nix (renamed from use-cases/sysadmin/default.nix) | 7 | ||||
-rw-r--r-- | use-cases/default.nix | 40 | ||||
-rw-r--r-- | use-cases/development/default.nix | 10 | ||||
-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
@@ -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 |