mirror of
https://github.com/typeable/octopod.git
synced 2024-10-03 18:27:13 +03:00
Added haskell-language-server support in nix-shell (#4)
This commit is contained in:
parent
3af33a79d9
commit
47495459e3
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"nixEnvSelector.nixShellConfig": "${workspaceRoot}/shell.nix"
|
||||
}
|
82
default.nix
82
default.nix
@ -1,54 +1,38 @@
|
||||
{ sources ? import ./nix/sources.nix
|
||||
, reflex-platform ? sources.reflex-platform
|
||||
, hls ? false
|
||||
}:
|
||||
(import reflex-platform { }).project ({ pkgs, ... }: {
|
||||
useWarp = true;
|
||||
(import reflex-platform { }).project ({ pkgs, ... }:
|
||||
let foldOs = pkgs.lib.foldl' pkgs.lib.composeExtensions (self: super: { });
|
||||
in
|
||||
{
|
||||
useWarp = true;
|
||||
|
||||
packages = {
|
||||
octopod-common = ./octopod-common;
|
||||
octopod-frontend = ./octopod-frontend;
|
||||
octopod-backend = ./octopod-backend;
|
||||
octo-cli = ./octo-cli;
|
||||
octopod-api = ./octopod-api;
|
||||
};
|
||||
packages = {
|
||||
octopod-common = ./octopod-common;
|
||||
octopod-frontend = ./octopod-frontend;
|
||||
octopod-backend = ./octopod-backend;
|
||||
octo-cli = ./octo-cli;
|
||||
octopod-api = ./octopod-api;
|
||||
};
|
||||
|
||||
overrides = hself: hsuper: {
|
||||
servant-reflex = hsuper.callCabal2nix "servant-reflex" sources.servant-reflex { };
|
||||
tabulation = hsuper.callCabal2nix "tabulation" "${sources.obelisk}/lib/tabulation" { };
|
||||
obelisk-executable-config-lookup = hsuper.callCabal2nix "obelisk-executable-config-lookup" "${sources.obelisk}/lib/executable-config/lookup" { };
|
||||
obelisk-route = hsuper.callCabal2nix "obelisk-route" "${sources.obelisk}/lib/route" { };
|
||||
hspec-webdriver = hsuper.callCabal2nix "hspec-webdriver" sources.hspec-webdriver-clone { };
|
||||
servant = pkgs.haskell.lib.overrideCabal hsuper.servant (old: {
|
||||
postInstall = "";
|
||||
});
|
||||
servant-websockets = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "servant-websockets";
|
||||
ver = "2.0.0";
|
||||
sha256 = "01bmwg3ysj8gijcqghykxfsd62sqz1pfby2irpzh5ybwyh285pvg";
|
||||
} { };
|
||||
deriving-aeson = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "deriving-aeson";
|
||||
ver = "0.2.3";
|
||||
sha256 = "0ckwdi9pr4aqp9psag4mdbx30nygxkkpdf21rg9rfz16cz8079j7";
|
||||
} { };
|
||||
table-layout = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "table-layout";
|
||||
ver = "0.9.0.1";
|
||||
sha256 = "12nllfnh6b5mjda9qxfy192v0r0sx181w9zc9j70kvjdn7hgrb0y";
|
||||
} { };
|
||||
data-default-instances-base = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "data-default-instances-base";
|
||||
ver = "0.1.0.1";
|
||||
sha256 = "18basdy4qjn246phw008ll9zbi3rpdn6bh2dk0i81a60gsmyn58q";
|
||||
} { };
|
||||
};
|
||||
|
||||
shells = {
|
||||
ghc = [ "octopod-common" "octopod-backend" "octopod-frontend" "octopod-api" "octo-cli" ];
|
||||
ghcjs = [ "octopod-common" "octopod-frontend" ];
|
||||
};
|
||||
})
|
||||
overrides = foldOs [
|
||||
(import ./nix/haskell-language-server-overrides.nix {
|
||||
inherit (pkgs.haskell) lib;
|
||||
inherit sources;
|
||||
}
|
||||
)
|
||||
(import ./nix/octopod-overrides.nix {
|
||||
inherit (pkgs.haskell) lib;
|
||||
inherit sources;
|
||||
}
|
||||
)
|
||||
];
|
||||
shellToolOverrides = ghc: super:
|
||||
if hls then { inherit (ghc) haskell-language-server; }
|
||||
else { };
|
||||
shells = {
|
||||
ghc = [ "octopod-common" "octopod-backend" "octopod-frontend" "octopod-api" "octo-cli" ];
|
||||
ghcjs = [ "octopod-common" "octopod-frontend" ];
|
||||
};
|
||||
})
|
||||
|
11
hie.yaml
11
hie.yaml
@ -1,13 +1,13 @@
|
||||
cradle:
|
||||
stack:
|
||||
cabal:
|
||||
- path: "octo-cli/src"
|
||||
component: "octo-cli:exe:octo"
|
||||
|
||||
- path: "octopod-api/src"
|
||||
component: "octopod-api:lib"
|
||||
component: "lib:octopod-api"
|
||||
|
||||
- path: "octopod-backend/src"
|
||||
component: "octopod-backend:lib"
|
||||
component: "lib:octopod-backend"
|
||||
|
||||
- path: "octopod-backend/app"
|
||||
component: "octopod-backend:exe:octopod-exe"
|
||||
@ -16,4 +16,7 @@ cradle:
|
||||
component: "octopod-backend:test:octopod-test"
|
||||
|
||||
- path: "octopod-common/src"
|
||||
component: "octopod-common:lib"
|
||||
component: "lib:octopod-common"
|
||||
|
||||
- path: "octopod-frontend/src"
|
||||
component: "octopod-frontend:exe:frontend"
|
||||
|
240
nix/haskell-language-server-overrides.nix
Normal file
240
nix/haskell-language-server-overrides.nix
Normal file
@ -0,0 +1,240 @@
|
||||
{ lib, sources ? import ./sources.nix }: hself: hsuper:
|
||||
{
|
||||
haskell-language-server = lib.dontCheck (hsuper.callCabal2nix "haskell-language-server" (sources.haskell-language-server) { });
|
||||
hls-hlint-plugin = hsuper.callCabal2nix "hls-hlint-plugin" (sources.haskell-language-server + "/plugins/hls-hlint-plugin") { };
|
||||
hls-explicit-imports-plugin = hsuper.callCabal2nix "hls-explicit-imports-plugin" (sources.haskell-language-server + "/plugins/hls-explicit-imports-plugin") { };
|
||||
hls-retrie-plugin = hsuper.callCabal2nix "hls-retrie-plugin" (sources.haskell-language-server + "/plugins/hls-retrie-plugin") { };
|
||||
hls-plugin-api = hsuper.callCabal2nix "hls-plugin-api" (sources.haskell-language-server + "/hls-plugin-api") { };
|
||||
hls-tactics-plugin = hsuper.callCabal2nix "hls-tactics-plugin" (sources.haskell-language-server + "/plugins/tactics") { };
|
||||
ghcide = lib.dontCheck (hsuper.callCabal2nix "ghcide" sources.ghcide { });
|
||||
hie-compat = hsuper.callCabal2nix "hie-compat" (sources.ghcide + "/hie-compat") { };
|
||||
fourmolu = lib.doJailbreak (hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "fourmolu";
|
||||
ver = "0.3.0.0";
|
||||
sha256 = "sha256-SFBwhkXfDArITiBSxGSp2qf8gl+yBpWHglBB5aKeaBU=";
|
||||
} { }
|
||||
);
|
||||
ormolu =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "ormolu";
|
||||
ver = "0.1.4.1";
|
||||
sha256 = "07gfag591dsys33q2i80f3afxjqny2zpiq4z35d1ajyp7di73m7z";
|
||||
} { };
|
||||
ghc-check =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "ghc-check";
|
||||
ver = "0.5.0.1";
|
||||
sha256 = "1zlbss7h6infzhhpilvkpk50gxypkb2li8fspi69jlll5l7wqi3d";
|
||||
} { };
|
||||
implicit-hie-cradle =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "implicit-hie-cradle";
|
||||
ver = "0.3.0.2";
|
||||
sha256 = "1fhc8zccd7g7ixka05cba3cd4qf5jvq1zif29bhn593dfkzy89lz";
|
||||
} { };
|
||||
implicit-hie =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "implicit-hie";
|
||||
ver = "0.1.2.5";
|
||||
sha256 = "1l0rz4r4hamvmqlb68a7y4s3n73y6xx76zyprksd0pscd9axznnv";
|
||||
} { };
|
||||
lsp-test = lib.dontCheck (
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "lsp-test";
|
||||
ver = "0.11.0.6";
|
||||
sha256 = "19mbbkjpgpmkna26i4y1jvp305srv3kwa5b62x30rlb3rqf2vy5v";
|
||||
} { }
|
||||
);
|
||||
floskell = lib.dontCheck (
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "floskell";
|
||||
ver = "0.10.4";
|
||||
sha256 = "0n1gy6yf7lzzh9l67712rr7bjliyifi9xjnc6i9rppiv5adj2xyf";
|
||||
} { }
|
||||
);
|
||||
monad-dijkstra = lib.dontCheck (lib.doJailbreak (
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "monad-dijkstra";
|
||||
ver = "0.1.1.2";
|
||||
sha256 = "1vyw7az18yy5s9jwi3icq76zvi9myr0y9gja3jaywlykcdn6frsz";
|
||||
} { }
|
||||
));
|
||||
HsYAML-aeson = lib.doJailbreak (
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "HsYAML-aeson";
|
||||
ver = "0.2.0.0";
|
||||
sha256 = "0zgcp93y93h7rsg9dv202hf3l6sqr95iadd67lmfclb0npfs640m";
|
||||
} { }
|
||||
);
|
||||
ghc-lib-parser-ex =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "ghc-lib-parser-ex";
|
||||
ver = "8.10.0.16";
|
||||
sha256 = "0dp8plj708ss3im6rmp41kpj0df71kjzpw1kqkpn0dhms9yr1g0x";
|
||||
} { };
|
||||
retrie = lib.dontCheck (
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "retrie";
|
||||
ver = "0.1.1.1";
|
||||
sha256 = "0gnp6j35jnk1gcglrymvvn13sawir0610vh0z8ya6599kyddmw7l";
|
||||
} { }
|
||||
);
|
||||
ghc-lib =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "ghc-lib";
|
||||
ver = "8.10.2.20200916";
|
||||
sha256 = "1gx0ijay9chachmd1fbb61md3zlvj24kk63fk3dssx8r9c2yp493";
|
||||
} { };
|
||||
ghc-lib-parser =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "ghc-lib-parser";
|
||||
ver = "8.10.2.20200916";
|
||||
sha256 = "1apm9zn484sm6b8flbh6a2kqnv1wjan4l58b81cic5fc1jsqnyjk";
|
||||
} { };
|
||||
haskell-lsp =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "haskell-lsp";
|
||||
ver = "0.22.0.0";
|
||||
sha256 = "1q3w46qcvzraxgmw75s7bl0qvb2fvff242r5vfx95sqska566b4m";
|
||||
} { };
|
||||
parser-combinators =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "parser-combinators";
|
||||
ver = "1.2.1";
|
||||
sha256 = "1990d6c1zm2wq4w9521bx7l3arg4ly02hq1ass9n19gs273bxx5h";
|
||||
} { };
|
||||
haskell-lsp-types =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "haskell-lsp-types";
|
||||
ver = "0.22.0.0";
|
||||
sha256 = "1apjclphi2v6ggrdnbc0azxbb1gkfj3x1vkwpc8qd6lsrbyaf0n8";
|
||||
} { };
|
||||
regex-tdfa =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "regex-tdfa";
|
||||
ver = "1.3.1.0";
|
||||
sha256 = "1a0l7kdjzp98smfp969mgkwrz60ph24xy0kh2dajnymnr8vd7b8g";
|
||||
} { };
|
||||
regex-posix =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "regex-posix";
|
||||
ver = "0.96.0.0";
|
||||
sha256 = "0js977ahpz10642sbpb55mw9h01pilai6z201wgkncgkg2d69hl3";
|
||||
} { };
|
||||
ansi-terminal =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "ansi-terminal";
|
||||
ver = "0.10.3";
|
||||
sha256 = "1aa8lh7pl054kz7i59iym49s8w473nhdqgc3pq16cp5v4358hw5k";
|
||||
} { };
|
||||
ghc-exactprint =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "ghc-exactprint";
|
||||
ver = "0.6.3.2";
|
||||
sha256 = "0l9piqqgdi8xd46nj1jizp0r0v526d7f61y05xm8k4aamjaj59d0";
|
||||
} { };
|
||||
stylish-haskell =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "stylish-haskell";
|
||||
ver = "0.12.2.0";
|
||||
sha256 = "1ck8i550rvzbvzrm7dvgir73slai8zmvfppg3n5v4igi7y3jy0mr";
|
||||
} { };
|
||||
optparse-applicative =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "optparse-applicative";
|
||||
ver = "0.15.1.0";
|
||||
sha256 = "1mii408cscjvids2xqdcy2p18dvanb0qc0q1bi7234r23wz60ajk";
|
||||
} { };
|
||||
shake = lib.dontCheck (
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "shake";
|
||||
ver = "0.19.2";
|
||||
sha256 = "03p5hq0sg13ii39j9hf3nvy8v20mkh8czb59djn6zrg7fypy9ivv";
|
||||
} { }
|
||||
);
|
||||
regex-base =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "regex-base";
|
||||
ver = "0.94.0.0";
|
||||
sha256 = "0x2ip8kn3sv599r7yc9dmdx7hgh5x632m45ga99ib5rnbn6kvn8x";
|
||||
} { };
|
||||
extra =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "extra";
|
||||
ver = "1.7.3";
|
||||
sha256 = "08j4gg2n5cl7ycr943hmyfimgby0xhf5vp8nwrwflg6lrn1s388c";
|
||||
} { };
|
||||
quickcheck-instances =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "quickcheck-instances";
|
||||
ver = "0.3.22";
|
||||
sha256 = "05mam3x4x7c881bqbq8lcbclmz914yziqh6s04icxzp12zq7c7ks";
|
||||
} { };
|
||||
apply-refact =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "apply-refact";
|
||||
ver = "0.8.2.1";
|
||||
sha256 = "0nnprv5lbk7c8w1pa4kywk0cny6prjaml4vnw70s8v6c1r1dx2rx";
|
||||
} { };
|
||||
hlint =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "hlint";
|
||||
ver = "3.2";
|
||||
sha256 = "0y2agj9y4nwhypv9ss97n26mc28pcynfynwilcyj2lwfabhr9pzc";
|
||||
} { };
|
||||
Diff =
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "Diff";
|
||||
ver = "0.4.0";
|
||||
sha256 = "1phz4cz7i53jx3d1bj0xnx8vpkk482g4ph044zv5c6ssirnzq3ng";
|
||||
} { };
|
||||
refinery = lib.dontCheck (
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "refinery";
|
||||
ver = "0.3.0.0";
|
||||
sha256 = "08s5pw6j3ncz96zfc2j0cna2zbf4vy7045d6jpzmq2sa161qnpgi";
|
||||
} { }
|
||||
);
|
||||
hie-bios = lib.dontCheck (
|
||||
hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "hie-bios";
|
||||
ver = "0.7.1";
|
||||
sha256 = "137f1dy0fmlrzngwcmgnxghcih7f2rfq5bdnizbwy9534dn4dr42";
|
||||
} { }
|
||||
);
|
||||
test-framework = lib.doJailbreak hsuper.test-framework;
|
||||
aeson = lib.dontCheck hsuper.aeson;
|
||||
tree-diff = lib.doJailbreak hsuper.tree-diff;
|
||||
brittany = hsuper.callCabal2nix "brittany" sources.brittany { };
|
||||
}
|
31
nix/octo.nix
31
nix/octo.nix
@ -4,6 +4,7 @@
|
||||
, static-haskell-nix ? sources.static-haskell-nix
|
||||
}:
|
||||
let
|
||||
foldOs = normalPkgs.lib.foldl' normalPkgs.lib.composeExtensions (self: super: { });
|
||||
normalPkgs = import pkgs-expr {
|
||||
overlays = [
|
||||
(self: super: {
|
||||
@ -11,24 +12,18 @@ let
|
||||
packages = super.haskell.packages // {
|
||||
"${compiler}" = super.haskell.packages."${compiler}".override {
|
||||
overrides =
|
||||
(hself: hsuper: {
|
||||
octo-cli = hsuper.callCabal2nix "octo-cli" ../octo-cli { };
|
||||
octopod-api = hsuper.callCabal2nix "octopod-api" ../octopod-api { };
|
||||
octopod-common = hsuper.callCabal2nix "octopod-common" ../octopod-common { };
|
||||
hspec-wai = hsuper.callHackage "hspec-wai" "0.9.2" { };
|
||||
table-layout = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "table-layout";
|
||||
ver = "0.9.0.1";
|
||||
sha256 = "12nllfnh6b5mjda9qxfy192v0r0sx181w9zc9j70kvjdn7hgrb0y";
|
||||
} { };
|
||||
data-default-instances-base = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "data-default-instances-base";
|
||||
ver = "0.1.0.1";
|
||||
sha256 = "18basdy4qjn246phw008ll9zbi3rpdn6bh2dk0i81a60gsmyn58q";
|
||||
} { };
|
||||
});
|
||||
foldOs [
|
||||
(import ./octopod-overrides.nix {
|
||||
inherit (normalPkgs.haskell) lib;
|
||||
inherit sources;
|
||||
}
|
||||
)
|
||||
(hself: hsuper: {
|
||||
octo-cli = hsuper.callCabal2nix "octo-cli" ../octo-cli { };
|
||||
octopod-api = hsuper.callCabal2nix "octopod-api" ../octopod-api { };
|
||||
octopod-common = hsuper.callCabal2nix "octopod-common" ../octopod-common { };
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
91
nix/octopod-overrides.nix
Normal file
91
nix/octopod-overrides.nix
Normal file
@ -0,0 +1,91 @@
|
||||
{ lib, sources ? import ./sources.nix }: hself: hsuper:
|
||||
{
|
||||
tabulation = hsuper.callCabal2nix "tabulation" "${sources.obelisk}/lib/tabulation" { };
|
||||
obelisk-executable-config-lookup = hsuper.callCabal2nix "obelisk-executable-config-lookup" "${sources.obelisk}/lib/executable-config/lookup" { };
|
||||
obelisk-route = hsuper.callCabal2nix "obelisk-route" "${sources.obelisk}/lib/route" { };
|
||||
hspec-webdriver = hsuper.callCabal2nix "hspec-webdriver" sources.hspec-webdriver-clone { };
|
||||
servant-reflex = lib.doJailbreak (hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "servant-reflex";
|
||||
ver = "0.3.5";
|
||||
sha256 = "1cj5b7hl4jhsqxfg8vdw50z8zvfxkj42f41hmyx217w6bv3s3fdb";
|
||||
} { }
|
||||
);
|
||||
servant = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "servant";
|
||||
ver = "0.18.2";
|
||||
sha256 = "0l2k895nxvw2ngr9201g3br6s9zab7mk5mhpjibyg8mxfbv75a8y";
|
||||
} { };
|
||||
servant-client-core = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "servant-client-core";
|
||||
ver = "0.18.2";
|
||||
sha256 = "1hazxk1laklpm2c65zgkk2gn8mvlp682437071s04bqggk9b59sx";
|
||||
} { };
|
||||
servant-server = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "servant-server";
|
||||
ver = "0.18.2";
|
||||
sha256 = "1kynxl7qg5z45bhi0k61sxn79xkgnq1z97ccqqs39wjyf45fj5yy";
|
||||
} { };
|
||||
servant-client = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "servant-client";
|
||||
ver = "0.18.2";
|
||||
sha256 = "0yip2s63ivrlrpficdipq60j2a6czg8agn18lpkkaxf3n55j4jr3";
|
||||
} { };
|
||||
servant-websockets = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "servant-websockets";
|
||||
ver = "2.0.0";
|
||||
sha256 = "01bmwg3ysj8gijcqghykxfsd62sqz1pfby2irpzh5ybwyh285pvg";
|
||||
} { };
|
||||
deriving-aeson = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "deriving-aeson";
|
||||
ver = "0.2.3";
|
||||
sha256 = "0ckwdi9pr4aqp9psag4mdbx30nygxkkpdf21rg9rfz16cz8079j7";
|
||||
} { };
|
||||
table-layout = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "table-layout";
|
||||
ver = "0.9.0.1";
|
||||
sha256 = "12nllfnh6b5mjda9qxfy192v0r0sx181w9zc9j70kvjdn7hgrb0y";
|
||||
} { };
|
||||
data-default-instances-base = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "data-default-instances-base";
|
||||
ver = "0.1.0.1";
|
||||
sha256 = "18basdy4qjn246phw008ll9zbi3rpdn6bh2dk0i81a60gsmyn58q";
|
||||
} { };
|
||||
postgresql-simple = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "postgresql-simple";
|
||||
ver = "0.6.3";
|
||||
sha256 = "16kk1bc23gc23cd79c2iy90zh03x5n6b9r2kinjspy7hl9jlzs2a";
|
||||
} { };
|
||||
concurrent-output = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "concurrent-output";
|
||||
ver = "1.10.12";
|
||||
sha256 = "1ysvahlf6frjfxpv6lwzxn05ps6b4zy1f5xb0yg6z688wbw1f6a7";
|
||||
} { };
|
||||
hspec-wai = hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "hspec-wai";
|
||||
ver = "0.11.0";
|
||||
sha256 = "1kqbk2by70smhd9p1zff6ilimvvxc54dkh2l0wpn03zqvydjnwl2";
|
||||
} { };
|
||||
patch = lib.doJailbreak (hsuper.callHackageDirect
|
||||
{
|
||||
pkg = "patch";
|
||||
ver = "0.0.3.2";
|
||||
sha256 = "10alg64zwx72lz42z9i5hfwdpk0r79zfli57l41akyznj4pwrvgh";
|
||||
} { }
|
||||
);
|
||||
reflex = lib.dontCheck (lib.doJailbreak hsuper.reflex);
|
||||
reflex-dom-core = lib.dontCheck hsuper.reflex-dom-core;
|
||||
chronos = lib.doJailbreak hsuper.chronos;
|
||||
hedgehog = lib.doJailbreak hsuper.hedgehog;
|
||||
}
|
@ -1,4 +1,40 @@
|
||||
{
|
||||
"brittany": {
|
||||
"branch": "c59655f10d5ad295c2481537fc8abf0a297d9d1c",
|
||||
"description": "haskell source code formatter",
|
||||
"homepage": "",
|
||||
"owner": "bubba",
|
||||
"repo": "brittany",
|
||||
"rev": "c59655f10d5ad295c2481537fc8abf0a297d9d1c",
|
||||
"sha256": "1rkk09f8750qykrmkqfqbh44dbx1p8aq1caznxxlw8zqfvx39cxl",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/bubba/brittany/archive/c59655f10d5ad295c2481537fc8abf0a297d9d1c.tar.gz",
|
||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
},
|
||||
"ghcide": {
|
||||
"branch": "9b8aaf9b06846571cc0b5d46680e686e4f9153a3",
|
||||
"description": "A library for building Haskell IDE tooling",
|
||||
"homepage": "",
|
||||
"owner": "haskell",
|
||||
"repo": "ghcide",
|
||||
"rev": "9b8aaf9b06846571cc0b5d46680e686e4f9153a3",
|
||||
"sha256": "0clwg8fgnsgwzl6rbni7p6xifl117f6h5hjsdyy0swnbjkxkqpaa",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/haskell/ghcide/archive/9b8aaf9b06846571cc0b5d46680e686e4f9153a3.tar.gz",
|
||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
},
|
||||
"haskell-language-server": {
|
||||
"branch": "master",
|
||||
"description": "Integration point for ghcide and haskell-ide-engine. One IDE to rule them all.",
|
||||
"homepage": "",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "b649b15b2d67a97d6a262eb65fee0002629b6dcb",
|
||||
"sha256": "1gxwkn3mqv20f061f9pg1y13k4ymsq6ji9gf475wdiikiql82z6a",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/haskell/haskell-language-server/archive/b649b15b2d67a97d6a262eb65fee0002629b6dcb.tar.gz",
|
||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
},
|
||||
"hspec-webdriver-clone": {
|
||||
"branch": "master",
|
||||
"description": "Clone of hspec-webdriver, as the original source is inaccesible",
|
||||
@ -59,18 +95,6 @@
|
||||
"url": "https://github.com/reflex-frp/reflex-platform/archive/8d421e9e06b0477cbc065346aaf596c9db6cc387.tar.gz",
|
||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
},
|
||||
"servant-reflex": {
|
||||
"branch": "master",
|
||||
"description": "Generate reflex client functions for querying a servant API",
|
||||
"homepage": null,
|
||||
"owner": "imalsogreg",
|
||||
"repo": "servant-reflex",
|
||||
"rev": "1109043c8437a375fc00bb48792e8dc377a84494",
|
||||
"sha256": "0issnp95rnji3v9qifr0brypxsvmjkzanfq5lscj68lynnjv37g0",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/imalsogreg/servant-reflex/archive/1109043c8437a375fc00bb48792e8dc377a84494.tar.gz",
|
||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
},
|
||||
"static-haskell-nix": {
|
||||
"branch": "master",
|
||||
"description": "easily build most Haskell programs into fully static Linux executables",
|
||||
|
@ -30,8 +30,7 @@ type StatusEndpoint c = c :> "status" :> Get '[JSON] CurrentDeploymentStatus
|
||||
type RestoreEndpoint c =
|
||||
c :> "restore" :> Patch '[JSON] CommandResponse
|
||||
|
||||
type PingEndpoint =
|
||||
"ping" :> GetNoContent '[PlainText] NoContent
|
||||
type PingEndpoint = "ping" :> GetNoContent
|
||||
type ProjectNameEndpoint =
|
||||
"project_name" :> Get '[JSON] ProjectName
|
||||
|
||||
|
@ -32,6 +32,7 @@ executable frontend
|
||||
, Page.Deployments
|
||||
, Page.Popup.EditDeployment
|
||||
, Page.Popup.NewDeployment
|
||||
, Servant.Reflex.Extra
|
||||
ghc-options: -Wall
|
||||
-Werror
|
||||
-Wno-missing-home-modules
|
||||
@ -57,6 +58,10 @@ executable frontend
|
||||
, RankNTypes
|
||||
, RecordWildCards
|
||||
, RecursiveDo
|
||||
, FlexibleInstances
|
||||
, MultiParamTypeClasses
|
||||
, TypeFamilies
|
||||
, UndecidableInstances
|
||||
-- other-extensions:
|
||||
build-depends: aeson
|
||||
, base >=4.12 && <4.13
|
||||
|
@ -21,6 +21,7 @@ import GHC.TypeLits
|
||||
import Reflex.Dom as R
|
||||
import Servant.API as S
|
||||
import Servant.Reflex as SR
|
||||
import Servant.Reflex.Extra ()
|
||||
|
||||
import Common.Types
|
||||
import Frontend.GHCJS
|
||||
|
17
octopod-frontend/src/Servant/Reflex/Extra.hs
Normal file
17
octopod-frontend/src/Servant/Reflex/Extra.hs
Normal file
@ -0,0 +1,17 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module Servant.Reflex.Extra () where
|
||||
|
||||
import qualified Data.Text.Encoding as E
|
||||
import Servant.Reflex
|
||||
import Servant.API
|
||||
import Reflex.Dom
|
||||
import Data.Proxy
|
||||
import Data.Functor.Identity
|
||||
|
||||
instance (SupportsServantReflex t m)
|
||||
=> HasClient t m (NoContentVerb 'GET) tag where
|
||||
type Client t m (NoContentVerb 'GET) tag = Event t tag -> m (Event t (ReqResult tag NoContent))
|
||||
clientWithRouteAndResultHandler Proxy _ _ req baseurl opts wrap' trigs =
|
||||
wrap' =<< fmap runIdentity <$> performRequestsNoBody method (constDyn $ Identity req) baseurl opts trigs
|
||||
where method = E.decodeUtf8 $ reflectMethod (Proxy :: Proxy 'GET)
|
@ -7,8 +7,12 @@ packages:
|
||||
- octopod-common
|
||||
|
||||
extra-deps:
|
||||
- deriving-aeson-0.2.2
|
||||
- deriving-aeson-0.2.3
|
||||
- servant-websockets-2.0.0
|
||||
- postgresql-error-codes-1.0.1
|
||||
- table-layout-0.9.0.1
|
||||
- data-default-instances-base-0.1.0.1
|
||||
- servant-0.18.2
|
||||
- servant-client-0.18.2
|
||||
- servant-client-core-0.18.2
|
||||
- servant-server-0.18.2
|
||||
|
Loading…
Reference in New Issue
Block a user