diff options
author | Ismaël Bouya <ismael.bouya@normalesup.org> | 2019-05-10 00:20:30 +0200 |
---|---|---|
committer | Ismaël Bouya <ismael.bouya@normalesup.org> | 2019-05-10 00:20:30 +0200 |
commit | 2977fd8fdfc55dd42837e3dd56c77d36097ef607 (patch) | |
tree | d245f84b567b8b7275440aeb8eb9690fe0a95f34 /nixops | |
parent | 598aaa373c359046ee08ab5e7576ebaa4f0331e0 (diff) | |
download | Nix-2977fd8fdfc55dd42837e3dd56c77d36097ef607.tar.gz Nix-2977fd8fdfc55dd42837e3dd56c77d36097ef607.tar.zst Nix-2977fd8fdfc55dd42837e3dd56c77d36097ef607.zip |
Move taskwarrior-web to pkgs
Diffstat (limited to 'nixops')
-rw-r--r-- | nixops/modules/task/Gemfile.lock | 139 | ||||
-rw-r--r-- | nixops/modules/task/default.nix | 75 | ||||
-rw-r--r-- | nixops/modules/task/fixes.patch | 56 | ||||
-rw-r--r-- | nixops/modules/task/gemset.nix | 567 | ||||
-rw-r--r-- | nixops/modules/task/taskwarrior-web.json | 15 | ||||
-rw-r--r-- | nixops/modules/task/taskwarrior-web.nix | 24 | ||||
-rw-r--r-- | nixops/modules/task/thin.patch | 23 |
7 files changed, 37 insertions, 862 deletions
diff --git a/nixops/modules/task/Gemfile.lock b/nixops/modules/task/Gemfile.lock deleted file mode 100644 index 1b2f5ba..0000000 --- a/nixops/modules/task/Gemfile.lock +++ /dev/null | |||
@@ -1,139 +0,0 @@ | |||
1 | PATH | ||
2 | remote: . | ||
3 | specs: | ||
4 | taskwarrior-web (1.1.12) | ||
5 | activesupport (~> 3) | ||
6 | json (~> 1.8) | ||
7 | parseconfig | ||
8 | rack-flash3 | ||
9 | rinku | ||
10 | sinatra | ||
11 | sinatra-simple-navigation | ||
12 | vegas | ||
13 | versionomy | ||
14 | |||
15 | GEM | ||
16 | remote: http://rubygems.org/ | ||
17 | specs: | ||
18 | activesupport (3.2.22.5) | ||
19 | i18n (~> 0.6, >= 0.6.4) | ||
20 | multi_json (~> 1.0) | ||
21 | blockenspiel (0.5.0) | ||
22 | coderay (1.1.2) | ||
23 | concurrent-ruby (1.1.4) | ||
24 | daemons (1.3.1) | ||
25 | diff-lcs (1.3) | ||
26 | docile (1.3.1) | ||
27 | eventmachine (1.2.7) | ||
28 | ffi (1.10.0) | ||
29 | formatador (0.2.5) | ||
30 | growl (1.0.3) | ||
31 | guard (2.15.0) | ||
32 | formatador (>= 0.2.4) | ||
33 | listen (>= 2.7, < 4.0) | ||
34 | lumberjack (>= 1.0.12, < 2.0) | ||
35 | nenv (~> 0.1) | ||
36 | notiffany (~> 0.0) | ||
37 | pry (>= 0.9.12) | ||
38 | shellany (~> 0.0) | ||
39 | thor (>= 0.18.1) | ||
40 | guard-bundler (2.2.1) | ||
41 | bundler (>= 1.3.0, < 3) | ||
42 | guard (~> 2.2) | ||
43 | guard-compat (~> 1.1) | ||
44 | guard-compat (1.2.1) | ||
45 | guard-rspec (4.7.3) | ||
46 | guard (~> 2.1) | ||
47 | guard-compat (~> 1.1) | ||
48 | rspec (>= 2.99.0, < 4.0) | ||
49 | i18n (0.9.5) | ||
50 | concurrent-ruby (~> 1.0) | ||
51 | json (1.8.6) | ||
52 | listen (3.1.5) | ||
53 | rb-fsevent (~> 0.9, >= 0.9.4) | ||
54 | rb-inotify (~> 0.9, >= 0.9.7) | ||
55 | ruby_dep (~> 1.2) | ||
56 | lumberjack (1.0.13) | ||
57 | method_source (0.9.2) | ||
58 | mini_portile2 (2.4.0) | ||
59 | multi_json (1.13.1) | ||
60 | mustermann (1.0.3) | ||
61 | nenv (0.3.0) | ||
62 | nokogiri (1.10.1) | ||
63 | mini_portile2 (~> 2.4.0) | ||
64 | notiffany (0.1.1) | ||
65 | nenv (~> 0.1) | ||
66 | shellany (~> 0.0) | ||
67 | parseconfig (1.0.8) | ||
68 | pry (0.12.2) | ||
69 | coderay (~> 1.1.0) | ||
70 | method_source (~> 0.9.0) | ||
71 | rack (2.0.6) | ||
72 | rack-flash3 (1.0.5) | ||
73 | rack | ||
74 | rack-protection (2.0.5) | ||
75 | rack | ||
76 | rack-test (1.1.0) | ||
77 | rack (>= 1.0, < 3) | ||
78 | rake (10.5.0) | ||
79 | rb-fsevent (0.10.3) | ||
80 | rb-inotify (0.10.0) | ||
81 | ffi (~> 1.0) | ||
82 | rinku (2.0.5) | ||
83 | rspec (2.99.0) | ||
84 | rspec-core (~> 2.99.0) | ||
85 | rspec-expectations (~> 2.99.0) | ||
86 | rspec-mocks (~> 2.99.0) | ||
87 | rspec-core (2.99.2) | ||
88 | rspec-expectations (2.99.2) | ||
89 | diff-lcs (>= 1.1.3, < 2.0) | ||
90 | rspec-html-matchers (0.5.0) | ||
91 | nokogiri (~> 1) | ||
92 | rspec (~> 2, >= 2.11.0) | ||
93 | rspec-mocks (2.99.4) | ||
94 | ruby_dep (1.5.0) | ||
95 | shellany (0.0.1) | ||
96 | simple-navigation (4.0.5) | ||
97 | activesupport (>= 2.3.2) | ||
98 | simplecov (0.16.1) | ||
99 | docile (~> 1.1) | ||
100 | json (>= 1.8, < 3) | ||
101 | simplecov-html (~> 0.10.0) | ||
102 | simplecov-html (0.10.2) | ||
103 | sinatra (2.0.5) | ||
104 | mustermann (~> 1.0) | ||
105 | rack (~> 2.0) | ||
106 | rack-protection (= 2.0.5) | ||
107 | tilt (~> 2.0) | ||
108 | sinatra-simple-navigation (4.1.0) | ||
109 | simple-navigation (~> 4.0) | ||
110 | sinatra (>= 1.0, < 3.0) | ||
111 | thin (1.7.2) | ||
112 | daemons (~> 1.0, >= 1.0.9) | ||
113 | eventmachine (~> 1.0, >= 1.0.4) | ||
114 | rack (>= 1, < 3) | ||
115 | thor (0.20.3) | ||
116 | tilt (2.0.9) | ||
117 | vegas (0.1.11) | ||
118 | rack (>= 1.0.0) | ||
119 | versionomy (0.5.0) | ||
120 | blockenspiel (~> 0.5) | ||
121 | |||
122 | PLATFORMS | ||
123 | ruby | ||
124 | |||
125 | DEPENDENCIES | ||
126 | growl | ||
127 | guard-bundler | ||
128 | guard-rspec | ||
129 | rack-test | ||
130 | rake (< 11) | ||
131 | rb-fsevent | ||
132 | rspec (~> 2) | ||
133 | rspec-html-matchers | ||
134 | simplecov | ||
135 | taskwarrior-web! | ||
136 | thin | ||
137 | |||
138 | BUNDLED WITH | ||
139 | 1.16.2 | ||
diff --git a/nixops/modules/task/default.nix b/nixops/modules/task/default.nix index 9671725..1f5ddd2 100644 --- a/nixops/modules/task/default.nix +++ b/nixops/modules/task/default.nix | |||
@@ -1,7 +1,7 @@ | |||
1 | { lib, pkgs, config, myconfig, mylibs, ... }: | 1 | { lib, pkgs, config, myconfig, mylibs, ... }: |
2 | let | 2 | let |
3 | cfg = config.services.myTasks; | 3 | cfg = config.services.myTasks; |
4 | vardir = config.services.taskserver.dataDir; | 4 | server_vardir = config.services.taskserver.dataDir; |
5 | fqdn = "task.immae.eu"; | 5 | fqdn = "task.immae.eu"; |
6 | user = config.services.taskserver.user; | 6 | user = config.services.taskserver.user; |
7 | env = myconfig.env.tools.task; | 7 | env = myconfig.env.tools.task; |
@@ -22,8 +22,8 @@ let | |||
22 | 22 | ||
23 | silent_certtool -p \ | 23 | silent_certtool -p \ |
24 | --bits 4096 \ | 24 | --bits 4096 \ |
25 | --outfile "${vardir}/userkeys/$user.key.pem" | 25 | --outfile "${server_vardir}/userkeys/$user.key.pem" |
26 | ${pkgs.gnused}/bin/sed -i -n -e '/^-----BEGIN RSA PRIVATE KEY-----$/,$p' "${vardir}/userkeys/$user.key.pem" | 26 | ${pkgs.gnused}/bin/sed -i -n -e '/^-----BEGIN RSA PRIVATE KEY-----$/,$p' "${server_vardir}/userkeys/$user.key.pem" |
27 | 27 | ||
28 | silent_certtool -c \ | 28 | silent_certtool -c \ |
29 | --template "${pkgs.writeText "taskserver-ca.template" '' | 29 | --template "${pkgs.writeText "taskserver-ca.template" '' |
@@ -32,18 +32,17 @@ let | |||
32 | signing_key | 32 | signing_key |
33 | expiration_days = 3650 | 33 | expiration_days = 3650 |
34 | ''}" \ | 34 | ''}" \ |
35 | --load-ca-certificate "${vardir}/keys/ca.cert" \ | 35 | --load-ca-certificate "${server_vardir}/keys/ca.cert" \ |
36 | --load-ca-privkey "${vardir}/keys/ca.key" \ | 36 | --load-ca-privkey "${server_vardir}/keys/ca.key" \ |
37 | --load-privkey "${vardir}/userkeys/$user.key.pem" \ | 37 | --load-privkey "${server_vardir}/userkeys/$user.key.pem" \ |
38 | --outfile "${vardir}/userkeys/$user.cert.pem" | 38 | --outfile "${server_vardir}/userkeys/$user.cert.pem" |
39 | EOF | 39 | EOF |
40 | chmod a+x $out/bin/taskserver-user-certs | 40 | chmod a+x $out/bin/taskserver-user-certs |
41 | patchShebangs $out/bin/taskserver-user-certs | 41 | patchShebangs $out/bin/taskserver-user-certs |
42 | ''; | 42 | ''; |
43 | taskwarrior-web = pkgs.callPackage ./taskwarrior-web.nix { | 43 | taskwarrior-web = pkgs.webapps.taskwarrior-web; |
44 | inherit (mylibs) fetchedGithub; | 44 | socketsDir = "/run/taskwarrior-web"; |
45 | inherit env; | 45 | varDir = "/var/lib/taskwarrior-web"; |
46 | }; | ||
47 | taskwebPages = let | 46 | taskwebPages = let |
48 | uidPages = lib.attrsets.zipAttrs ( | 47 | uidPages = lib.attrsets.zipAttrs ( |
49 | lib.lists.flatten | 48 | lib.lists.flatten |
@@ -94,7 +93,7 @@ in { | |||
94 | permissions = "0400"; | 93 | permissions = "0400"; |
95 | text = '' | 94 | text = '' |
96 | SetEnv TASKD_HOST "${fqdn}:${toString config.services.taskserver.listenPort}" | 95 | SetEnv TASKD_HOST "${fqdn}:${toString config.services.taskserver.listenPort}" |
97 | SetEnv TASKD_VARDIR "${vardir}" | 96 | SetEnv TASKD_VARDIR "${server_vardir}" |
98 | SetEnv TASKD_LDAP_HOST "ldaps://${env.ldap.host}" | 97 | SetEnv TASKD_LDAP_HOST "ldaps://${env.ldap.host}" |
99 | SetEnv TASKD_LDAP_DN "${env.ldap.dn}" | 98 | SetEnv TASKD_LDAP_DN "${env.ldap.dn}" |
100 | SetEnv TASKD_LDAP_PASSWORD "${env.ldap.password}" | 99 | SetEnv TASKD_LDAP_PASSWORD "${env.ldap.password}" |
@@ -121,8 +120,8 @@ in { | |||
121 | '' | 120 | '' |
122 | '' | 121 | '' |
123 | <Macro Taskwarrior %{folderName}> | 122 | <Macro Taskwarrior %{folderName}> |
124 | ProxyPass "unix://${taskwarrior-web.socketsDir}/%{folderName}.sock|http://localhost-%{folderName}/" | 123 | ProxyPass "unix://${socketsDir}/%{folderName}.sock|http://localhost-%{folderName}/" |
125 | ProxyPassReverse "unix://${taskwarrior-web.socketsDir}/%{folderName}.sock|http://localhost-%{folderName}/" | 124 | ProxyPassReverse "unix://${socketsDir}/%{folderName}.sock|http://localhost-%{folderName}/" |
126 | ProxyPassReverse http://${fqdn}/ | 125 | ProxyPassReverse http://${fqdn}/ |
127 | 126 | ||
128 | SetOutputFilter Sed | 127 | SetOutputFilter Sed |
@@ -177,7 +176,7 @@ in { | |||
177 | ; Needed to avoid clashes in browser cookies (same domain) | 176 | ; Needed to avoid clashes in browser cookies (same domain) |
178 | env[PATH] = "/etc/profiles/per-user/${user}/bin" | 177 | env[PATH] = "/etc/profiles/per-user/${user}/bin" |
179 | php_value[session.name] = TaskPHPSESSID | 178 | php_value[session.name] = TaskPHPSESSID |
180 | php_admin_value[open_basedir] = "${./www}:/tmp:${vardir}:/etc/profiles/per-user/${user}/bin/" | 179 | php_admin_value[open_basedir] = "${./www}:/tmp:${server_vardir}:/etc/profiles/per-user/${user}/bin/" |
181 | ''; | 180 | ''; |
182 | }; | 181 | }; |
183 | 182 | ||
@@ -199,11 +198,11 @@ in { | |||
199 | system.activationScripts.taskserver = { | 198 | system.activationScripts.taskserver = { |
200 | deps = [ "users" ]; | 199 | deps = [ "users" ]; |
201 | text = '' | 200 | text = '' |
202 | install -m 0750 -o ${user} -g ${group} -d ${vardir} | 201 | install -m 0750 -o ${user} -g ${group} -d ${server_vardir} |
203 | install -m 0750 -o ${user} -g ${group} -d ${vardir}/userkeys | 202 | install -m 0750 -o ${user} -g ${group} -d ${server_vardir}/userkeys |
204 | install -m 0750 -o ${user} -g ${group} -d ${vardir}/keys | 203 | install -m 0750 -o ${user} -g ${group} -d ${server_vardir}/keys |
205 | 204 | ||
206 | if [ ! -e "${vardir}/keys/ca.key" ]; then | 205 | if [ ! -e "${server_vardir}/keys/ca.key" ]; then |
207 | silent_certtool() { | 206 | silent_certtool() { |
208 | if ! output="$("${pkgs.gnutls.bin}/bin/certtool" "$@" 2>&1)"; then | 207 | if ! output="$("${pkgs.gnutls.bin}/bin/certtool" "$@" 2>&1)"; then |
209 | echo "GNUTLS certtool invocation failed with output:" >&2 | 208 | echo "GNUTLS certtool invocation failed with output:" >&2 |
@@ -213,7 +212,7 @@ in { | |||
213 | 212 | ||
214 | silent_certtool -p \ | 213 | silent_certtool -p \ |
215 | --bits 4096 \ | 214 | --bits 4096 \ |
216 | --outfile "${vardir}/keys/ca.key" | 215 | --outfile "${server_vardir}/keys/ca.key" |
217 | 216 | ||
218 | silent_certtool -s \ | 217 | silent_certtool -s \ |
219 | --template "${pkgs.writeText "taskserver-ca.template" '' | 218 | --template "${pkgs.writeText "taskserver-ca.template" '' |
@@ -222,11 +221,11 @@ in { | |||
222 | cert_signing_key | 221 | cert_signing_key |
223 | ca | 222 | ca |
224 | ''}" \ | 223 | ''}" \ |
225 | --load-privkey "${vardir}/keys/ca.key" \ | 224 | --load-privkey "${server_vardir}/keys/ca.key" \ |
226 | --outfile "${vardir}/keys/ca.cert" | 225 | --outfile "${server_vardir}/keys/ca.cert" |
227 | 226 | ||
228 | chown :${group} "${vardir}/keys/ca.key" | 227 | chown :${group} "${server_vardir}/keys/ca.key" |
229 | chmod g+r "${vardir}/keys/ca.key" | 228 | chmod g+r "${server_vardir}/keys/ca.key" |
230 | fi | 229 | fi |
231 | ''; | 230 | ''; |
232 | }; | 231 | }; |
@@ -236,7 +235,7 @@ in { | |||
236 | allowedClientIDs = [ "^task [2-9]" "^Mirakel [1-9]" ]; | 235 | allowedClientIDs = [ "^task [2-9]" "^Mirakel [1-9]" ]; |
237 | inherit fqdn; | 236 | inherit fqdn; |
238 | listenHost = "::"; | 237 | listenHost = "::"; |
239 | pki.manual.ca.cert = "${vardir}/keys/ca.cert"; | 238 | pki.manual.ca.cert = "${server_vardir}/keys/ca.cert"; |
240 | pki.manual.server.cert = "/var/lib/acme/task/fullchain.pem"; | 239 | pki.manual.server.cert = "/var/lib/acme/task/fullchain.pem"; |
241 | pki.manual.server.crl = "/var/lib/acme/task/invalid.crl"; | 240 | pki.manual.server.crl = "/var/lib/acme/task/invalid.crl"; |
242 | pki.manual.server.key = "/var/lib/acme/task/key.pem"; | 241 | pki.manual.server.key = "/var/lib/acme/task/key.pem"; |
@@ -246,15 +245,15 @@ in { | |||
246 | system.activationScripts.taskwarrior-web = { | 245 | system.activationScripts.taskwarrior-web = { |
247 | deps = [ "users" ]; | 246 | deps = [ "users" ]; |
248 | text = '' | 247 | text = '' |
249 | install -m 0755 -o ${user} -g ${group} -d ${taskwarrior-web.socketsDir} | 248 | install -m 0755 -o ${user} -g ${group} -d ${socketsDir} |
250 | install -m 0750 -o ${user} -g ${group} -d ${taskwarrior-web.varDir} | 249 | install -m 0750 -o ${user} -g ${group} -d ${varDir} |
251 | ${builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList | 250 | ${builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList |
252 | (k: v: "install -m 0750 -o ${user} -g ${group} -d ${taskwarrior-web.varDir}/${k}") | 251 | (k: v: "install -m 0750 -o ${user} -g ${group} -d ${varDir}/${k}") |
253 | env.taskwarrior-web | 252 | env.taskwarrior-web |
254 | )} | 253 | )} |
255 | if [ ! -f ${vardir}/userkeys/taskwarrior-web.cert.pem ]; then | 254 | if [ ! -f ${server_vardir}/userkeys/taskwarrior-web.cert.pem ]; then |
256 | ${taskserver-user-certs}/bin/taskserver-user-certs taskwarrior-web | 255 | ${taskserver-user-certs}/bin/taskserver-user-certs taskwarrior-web |
257 | chown taskd:taskd ${vardir}/userkeys/taskwarrior-web.cert.pem ${vardir}/userkeys/taskwarrior-web.key.pem | 256 | chown taskd:taskd ${server_vardir}/userkeys/taskwarrior-web.cert.pem ${server_vardir}/userkeys/taskwarrior-web.key.pem |
258 | fi | 257 | fi |
259 | ''; | 258 | ''; |
260 | }; | 259 | }; |
@@ -264,9 +263,9 @@ in { | |||
264 | credentials = "${userConfig.org}/${name}/${userConfig.key}"; | 263 | credentials = "${userConfig.org}/${name}/${userConfig.key}"; |
265 | dateFormat = userConfig.date; | 264 | dateFormat = userConfig.date; |
266 | taskrc = pkgs.writeText "taskrc" '' | 265 | taskrc = pkgs.writeText "taskrc" '' |
267 | data.location=${taskwarrior-web.varDir}/${name} | 266 | data.location=${varDir}/${name} |
268 | taskd.certificate=${vardir}/userkeys/taskwarrior-web.cert.pem | 267 | taskd.certificate=${server_vardir}/userkeys/taskwarrior-web.cert.pem |
269 | taskd.key=${vardir}/userkeys/taskwarrior-web.key.pem | 268 | taskd.key=${server_vardir}/userkeys/taskwarrior-web.key.pem |
270 | # IdenTrust DST Root CA X3 | 269 | # IdenTrust DST Root CA X3 |
271 | # obtained here: https://letsencrypt.org/fr/certificates/ | 270 | # obtained here: https://letsencrypt.org/fr/certificates/ |
272 | taskd.ca=${pkgs.writeText "ca.cert" '' | 271 | taskd.ca=${pkgs.writeText "ca.cert" '' |
@@ -306,7 +305,7 @@ in { | |||
306 | environment.LC_ALL = "fr_FR.UTF-8"; | 305 | environment.LC_ALL = "fr_FR.UTF-8"; |
307 | 306 | ||
308 | script = '' | 307 | script = '' |
309 | exec ${taskwarrior-web.gems}/${taskwarrior-web.gems.ruby.gemPath}/bin/bundle exec thin start -R config.ru -S ${taskwarrior-web.socketsDir}/${name}.sock | 308 | exec ${taskwarrior-web.gems}/${taskwarrior-web.gems.ruby.gemPath}/bin/bundle exec thin start -R config.ru -S ${socketsDir}/${name}.sock |
310 | ''; | 309 | ''; |
311 | 310 | ||
312 | serviceConfig = { | 311 | serviceConfig = { |
@@ -315,14 +314,14 @@ in { | |||
315 | Restart = "always"; | 314 | Restart = "always"; |
316 | TimeoutSec = 60; | 315 | TimeoutSec = 60; |
317 | Type = "simple"; | 316 | Type = "simple"; |
318 | WorkingDirectory = taskwarrior-web.rubyRoot; | 317 | WorkingDirectory = taskwarrior-web; |
319 | }; | 318 | }; |
320 | 319 | ||
321 | unitConfig.RequiresMountsFor = taskwarrior-web.varDir; | 320 | unitConfig.RequiresMountsFor = varDir; |
322 | }) env.taskwarrior-web) // { | 321 | }) env.taskwarrior-web) // { |
323 | taskserver-ca.postStart = '' | 322 | taskserver-ca.postStart = '' |
324 | chown :${group} "${vardir}/keys/ca.key" | 323 | chown :${group} "${server_vardir}/keys/ca.key" |
325 | chmod g+r "${vardir}/keys/ca.key" | 324 | chmod g+r "${server_vardir}/keys/ca.key" |
326 | ''; | 325 | ''; |
327 | }; | 326 | }; |
328 | 327 | ||
diff --git a/nixops/modules/task/fixes.patch b/nixops/modules/task/fixes.patch deleted file mode 100644 index 851f9f0..0000000 --- a/nixops/modules/task/fixes.patch +++ /dev/null | |||
@@ -1,56 +0,0 @@ | |||
1 | diff --git a/lib/taskwarrior-web/helpers.rb b/lib/taskwarrior-web/helpers.rb | ||
2 | index 212aed7..94c57df 100644 | ||
3 | --- a/lib/taskwarrior-web/helpers.rb | ||
4 | +++ b/lib/taskwarrior-web/helpers.rb | ||
5 | @@ -1,6 +1,8 @@ | ||
6 | require 'active_support/core_ext/date/calculations' | ||
7 | |||
8 | module TaskwarriorWeb::App::Helpers | ||
9 | + include ERB::Util | ||
10 | + | ||
11 | def format_date(timestamp) | ||
12 | format = TaskwarriorWeb::Config.dateformat || '%-m/%-d/%Y' | ||
13 | Time.parse(timestamp).localtime.strftime(format) | ||
14 | diff --git a/lib/taskwarrior-web/services/builder/base.rb b/lib/taskwarrior-web/services/builder/base.rb | ||
15 | index 58d246e..8f716ac 100644 | ||
16 | --- a/lib/taskwarrior-web/services/builder/base.rb | ||
17 | +++ b/lib/taskwarrior-web/services/builder/base.rb | ||
18 | @@ -10,7 +10,7 @@ module TaskwarriorWeb::CommandBuilder::Base | ||
19 | :complete => ':id done', | ||
20 | :annotate => ':id annotate', | ||
21 | :denotate => ':id denotate', | ||
22 | - :projects => '_projects', | ||
23 | + :projects => '_unique project', | ||
24 | :tags => '_tags', | ||
25 | :sync => 'sync' | ||
26 | } | ||
27 | diff --git a/lib/taskwarrior-web/views/tasks/_form.erb b/lib/taskwarrior-web/views/tasks/_form.erb | ||
28 | index 789e7a1..fa08698 100644 | ||
29 | --- a/lib/taskwarrior-web/views/tasks/_form.erb | ||
30 | +++ b/lib/taskwarrior-web/views/tasks/_form.erb | ||
31 | @@ -1,14 +1,14 @@ | ||
32 | <div class="control-group"> | ||
33 | <label for="task-description" class="control-label">Description</label> | ||
34 | <div class="controls"> | ||
35 | - <input type="text" required="required" id="task-description" name="task[description]" value="<%= @task.description unless @task.nil? %>" /> | ||
36 | + <input type="text" required="required" id="task-description" name="task[description]" value="<%=h @task.description unless @task.nil? %>" /> | ||
37 | </div> | ||
38 | </div> | ||
39 | |||
40 | <div class="control-group"> | ||
41 | <label for="task-project" class="control-label">Project</label> | ||
42 | <div class="controls"> | ||
43 | - <input type="text" id="task-project" name="task[project]" value="<%= @task.project unless @task.nil? %>" autocomplete="off" /> | ||
44 | + <input type="text" id="task-project" name="task[project]" value="<%=h @task.project unless @task.nil? %>" autocomplete="off" /> | ||
45 | </div> | ||
46 | </div> | ||
47 | |||
48 | @@ -45,7 +45,7 @@ | ||
49 | <div class="control-group"> | ||
50 | <label for="task-tags" class="control-label">Tags</label> | ||
51 | <div class="controls"> | ||
52 | - <input type="text" id="task-tags" name="task[tags]" value="<%= @task.tags.join(', ') unless @task.nil? %>" autocomplete="off" /> | ||
53 | + <input type="text" id="task-tags" name="task[tags]" value="<%=h @task.tags.join(', ') unless @task.nil? %>" autocomplete="off" /> | ||
54 | <span class="help-block">Enter tags separated by commas or spaces (e.g. <em>each, word will,be a tag</em>)</span> | ||
55 | </div> | ||
56 | </div> | ||
diff --git a/nixops/modules/task/gemset.nix b/nixops/modules/task/gemset.nix deleted file mode 100644 index 35d13c6..0000000 --- a/nixops/modules/task/gemset.nix +++ /dev/null | |||
@@ -1,567 +0,0 @@ | |||
1 | { | ||
2 | activesupport = { | ||
3 | dependencies = ["i18n" "multi_json"]; | ||
4 | groups = ["default"]; | ||
5 | platforms = []; | ||
6 | source = { | ||
7 | remotes = ["http://rubygems.org"]; | ||
8 | sha256 = "0fyxqkkws4px4lzkbcqzp0bwai7nn7jk4p0bgfy0dny9cwm0qc9r"; | ||
9 | type = "gem"; | ||
10 | }; | ||
11 | version = "3.2.22.5"; | ||
12 | }; | ||
13 | blockenspiel = { | ||
14 | groups = ["default"]; | ||
15 | platforms = []; | ||
16 | source = { | ||
17 | remotes = ["http://rubygems.org"]; | ||
18 | sha256 = "1h701s45n5qprvcpc7fnr45n88p56x07pznkxqnhz1dbdbhb7xx8"; | ||
19 | type = "gem"; | ||
20 | }; | ||
21 | version = "0.5.0"; | ||
22 | }; | ||
23 | coderay = { | ||
24 | groups = ["default" "local"]; | ||
25 | platforms = []; | ||
26 | source = { | ||
27 | remotes = ["http://rubygems.org"]; | ||
28 | sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"; | ||
29 | type = "gem"; | ||
30 | }; | ||
31 | version = "1.1.2"; | ||
32 | }; | ||
33 | concurrent-ruby = { | ||
34 | groups = ["default"]; | ||
35 | platforms = []; | ||
36 | source = { | ||
37 | remotes = ["http://rubygems.org"]; | ||
38 | sha256 = "1ixcx9pfissxrga53jbdpza85qd5f6b5nq1sfqa9rnfq82qnlbp1"; | ||
39 | type = "gem"; | ||
40 | }; | ||
41 | version = "1.1.4"; | ||
42 | }; | ||
43 | daemons = { | ||
44 | groups = ["default"]; | ||
45 | platforms = []; | ||
46 | source = { | ||
47 | remotes = ["http://rubygems.org"]; | ||
48 | sha256 = "0l5gai3vd4g7aqff0k1mp41j9zcsvm2rbwmqn115a325k9r7pf4w"; | ||
49 | type = "gem"; | ||
50 | }; | ||
51 | version = "1.3.1"; | ||
52 | }; | ||
53 | diff-lcs = { | ||
54 | groups = ["default" "development" "local"]; | ||
55 | platforms = []; | ||
56 | source = { | ||
57 | remotes = ["http://rubygems.org"]; | ||
58 | sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"; | ||
59 | type = "gem"; | ||
60 | }; | ||
61 | version = "1.3"; | ||
62 | }; | ||
63 | docile = { | ||
64 | groups = ["default" "local"]; | ||
65 | platforms = []; | ||
66 | source = { | ||
67 | remotes = ["http://rubygems.org"]; | ||
68 | sha256 = "04d2izkna3ahfn6fwq4xrcafa715d3bbqczxm16fq40fqy87xn17"; | ||
69 | type = "gem"; | ||
70 | }; | ||
71 | version = "1.3.1"; | ||
72 | }; | ||
73 | eventmachine = { | ||
74 | groups = ["default"]; | ||
75 | platforms = []; | ||
76 | source = { | ||
77 | remotes = ["http://rubygems.org"]; | ||
78 | sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"; | ||
79 | type = "gem"; | ||
80 | }; | ||
81 | version = "1.2.7"; | ||
82 | }; | ||
83 | ffi = { | ||
84 | groups = ["default" "local"]; | ||
85 | platforms = []; | ||
86 | source = { | ||
87 | remotes = ["http://rubygems.org"]; | ||
88 | sha256 = "0j8pzj8raxbir5w5k6s7a042sb5k02pg0f8s4na1r5lan901j00p"; | ||
89 | type = "gem"; | ||
90 | }; | ||
91 | version = "1.10.0"; | ||
92 | }; | ||
93 | formatador = { | ||
94 | groups = ["default" "local"]; | ||
95 | platforms = []; | ||
96 | source = { | ||
97 | remotes = ["http://rubygems.org"]; | ||
98 | sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"; | ||
99 | type = "gem"; | ||
100 | }; | ||
101 | version = "0.2.5"; | ||
102 | }; | ||
103 | growl = { | ||
104 | groups = ["local"]; | ||
105 | platforms = []; | ||
106 | source = { | ||
107 | remotes = ["http://rubygems.org"]; | ||
108 | sha256 = "0s0y7maljnalpbv2q1j5j5hvb4wcc31y9af0n7x1q2l0fzxgc9n9"; | ||
109 | type = "gem"; | ||
110 | }; | ||
111 | version = "1.0.3"; | ||
112 | }; | ||
113 | guard = { | ||
114 | dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"]; | ||
115 | groups = ["default" "local"]; | ||
116 | platforms = []; | ||
117 | source = { | ||
118 | remotes = ["http://rubygems.org"]; | ||
119 | sha256 = "0h84ja6qvii3hx86w9l4vjpbgl4m8ma8fbawwp7s8l791cgkdcmk"; | ||
120 | type = "gem"; | ||
121 | }; | ||
122 | version = "2.15.0"; | ||
123 | }; | ||
124 | guard-bundler = { | ||
125 | dependencies = ["guard" "guard-compat"]; | ||
126 | groups = ["local"]; | ||
127 | platforms = []; | ||
128 | source = { | ||
129 | remotes = ["http://rubygems.org"]; | ||
130 | sha256 = "0lji8f8w7y4prmpr2lqmlljvkqgkgnlsiwqgwvq7b1y3sxlsvy62"; | ||
131 | type = "gem"; | ||
132 | }; | ||
133 | version = "2.2.1"; | ||
134 | }; | ||
135 | guard-compat = { | ||
136 | groups = ["default" "local"]; | ||
137 | platforms = []; | ||
138 | source = { | ||
139 | remotes = ["http://rubygems.org"]; | ||
140 | sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis"; | ||
141 | type = "gem"; | ||
142 | }; | ||
143 | version = "1.2.1"; | ||
144 | }; | ||
145 | guard-rspec = { | ||
146 | dependencies = ["guard" "guard-compat" "rspec"]; | ||
147 | groups = ["local"]; | ||
148 | platforms = []; | ||
149 | source = { | ||
150 | remotes = ["http://rubygems.org"]; | ||
151 | sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4"; | ||
152 | type = "gem"; | ||
153 | }; | ||
154 | version = "4.7.3"; | ||
155 | }; | ||
156 | i18n = { | ||
157 | dependencies = ["concurrent-ruby"]; | ||
158 | groups = ["default"]; | ||
159 | platforms = []; | ||
160 | source = { | ||
161 | remotes = ["http://rubygems.org"]; | ||
162 | sha256 = "038qvz7kd3cfxk8bvagqhakx68pfbnmghpdkx7573wbf0maqp9a3"; | ||
163 | type = "gem"; | ||
164 | }; | ||
165 | version = "0.9.5"; | ||
166 | }; | ||
167 | json = { | ||
168 | groups = ["default" "local"]; | ||
169 | platforms = []; | ||
170 | source = { | ||
171 | remotes = ["http://rubygems.org"]; | ||
172 | sha256 = "0qmj7fypgb9vag723w1a49qihxrcf5shzars106ynw2zk352gbv5"; | ||
173 | type = "gem"; | ||
174 | }; | ||
175 | version = "1.8.6"; | ||
176 | }; | ||
177 | listen = { | ||
178 | dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"]; | ||
179 | groups = ["default" "local"]; | ||
180 | platforms = []; | ||
181 | source = { | ||
182 | remotes = ["http://rubygems.org"]; | ||
183 | sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"; | ||
184 | type = "gem"; | ||
185 | }; | ||
186 | version = "3.1.5"; | ||
187 | }; | ||
188 | lumberjack = { | ||
189 | groups = ["default" "local"]; | ||
190 | platforms = []; | ||
191 | source = { | ||
192 | remotes = ["http://rubygems.org"]; | ||
193 | sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"; | ||
194 | type = "gem"; | ||
195 | }; | ||
196 | version = "1.0.13"; | ||
197 | }; | ||
198 | method_source = { | ||
199 | groups = ["default" "local"]; | ||
200 | platforms = []; | ||
201 | source = { | ||
202 | remotes = ["http://rubygems.org"]; | ||
203 | sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq"; | ||
204 | type = "gem"; | ||
205 | }; | ||
206 | version = "0.9.2"; | ||
207 | }; | ||
208 | mini_portile2 = { | ||
209 | groups = ["default" "development"]; | ||
210 | platforms = []; | ||
211 | source = { | ||
212 | remotes = ["http://rubygems.org"]; | ||
213 | sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"; | ||
214 | type = "gem"; | ||
215 | }; | ||
216 | version = "2.4.0"; | ||
217 | }; | ||
218 | multi_json = { | ||
219 | groups = ["default"]; | ||
220 | platforms = []; | ||
221 | source = { | ||
222 | remotes = ["http://rubygems.org"]; | ||
223 | sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv"; | ||
224 | type = "gem"; | ||
225 | }; | ||
226 | version = "1.13.1"; | ||
227 | }; | ||
228 | mustermann = { | ||
229 | groups = ["default"]; | ||
230 | platforms = []; | ||
231 | source = { | ||
232 | remotes = ["http://rubygems.org"]; | ||
233 | sha256 = "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"; | ||
234 | type = "gem"; | ||
235 | }; | ||
236 | version = "1.0.3"; | ||
237 | }; | ||
238 | nenv = { | ||
239 | groups = ["default" "local"]; | ||
240 | platforms = []; | ||
241 | source = { | ||
242 | remotes = ["http://rubygems.org"]; | ||
243 | sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"; | ||
244 | type = "gem"; | ||
245 | }; | ||
246 | version = "0.3.0"; | ||
247 | }; | ||
248 | nokogiri = { | ||
249 | dependencies = ["mini_portile2"]; | ||
250 | groups = ["default" "development"]; | ||
251 | platforms = []; | ||
252 | source = { | ||
253 | remotes = ["http://rubygems.org"]; | ||
254 | sha256 = "09zll7c6j7xr6wyvh5mm5ncj6pkryp70ybcsxdbw1nyphx5dh184"; | ||
255 | type = "gem"; | ||
256 | }; | ||
257 | version = "1.10.1"; | ||
258 | }; | ||
259 | notiffany = { | ||
260 | dependencies = ["nenv" "shellany"]; | ||
261 | groups = ["default" "local"]; | ||
262 | platforms = []; | ||
263 | source = { | ||
264 | remotes = ["http://rubygems.org"]; | ||
265 | sha256 = "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx"; | ||
266 | type = "gem"; | ||
267 | }; | ||
268 | version = "0.1.1"; | ||
269 | }; | ||
270 | parseconfig = { | ||
271 | groups = ["default"]; | ||
272 | platforms = []; | ||
273 | source = { | ||
274 | remotes = ["http://rubygems.org"]; | ||
275 | sha256 = "0br2g9k6zc4ygah52aa8cwvpnnkszia29bnvnr8bhpk3rdzi2vmq"; | ||
276 | type = "gem"; | ||
277 | }; | ||
278 | version = "1.0.8"; | ||
279 | }; | ||
280 | pry = { | ||
281 | dependencies = ["coderay" "method_source"]; | ||
282 | groups = ["default" "local"]; | ||
283 | platforms = []; | ||
284 | source = { | ||
285 | remotes = ["http://rubygems.org"]; | ||
286 | sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69"; | ||
287 | type = "gem"; | ||
288 | }; | ||
289 | version = "0.12.2"; | ||
290 | }; | ||
291 | rack = { | ||
292 | groups = ["default" "development"]; | ||
293 | platforms = []; | ||
294 | source = { | ||
295 | remotes = ["http://rubygems.org"]; | ||
296 | sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm"; | ||
297 | type = "gem"; | ||
298 | }; | ||
299 | version = "2.0.6"; | ||
300 | }; | ||
301 | rack-flash3 = { | ||
302 | dependencies = ["rack"]; | ||
303 | groups = ["default"]; | ||
304 | platforms = []; | ||
305 | source = { | ||
306 | remotes = ["http://rubygems.org"]; | ||
307 | sha256 = "0rim9afrns6s8zc4apiymncysyvijpdg18k57kdpz66p55jf4mqz"; | ||
308 | type = "gem"; | ||
309 | }; | ||
310 | version = "1.0.5"; | ||
311 | }; | ||
312 | rack-protection = { | ||
313 | dependencies = ["rack"]; | ||
314 | groups = ["default"]; | ||
315 | platforms = []; | ||
316 | source = { | ||
317 | remotes = ["http://rubygems.org"]; | ||
318 | sha256 = "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk"; | ||
319 | type = "gem"; | ||
320 | }; | ||
321 | version = "2.0.5"; | ||
322 | }; | ||
323 | rack-test = { | ||
324 | dependencies = ["rack"]; | ||
325 | groups = ["development"]; | ||
326 | platforms = []; | ||
327 | source = { | ||
328 | remotes = ["http://rubygems.org"]; | ||
329 | sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m"; | ||
330 | type = "gem"; | ||
331 | }; | ||
332 | version = "1.1.0"; | ||
333 | }; | ||
334 | rake = { | ||
335 | groups = ["development"]; | ||
336 | platforms = []; | ||
337 | source = { | ||
338 | remotes = ["http://rubygems.org"]; | ||
339 | sha256 = "0jcabbgnjc788chx31sihc5pgbqnlc1c75wakmqlbjdm8jns2m9b"; | ||
340 | type = "gem"; | ||
341 | }; | ||
342 | version = "10.5.0"; | ||
343 | }; | ||
344 | rb-fsevent = { | ||
345 | groups = ["local"]; | ||
346 | platforms = []; | ||
347 | source = { | ||
348 | remotes = ["http://rubygems.org"]; | ||
349 | sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"; | ||
350 | type = "gem"; | ||
351 | }; | ||
352 | version = "0.10.3"; | ||
353 | }; | ||
354 | rb-inotify = { | ||
355 | dependencies = ["ffi"]; | ||
356 | groups = ["default" "local"]; | ||
357 | platforms = []; | ||
358 | source = { | ||
359 | remotes = ["http://rubygems.org"]; | ||
360 | sha256 = "1fs7hxm9g6ywv2yih83b879klhc4fs8i0p9166z795qmd77dk0a4"; | ||
361 | type = "gem"; | ||
362 | }; | ||
363 | version = "0.10.0"; | ||
364 | }; | ||
365 | rinku = { | ||
366 | groups = ["default"]; | ||
367 | platforms = []; | ||
368 | source = { | ||
369 | remotes = ["http://rubygems.org"]; | ||
370 | sha256 = "1smkk299v18brk98gqbdnqrfwm3143kikl30scidqb5j3pzlbz91"; | ||
371 | type = "gem"; | ||
372 | }; | ||
373 | version = "2.0.5"; | ||
374 | }; | ||
375 | rspec = { | ||
376 | dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"]; | ||
377 | groups = ["development" "local"]; | ||
378 | platforms = []; | ||
379 | source = { | ||
380 | remotes = ["http://rubygems.org"]; | ||
381 | sha256 = "14q3hxvngk4ks8h41yw50d5fqbf2dhzwi9rz5ccxvh5a53ak2as3"; | ||
382 | type = "gem"; | ||
383 | }; | ||
384 | version = "2.99.0"; | ||
385 | }; | ||
386 | rspec-core = { | ||
387 | groups = ["default" "development" "local"]; | ||
388 | platforms = []; | ||
389 | source = { | ||
390 | remotes = ["http://rubygems.org"]; | ||
391 | sha256 = "1wwz21lcz2lwd2jcp2pvq7n1677v23acf7wxsyszp8msb47mw38i"; | ||
392 | type = "gem"; | ||
393 | }; | ||
394 | version = "2.99.2"; | ||
395 | }; | ||
396 | rspec-expectations = { | ||
397 | dependencies = ["diff-lcs"]; | ||
398 | groups = ["default" "development" "local"]; | ||
399 | platforms = []; | ||
400 | source = { | ||
401 | remotes = ["http://rubygems.org"]; | ||
402 | sha256 = "11a5pph3anp4xr591dnlcy8xfkdf54qi2lvg4ykpqhxk37si1py3"; | ||
403 | type = "gem"; | ||
404 | }; | ||
405 | version = "2.99.2"; | ||
406 | }; | ||
407 | rspec-html-matchers = { | ||
408 | dependencies = ["nokogiri" "rspec"]; | ||
409 | groups = ["development"]; | ||
410 | platforms = []; | ||
411 | source = { | ||
412 | remotes = ["http://rubygems.org"]; | ||
413 | sha256 = "148grzvk0cvh24avhl0shjzz7ldhj138svf48pc5h1fdsb0pnqcv"; | ||
414 | type = "gem"; | ||
415 | }; | ||
416 | version = "0.5.0"; | ||
417 | }; | ||
418 | rspec-mocks = { | ||
419 | groups = ["default" "development" "local"]; | ||
420 | platforms = []; | ||
421 | source = { | ||
422 | remotes = ["http://rubygems.org"]; | ||
423 | sha256 = "0bzhqahbiswq41nqi6y2dka1k42n0hl14jb6bldb206zp4hikz8r"; | ||
424 | type = "gem"; | ||
425 | }; | ||
426 | version = "2.99.4"; | ||
427 | }; | ||
428 | ruby_dep = { | ||
429 | groups = ["default" "local"]; | ||
430 | platforms = []; | ||
431 | source = { | ||
432 | remotes = ["http://rubygems.org"]; | ||
433 | sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"; | ||
434 | type = "gem"; | ||
435 | }; | ||
436 | version = "1.5.0"; | ||
437 | }; | ||
438 | shellany = { | ||
439 | groups = ["default" "local"]; | ||
440 | platforms = []; | ||
441 | source = { | ||
442 | remotes = ["http://rubygems.org"]; | ||
443 | sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"; | ||
444 | type = "gem"; | ||
445 | }; | ||
446 | version = "0.0.1"; | ||
447 | }; | ||
448 | simple-navigation = { | ||
449 | dependencies = ["activesupport"]; | ||
450 | groups = ["default"]; | ||
451 | platforms = []; | ||
452 | source = { | ||
453 | remotes = ["http://rubygems.org"]; | ||
454 | sha256 = "08a2s18an3br3xj5j86r33q0hrkai0y157xg67h1khdskb08yylk"; | ||
455 | type = "gem"; | ||
456 | }; | ||
457 | version = "4.0.5"; | ||
458 | }; | ||
459 | simplecov = { | ||
460 | dependencies = ["docile" "json" "simplecov-html"]; | ||
461 | groups = ["local"]; | ||
462 | platforms = []; | ||
463 | source = { | ||
464 | remotes = ["http://rubygems.org"]; | ||
465 | sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947"; | ||
466 | type = "gem"; | ||
467 | }; | ||
468 | version = "0.16.1"; | ||
469 | }; | ||
470 | simplecov-html = { | ||
471 | groups = ["default" "local"]; | ||
472 | platforms = []; | ||
473 | source = { | ||
474 | remotes = ["http://rubygems.org"]; | ||
475 | sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"; | ||
476 | type = "gem"; | ||
477 | }; | ||
478 | version = "0.10.2"; | ||
479 | }; | ||
480 | sinatra = { | ||
481 | dependencies = ["mustermann" "rack" "rack-protection" "tilt"]; | ||
482 | groups = ["default"]; | ||
483 | platforms = []; | ||
484 | source = { | ||
485 | remotes = ["http://rubygems.org"]; | ||
486 | sha256 = "1gasgn5f15myv08k10i16p326pchxjsy37pgqfw0xm66kcc5d7ry"; | ||
487 | type = "gem"; | ||
488 | }; | ||
489 | version = "2.0.5"; | ||
490 | }; | ||
491 | sinatra-simple-navigation = { | ||
492 | dependencies = ["simple-navigation" "sinatra"]; | ||
493 | groups = ["default"]; | ||
494 | platforms = []; | ||
495 | source = { | ||
496 | remotes = ["http://rubygems.org"]; | ||
497 | sha256 = "1gishxd23qw6bwsk7fkagkfc7ihqyvvvb98j9bmwc6wwpsfs4prs"; | ||
498 | type = "gem"; | ||
499 | }; | ||
500 | version = "4.1.0"; | ||
501 | }; | ||
502 | taskwarrior-web = { | ||
503 | dependencies = ["activesupport" "json" "parseconfig" "rack-flash3" "rinku" "sinatra" "sinatra-simple-navigation" "vegas" "versionomy"]; | ||
504 | groups = ["default"]; | ||
505 | platforms = []; | ||
506 | bundledByPath = true; | ||
507 | path = ./.; | ||
508 | source = { | ||
509 | path = ./.; | ||
510 | type = "path"; | ||
511 | }; | ||
512 | version = "1.1.12"; | ||
513 | }; | ||
514 | thin = { | ||
515 | dependencies = ["daemons" "eventmachine" "rack"]; | ||
516 | groups = ["default"]; | ||
517 | platforms = []; | ||
518 | source = { | ||
519 | remotes = ["http://rubygems.org"]; | ||
520 | sha256 = "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"; | ||
521 | type = "gem"; | ||
522 | }; | ||
523 | version = "1.7.2"; | ||
524 | }; | ||
525 | thor = { | ||
526 | groups = ["default" "local"]; | ||
527 | platforms = []; | ||
528 | source = { | ||
529 | remotes = ["http://rubygems.org"]; | ||
530 | sha256 = "1yhrnp9x8qcy5vc7g438amd5j9sw83ih7c30dr6g6slgw9zj3g29"; | ||
531 | type = "gem"; | ||
532 | }; | ||
533 | version = "0.20.3"; | ||
534 | }; | ||
535 | tilt = { | ||
536 | groups = ["default"]; | ||
537 | platforms = []; | ||
538 | source = { | ||
539 | remotes = ["http://rubygems.org"]; | ||
540 | sha256 = "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz"; | ||
541 | type = "gem"; | ||
542 | }; | ||
543 | version = "2.0.9"; | ||
544 | }; | ||
545 | vegas = { | ||
546 | dependencies = ["rack"]; | ||
547 | groups = ["default"]; | ||
548 | platforms = []; | ||
549 | source = { | ||
550 | remotes = ["http://rubygems.org"]; | ||
551 | sha256 = "0kzv0v1zb8vvm188q4pqwahb6468bmiamn6wpsbiq6r5i69s1bs5"; | ||
552 | type = "gem"; | ||
553 | }; | ||
554 | version = "0.1.11"; | ||
555 | }; | ||
556 | versionomy = { | ||
557 | dependencies = ["blockenspiel"]; | ||
558 | groups = ["default"]; | ||
559 | platforms = []; | ||
560 | source = { | ||
561 | remotes = ["http://rubygems.org"]; | ||
562 | sha256 = "0i0l4pzrl1vyp4lpg2cxhgkk56spki3lld943d6h7168fj8qyv33"; | ||
563 | type = "gem"; | ||
564 | }; | ||
565 | version = "0.5.0"; | ||
566 | }; | ||
567 | } | ||
diff --git a/nixops/modules/task/taskwarrior-web.json b/nixops/modules/task/taskwarrior-web.json deleted file mode 100644 index 70f396d..0000000 --- a/nixops/modules/task/taskwarrior-web.json +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | { | ||
2 | "tag": "a79cfe2-master", | ||
3 | "meta": { | ||
4 | "name": "taskwarrior-web", | ||
5 | "url": "https://github.com/theunraveler/taskwarrior-web", | ||
6 | "branch": "master" | ||
7 | }, | ||
8 | "github": { | ||
9 | "owner": "theunraveler", | ||
10 | "repo": "taskwarrior-web", | ||
11 | "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8", | ||
12 | "sha256": "028rb4wry2an19707bvy4n305f3s0hipg214224p1m0mb61c3cq4", | ||
13 | "fetchSubmodules": true | ||
14 | } | ||
15 | } | ||
diff --git a/nixops/modules/task/taskwarrior-web.nix b/nixops/modules/task/taskwarrior-web.nix deleted file mode 100644 index e38ada4..0000000 --- a/nixops/modules/task/taskwarrior-web.nix +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | { env, ruby_2_6, bundlerEnv, defaultGemConfig, fetchedGithub, stdenv, writeText, pkgs }: | ||
2 | let | ||
3 | varDir = "/var/lib/taskwarrior-web"; | ||
4 | socketsDir = "/run/taskwarrior-web"; | ||
5 | rubyRoot = stdenv.mkDerivation (fetchedGithub ./taskwarrior-web.json // rec { | ||
6 | phases = [ "unpackPhase" "patchPhase" "installPhase" ]; | ||
7 | patches = [ ./fixes.patch ./thin.patch ]; | ||
8 | installPhase = '' | ||
9 | cp -a . $out | ||
10 | cp ${./Gemfile.lock} $out/Gemfile.lock | ||
11 | ''; | ||
12 | }); | ||
13 | gems = bundlerEnv { | ||
14 | name = "taskwarrior-web-env"; | ||
15 | ruby = ruby_2_6; | ||
16 | pname = "taskwarrior-web"; | ||
17 | gemset = ./gemset.nix; | ||
18 | gemdir = rubyRoot.out; | ||
19 | groups = [ "default" "local" "development" ]; | ||
20 | }; | ||
21 | in | ||
22 | { | ||
23 | inherit gems varDir socketsDir rubyRoot; | ||
24 | } | ||
diff --git a/nixops/modules/task/thin.patch b/nixops/modules/task/thin.patch deleted file mode 100644 index a7df3e3..0000000 --- a/nixops/modules/task/thin.patch +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | diff --git a/Gemfile b/Gemfile | ||
2 | index 8544e15..9c4279c 100644 | ||
3 | --- a/Gemfile | ||
4 | +++ b/Gemfile | ||
5 | @@ -3,6 +3,8 @@ source "http://rubygems.org" | ||
6 | # Specify your gem's dependencies in taskwarrior-web.gemspec | ||
7 | gemspec | ||
8 | |||
9 | +gem 'thin' | ||
10 | + | ||
11 | group :local do | ||
12 | gem 'rb-fsevent', :require => false | ||
13 | gem 'growl', :require => false | ||
14 | diff --git a/config.ru b/config.ru | ||
15 | index c3050c6..52387d8 100644 | ||
16 | --- a/config.ru | ||
17 | +++ b/config.ru | ||
18 | @@ -1,5 +1,4 @@ | ||
19 | require File.join(File.dirname(__FILE__), 'lib', 'taskwarrior-web') | ||
20 | |||
21 | -disable :run | ||
22 | TaskwarriorWeb::App.set({ :environment => :production }) | ||
23 | run TaskwarriorWeb::App | ||