Skip to content

Commit fb1abe7

Browse files
committed
nixifying project
1 parent b1bcaa1 commit fb1abe7

File tree

3 files changed

+210
-0
lines changed

3 files changed

+210
-0
lines changed

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,20 @@ pip3 install git+https://github.com/Scony/godot-gdscript-toolkit.git
4141
pipx install git+https://github.com/Scony/godot-gdscript-toolkit.git
4242
```
4343

44+
### Using Nix
45+
46+
If you have [Nix](https://nixos.org/) installed, you can run gdtoolkit without installing it:
47+
48+
```
49+
nix run github:Scony/godot-gdscript-toolkit -- --help
50+
```
51+
52+
Or enter a development shell with all tools available:
53+
54+
```
55+
nix develop github:Scony/godot-gdscript-toolkit
56+
```
57+
4458
## Linting with gdlint [(more)](https://github.com/Scony/godot-gdscript-toolkit/wiki/3.-Linter)
4559

4660
To run a linter you need to execute `gdlint` command like:

flake.lock

Lines changed: 60 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
{
2+
description = "Independent set of tools for working with GDScript - parser, linter and formatter";
3+
4+
inputs = {
5+
nixpkgs.url = "github:NixOS/nixpkgs";
6+
flake-utils.url = "github:numtide/flake-utils";
7+
};
8+
9+
outputs = { self, nixpkgs, flake-utils }:
10+
flake-utils.lib.eachDefaultSystem (system:
11+
let
12+
pkgs = import nixpkgs { inherit system; };
13+
pythonWithPkgs = pkgs.python3.withPackages (ps: with ps; [
14+
lark
15+
docopt-ng
16+
pyyaml
17+
radon
18+
setuptools
19+
]);
20+
21+
appVersion = "4.3.4";
22+
in {
23+
packages = {
24+
gdtoolkit = pkgs.python3.pkgs.buildPythonPackage {
25+
pname = "gdtoolkit";
26+
version = appVersion;
27+
src = self;
28+
29+
propagatedBuildInputs = with pkgs.python3.pkgs; [
30+
lark
31+
docopt-ng
32+
pyyaml
33+
radon
34+
setuptools
35+
];
36+
37+
# Create console scripts
38+
postInstall = ''
39+
mkdir -p $out/bin
40+
echo '#!/usr/bin/env python' > $out/bin/gdparse
41+
echo 'import sys; from gdtoolkit.parser.__main__ import main; sys.exit(main())' >> $out/bin/gdparse
42+
echo '#!/usr/bin/env python' > $out/bin/gdlint
43+
echo 'import sys; from gdtoolkit.linter.__main__ import main; sys.exit(main())' >> $out/bin/gdlint
44+
echo '#!/usr/bin/env python' > $out/bin/gdformat
45+
echo 'import sys; from gdtoolkit.formatter.__main__ import main; sys.exit(main())' >> $out/bin/gdformat
46+
echo '#!/usr/bin/env python' > $out/bin/gd2py
47+
echo 'import sys; from gdtoolkit.gd2py.__main__ import main; sys.exit(main())' >> $out/bin/gd2py
48+
echo '#!/usr/bin/env python' > $out/bin/gdradon
49+
echo 'import sys; from gdtoolkit.gdradon.__main__ import main; sys.exit(main())' >> $out/bin/gdradon
50+
chmod +x $out/bin/*
51+
'';
52+
};
53+
54+
default = self.packages.${system}.gdtoolkit;
55+
};
56+
57+
apps = {
58+
gdparse = {
59+
type = "app";
60+
program = "${self.packages.${system}.gdtoolkit}/bin/gdparse";
61+
meta = with pkgs.lib; {
62+
description = "GDScript parser";
63+
homepage = "https://github.com/Scony/godot-gdscript-toolkit";
64+
license = licenses.mit;
65+
platforms = platforms.all;
66+
};
67+
};
68+
69+
gdlint = {
70+
type = "app";
71+
program = "${self.packages.${system}.gdtoolkit}/bin/gdlint";
72+
meta = with pkgs.lib; {
73+
description = "GDScript linter";
74+
homepage = "https://github.com/Scony/godot-gdscript-toolkit";
75+
license = licenses.mit;
76+
platforms = platforms.all;
77+
};
78+
};
79+
80+
gdformat = {
81+
type = "app";
82+
program = "${self.packages.${system}.gdtoolkit}/bin/gdformat";
83+
meta = with pkgs.lib; {
84+
description = "GDScript formatter";
85+
homepage = "https://github.com/Scony/godot-gdscript-toolkit";
86+
license = licenses.mit;
87+
platforms = platforms.all;
88+
};
89+
};
90+
91+
gd2py = {
92+
type = "app";
93+
program = "${self.packages.${system}.gdtoolkit}/bin/gd2py";
94+
meta = with pkgs.lib; {
95+
description = "GDScript to Python transpiler";
96+
homepage = "https://github.com/Scony/godot-gdscript-toolkit";
97+
license = licenses.mit;
98+
platforms = platforms.all;
99+
};
100+
};
101+
102+
gdradon = {
103+
type = "app";
104+
program = "${self.packages.${system}.gdtoolkit}/bin/gdradon";
105+
meta = with pkgs.lib; {
106+
description = "GDScript code complexity analysis";
107+
homepage = "https://github.com/Scony/godot-gdscript-toolkit";
108+
license = licenses.mit;
109+
platforms = platforms.all;
110+
};
111+
};
112+
113+
default = self.apps.${system}.gdformat;
114+
};
115+
116+
devShells = {
117+
default = pkgs.mkShell {
118+
name = "gdtoolkit-dev-env";
119+
packages = [ pythonWithPkgs ];
120+
121+
shellHook = ''
122+
export HISTFILE=$HOME/.history_nix
123+
export PYTHONPATH=${builtins.toString ./.}:$PYTHONPATH
124+
export PATH=${pythonWithPkgs}/bin:$PATH
125+
alias gdparse="python -m gdtoolkit.parser"
126+
alias gdlint="python -m gdtoolkit.linter"
127+
alias gdformat="python -m gdtoolkit.formatter"
128+
alias gd2py="python -m gdtoolkit.gd2py"
129+
alias gdradon="python -m gdtoolkit.gdradon"
130+
echo "GDScript Toolkit development environment activated"
131+
echo "Available commands: gdparse, gdlint, gdformat, gd2py, gdradon"
132+
'';
133+
};
134+
};
135+
});
136+
}

0 commit comments

Comments
 (0)