Skip to content

Commit ac13127

Browse files
nixfmt
1 parent 66d9d29 commit ac13127

File tree

22 files changed

+947
-843
lines changed

22 files changed

+947
-843
lines changed

default.nix

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
1-
(
2-
import
3-
(
4-
let
5-
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
6-
in
7-
fetchTarball {
8-
url = lock.nodes.flake-compat.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
9-
sha256 = lock.nodes.flake-compat.locked.narHash;
10-
}
11-
)
12-
{src = ./.;}
13-
)
14-
.defaultNix
1+
(import (
2+
let
3+
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
4+
in
5+
fetchTarball {
6+
url =
7+
lock.nodes.flake-compat.locked.url
8+
or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
9+
sha256 = lock.nodes.flake-compat.locked.narHash;
10+
}
11+
) { src = ./.; }).defaultNix

flake.lock

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

flake.nix

Lines changed: 167 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
description = "Nix derivations for PureScript core language tools.";
33

44
inputs = {
5-
nixpkgs.url = "github:nixos/nixpkgs/release-23.05";
5+
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
66

77
slimlock.url = "github:thomashoneyman/slimlock";
88
slimlock.inputs.nixpkgs.follows = "nixpkgs";
@@ -11,136 +11,183 @@
1111
flake-compat.flake = false;
1212
};
1313

14-
outputs = {
15-
self,
16-
nixpkgs,
17-
slimlock,
18-
flake-compat,
19-
}: let
20-
inherit (nixpkgs) lib;
21-
eachDefaultSystem = perSystem:
22-
lib.pipe ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"] [
23-
(map (sys: builtins.mapAttrs (_: value: {${sys} = value;}) (perSystem sys)))
24-
(builtins.foldl' nixpkgs.lib.recursiveUpdate {})
25-
];
26-
in
27-
eachDefaultSystem (system: let
28-
pkgs = import nixpkgs {
29-
inherit system;
30-
overlays = [
31-
self.overlays.default
32-
slimlock.overlays.default
33-
];
34-
};
35-
in {
36-
# A warning-free top-level flake output suitable for running unit tests via
37-
# e.g. `nix eval .#lib`.
38-
lib = pkgs.callPackage ./nix/tests {};
39-
40-
packages =
41-
{
42-
inherit (pkgs) purs purs-unstable spago spago-unstable purs-tidy purs-tidy-unstable purs-backend-es purs-backend-es-unstable purescript-language-server purescript-language-server-unstable;
14+
outputs =
15+
{
16+
self,
17+
nixpkgs,
18+
slimlock,
19+
...
20+
}:
21+
let
22+
inherit (nixpkgs) lib;
23+
eachDefaultSystem =
24+
perSystem:
25+
lib.pipe
26+
[ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]
27+
[
28+
(map (sys: builtins.mapAttrs (_: value: { ${sys} = value; }) (perSystem sys)))
29+
(builtins.foldl' nixpkgs.lib.recursiveUpdate { })
30+
];
31+
in
32+
eachDefaultSystem (
33+
system:
34+
let
35+
pkgs = import nixpkgs {
36+
inherit system;
37+
overlays = [
38+
self.overlays.default
39+
slimlock.overlays.default
40+
];
41+
};
42+
in
43+
{
44+
# A warning-free top-level flake output suitable for running unit tests via
45+
# e.g. `nix eval .#lib`.
46+
lib = pkgs.callPackage ./nix/tests { };
47+
48+
packages = {
49+
inherit (pkgs)
50+
purs
51+
purs-unstable
52+
spago
53+
spago-unstable
54+
purs-tidy
55+
purs-tidy-unstable
56+
purs-backend-es
57+
purs-backend-es-unstable
58+
purescript-language-server
59+
purescript-language-server-unstable
60+
;
4361
}
4462
// pkgs.purs-bin
4563
// pkgs.spago-bin
4664
// pkgs.purs-tidy-bin
4765
// pkgs.purs-backend-es-bin
4866
// pkgs.purescript-language-server-bin;
4967

50-
apps = let
51-
mkApp = bin: {
52-
type = "app";
53-
program = "${bin}/bin/${bin.pname or bin.name}";
54-
};
55-
apps = pkgs.lib.mapAttrs (_: mkApp) self.packages.${system};
56-
scripts = {generate = mkApp (pkgs.callPackage ./generate {});};
57-
in
58-
apps // scripts;
59-
60-
checks = let
61-
package-checks =
62-
lib.mapAttrs (key: bin: let
63-
name = bin.pname or bin.name;
64-
version = bin.version or "0.0.0";
68+
apps =
69+
let
70+
mkApp = bin: {
71+
type = "app";
72+
program = "${bin}/bin/${bin.pname or bin.name}";
73+
meta = bin.meta or { };
74+
};
75+
apps = pkgs.lib.mapAttrs (_: mkApp) self.packages.${system};
76+
scripts = {
77+
generate = mkApp (pkgs.callPackage ./generate { });
78+
};
6579
in
66-
pkgs.runCommand "test-${name}-${version}" {} ''
67-
touch $out
68-
set -e
69-
set -x
70-
71-
# Some package versions are not supported on some systems, ie. the
72-
# "stable" version of Spago is not supported on aarch64.
73-
if [ ${builtins.toString (builtins.hasAttr "unsupported" bin)} ]; then
74-
echo "Skipping ${bin.name} because it is not supported on ${system}"
75-
exit 0
76-
fi
77-
78-
# Different packages at different versions use different 'version'
79-
# flags to print their version
80-
if [ ${builtins.toString (name == "spago" && pkgs.lib.versionOlder version "0.90.0")} ]; then
81-
VERSION="$(${lib.getExe bin} version --global-cache skip)"
82-
# spago@0.93.21 incorrectly reports its version
83-
elif [ ${builtins.toString (name == "spago" && version == "0.93.21")} ]; then
84-
VERSION="0.93.21"
85-
else
86-
# spago-next writes --version to stderr, oddly enough, so we need to
87-
# capture both in the VERSION var.
88-
VERSION="$(${lib.getExe bin} --version 2>&1)"
89-
fi
90-
91-
# purs-tidy includes a 'v' prefix in its output beginning with version 0.9.0
92-
if [ ${builtins.toString (name == "purs-tidy" && !(pkgs.lib.versionOlder version "0.9.0"))} ]; then
93-
EXPECTED_VERSION="v${version}"
94-
# purs-backend-es always includes it
95-
elif [ ${builtins.toString (name == "purs-backend-es")} ]; then
96-
EXPECTED_VERSION="v${version}"
97-
else
98-
EXPECTED_VERSION="${version}"
99-
fi
100-
101-
echo "$VERSION should match expected output $EXPECTED_VERSION"
102-
test "$VERSION" = "$EXPECTED_VERSION"
103-
'')
104-
# TODO: Remove once the purescript build of spago is stable
105-
(pkgs.lib.filterAttrs (k: v: !(k == "spago" && system == "aarch64-darwin")) self.packages.${system});
106-
107-
example-checks = pkgs.callPackages ./nix/examples {};
108-
109-
script-checks = {
110-
generate = let
111-
bin = pkgs.callPackage ./generate {};
112-
manifests = ./manifests;
80+
apps // scripts;
81+
82+
checks =
83+
let
84+
package-checks =
85+
lib.mapAttrs
86+
(
87+
key: bin:
88+
let
89+
name = bin.pname or bin.name;
90+
version = bin.version or "0.0.0";
91+
in
92+
pkgs.runCommand "test-${name}-${version}" { } ''
93+
touch $out
94+
set -e
95+
set -x
96+
97+
# Some package versions are not supported on some systems, ie. the
98+
# "stable" version of Spago is not supported on aarch64.
99+
if [ ${builtins.toString (builtins.hasAttr "unsupported" bin)} ]; then
100+
echo "Skipping ${bin.name} because it is not supported on ${system}"
101+
exit 0
102+
fi
103+
104+
# Different packages at different versions use different 'version'
105+
# flags to print their version
106+
if [ ${builtins.toString (name == "spago" && pkgs.lib.versionOlder version "0.90.0")} ]; then
107+
VERSION="$(${lib.getExe bin} version --global-cache skip)"
108+
# spago@0.93.21 incorrectly reports its version
109+
elif [ ${builtins.toString (name == "spago" && version == "0.93.21")} ]; then
110+
VERSION="0.93.21"
111+
else
112+
# spago-next writes --version to stderr, oddly enough, so we need to
113+
# capture both in the VERSION var.
114+
VERSION="$(${lib.getExe bin} --version 2>&1)"
115+
fi
116+
117+
# purs-tidy includes a 'v' prefix in its output beginning with version 0.9.0
118+
if [ ${builtins.toString (name == "purs-tidy" && !(pkgs.lib.versionOlder version "0.9.0"))} ]; then
119+
EXPECTED_VERSION="v${version}"
120+
# purs-backend-es always includes it
121+
elif [ ${builtins.toString (name == "purs-backend-es")} ]; then
122+
EXPECTED_VERSION="v${version}"
123+
else
124+
EXPECTED_VERSION="${version}"
125+
fi
126+
127+
echo "$VERSION should match expected output $EXPECTED_VERSION"
128+
test "$VERSION" = "$EXPECTED_VERSION"
129+
''
130+
)
131+
# TODO: Remove once the purescript build of spago is stable
132+
(
133+
pkgs.lib.filterAttrs (k: v: !(k == "spago" && system == "aarch64-darwin")) self.packages.${system}
134+
);
135+
136+
example-checks = pkgs.callPackages ./nix/examples { };
137+
138+
script-checks = {
139+
generate =
140+
let
141+
bin = pkgs.callPackage ./generate { };
142+
manifests = ./manifests;
143+
in
144+
pkgs.runCommand "test-generate" { } ''
145+
mkdir -p $out/bin
146+
set -e
147+
set -x
148+
cp ${bin}/bin/${bin.name} $out/bin/test-generate
149+
${bin}/bin/${bin.name} verify ${manifests}
150+
'';
151+
};
152+
153+
format-checks = {
154+
nix-format =
155+
pkgs.runCommand "nix-format"
156+
{
157+
src = lib.fileset.toSource {
158+
root = ./.;
159+
fileset = lib.fileset.fileFilter (f: f.hasExt "nix") ./.;
160+
};
161+
nativeBuildInputs = [ pkgs.nixfmt ];
162+
}
163+
''
164+
nixfmt --check $(find $src -type f) && touch $out
165+
'';
166+
};
113167
in
114-
pkgs.runCommand "test-generate" {} ''
115-
mkdir -p $out/bin
116-
set -e
117-
set -x
118-
cp ${bin}/bin/${bin.name} $out/bin/test-generate
119-
${bin}/bin/${bin.name} verify ${manifests}
120-
'';
121-
};
122-
in
123-
package-checks // example-checks // script-checks;
124-
125-
devShells = {
126-
default = pkgs.mkShell {
127-
name = "purescript-overlay";
128-
buildInputs = [
129-
# FIXME: Change when lockfile format stabilizes
130-
self.packages.${system}.spago-0_93_37
131-
self.packages.${system}.purs-unstable
132-
self.packages.${system}.purs-tidy-unstable
133-
self.packages.${system}.purs-backend-es-unstable
134-
self.packages.${system}.purescript-language-server-unstable
135-
136-
pkgs.nodejs
137-
pkgs.prefetch-npm-deps
138-
];
168+
package-checks // example-checks // script-checks // format-checks;
169+
170+
devShells = {
171+
default = pkgs.mkShell {
172+
name = "purescript-overlay";
173+
buildInputs = [
174+
# FIXME: Change when lockfile format stabilizes
175+
self.packages.${system}.spago-0_93_37
176+
self.packages.${system}.purs-unstable
177+
self.packages.${system}.purs-tidy-unstable
178+
self.packages.${system}.purs-backend-es-unstable
179+
self.packages.${system}.purescript-language-server-unstable
180+
181+
pkgs.nodejs
182+
pkgs.prefetch-npm-deps
183+
pkgs.nixfmt
184+
];
185+
};
139186
};
140-
};
141187

142-
formatter = pkgs.alejandra;
143-
})
188+
formatter = pkgs.alejandra;
189+
}
190+
)
144191
// {
145192
overlays.default = import ./overlay.nix;
146193
};

0 commit comments

Comments
 (0)