mirror of https://github.com/go-gitea/gitea.git
Browse Source
`flake-utils` is currently only used for outputting system-specific dev shells. This can actually be achieved only using functionality already present within `nixpkgs`, thus there is no need for an extra dependency. Additionally, we move to use the `packages` and `env` args for `mkShell` to more clearly outline what they are used for. --- Further reading: https://determinate.systems/blog/best-practices-for-nix-at-work/#avoid-flake-helper-libraries-if-possible As a side note, using `with` to import large scopes is [discouraged by official Nix resources](https://nix.dev/guides/best-practices#with-scopes), so an alternative approach to list installed packages could be something like this: ```nix packages = (builtins.attrValues { inherit (pkgs) # generic git git-lfs gnumake gnused gnutar gzip zip # frontend cairo pixman pkg-config # linting uv # backend gofumpt sqlite ; inherit # frontend nodejs pnpm # linting python3 # backend go ; }) ++ linuxOnlyInputs; ``` But I saw this as too pedantic to include in the initial PR. Co-authored-by: 6543 <6543@obermui.de>pull/35865/head
2 changed files with 80 additions and 93 deletions
@ -1,73 +1,94 @@
@@ -1,73 +1,94 @@
|
||||
{ |
||||
inputs = { |
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; |
||||
flake-utils.url = "github:numtide/flake-utils"; |
||||
}; |
||||
outputs = |
||||
{ nixpkgs, flake-utils, ... }: |
||||
flake-utils.lib.eachDefaultSystem ( |
||||
system: |
||||
let |
||||
pkgs = nixpkgs.legacyPackages.${system}; |
||||
in |
||||
{ |
||||
devShells.default = |
||||
with pkgs; |
||||
let |
||||
# only bump toolchain versions here |
||||
go = go_1_25; |
||||
nodejs = nodejs_24; |
||||
python3 = python312; |
||||
pnpm = pnpm_10; |
||||
|
||||
# Platform-specific dependencies |
||||
linuxOnlyInputs = lib.optionals pkgs.stdenv.isLinux [ |
||||
glibc.static |
||||
]; |
||||
{ nixpkgs, ... }: |
||||
let |
||||
supportedSystems = [ |
||||
"aarch64-darwin" |
||||
"aarch64-linux" |
||||
"x86_64-darwin" |
||||
"x86_64-linux" |
||||
]; |
||||
|
||||
linuxOnlyEnv = lib.optionalAttrs pkgs.stdenv.isLinux { |
||||
CFLAGS = "-I${glibc.static.dev}/include"; |
||||
LDFLAGS = "-L ${glibc.static}/lib"; |
||||
forEachSupportedSystem = |
||||
f: |
||||
nixpkgs.lib.genAttrs supportedSystems ( |
||||
system: |
||||
let |
||||
pkgs = import nixpkgs { |
||||
inherit system; |
||||
}; |
||||
in |
||||
pkgs.mkShell ( |
||||
{ |
||||
buildInputs = [ |
||||
# generic |
||||
git |
||||
git-lfs |
||||
gnumake |
||||
gnused |
||||
gnutar |
||||
gzip |
||||
zip |
||||
f { inherit pkgs; } |
||||
); |
||||
in |
||||
{ |
||||
devShells = forEachSupportedSystem ( |
||||
{ pkgs, ... }: |
||||
{ |
||||
default = |
||||
let |
||||
inherit (pkgs) lib; |
||||
|
||||
# only bump toolchain versions here |
||||
go = pkgs.go_1_25; |
||||
nodejs = pkgs.nodejs_24; |
||||
python3 = pkgs.python312; |
||||
pnpm = pkgs.pnpm_10; |
||||
|
||||
# frontend |
||||
nodejs |
||||
pnpm |
||||
cairo |
||||
pixman |
||||
pkg-config |
||||
# Platform-specific dependencies |
||||
linuxOnlyInputs = lib.optionals pkgs.stdenv.isLinux [ |
||||
pkgs.glibc.static |
||||
]; |
||||
|
||||
# linting |
||||
python3 |
||||
uv |
||||
linuxOnlyEnv = lib.optionalAttrs pkgs.stdenv.isLinux { |
||||
CFLAGS = "-I${pkgs.glibc.static.dev}/include"; |
||||
LDFLAGS = "-L ${pkgs.glibc.static}/lib"; |
||||
}; |
||||
in |
||||
pkgs.mkShell { |
||||
packages = |
||||
with pkgs; |
||||
[ |
||||
# generic |
||||
git |
||||
git-lfs |
||||
gnumake |
||||
gnused |
||||
gnutar |
||||
gzip |
||||
zip |
||||
|
||||
# backend |
||||
go |
||||
gofumpt |
||||
sqlite |
||||
] |
||||
++ linuxOnlyInputs; |
||||
# frontend |
||||
nodejs |
||||
pnpm |
||||
cairo |
||||
pixman |
||||
pkg-config |
||||
|
||||
GO = "${go}/bin/go"; |
||||
GOROOT = "${go}/share/go"; |
||||
# linting |
||||
python3 |
||||
uv |
||||
|
||||
TAGS = "sqlite sqlite_unlock_notify"; |
||||
STATIC = "true"; |
||||
} |
||||
// linuxOnlyEnv |
||||
); |
||||
} |
||||
); |
||||
# backend |
||||
go |
||||
gofumpt |
||||
sqlite |
||||
] |
||||
++ linuxOnlyInputs; |
||||
|
||||
env = { |
||||
GO = "${go}/bin/go"; |
||||
GOROOT = "${go}/share/go"; |
||||
|
||||
TAGS = "sqlite sqlite_unlock_notify"; |
||||
STATIC = "true"; |
||||
} |
||||
// linuxOnlyEnv; |
||||
}; |
||||
} |
||||
); |
||||
}; |
||||
} |
||||
|
||||
Loading…
Reference in new issue