nixos-config/submodules/default.nix
2025-08-08 15:55:29 -05:00

86 lines
2.9 KiB
Nix

{ inputs, config, pkgs, lib, ... }@args:
let
beets-cfg = config.my.beets-config;
tmux-cfg = config.my.tmux-config;
work-bash-cfg = config.my.work-bash-config;
mkIfFlakeLoc = condition: errorMsg: value:
(lib.mkIf (condition &&
!(config.my.flakeLocation == null &&
(lib.warn ("Didn't set 'my.flakeLocation', " + errorMsg) true)))
value);
flakeSubmodules = "${config.my.flakeLocation}/submodules";
in
{
options = {
my.flakeLocation = lib.mkOption {
default = null;
description = "Location of nixos flake for config";
type = lib.types.nullOr lib.types.path;
};
my.beets-config.enable = lib.mkEnableOption "Enable beets configuration file";
my.tmux-config.enable = lib.mkEnableOption "Enable tmux configuration file";
my.work-bash-config.enable = lib.mkEnableOption "Enable work bash configurations";
};
config = {
home.file = (mkIfFlakeLoc work-bash-cfg.enable
"I won't symlink bashrc and bash_profile into place"
{
".bashrc" = {
source = config.lib.file.mkOutOfStoreSymlink
"${flakeSubmodules}/work-bash-config/dot-bashrc.sh";
};
".bash_profile" = {
source = config.lib.file.mkOutOfStoreSymlink
"${flakeSubmodules}/work-bash-config/dot-bash_profile.sh";
};
}
);
xdg = {
configFile = {
"beets/config.yaml" = (mkIfFlakeLoc beets-cfg.enable
"I won't symlink beets' config.yaml into place"
{
source = config.lib.file.mkOutOfStoreSymlink
"${flakeSubmodules}/beets-config/config.yaml";
# Recursive only applies to directories. If false, do one
# symlink (which is the directory). Otherwise, do every file
# recursively
#
# recursive = true;
});
"tmux/tmux.conf" = (mkIfFlakeLoc tmux-cfg.enable
"I won't symlink tmux's tmux.conf into place"
{
source = getPath "${flakeSubmodules}/tmux-config/tmux.conf";
});
"wezterm/" = (mkIfFlakeLoc beets-cfg.enable
"I won't symlink wezterm config folder into place"
{
source = config.lib.file.mkOutOfStoreSymlink
"${flakeSubmodules}/wezterm-config/";
});
"bash/" = (mkIfFlakeLoc work-bash-cfg.enable
"I won't symlink bash config folder into place"
{
source = config.lib.file.mkOutOfStoreSymlink
"${flakeSubmodules}/work-bash-config/dot-config-bash/";
});
};
dataFile = {
"fonts/.ttf" = (mkIfFlakeLoc true
"I won't symlink chinese fonts into place"
{
source = config.lib.file.mkOutOfStoreSymlink
"${flakeSubmodules}/fonts/.ttf";
});
};
};
};
}