Allow for autoloading modules
Autoloads files within modules/ and makes them available by their module
type and name, e.g. `mixins-zsh`, `editor-nvim` and `users-opdavies`
when imported with `inputs.self.nixosModules`.
Based on afab322e6d/modules/default.nix
.
This assumes there will be a modules/*.nix file and currently doesn't
work with modules/*/default.nix. This is something I'd like to add in
the future.
I also want find a cleaner way to pass arguments into these shortcuts as
this also doesn't work in their implementation as far as I can see.
This commit is contained in:
parent
797d1206b0
commit
eea806e0f8
16 changed files with 140 additions and 63 deletions
|
@ -150,5 +150,7 @@
|
|||
];
|
||||
};
|
||||
};
|
||||
|
||||
nixosModules = import ./modules { lib = nixpkgs.lib; };
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ username, ... }:
|
||||
{ inputs, username, ... }:
|
||||
|
||||
let
|
||||
git = {
|
||||
|
@ -7,26 +7,26 @@ let
|
|||
};
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
../../modules/editor/nvim.nix
|
||||
../../modules/mixins/common
|
||||
../../modules/mixins/direnv.nix
|
||||
../../modules/mixins/docker.nix
|
||||
../../modules/mixins/fzf.nix
|
||||
../../modules/mixins/node.nix
|
||||
../../modules/mixins/phpactor
|
||||
../../modules/mixins/ranger.nix
|
||||
../../modules/mixins/scripts
|
||||
../../modules/mixins/starship.nix
|
||||
../../modules/mixins/tmux.nix
|
||||
../../modules/mixins/zsh
|
||||
imports = with inputs.self.nixosModules; [
|
||||
editor-nvim
|
||||
mixins-common
|
||||
mixins-direnv
|
||||
mixins-docker
|
||||
mixins-fzf
|
||||
mixins-node
|
||||
mixins-phpactor
|
||||
mixins-ranger
|
||||
mixins-scripts
|
||||
mixins-starship
|
||||
mixins-tmux
|
||||
mixins-zsh
|
||||
|
||||
users-opdavies
|
||||
|
||||
(import ../../modules/mixins/git.nix { inherit git; })
|
||||
|
||||
./modules/notes.nix
|
||||
./modules/wiki.nix
|
||||
|
||||
../../users/opdavies
|
||||
];
|
||||
|
||||
wsl = {
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
{
|
||||
modulesPath,
|
||||
inputs,
|
||||
lib,
|
||||
modulesPath,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
imports = with inputs.self.nixosModules; [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
(modulesPath + "/profiles/qemu-guest.nix")
|
||||
|
||||
|
@ -16,7 +17,7 @@
|
|||
./security
|
||||
./services
|
||||
|
||||
../../users/opdavies
|
||||
../../modules/users/opdavies.nix
|
||||
];
|
||||
|
||||
nix = {
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
{ inputs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
imports = with inputs.self.nixosModules; [
|
||||
./hardware-configuration.nix
|
||||
./hardware.nix
|
||||
./programs.nix
|
||||
./services.nix
|
||||
|
||||
../../modules/mixins/common
|
||||
../../modules/mixins/zsh
|
||||
mixins-common
|
||||
mixins-zsh
|
||||
|
||||
../../users/opdavies
|
||||
../../users/eric
|
||||
../../users/luke
|
||||
users-opdavies
|
||||
users-eric
|
||||
users-luke
|
||||
];
|
||||
|
||||
# Bootloader.
|
||||
|
|
|
@ -2,15 +2,19 @@
|
|||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ inputs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
imports = with inputs.self.nixosModules; [
|
||||
./hardware-configuration.nix
|
||||
./secrets.nix
|
||||
./services.nix
|
||||
|
||||
../../modules/mixins/common
|
||||
../../modules/mixins/docker.nix
|
||||
../../modules/mixins/zsh
|
||||
mixins-common
|
||||
mixins-docker
|
||||
mixins-zsh
|
||||
|
||||
users-opdavies
|
||||
|
||||
./modules/acme.nix
|
||||
./modules/audiobookshelf.nix
|
||||
|
@ -19,8 +23,6 @@
|
|||
./modules/immich.nix
|
||||
./modules/jellyfin.nix
|
||||
./modules/paperless.nix
|
||||
|
||||
../../users/opdavies
|
||||
];
|
||||
|
||||
nixosModules = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, ... }:
|
||||
{ inputs, pkgs, ... }:
|
||||
|
||||
let
|
||||
git = {
|
||||
|
@ -7,35 +7,35 @@ let
|
|||
};
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
imports = with inputs.self.nixosModules; [
|
||||
./hardware-configuration.nix
|
||||
./secrets.nix
|
||||
|
||||
../../modules/editor/nvim.nix
|
||||
../../modules/mixins/bluetooth.nix
|
||||
../../modules/mixins/common
|
||||
../../modules/mixins/direnv.nix
|
||||
../../modules/mixins/docker.nix
|
||||
../../modules/mixins/firefox.nix
|
||||
../../modules/mixins/flameshot.nix
|
||||
../../modules/mixins/fonts.nix
|
||||
../../modules/mixins/fzf.nix
|
||||
../../modules/mixins/gnupg.nix
|
||||
../../modules/mixins/gtk.nix
|
||||
../../modules/mixins/qutebrowser.nix
|
||||
../../modules/mixins/mpv.nix
|
||||
../../modules/mixins/node.nix
|
||||
../../modules/mixins/phpactor
|
||||
../../modules/mixins/pipewire.nix
|
||||
../../modules/mixins/ranger.nix
|
||||
../../modules/mixins/screenkey.nix
|
||||
../../modules/mixins/scripts
|
||||
../../modules/mixins/starship.nix
|
||||
../../modules/mixins/thunar.nix
|
||||
../../modules/mixins/tmux.nix
|
||||
../../modules/mixins/zsh
|
||||
../../modules/profiles/dwm
|
||||
../../modules/profiles/xbanish.nix
|
||||
editor-nvim
|
||||
mixins-bluetooth
|
||||
mixins-common
|
||||
mixins-direnv
|
||||
mixins-docker
|
||||
mixins-firefox
|
||||
mixins-flameshot
|
||||
mixins-fonts
|
||||
mixins-fzf
|
||||
mixins-gnupg
|
||||
mixins-gtk
|
||||
mixins-qutebrowser
|
||||
mixins-mpv
|
||||
mixins-node
|
||||
mixins-phpactor
|
||||
mixins-pipewire
|
||||
mixins-ranger
|
||||
mixins-screenkey
|
||||
mixins-scripts
|
||||
mixins-starship
|
||||
mixins-thunar
|
||||
mixins-tmux
|
||||
mixins-zsh
|
||||
profiles-dwm
|
||||
profiles-xbanish
|
||||
|
||||
(import ../../modules/mixins/git.nix { inherit git; })
|
||||
|
||||
|
@ -45,7 +45,7 @@ in
|
|||
];
|
||||
})
|
||||
|
||||
../../users/opdavies
|
||||
users-opdavies
|
||||
|
||||
./modules/cron.nix
|
||||
./modules/neomutt.nix
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{ pkgs, ... }:
|
||||
{ inputs, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
imports = with inputs.self.nixosModules; [
|
||||
./hardware-configuration.nix
|
||||
./hardware.nix
|
||||
./programs.nix
|
||||
|
@ -9,9 +9,9 @@
|
|||
./services
|
||||
./users.nix
|
||||
|
||||
../../modules/mixins/common
|
||||
mixins-common
|
||||
|
||||
../../users/opdavies
|
||||
users-opdavies
|
||||
];
|
||||
|
||||
boot = {
|
||||
|
|
57
modules/default.nix
Normal file
57
modules/default.nix
Normal file
|
@ -0,0 +1,57 @@
|
|||
# Based on https://github.com/MatthewCroughan/nixcfg/blob/afab322e6da20cc038d8577dd4a365673702d183/modules/default.nix.
|
||||
# Autoloads files within modules/ and makes them available by their module
|
||||
# type and name, e.g. `mixins-zsh`, `editor-nvim` and `users-opdavies` when
|
||||
# imported with `inputs.self.nixosModules`.
|
||||
|
||||
{ lib }:
|
||||
|
||||
let
|
||||
inherit (builtins)
|
||||
attrNames
|
||||
filter
|
||||
listToAttrs
|
||||
map
|
||||
readDir
|
||||
toString
|
||||
;
|
||||
|
||||
inherit (lib)
|
||||
filterAttrs
|
||||
foldAttrs
|
||||
hasSuffix
|
||||
mapAttrsToList
|
||||
nameValuePair
|
||||
removeSuffix
|
||||
zipListsWith
|
||||
;
|
||||
|
||||
inherit (lib.filesystem) listFilesRecursive;
|
||||
|
||||
generateModules =
|
||||
folder: prefix:
|
||||
|
||||
let
|
||||
findSuffix = suffix: dir: (filter (x: (hasSuffix suffix (toString x))) (listFilesRecursive dir));
|
||||
|
||||
allNixFiles = findSuffix ".nix" folder;
|
||||
|
||||
allModuleNames = map (removeSuffix ".nix") (map baseNameOf allNixFiles);
|
||||
|
||||
zippedList = (
|
||||
zipListsWith (x: y: nameValuePair (prefix + "-" + x) (import y)) allModuleNames allNixFiles
|
||||
);
|
||||
in
|
||||
listToAttrs zippedList;
|
||||
generateModulesAuto =
|
||||
root:
|
||||
let
|
||||
moduleFolderNames = attrNames (filterAttrs (n: v: v == "directory") (readDir (toString root)));
|
||||
moduleFolderPaths = map (x: (toString root) + "/" + x) moduleFolderNames;
|
||||
|
||||
zippedList = listToAttrs (
|
||||
zipListsWith (x: y: nameValuePair x y) moduleFolderNames moduleFolderPaths
|
||||
);
|
||||
in
|
||||
foldAttrs (item: acc: item) { } (mapAttrsToList (n: v: generateModules v n) zippedList);
|
||||
in
|
||||
generateModulesAuto ./.
|
3
modules/mixins/common.nix
Normal file
3
modules/mixins/common.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
imports = [ ./common ];
|
||||
}
|
3
modules/mixins/phpactor.nix
Normal file
3
modules/mixins/phpactor.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
imports = [ ./phpactor ];
|
||||
}
|
3
modules/mixins/scripts.nix
Normal file
3
modules/mixins/scripts.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
imports = [ ./scripts ];
|
||||
}
|
3
modules/mixins/zsh.nix
Normal file
3
modules/mixins/zsh.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
imports = [ ./zsh ];
|
||||
}
|
1
modules/profiles/dwm.nix
Normal file
1
modules/profiles/dwm.nix
Normal file
|
@ -0,0 +1 @@
|
|||
{ imports = [ ./dwm ]; }
|
Loading…
Add table
Add a link
Reference in a new issue