1

Update systemmodules/homemodules paths to allow nixd to differentiate between the two

This commit is contained in:
2026-01-18 15:47:51 +01:00
parent 25ae0f4b85
commit b7e2bba8f0
63 changed files with 173 additions and 195 deletions

View File

@ -21,7 +21,7 @@ Contains all the system configurations.
- There is a common configuration used for all systems: `NixFlake/system/default.nix` - There is a common configuration used for all systems: `NixFlake/system/default.nix`
- Every system has its own special configuration: `NixFlake/system/<hostname>/default.nix` - Every system has its own special configuration: `NixFlake/system/<hostname>/default.nix`
- System modules are located in `NixFlake/system/modules` - System modules are located in `NixFlake/system/systemmodules`
- Hosted services are located in `NixFlake/system/services` - Hosted services are located in `NixFlake/system/services`
When creating a NixOS configuration inside the `NixFlake/flake.nix` the common configuration is imported. When creating a NixOS configuration inside the `NixFlake/flake.nix` the common configuration is imported.
@ -33,7 +33,7 @@ Contains all the home-manager configurations.
- There is a common configuration for each user: `NixFlake/home/<username>/default.nix` - There is a common configuration for each user: `NixFlake/home/<username>/default.nix`
- There is a configuration for a single system of this user: `NixFlake/home/<username>/<hostname>/default.nix` - There is a configuration for a single system of this user: `NixFlake/home/<username>/<hostname>/default.nix`
- Home-Manager modules are located in `NixFlake/home/modules` - Home-Manager modules are located in `NixFlake/home/homemodules`
When creating a NixOS configuration inside the `NixFlake/flake.nix` the common configuration is imported. When creating a NixOS configuration inside the `NixFlake/flake.nix` the common configuration is imported.
Because the hostname is propagated to the common configuration, it can import the host-specific config by itself. Because the hostname is propagated to the common configuration, it can import the host-specific config by itself.

View File

@ -7,7 +7,7 @@
... ...
}: let }: let
# create a module that only contains the options, type can be home or system # create a module that only contains the options, type can be home or system
toModule = type: name: {options.modules.${name} = import ../../${type}/modules/${name}/options.nix {inherit lib mylib;};}; toModule = type: name: {options.systemmodules.${name} = import ../../${type}/modules/${name}/options.nix {inherit lib mylib;};};
# evaluate a single module # evaluate a single module
evalModule = type: name: (lib.evalModules {modules = [(toModule type name)];}); evalModule = type: name: (lib.evalModules {modules = [(toModule type name)];});

View File

@ -15,7 +15,7 @@
headless, headless,
... ...
}: let }: let
inherit (config.modules) color; inherit (config.homemodules) color;
in in
# This is a HM module. # This is a HM module.
# Because no imports/options/config is defined explicitly, everything is treated as config: # Because no imports/options/config is defined explicitly, everything is treated as config:
@ -25,16 +25,6 @@ in
# Every module (/function) is called with the same arguments as this module. # Every module (/function) is called with the same arguments as this module.
# Arguments with matching names are "plugged in" into the right slots, # Arguments with matching names are "plugged in" into the right slots,
# the case of different arity is handled by always providing ellipses (...) in module definitions. # the case of different arity is handled by always providing ellipses (...) in module definitions.
imports = [
# Import the host-specific HM config.
# It will be merged with the main config (like all different modules).
# Settings regarding a specific host (e.g. desktop or laptop)
# should only be made in the host-specific config.
./${hostname}
# Import all of my custom HM modules.
../modules
];
# Enable and configure my custom HM modules. # Enable and configure my custom HM modules.
paths = rec { paths = rec {
@ -42,7 +32,7 @@ in
dotfiles = "${nixflake}/config"; dotfiles = "${nixflake}/config";
}; };
modules = { homemodules = {
beets.enable = !headless; beets.enable = !headless;
btop.enable = true; btop.enable = true;
@ -99,7 +89,7 @@ in
hyprland = { hyprland = {
enable = nixosConfig.programs.hyprland.enable; enable = nixosConfig.programs.hyprland.enable;
dunst.enable = !config.modules.hyprpanel.enable; # Disable for hyprpanel dunst.enable = !config.homemodules.hyprpanel.enable; # Disable for hyprpanel
bars.enable = false; bars.enable = false;
dynamicCursor.enable = false; dynamicCursor.enable = false;
trails.enable = true; trails.enable = true;
@ -112,14 +102,14 @@ in
bindings = lib.mergeAttrsList [ bindings = lib.mergeAttrsList [
# Use Rofi if we don't have caelestia # Use Rofi if we don't have caelestia
(lib.optionalAttrs (!config.modules.hyprland.caelestia.enable) { (lib.optionalAttrs (!config.homemodules.hyprland.caelestia.enable) {
"$mainMod, a" = ["exec, rofi -drun-show-actions -show drun"]; "$mainMod, a" = ["exec, rofi -drun-show-actions -show drun"];
"$mainMod, c" = ["exec, clipman pick --tool=rofi"]; "$mainMod, c" = ["exec, clipman pick --tool=rofi"];
"$mainMod SHIFT, l" = ["exec, loginctl lock-session"]; "$mainMod SHIFT, l" = ["exec, loginctl lock-session"];
}) })
# Caelestia # Caelestia
(lib.optionalAttrs (config.modules.hyprland.caelestia.enable) { (lib.optionalAttrs (config.homemodules.hyprland.caelestia.enable) {
"$mainMod, a" = ["exec, caelestia shell drawers toggle launcher"]; "$mainMod, a" = ["exec, caelestia shell drawers toggle launcher"];
# "$mainMod, c" = ["exec, caelestia clipboard"]; # "$mainMod, c" = ["exec, caelestia clipboard"];
"$mainMod SHIFT, l" = ["exec, caelestia shell lock lock"]; "$mainMod SHIFT, l" = ["exec, caelestia shell lock lock"];
@ -318,10 +308,10 @@ in
# as nixosConfig won't be available otherwise. # as nixosConfig won't be available otherwise.
xdg = { xdg = {
enable = true; # This only does xdg path management enable = true; # This only does xdg path management
mime.enable = nixosConfig.modules.mime.enable; mime.enable = nixosConfig.systemmodules.mime.enable;
mimeApps = { mimeApps = {
enable = nixosConfig.modules.mime.enable; enable = nixosConfig.systemmodules.mime.enable;
associations.added = nixosConfig.xdg.mime.addedAssociations; associations.added = nixosConfig.xdg.mime.addedAssociations;
associations.removed = nixosConfig.xdg.mime.removedAssociations; associations.removed = nixosConfig.xdg.mime.removedAssociations;
@ -392,7 +382,7 @@ in
config.lib.file.mkOutOfStoreSymlink config.lib.file.mkOutOfStoreSymlink
nixosConfig.sops.templates."nix.conf".path; nixosConfig.sops.templates."nix.conf".path;
} }
(lib.mkIf nixosConfig.modules.desktopportal.termfilechooser.enable { (lib.mkIf nixosConfig.systemmodules.desktopportal.termfilechooser.enable {
".config/xdg-desktop-portal-termfilechooser/config".text = '' ".config/xdg-desktop-portal-termfilechooser/config".text = ''
[filechooser] [filechooser]
cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh
@ -402,7 +392,7 @@ in
save_mode = last save_mode = last
''; '';
}) })
(lib.mkIf config.modules.git.enable { (lib.mkIf config.homemodules.git.enable {
".ssh/allowed_signers".text = "* ${publicKeys.${username}.ssh}"; ".ssh/allowed_signers".text = "* ${publicKeys.${username}.ssh}";
}) })
(lib.mkIf config.programs.navi.enable { (lib.mkIf config.programs.navi.enable {
@ -649,7 +639,7 @@ in
eza = { eza = {
enable = true; enable = true;
enableFishIntegration = config.modules.fish.enable; enableFishIntegration = config.homemodules.fish.enable;
}; };
# TODO: Module # TODO: Module
@ -806,7 +796,7 @@ in
fzf = { fzf = {
enable = true; enable = true;
enableFishIntegration = config.modules.fish.enable; enableFishIntegration = config.homemodules.fish.enable;
}; };
imv = { imv = {
@ -824,7 +814,7 @@ in
keychain = { keychain = {
enable = true; enable = true;
enableFishIntegration = config.modules.fish.enable; enableFishIntegration = config.homemodules.fish.enable;
enableXsessionIntegration = !headless; enableXsessionIntegration = !headless;
keys = ["id_ed25519"]; keys = ["id_ed25519"];
}; };
@ -838,12 +828,12 @@ in
navi = { navi = {
enable = true; enable = true;
enableFishIntegration = config.modules.fish.enable; enableFishIntegration = config.homemodules.fish.enable;
}; };
nix-index = { nix-index = {
enable = true; enable = true;
enableFishIntegration = config.modules.fish.enable; enableFishIntegration = config.homemodules.fish.enable;
}; };
nushell.enable = false; nushell.enable = false;
@ -935,7 +925,7 @@ in
zoxide = { zoxide = {
enable = true; enable = true;
enableFishIntegration = config.modules.fish.enable; enableFishIntegration = config.homemodules.fish.enable;
}; };
}; };

View File

@ -8,12 +8,8 @@
username, username,
... ...
}: { }: {
imports = [
../../modules
];
config = { config = {
modules = { homemodules = {
btop.cuda = true; btop.cuda = true;
# This has been relocated here from the default config, # This has been relocated here from the default config,

View File

@ -1,11 +1,7 @@
# Here goes the stuff that will only be enabled on the laptop # Here goes the stuff that will only be enabled on the laptop
{...}: { {...}: {
imports = [
../../modules
];
config = { config = {
modules = { homemodules = {
hyprland = { hyprland = {
keyboard = { keyboard = {
layout = "us"; layout = "us";

View File

@ -6,12 +6,8 @@
username, username,
... ...
}: { }: {
imports = [
../../modules
];
config = { config = {
modules = { homemodules = {
btop.cuda = true; btop.cuda = true;
}; };

View File

@ -6,10 +6,6 @@
username, username,
... ...
}: { }: {
imports = [
../../modules
];
config = { config = {
home.packages = with pkgs; [ home.packages = with pkgs; [
docker-compose docker-compose

View File

@ -6,9 +6,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) TEMPLATE color; inherit (config.homemodules) TEMPLATE color;
in { in {
options.modules.TEMPLATE = import ./options.nix {inherit lib mylib;}; options.homemodules.TEMPLATE = import ./options.nix {inherit lib mylib;};
config = lib.mkIf TEMPLATE.enable {}; config = lib.mkIf TEMPLATE.enable {};
} }

View File

@ -6,9 +6,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) ags; inherit (config.homemodules) ags;
in { in {
options.modules.ags = import ./options.nix {inherit lib mylib;}; options.homemodules.ags = import ./options.nix {inherit lib mylib;};
config = lib.mkIf ags.enable { config = lib.mkIf ags.enable {
programs.ags = { programs.ags = {
@ -68,7 +68,7 @@ in {
# ".config/ags".source = config.lib.file.mkOutOfStoreSymlink "${config.paths.nixflake}/home/modules/ags/config"; # ".config/ags".source = config.lib.file.mkOutOfStoreSymlink "${config.paths.nixflake}/home/modules/ags/config";
# NOTE: Don't symlink to ~/.config/ags/colors.scss, since that is already used by configDir # NOTE: Don't symlink to ~/.config/ags/colors.scss, since that is already used by configDir
".config/_colors.scss".text = with config.modules.color.hex; '' ".config/_colors.scss".text = with config.homemodules.color.hex; ''
$dark-rosewater: #${dark.rosewater}; $dark-rosewater: #${dark.rosewater};
$dark-flamingo: #${dark.flamingo}; $dark-flamingo: #${dark.flamingo};
$dark-pink: #${dark.pink}; $dark-pink: #${dark.pink};

View File

@ -5,9 +5,9 @@
... ...
}: }:
with mylib.modules; let with mylib.modules; let
cfg = config.modules.alacritty; cfg = config.homemodules.alacritty;
in { in {
options.modules.alacritty = import ./options.nix {inherit lib mylib;}; options.homemodules.alacritty = import ./options.nix {inherit lib mylib;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.alacritty = { programs.alacritty = {

View File

@ -8,14 +8,14 @@
}: }:
with lib; with lib;
with mylib.modules; let with mylib.modules; let
cfg = config.modules.audio; cfg = config.homemodules.audio;
cfgfp = config.modules.flatpak; cfgfp = config.homemodules.flatpak;
in { in {
imports = [ imports = [
../flatpak ../flatpak
]; ];
options.modules.audio = import ./options.nix {inherit lib mylib;}; options.homemodules.audio = import ./options.nix {inherit lib mylib;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [ assertions = [

View File

@ -12,13 +12,13 @@ with lib;
with mylib.modules; let with mylib.modules; let
# This is the current state of the option that this module defines # This is the current state of the option that this module defines
# We use it to determine if the config should be changed below # We use it to determine if the config should be changed below
cfg = config.modules.emacs; cfg = config.homemodules.emacs;
in { in {
imports = []; imports = [];
# Options is a vector of options this module defines # Options is a vector of options this module defines
# This module defines only the "emacs" option and suboptions "enable" and "doom" # This module defines only the "emacs" option and suboptions "enable" and "doom"
options.modules.emacs = import ./options.nix {inherit lib mylib;}; options.homemodules.emacs = import ./options.nix {inherit lib mylib;};
# Config is the merged set of all module configurations # Config is the merged set of all module configurations
# Here we define what happens to the config if the module is active (but only if the module is active) # Here we define what happens to the config if the module is active (but only if the module is active)

View File

@ -13,9 +13,9 @@
}: }:
with lib; with lib;
with mylib.modules; let with mylib.modules; let
cfg = config.modules.email; cfg = config.homemodules.email;
in { in {
options.modules.email = import ./options.nix {inherit lib mylib;}; options.homemodules.email = import ./options.nix {inherit lib mylib;};
# TODO: Add Maildir to nextcloud sync # TODO: Add Maildir to nextcloud sync
config = mkIf cfg.enable { config = mkIf cfg.enable {

View File

@ -12,9 +12,9 @@ with mylib.modules;
# It is important that every flatpak interaction is handled through this module # It is important that every flatpak interaction is handled through this module
# to prevent that anything is removed by a module although it is required by another one # to prevent that anything is removed by a module although it is required by another one
let let
cfg = config.modules.flatpak; cfg = config.homemodules.flatpak;
in { in {
options.modules.flatpak = import ./options.nix {inherit lib mylib;}; options.homemodules.flatpak = import ./options.nix {inherit lib mylib;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [ assertions = [

View File

@ -7,11 +7,11 @@
}: }:
with lib; with lib;
with mylib.modules; let with mylib.modules; let
cfg = config.modules.gaming; cfg = config.homemodules.gaming;
cfgfp = config.modules.flatpak; cfgfp = config.homemodules.flatpak;
in { in {
imports = [ imports = [
# NOTE: I don't know if this is the right approach or if I should use config.modules.flatpak # NOTE: I don't know if this is the right approach or if I should use config.homemodules.flatpak
../flatpak ../flatpak
]; ];
@ -19,7 +19,7 @@ in {
# TODO: SteamTinkerLaunch option # TODO: SteamTinkerLaunch option
# TODO: Dolphin + SteamRomManager option # TODO: Dolphin + SteamRomManager option
options.modules.gaming = import ./options.nix {inherit lib mylib;}; options.homemodules.gaming = import ./options.nix {inherit lib mylib;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [ assertions = [

View File

@ -10,9 +10,9 @@
}: }:
with lib; with lib;
with mylib.modules; let with mylib.modules; let
cfg = config.modules.helix; cfg = config.homemodules.helix;
in { in {
options.modules.helix = import ./options.nix {inherit lib mylib;}; options.homemodules.helix = import ./options.nix {inherit lib mylib;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
home.sessionVariables = { home.sessionVariables = {

View File

@ -9,9 +9,9 @@
# TODO: Remove this module, put protonmail into the email module # TODO: Remove this module, put protonmail into the email module
with lib; with lib;
with mylib.modules; let with mylib.modules; let
cfg = config.modules.misc; cfg = config.homemodules.misc;
in { in {
options.modules.misc = import ./options.nix {inherit lib mylib;}; options.homemodules.misc = import ./options.nix {inherit lib mylib;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
home.packages = with pkgs; home.packages = with pkgs;

View File

@ -12,9 +12,9 @@
}: }:
with lib; with lib;
with mylib.modules; let with mylib.modules; let
cfg = config.modules.nextcloud; cfg = config.homemodules.nextcloud;
in { in {
options.modules.nextcloud = import ./options.nix {inherit lib mylib;}; options.homemodules.nextcloud = import ./options.nix {inherit lib mylib;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [ assertions = [

View File

@ -8,9 +8,9 @@
}: }:
with lib; with lib;
with mylib.modules; let with mylib.modules; let
cfg = config.modules.ranger; cfg = config.homemodules.ranger;
in { in {
options.modules.ranger = import ./options.nix {inherit lib mylib;}; options.homemodules.ranger = import ./options.nix {inherit lib mylib;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
home.packages = with pkgs; home.packages = with pkgs;

View File

@ -9,9 +9,9 @@
}: }:
with lib; with lib;
with mylib.modules; let with mylib.modules; let
cfg = config.modules.vscode; cfg = config.homemodules.vscode;
in { in {
options.modules.vscode = import ./options.nix {inherit lib mylib;}; options.homemodules.vscode = import ./options.nix {inherit lib mylib;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.vscode = { programs.vscode = {

View File

@ -6,9 +6,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) beets; inherit (config.homemodules) beets;
in { in {
options.modules.beets = import ./options.nix {inherit lib mylib;}; options.homemodules.beets = import ./options.nix {inherit lib mylib;};
config = lib.mkIf beets.enable { config = lib.mkIf beets.enable {
programs.beets = { programs.beets = {

View File

@ -6,9 +6,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) btop color; inherit (config.homemodules) btop color;
in { in {
options.modules.btop = import ./options.nix {inherit lib mylib;}; options.homemodules.btop = import ./options.nix {inherit lib mylib;};
config = lib.mkIf btop.enable { config = lib.mkIf btop.enable {
programs.btop = { programs.btop = {

View File

@ -5,9 +5,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) chromium; inherit (config.homemodules) chromium;
in { in {
options.modules.chromium = import ./options.nix {inherit lib mylib;}; options.homemodules.chromium = import ./options.nix {inherit lib mylib;};
config = lib.mkIf chromium.enable { config = lib.mkIf chromium.enable {
home.packages = with pkgs; home.packages = with pkgs;

View File

@ -5,9 +5,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) color; inherit (config.homemodules) color;
in { in {
options.modules.color = import ./options.nix {inherit lib mylib pkgs;}; options.homemodules.color = import ./options.nix {inherit lib mylib pkgs;};
config = { config = {
home.packages = let home.packages = let
@ -59,7 +59,7 @@ in {
++ (lib.optionals color.installPackages color.extraPackages); ++ (lib.optionals color.installPackages color.extraPackages);
# This module sets its own options to the values specified in a colorscheme file. # This module sets its own options to the values specified in a colorscheme file.
modules.color = let homemodules.color = let
scheme = import ./schemes/${color.scheme}.nix; scheme = import ./schemes/${color.scheme}.nix;
# Add the aliases # Add the aliases

View File

@ -5,9 +5,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) docs; inherit (config.homemodules) docs;
in { in {
options.modules.docs = import ./options.nix {inherit lib mylib;}; options.homemodules.docs = import ./options.nix {inherit lib mylib;};
config = lib.mkIf docs.enable { config = lib.mkIf docs.enable {
home = { home = {

View File

@ -5,9 +5,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) fcitx; inherit (config.homemodules) fcitx;
in { in {
options.modules.fcitx = import ./options.nix {inherit lib mylib;}; options.homemodules.fcitx = import ./options.nix {inherit lib mylib;};
config = lib.mkIf fcitx.enable { config = lib.mkIf fcitx.enable {
i18n.inputMethod = { i18n.inputMethod = {

View File

@ -6,9 +6,9 @@
hostname, hostname,
... ...
}: let }: let
inherit (config.modules) firefox color; inherit (config.homemodules) firefox color;
in { in {
options.modules.firefox = import ./options.nix {inherit lib mylib;}; options.homemodules.firefox = import ./options.nix {inherit lib mylib;};
config = lib.mkIf firefox.enable { config = lib.mkIf firefox.enable {
textfox = { textfox = {

View File

@ -7,9 +7,9 @@
nixosConfig, nixosConfig,
... ...
}: let }: let
inherit (config.modules) fish color; inherit (config.homemodules) fish color;
in { in {
options.modules.fish = import ./options.nix {inherit lib mylib;}; options.homemodules.fish = import ./options.nix {inherit lib mylib;};
config = lib.mkIf fish.enable { config = lib.mkIf fish.enable {
# https://github.com/catppuccin/fish/blob/main/themes/Catppuccin%20Mocha.theme # https://github.com/catppuccin/fish/blob/main/themes/Catppuccin%20Mocha.theme
@ -47,7 +47,7 @@ in {
generateCompletions = nixosConfig.programs.fish.generateCompletions; generateCompletions = nixosConfig.programs.fish.generateCompletions;
functions = lib.mergeAttrsList [ functions = lib.mergeAttrsList [
(lib.optionalAttrs config.modules.nnn.enable { (lib.optionalAttrs config.homemodules.nnn.enable {
nnncd = { nnncd = {
wraps = "nnn"; wraps = "nnn";
description = "support nnn quit and change directory"; description = "support nnn quit and change directory";
@ -101,7 +101,7 @@ in {
# Same as above but with args for bat # Same as above but with args for bat
batifyWithArgs = command: args: command + (lib.optionalString config.programs.bat.enable (" | bat " + args)); batifyWithArgs = command: args: command + (lib.optionalString config.programs.bat.enable (" | bat " + args));
# These can be used for my config.modules and for HM config.programs, # These can be used for my config.homemodules and for HM config.programs,
# as both of these add the package to home.packages # as both of these add the package to home.packages
hasHomePackage = package: (mylib.modules.contains config.home.packages package); hasHomePackage = package: (mylib.modules.contains config.home.packages package);
@ -167,15 +167,15 @@ in {
gcl = "git clone"; gcl = "git clone";
}) })
(lib.optionalAttrs config.modules.kitty.enable {ssh = "kitty +kitten ssh";}) (lib.optionalAttrs config.homemodules.kitty.enable {ssh = "kitty +kitten ssh";})
(abbrify pkgs.lazygit {lg = "lazygit";}) (abbrify pkgs.lazygit {lg = "lazygit";})
(abbrify pkgs.nix-search-tv {search = "nix-search-tv print --indexes 'nixos,home-manager,nixpkgs,nur' | fzf --preview 'nix-search-tv preview {}' --scheme history";}) (abbrify pkgs.nix-search-tv {search = "nix-search-tv print --indexes 'nixos,home-manager,nixpkgs,nur' | fzf --preview 'nix-search-tv preview {}' --scheme history";})
# Doesn't work with abbrify because I have nnn.override... # Doesn't work with abbrify because I have nnn.override...
(lib.optionalAttrs config.modules.nnn.enable {n = "nnncd -a";}) (lib.optionalAttrs config.homemodules.nnn.enable {n = "nnncd -a";})
(lib.optionalAttrs config.modules.nnn.enable {np = "nnncd -a -P p";}) (lib.optionalAttrs config.homemodules.nnn.enable {np = "nnncd -a -P p";})
(abbrify pkgs.ranger {r = "ranger --choosedir=$HOME/.rangerdir; set LASTDIR (cat $HOME/.rangerdir); cd $LASTDIR";}) (abbrify pkgs.ranger {r = "ranger --choosedir=$HOME/.rangerdir; set LASTDIR (cat $HOME/.rangerdir); cd $LASTDIR";})
@ -184,7 +184,7 @@ in {
# grep = rg; # grep = rg;
}) })
(lib.optionalAttrs config.modules.rmpc.enable {r = "rcmp";}) (lib.optionalAttrs config.homemodules.rmpc.enable {r = "rcmp";})
(abbrify pkgs.rsync rec { (abbrify pkgs.rsync rec {
rsync = "rsync -ahv --inplace --partial --info=progress2"; rsync = "rsync -ahv --inplace --partial --info=progress2";
@ -197,7 +197,7 @@ in {
programs.starship = { programs.starship = {
enable = true; enable = true;
enableFishIntegration = config.modules.fish.enable; enableFishIntegration = config.homemodules.fish.enable;
settings = { settings = {
# Other config here # Other config here
format = "$all"; # Remove this line to disable the default prompt format format = "$all"; # Remove this line to disable the default prompt format

View File

@ -6,9 +6,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) git; inherit (config.homemodules) git;
in { in {
options.modules.git = import ./options.nix {inherit lib mylib;}; options.homemodules.git = import ./options.nix {inherit lib mylib;};
config = lib.mkIf git.enable { config = lib.mkIf git.enable {
programs.diff-so-fancy = { programs.diff-so-fancy = {

View File

@ -8,7 +8,7 @@
username, username,
... ...
}: let }: let
inherit (config.modules) hyprland color; inherit (config.homemodules) hyprland color;
# Autostart programs # Autostart programs
always-exec = import ./autostart.nix {inherit lib pkgs config hyprland;}; always-exec = import ./autostart.nix {inherit lib pkgs config hyprland;};
@ -22,7 +22,7 @@
"$mainMod, mouse:273" = ["resizewindow"]; "$mainMod, mouse:273" = ["resizewindow"];
}; };
in { in {
options.modules.hyprland = import ./options.nix {inherit lib mylib;}; options.homemodules.hyprland = import ./options.nix {inherit lib mylib;};
config = lib.mkIf hyprland.enable { config = lib.mkIf hyprland.enable {
assertions = [ assertions = [
@ -46,7 +46,7 @@ in {
iconTheme.name = color.iconTheme; iconTheme.name = color.iconTheme;
}; };
modules = { homemodules = {
hyprpanel.enable = hyprland.hyprpanel.enable; hyprpanel.enable = hyprland.hyprpanel.enable;
}; };

View File

@ -11,7 +11,7 @@
settings = { settings = {
global = { global = {
monitor = config.modules.waybar.monitor; monitor = config.homemodules.waybar.monitor;
font = "${color.font} 11"; font = "${color.font} 11";
offset = "10x10"; offset = "10x10";
background = color.hexS.base; background = color.hexS.base;

View File

@ -6,9 +6,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) hyprpanel color; inherit (config.homemodules) hyprpanel color;
in { in {
options.modules.hyprpanel = import ./options.nix {inherit lib mylib;}; options.homemodules.hyprpanel = import ./options.nix {inherit lib mylib;};
config = lib.mkIf hyprpanel.enable { config = lib.mkIf hyprpanel.enable {
programs.hyprpanel = { programs.hyprpanel = {

View File

@ -5,9 +5,9 @@
mylib, mylib,
... ...
}: let }: let
inherit (config.modules) kitty color; inherit (config.homemodules) kitty color;
in { in {
options.modules.kitty = import ./options.nix {inherit lib mylib;}; options.homemodules.kitty = import ./options.nix {inherit lib mylib;};
config = lib.mkIf kitty.enable { config = lib.mkIf kitty.enable {
programs.kitty = { programs.kitty = {
@ -15,7 +15,7 @@ in {
shellIntegration.enableFishIntegration = true; shellIntegration.enableFishIntegration = true;
font = { font = {
name = "${config.modules.color.font}"; name = "${config.homemodules.color.font}";
size = 12; size = 12;
}; };

View File

@ -6,9 +6,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) lazygit color; inherit (config.homemodules) lazygit color;
in { in {
options.modules.lazygit = import ./options.nix {inherit lib mylib;}; options.homemodules.lazygit = import ./options.nix {inherit lib mylib;};
config = lib.mkIf lazygit.enable { config = lib.mkIf lazygit.enable {
programs.lazygit = { programs.lazygit = {

View File

@ -6,9 +6,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) mpd; inherit (config.homemodules) mpd;
in { in {
options.modules.mpd = import ./options.nix {inherit lib mylib;}; options.homemodules.mpd = import ./options.nix {inherit lib mylib;};
config = lib.mkIf mpd.enable { config = lib.mkIf mpd.enable {
services = { services = {

View File

@ -10,9 +10,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) neovim color; inherit (config.homemodules) neovim color;
in { in {
options.modules.neovim = import ./options.nix {inherit lib mylib;}; options.homemodules.neovim = import ./options.nix {inherit lib mylib;};
config = lib.mkIf neovim.enable { config = lib.mkIf neovim.enable {
home = { home = {

View File

@ -7,9 +7,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) niri color; inherit (config.homemodules) niri color;
in { in {
options.modules.niri = import ./options.nix {inherit lib mylib;}; options.homemodules.niri = import ./options.nix {inherit lib mylib;};
config = lib.mkIf niri.enable rec { config = lib.mkIf niri.enable rec {
assertions = [ assertions = [

View File

@ -6,9 +6,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) nnn; inherit (config.homemodules) nnn;
in { in {
options.modules.nnn = import ./options.nix {inherit lib mylib;}; options.homemodules.nnn = import ./options.nix {inherit lib mylib;};
config = lib.mkIf nnn.enable { config = lib.mkIf nnn.enable {
home.sessionVariables = { home.sessionVariables = {

View File

@ -6,9 +6,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) qutebrowser color; inherit (config.homemodules) qutebrowser color;
in { in {
options.modules.qutebrowser = import ./options.nix {inherit lib mylib;}; options.homemodules.qutebrowser = import ./options.nix {inherit lib mylib;};
config = lib.mkIf qutebrowser.enable { config = lib.mkIf qutebrowser.enable {
programs.qutebrowser = { programs.qutebrowser = {

View File

@ -6,9 +6,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) rmpc color; inherit (config.homemodules) rmpc color;
in { in {
options.modules.rmpc = import ./options.nix {inherit lib mylib;}; options.homemodules.rmpc = import ./options.nix {inherit lib mylib;};
config = lib.mkIf rmpc.enable { config = lib.mkIf rmpc.enable {
assertions = [ assertions = [

View File

@ -8,9 +8,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) rofi color; inherit (config.homemodules) rofi color;
in { in {
options.modules.rofi = import ./options.nix {inherit lib mylib;}; options.homemodules.rofi = import ./options.nix {inherit lib mylib;};
config = lib.mkIf rofi.enable { config = lib.mkIf rofi.enable {
programs.rofi = { programs.rofi = {
@ -137,7 +137,7 @@ in {
}; };
}; };
modules.hyprland.keybindings = let homemodules.hyprland.keybindings = let
vpn-menu = vpn-menu =
pkgs.writeScriptBin pkgs.writeScriptBin
"rofi-menu-vpn" "rofi-menu-vpn"
@ -177,7 +177,7 @@ in {
|> builtins.concatStringsSep " && "; |> builtins.concatStringsSep " && ";
}; };
monitors = builtins.attrNames config.modules.hyprland.monitors; monitors = builtins.attrNames config.homemodules.hyprland.monitors;
in in
mylib.rofi.mkSimpleMenu mylib.rofi.mkSimpleMenu
"wall" "wall"
@ -185,7 +185,7 @@ in {
|> builtins.map (setWallpaperOnMonitors monitors) |> builtins.map (setWallpaperOnMonitors monitors)
|> lib.mergeAttrsList); |> lib.mergeAttrsList);
in in
lib.mkIf (!config.modules.hyprland.caelestia.enable) { lib.mkIf (!config.homemodules.hyprland.caelestia.enable) {
bindings = lib.mergeAttrsList [ bindings = lib.mergeAttrsList [
{ {
"$mainMod, escape" = ["exec, \"${power-menu}/bin/rofi-menu-power\""]; "$mainMod, escape" = ["exec, \"${power-menu}/bin/rofi-menu-power\""];
@ -193,7 +193,7 @@ in {
"$mainMod, w" = ["exec, \"${wallpaper-menu}/bin/rofi-menu-wall\""]; "$mainMod, w" = ["exec, \"${wallpaper-menu}/bin/rofi-menu-wall\""];
# "$mainMod, o" = ["exec, \"${lectures-menu}\""]; # "$mainMod, o" = ["exec, \"${lectures-menu}\""];
} }
(lib.optionalAttrs (!nixosConfig.modules.network.useNetworkManager) { (lib.optionalAttrs (!nixosConfig.systemmodules.network.useNetworkManager) {
"$mainMod, U" = ["exec, \"${vpn-menu}/rofi-menu-vpn\""]; "$mainMod, U" = ["exec, \"${vpn-menu}/rofi-menu-vpn\""];
}) })
]; ];

View File

@ -4,9 +4,9 @@
mylib, mylib,
... ...
}: let }: let
inherit (config.modules) color waybar; inherit (config.homemodules) color waybar;
in { in {
options.modules.waybar = import ./options.nix {inherit lib mylib;}; options.homemodules.waybar = import ./options.nix {inherit lib mylib;};
config = lib.mkIf waybar.enable { config = lib.mkIf waybar.enable {
programs.waybar = { programs.waybar = {

View File

@ -6,14 +6,14 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) yazi color; inherit (config.homemodules) yazi color;
in { in {
options.modules.yazi = import ./options.nix {inherit lib mylib;}; options.homemodules.yazi = import ./options.nix {inherit lib mylib;};
config = lib.mkIf yazi.enable { config = lib.mkIf yazi.enable {
programs.yazi = { programs.yazi = {
enable = true; enable = true;
enableFishIntegration = config.modules.fish.enable; enableFishIntegration = config.homemodules.fish.enable;
shellWrapperName = "y"; shellWrapperName = "y";
plugins = { plugins = {

View File

@ -20,8 +20,8 @@ in
(mkMime color.hexS.green "application/pdf") (mkMime color.hexS.green "application/pdf")
] ]
(mkMimes color.hexS.text nixosConfig.modules.mime.textTypes) (mkMimes color.hexS.text nixosconfig.homemodules.mime.textTypes)
(mkMimes color.hexS.teal nixosConfig.modules.mime.imageTypes) (mkMimes color.hexS.teal nixosconfig.homemodules.mime.imageTypes)
(mkMimes color.hexS.yellow nixosConfig.modules.mime.videoTypes) (mkMimes color.hexS.yellow nixosconfig.homemodules.mime.videoTypes)
(mkMimes color.hexS.sky nixosConfig.modules.mime.audioTypes) (mkMimes color.hexS.sky nixosconfig.homemodules.mime.audioTypes)
] ]

View File

@ -4,9 +4,9 @@
mylib, mylib,
... ...
}: let }: let
inherit (config.modules) zathura color; inherit (config.homemodules) zathura color;
in { in {
options.modules.zathura = import ./options.nix {inherit lib mylib;}; options.homemodules.zathura = import ./options.nix {inherit lib mylib;};
config = lib.mkIf zathura.enable { config = lib.mkIf zathura.enable {
programs.zathura = { programs.zathura = {

View File

@ -29,6 +29,13 @@
# Import the toplevel system configuration module. # Import the toplevel system configuration module.
../system ../system
../system/cachix.nix
# Host specific configuration
../system/${hostname}
# Import all of my custom system modules
../system/systemmodules
] ]
extraModules extraModules
@ -51,8 +58,22 @@
# to /etc/profiles instead of ~/.nix-profile. # to /etc/profiles instead of ~/.nix-profile.
useUserPackages = true; useUserPackages = true;
# Import the user-specific HM toplevel module. users.${username}.imports = [
users.${username}.imports = [../home/${username}]; # Import the user-specific HM toplevel module.
# It will be merged with the main config (like all different modules).
# Settings regarding a specific host (e.g. desktop or laptop)
# should only be made in the host-specific config.
../home/${username}
# Host specific configuration
../home/${username}/${hostname}
];
sharedModules = [
# Import all of my custom HM modules.
# Putting them into sharedModules enables correct nixd completions.
../home/homemodules
];
}; };
} }
] ]

View File

@ -11,17 +11,7 @@
... ...
}: }:
with mylib.networking; { with mylib.networking; {
imports = [ systemmodules = {
# Import my system modules
./modules
# Import the host-specific system config
./${hostname}
./cachix.nix
];
modules = {
bootloader = { bootloader = {
enable = true; enable = true;
@ -234,7 +224,7 @@ with mylib.networking; {
# 6 Cyan 14 Cyan # 6 Cyan 14 Cyan
# 7 White 15 White # 7 White 15 White
colors = let colors = let
color = config.home-manager.users.${username}.modules.color; color = config.home-manager.users.${username}.homemodules.color;
in [ in [
# 0 - 7 # 0 - 7
"000000" # Dark black "000000" # Dark black

View File

@ -11,13 +11,11 @@
./hardware-configuration.nix ./hardware-configuration.nix
./disks.nix ./disks.nix
../modules
# General services # General services
../services/fileflows-node.nix ../services/fileflows-node.nix
]; ];
modules = { systemmodules = {
bootloader = { bootloader = {
# Secure boot # Secure boot
loader = "lanzaboote"; loader = "lanzaboote";

View File

@ -2,10 +2,9 @@
imports = [ imports = [
# Include the results of the hardware scan. # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
../modules
]; ];
modules = { systemmodules = {
network = { network = {
useNetworkManager = true; useNetworkManager = true;

View File

@ -14,8 +14,6 @@
# Include the results of the hardware scan. # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
../modules
# My own services # My own services
../services/heidi.nix ../services/heidi.nix
../services/formula10.nix ../services/formula10.nix
@ -47,7 +45,7 @@
../services/whats-up-docker.nix ../services/whats-up-docker.nix
]; ];
modules = { systemmodules = {
docker.networks = [ docker.networks = [
{ {
name = "behind-nginx"; name = "behind-nginx";

View File

@ -4,9 +4,9 @@
mylib, mylib,
... ...
}: let }: let
inherit (config.modules) TEMPLATE; inherit (config.systemmodules) TEMPLATE;
in { in {
options.modules.TEMPLATE = import ./options.nix {inherit lib mylib;}; options.systemmodules.TEMPLATE = import ./options.nix {inherit lib mylib;};
config = config =
lib.mkIf TEMPLATE.enable { lib.mkIf TEMPLATE.enable {

View File

@ -7,9 +7,9 @@
publicKeys, publicKeys,
... ...
}: let }: let
inherit (config.modules) agenix; inherit (config.systemmodules) agenix;
in { in {
options.modules.agenix = import ./options.nix {inherit lib mylib;}; options.systemmodules.agenix = import ./options.nix {inherit lib mylib;};
config = { config = {
# NOTE: Add below snippet to home/christoph/default.nix to generate the secrets.nix file # NOTE: Add below snippet to home/christoph/default.nix to generate the secrets.nix file
@ -23,13 +23,13 @@ in {
# { # {
# ${lib.optionalString # ${lib.optionalString
# # If this user defined any secrets... # # If this user defined any secrets...
# (builtins.hasAttr "${username}" nixosConfig.modules.agenix.secrets) # (builtins.hasAttr "${username}" nixosconfig.systemmodules.agenix.secrets)
# # ...we will add them to the current secrets.nix, # # ...we will add them to the current secrets.nix,
# # s.t. agenix can be used to encrypt/access them. # # s.t. agenix can be used to encrypt/access them.
# (builtins.concatStringsSep "\n" # (builtins.concatStringsSep "\n"
# (builtins.map # (builtins.map
# (mkSecret publicKeys.${username}.ssh) # (mkSecret publicKeys.${username}.ssh)
# nixosConfig.modules.agenix.secrets.${username}))} # nixosconfig.systemmodules.agenix.secrets.${username}))}
# } # }
# ''; # '';

View File

@ -10,9 +10,9 @@
with lib; with lib;
with mylib.virtualisation; with mylib.virtualisation;
with mylib.modules; let with mylib.modules; let
cfg = config.modules.containers; cfg = config.systemmodules.containers;
in { in {
options.modules.containers = import ./options.nix {inherit lib mylib;}; options.systemmodules.containers = import ./options.nix {inherit lib mylib;};
# TODO: These need config options exposed through the module, # TODO: These need config options exposed through the module,
# e.g. to set paths/volumes/binds differently per system... # e.g. to set paths/volumes/binds differently per system...

View File

@ -5,9 +5,9 @@
mylib, mylib,
... ...
}: let }: let
inherit (config.modules) bootloader; inherit (config.systemmodules) bootloader;
in { in {
options.modules.bootloader = import ./options.nix {inherit lib mylib;}; options.systemmodules.bootloader = import ./options.nix {inherit lib mylib;};
config = lib.mkIf bootloader.enable (lib.mkMerge [ config = lib.mkIf bootloader.enable (lib.mkMerge [
{ {

View File

@ -5,9 +5,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) desktopportal; inherit (config.systemmodules) desktopportal;
in { in {
options.modules.desktopportal = import ./options.nix {inherit lib mylib;}; options.systemmodules.desktopportal = import ./options.nix {inherit lib mylib;};
config = lib.mkIf desktopportal.enable { config = lib.mkIf desktopportal.enable {
xdg = { xdg = {

View File

@ -5,9 +5,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) docker; inherit (config.systemmodules) docker;
in { in {
options.modules.docker = import ./options.nix {inherit lib mylib;}; options.systemmodules.docker = import ./options.nix {inherit lib mylib;};
config = lib.mkIf docker.enable { config = lib.mkIf docker.enable {
environment.variables = lib.mkMerge [ environment.variables = lib.mkMerge [

View File

@ -5,9 +5,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) fonts; inherit (config.systemmodules) fonts;
in { in {
options.modules.fonts = import ./options.nix {inherit lib mylib;}; options.systemmodules.fonts = import ./options.nix {inherit lib mylib;};
config = lib.mkIf fonts.enable { config = lib.mkIf fonts.enable {
fonts = { fonts = {

View File

@ -6,9 +6,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (config.modules) impermanence; inherit (config.systemmodules) impermanence;
in { in {
options.modules.impermanence = import ./options.nix {inherit lib mylib;}; options.systemmodules.impermanence = import ./options.nix {inherit lib mylib;};
config = let config = let
# NOTE: Setting user/group/mode only has an effect if the # NOTE: Setting user/group/mode only has an effect if the

View File

@ -4,9 +4,9 @@
mylib, mylib,
... ...
}: let }: let
inherit (config.modules) mime; inherit (config.systemmodules) mime;
in { in {
options.modules.mime = import ./options.nix {inherit lib mylib;}; options.systemmodules.mime = import ./options.nix {inherit lib mylib;};
config = lib.mkIf mime.enable { config = lib.mkIf mime.enable {
xdg = { xdg = {

View File

@ -8,9 +8,9 @@
with lib; with lib;
with mylib.networking; with mylib.networking;
with mylib.modules; let with mylib.modules; let
cfg = config.modules.network; cfg = config.systemmodules.network;
in { in {
options.modules.network = import ./options.nix {inherit lib mylib;}; options.systemmodules.network = import ./options.nix {inherit lib mylib;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.resolved = { services.resolved = {
@ -59,7 +59,7 @@ in {
inherit (cfg) networks; inherit (cfg) networks;
}; };
modules.polkit.allowedActions = mkIf cfg.useNetworkManager [ systemmodules.polkit.allowedActions = mkIf cfg.useNetworkManager [
# List NM permissions by running "nmcli general permissions" # List NM permissions by running "nmcli general permissions"
"org.freedesktop.NetworkManager.settings.modify.system" "org.freedesktop.NetworkManager.settings.modify.system"
]; ];

View File

@ -7,9 +7,9 @@
}: }:
with lib; with lib;
with mylib.modules; let with mylib.modules; let
cfg = config.modules.polkit; cfg = config.systemmodules.polkit;
in { in {
options.modules.polkit = import ./options.nix {inherit lib mylib;}; options.systemmodules.polkit = import ./options.nix {inherit lib mylib;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
security.polkit.enable = true; security.polkit.enable = true;

View File

@ -6,9 +6,9 @@
username, username,
... ...
}: let }: let
inherit (config.modules) sops-nix; inherit (config.systemmodules) sops-nix;
in { in {
options.modules.sops-nix = import ./options.nix {inherit lib mylib;}; options.systemmodules.sops-nix = import ./options.nix {inherit lib mylib;};
config = { config = {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [

View File

@ -14,8 +14,6 @@
# Include the results of the hardware scan. # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
../modules
# General services # General services
../services/adguard.nix ../services/adguard.nix
../services/nginx-proxy-manager.nix ../services/nginx-proxy-manager.nix
@ -25,7 +23,7 @@
../services/whats-up-docker.nix ../services/whats-up-docker.nix
]; ];
modules = { systemmodules = {
docker.networks = [ docker.networks = [
{ {
name = "behind-nginx"; name = "behind-nginx";