Skip to content

Commit 4f3bee8

Browse files
authored
Merge pull request #799 from maningreen/main
feat: Nix Shell
2 parents 0d3f8e3 + 4e968de commit 4f3bee8

File tree

4 files changed

+156
-2
lines changed

4 files changed

+156
-2
lines changed

.gitignore

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ __pycache__/
55

66
# Replit
77
*.replit
8-
*.nix
98

109
# C extensions
1110
*.so
@@ -172,4 +171,7 @@ tux/extensions/*
172171

173172
# misc
174173
slim.report.json
175-
prisma_binaries/
174+
prisma_binaries/
175+
176+
# direnv
177+
.direnv/

flake.lock

+62
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
{
2+
description = "All Thing's Linux discord bot - Tux";
3+
4+
inputs = {
5+
nixpkgs = {
6+
type = "github";
7+
owner = "NixOS";
8+
repo = "nixpkgs";
9+
ref = "nixos-unstable";
10+
};
11+
12+
flake-parts = {
13+
type = "github";
14+
owner = "hercules-ci";
15+
repo = "flake-parts";
16+
ref = "main";
17+
};
18+
};
19+
20+
outputs = inputs@{
21+
self,
22+
nixpkgs,
23+
flake-parts,
24+
...
25+
}:
26+
flake-parts.lib.mkFlake { inherit inputs; } {
27+
systems = [
28+
"x86_64-linux"
29+
"x86_64-darwin"
30+
"aarch64-linux"
31+
"aarch64-darwin"
32+
];
33+
34+
perSystem = { pkgs, self', system, ... }: {
35+
devShells = {
36+
default = self'.devShells.tux;
37+
tux = pkgs.callPackage ./shell.nix { inherit pkgs self; };
38+
};
39+
40+
apps.envrc = {
41+
type = "app";
42+
program = self'.packages.envrc;
43+
};
44+
45+
# Creates .envrc if does not exist
46+
packages.envrc = pkgs.writeShellScriptBin "envrc" ''
47+
echo
48+
49+
if [ ! -e ".envrc" ]; then
50+
echo "Creating .envrc"
51+
printf "use flake .\n\n\n" | cat - .env.example > .envrc
52+
echo
53+
54+
echo "The directory is now set up for direnv usage."
55+
echo
56+
else
57+
echo "Please delete .envrc if you wish to recreate it."
58+
echo
59+
fi
60+
'';
61+
};
62+
};
63+
}

shell.nix

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{ pkgs ? import <nixpkgs> {}, self ? null }:
2+
3+
pkgs.mkShell {
4+
buildInputs = if self == null then [] else [
5+
self.packages.${pkgs.system}.envrc
6+
];
7+
8+
packages = with pkgs; [
9+
python313
10+
poetry
11+
git
12+
jq
13+
];
14+
15+
shellHook = ''
16+
# See perSystem.packages.envrc
17+
if command -v envrc >/dev/null 2>&1; then
18+
envrc
19+
fi
20+
21+
# Enters the user's preferred shell using a more robust method
22+
$(getent passwd $(id -un) | cut -d: -f7 | tr -d '\n')
23+
24+
# Exits after child shell exits
25+
exit
26+
'';
27+
}

0 commit comments

Comments
 (0)