-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfavorite-dirs.nix
71 lines (70 loc) · 1.64 KB
/
favorite-dirs.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
{
config,
lib,
...
}: let
favoriteDirs = rec {
home = {
aliases = ["home"];
path = "${config.home.homeDirectory}/.config/home-manager";
};
code = {
aliases = ["co"];
path = "${config.home.homeDirectory}/Code";
};
huffman = {
aliases = ["hu"];
path = "${code.path}/personal/rust/huffman";
};
keycloakAdminAio = {
aliases = ["ka"];
path = "${code.path}/open-source/keycloak-admin-aio";
};
pytestDependsOn = {
aliases = ["de"];
path = "${code.path}/open-source/pytest-depends-on";
};
nix = {
aliases = ["ni"];
path = "${code.path}/personal/rust/nix";
};
portfolio = {
aliases = ["por"];
path = "${code.path}/personal/webdev/portfolio";
};
jsonParser = {
aliases = ["jp"];
path = "${code.path}/personal/rust/json-parser";
};
};
extensionDirs =
if lib.pathExists ./extension-dirs.nix
then (import ./extension-dirs.nix) favoriteDirs
else {};
allDirs = favoriteDirs // extensionDirs;
aliases = let
directoryEntryToAliasEntryList = name: {
aliases,
path,
}: (
map (alias: {
name = alias;
value = path;
})
aliases
);
aliasEntryLists = lib.mapAttrsToList directoryEntryToAliasEntryList allDirs;
aliasEntries = builtins.concatLists aliasEntryLists;
in
builtins.listToAttrs aliasEntries;
aliasesCdls = let
cdls = dir: "cd ${dir} && ls";
in
lib.mapAttrs (_: dir: cdls dir) config._module.args.aliases;
in {
_module.args = {
directories = allDirs;
inherit aliases;
};
home.shellAliases = aliasesCdls;
}