-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflake.nix
More file actions
98 lines (88 loc) · 2.41 KB
/
flake.nix
File metadata and controls
98 lines (88 loc) · 2.41 KB
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
{
description = "Nix build environment for TypeScript projects";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
outputs = inputs: let
supportedSystems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"];
forEachSupportedSystem = f:
inputs.nixpkgs.lib.genAttrs supportedSystems (system:
f {
pkgs = import inputs.nixpkgs {
inherit system;
config.allowUnfree = true;
};
});
in {
devShells = forEachSupportedSystem ({pkgs}: {
default = pkgs.mkShell {
packages = with pkgs; [
# Development Tools
corepack
docker
git
git-lfs
lazygit
lazydocker
nodejs
# Code Editors
neovim
vscode
# Shell Tools
act
atuin
bat
cargo
curl
eza
fzf
gawk
hyperfine
jq
mkcert
openssh
openvpn
tealdeer
wget
zq
# Shell Dependencies
alejandra
direnv
gum
macchina
which
];
shellHook = ''
clear
macchina
echo "Setting up environment variables..."
export EDITOR=$(which nvim)
export VISUAL=$(which code)
echo "Setting up shell aliases..."
alias ..="cd .."
alias cat=bat
alias ls="eza -lh --group-directories-first --icons=auto"
alias ll="ls -la"
alias vim=nvim
if git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
echo "Setting up Git..."
git config alias.co checkout
git config alias.br branch
git config alias.ci commit
git config alias.st status
git config alias.amend "commit --amend -m"
git config alias.unstage "restore --staged"
git config help.autocorrect 50
else
gum log -sl warn "Not inside a Git repository, skipping config setup"
fi
if [ -f "package.json" ]; then
corepack install
pnpm install --frozen-lockfile
echo -e "\nCurrent Project: $(jq -r '.name' package.json)"
else
gum log -sl warn "No package.json found, skipping installation step"
fi
'';
};
});
};
}