blob: d977adaa1d306f2d4fc07b8900f67c8678048995 (
plain)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
{
config,
pkgs,
lib,
...
}: let
cfg = config.features.cli.shells.nushell;
in {
options.features.cli.shells.nushell.enable = lib.mkEnableOption "nushell";
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
fd
television
fzf
gitprompt-rs
];
programs.nushell = {
enable = true;
plugins = with pkgs.nushellPlugins; [
gstat
];
shellAliases = {
"cd" = "z";
"ze" = "zellij";
"lg" = "lazygit";
"bk" = "cd $env.OLDPWD";
"fg" = "job unfreeze";
};
configFile.text =
/*
nu
*/
''
# Source modularized configs.
source ${./prompt.nu}
source ${./completion.nu}
# General Config
$env.config = {
show_banner: false
edit_mode: 'emacs'
history: {
isolation: true # Isolate the history of each nushell session
file_format: sqlite # Required for isolation
}
}
$env.editor = "${config.default-applications.text-editor.command}"
# go should use a hidden directory
$env.gopath = "${config.home.homeDirectory}/.go"
# Use direnv if present.
{ ||
if (which direnv | is-empty) {
return
}
direnv export json | from json | default {} | load-env
}
# define a function to initialize a direnv project
def projinit [path?: string] { # this code sucks but I'm tired of working on it
mut path = $path
if ($path == null) {
$path = "./"
}
let path = $path | path expand
let template_path = "${./direnv-project-template}" | path expand
let template_files = ls -a $template_path | get name
$template_files | each {|item| cp $item $path}
ls -a $path | get name | where {|name| $template_files | str contains ($name | path basename) | any {}} | each {|name| chmod +w $name}
if (try {git rev-parse --is-inside-work-tree e> /dev/null}) != null {
direnv allow
} else {
# git init
direnv allow
}
# git add $"($path)/."
# git commit -m "initialized"
}
# Quickly create a nix shell.
def qs [...packages] {
if $packages == [] {
print "Please use a package name."
return
}
let packages_string = $packages
| each {|package| return $"nixpkgs#($package) "}
| str join
| str trim
nu -c $"nix shell ($packages_string)"
}
# Quickly run a nix package.
def qr --wrapped [package: string ...arguments] {
if ($arguments == []) {
nix run $"nixpkgs#($package)"
} else {
nix run $"nixpkgs#($package)" -- ($arguments | str join " ")
}
}
# Quickly find and enter a directory.
def --env fcd [] {
${lib.getExe pkgs.fd} -t d | ${lib.getExe pkgs.fzf} | if ($in != null) {cd $in}
}
'';
};
programs.zoxide.enable = true;
programs.carapace.enable = true;
programs.direnv = {
enable = true;
nix-direnv.enable = true;
silent = true;
};
};
}
|