-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
129 lines (121 loc) · 4.17 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
{
description = "swarm";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
nixops-plugged.url = "/home/drsk/nixops-plugged";
};
outputs = { self, nixpkgs, flake-utils, nixops-plugged }@inputs:
let
domain = "swarmapp.org";
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config = { allowUnfree = true; allowBroken = true; };
overlays = [ self.overlay ];
};
getPatches = dir:
let files = builtins.attrNames (builtins.readDir dir);
in map (f: dir + ("/" + f)) files;
dartVersion = "2.15.0";
dartSourceBase = "https://storage.googleapis.com/dart-archive/channels";
dartForFlutter = pkgs.dart.override {
version = dartVersion;
sources = {
"${dartVersion}-x86_64-linux" = pkgs.fetchurl {
url = "${dartSourceBase}/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip";
sha256 = "sha256-U1V1OPmFeNZCdBxFy7yqAbAE0cxh9f2UqKQmreJu9YA=";
};
};
};
in
{
overlay = final: prev: rec {
myHaskellPackages = prev.haskellPackages.override {
overrides = hself: hsuper: {
"morpheus-graphql-subscriptions" =
hsuper.morpheus-graphql-subscriptions.overrideAttrs (p: {
buildInputs =
p.buildInputs ++ [ hsuper.monad-control hsuper.lifted-base ];
propagatedBuildInputs =
p.propagatedBuildInputs ++ [ hsuper.monad-control hsuper.lifted-base ];
patches =
[ ./nix/morpheus-graphql-subscriptions/monad_base_control.patch ];
});
"swarm" =
hsuper.callCabal2nix
"swarm"
(./.)
{ };
};
};
myFlutter = prev.pkgs.flutterPackages.mkFlutter rec {
dart = dartForFlutter;
version = "2.8.1";
pname = "flutter";
src = prev.pkgs.fetchurl {
url =
"https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_2.8.1-stable.tar.xz";
sha256 = "sha256-R+zcxUgcUaj7Mj8VT4BEyzCdVfqGFKl8ibx8COQ6vgE=";
};
patches = getPatches ./nix/flutter/patches;
};
site = pkgs.callPackage ./site/site.nix {pkgs=final;};
};
site = pkgs.site;
nixopsConfigurations.default = {
inherit nixpkgs;
network.description = domain;
network.enableRollback = true;
resources.sshKeyPairs.ssh-key = { };
defaults.nixpkgs.pkgs = pkgs;
defaults._module.args = {
inherit domain;
swarm = pkgs.myHaskellPackages.swarm;
};
backend = import ./deployment/backend.nix;
};
devShell.${system} = pkgs.myHaskellPackages.shellFor {
packages = p: [ p."swarm" ];
buildInputs = [
# haskell dev
pkgs.myHaskellPackages.cabal-install
pkgs.myHaskellPackages.hindent
pkgs.myHaskellPackages.ghci
pkgs.myHaskellPackages.haskell-language-server
# flutter
pkgs.myFlutter
pkgs.insomnia
pkgs.openjdk
pkgs.google-chrome-dev
pkgs.androidStudioPackages.dev
pkgs.wget
dartForFlutter
# firebase
pkgs.nodePackages.firebase-tools
# depolyment
nixops-plugged.defaultPackage.${system}
pkgs.nodePackages.node2nix
pkgs.git-crypt
# graphics/site
pkgs.nodejs
pkgs.inkscape
pkgs.montserrat
pkgs.imagemagick
# debug
pkgs.wireshark
# nix
pkgs.rnix-lsp
];
withHoogle = true;
shellHook = ''
export ANDROID_JAVA_HOME=${pkgs.jdk.home}
export ANDROID_SDK_ROOT=~/Android/Sdk/
export FLUTTER_SDK=${pkgs.myFlutter.unwrapped}
export CHROME_EXECUTABLE=${pkgs.google-chrome-dev}/bin/google-chrome-unstable
export _JAVA_AWT_WM_NONREPARENTING=1
'';
};
defaultPackage.${system} = pkgs.myHaskellPackages.swarm;
};
}