├── LICENSE ├── README.md ├── add └── flake.nix ├── apply └── flake.nix ├── ascii ├── flake.nix └── table.nix ├── builtins └── flake.nix ├── cons └── flake.nix ├── div └── flake.nix ├── flake.lock ├── flake.nix ├── getAttr └── flake.nix ├── mul └── flake.nix ├── nameValue └── flake.nix ├── nil └── flake.nix ├── null └── flake.nix ├── sub └── flake.nix ├── succ └── flake.nix └── zero └── flake.nix /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ekalf 2 | 3 | Programming using only flake inputs 4 | 5 | ```bash 6 | nix eval .#value 7 | ``` 8 | 9 | To get a little idea of what is going on 10 | 11 | ```bash 12 | nix run nixpkgs#nix-melt 13 | ``` 14 | 15 | ## Why? 16 | 17 | idk 18 | -------------------------------------------------------------------------------- /add/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs = { 3 | x.follows = ""; 4 | y.follows = ""; 5 | }; 6 | 7 | outputs = { x, y, ... }: { 8 | value = x.value + y.value; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /apply/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs = { 3 | f.follows = ""; 4 | x.follows = ""; 5 | }; 6 | 7 | outputs = { f, x, ... }: { 8 | value = f.value x.value; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /ascii/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs = { 3 | x.follows = ""; 4 | }; 5 | 6 | outputs = { x, ... }: { 7 | value = builtins.elemAt (import ./table.nix) x.value; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /ascii/table.nix: -------------------------------------------------------------------------------- 1 | [ 2 | null 3 | null 4 | null 5 | null 6 | null 7 | null 8 | null 9 | null 10 | null 11 | "\t" 12 | "\n" 13 | null 14 | null 15 | "\r" 16 | null 17 | null 18 | null 19 | null 20 | null 21 | null 22 | null 23 | null 24 | null 25 | null 26 | null 27 | null 28 | null 29 | null 30 | null 31 | null 32 | null 33 | null 34 | " " 35 | "!" 36 | "\"" 37 | "#" 38 | "$" 39 | "%" 40 | "&" 41 | "'" 42 | "(" 43 | ")" 44 | "*" 45 | "+" 46 | "," 47 | "-" 48 | "." 49 | "/" 50 | "0" 51 | "1" 52 | "2" 53 | "3" 54 | "4" 55 | "5" 56 | "6" 57 | "7" 58 | "8" 59 | "9" 60 | ":" 61 | ";" 62 | "<" 63 | "=" 64 | ">" 65 | "?" 66 | "@" 67 | "A" 68 | "B" 69 | "C" 70 | "D" 71 | "E" 72 | "F" 73 | "G" 74 | "H" 75 | "I" 76 | "J" 77 | "K" 78 | "L" 79 | "M" 80 | "N" 81 | "O" 82 | "P" 83 | "Q" 84 | "R" 85 | "S" 86 | "T" 87 | "U" 88 | "V" 89 | "W" 90 | "X" 91 | "Y" 92 | "Z" 93 | "[" 94 | "\\" 95 | "]" 96 | "^" 97 | "_" 98 | "`" 99 | "a" 100 | "b" 101 | "c" 102 | "d" 103 | "e" 104 | "f" 105 | "g" 106 | "h" 107 | "i" 108 | "j" 109 | "k" 110 | "l" 111 | "m" 112 | "n" 113 | "o" 114 | "p" 115 | "q" 116 | "r" 117 | "s" 118 | "t" 119 | "u" 120 | "v" 121 | "w" 122 | "x" 123 | "y" 124 | "z" 125 | "{" 126 | "|" 127 | "}" 128 | "~" 129 | ] 130 | -------------------------------------------------------------------------------- /builtins/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | outputs = _: { 3 | value = builtins; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /cons/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs = { 3 | x.follows = ""; 4 | xs.follows = ""; 5 | }; 6 | 7 | outputs = { x, xs, ... }: { 8 | value = [ x.value ] ++ xs.value; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /div/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs = { 3 | x.follows = ""; 4 | y.follows = ""; 5 | }; 6 | 7 | outputs = { x, y, ... }: { 8 | value = x.value / y.value; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "A": { 4 | "inputs": { 5 | "x": [ 6 | "n65" 7 | ] 8 | }, 9 | "locked": { 10 | "lastModified": 1, 11 | "narHash": "sha256-kDzS0vmIbCJrkyrtWFe64j9mfcDmGJPkEVQQG50oLOw=", 12 | "path": "ascii", 13 | "type": "path" 14 | }, 15 | "original": { 16 | "path": "ascii", 17 | "type": "path" 18 | } 19 | }, 20 | "T": { 21 | "inputs": { 22 | "x": [ 23 | "n84" 24 | ] 25 | }, 26 | "locked": { 27 | "lastModified": 1, 28 | "narHash": "sha256-kDzS0vmIbCJrkyrtWFe64j9mfcDmGJPkEVQQG50oLOw=", 29 | "path": "ascii", 30 | "type": "path" 31 | }, 32 | "original": { 33 | "path": "ascii", 34 | "type": "path" 35 | } 36 | }, 37 | "a": { 38 | "inputs": { 39 | "x": [ 40 | "n97" 41 | ] 42 | }, 43 | "locked": { 44 | "lastModified": 1, 45 | "narHash": "sha256-kDzS0vmIbCJrkyrtWFe64j9mfcDmGJPkEVQQG50oLOw=", 46 | "path": "ascii", 47 | "type": "path" 48 | }, 49 | "original": { 50 | "path": "ascii", 51 | "type": "path" 52 | } 53 | }, 54 | "an": { 55 | "inputs": { 56 | "x": [ 57 | "a" 58 | ], 59 | "y": [ 60 | "n" 61 | ] 62 | }, 63 | "locked": { 64 | "lastModified": 1, 65 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 66 | "path": "add", 67 | "type": "path" 68 | }, 69 | "original": { 70 | "path": "add", 71 | "type": "path" 72 | } 73 | }, 74 | "ans": { 75 | "inputs": { 76 | "x": [ 77 | "an" 78 | ], 79 | "y": [ 80 | "s" 81 | ] 82 | }, 83 | "locked": { 84 | "lastModified": 1, 85 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 86 | "path": "add", 87 | "type": "path" 88 | }, 89 | "original": { 90 | "path": "add", 91 | "type": "path" 92 | } 93 | }, 94 | "answ": { 95 | "inputs": { 96 | "x": [ 97 | "ans" 98 | ], 99 | "y": [ 100 | "w" 101 | ] 102 | }, 103 | "locked": { 104 | "lastModified": 1, 105 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 106 | "path": "add", 107 | "type": "path" 108 | }, 109 | "original": { 110 | "path": "add", 111 | "type": "path" 112 | } 113 | }, 114 | "answe": { 115 | "inputs": { 116 | "x": [ 117 | "answ" 118 | ], 119 | "y": [ 120 | "e" 121 | ] 122 | }, 123 | "locked": { 124 | "lastModified": 1, 125 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 126 | "path": "add", 127 | "type": "path" 128 | }, 129 | "original": { 130 | "path": "add", 131 | "type": "path" 132 | } 133 | }, 134 | "answer": { 135 | "inputs": { 136 | "x": [ 137 | "answe" 138 | ], 139 | "y": [ 140 | "r" 141 | ] 142 | }, 143 | "locked": { 144 | "lastModified": 1, 145 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 146 | "path": "add", 147 | "type": "path" 148 | }, 149 | "original": { 150 | "path": "add", 151 | "type": "path" 152 | } 153 | }, 154 | "answerPair": { 155 | "inputs": { 156 | "name": [ 157 | "answer" 158 | ], 159 | "value": [ 160 | "n42" 161 | ] 162 | }, 163 | "locked": { 164 | "lastModified": 1, 165 | "narHash": "sha256-DjEWFUnznMLzv6w5uuP/GAdyPfXcAwPNSqGtSPoReLk=", 166 | "path": "nameValue", 167 | "type": "path" 168 | }, 169 | "original": { 170 | "path": "nameValue", 171 | "type": "path" 172 | } 173 | }, 174 | "builtins": { 175 | "locked": { 176 | "lastModified": 1, 177 | "narHash": "sha256-iIYMVYiUWTNEL4zRkZPuHDB8QGbDAbB+uBXlzomUg64=", 178 | "path": "builtins", 179 | "type": "path" 180 | }, 181 | "original": { 182 | "path": "builtins", 183 | "type": "path" 184 | } 185 | }, 186 | "e": { 187 | "inputs": { 188 | "x": [ 189 | "n101" 190 | ] 191 | }, 192 | "locked": { 193 | "lastModified": 1, 194 | "narHash": "sha256-kDzS0vmIbCJrkyrtWFe64j9mfcDmGJPkEVQQG50oLOw=", 195 | "path": "ascii", 196 | "type": "path" 197 | }, 198 | "original": { 199 | "path": "ascii", 200 | "type": "path" 201 | } 202 | }, 203 | "fListToAttrs": { 204 | "inputs": { 205 | "attrs": [ 206 | "builtins" 207 | ], 208 | "name": [ 209 | "listToAttrs" 210 | ] 211 | }, 212 | "locked": { 213 | "lastModified": 1, 214 | "narHash": "sha256-akE7yFWT8bW5mj0r4dNe7ZRL3J0hifXV4XVxk/HwgE0=", 215 | "path": "getAttr", 216 | "type": "path" 217 | }, 218 | "original": { 219 | "path": "getAttr", 220 | "type": "path" 221 | } 222 | }, 223 | "i": { 224 | "inputs": { 225 | "x": [ 226 | "n105" 227 | ] 228 | }, 229 | "locked": { 230 | "lastModified": 1, 231 | "narHash": "sha256-kDzS0vmIbCJrkyrtWFe64j9mfcDmGJPkEVQQG50oLOw=", 232 | "path": "ascii", 233 | "type": "path" 234 | }, 235 | "original": { 236 | "path": "ascii", 237 | "type": "path" 238 | } 239 | }, 240 | "l": { 241 | "inputs": { 242 | "x": [ 243 | "n108" 244 | ] 245 | }, 246 | "locked": { 247 | "lastModified": 1, 248 | "narHash": "sha256-kDzS0vmIbCJrkyrtWFe64j9mfcDmGJPkEVQQG50oLOw=", 249 | "path": "ascii", 250 | "type": "path" 251 | }, 252 | "original": { 253 | "path": "ascii", 254 | "type": "path" 255 | } 256 | }, 257 | "li": { 258 | "inputs": { 259 | "x": [ 260 | "l" 261 | ], 262 | "y": [ 263 | "i" 264 | ] 265 | }, 266 | "locked": { 267 | "lastModified": 1, 268 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 269 | "path": "add", 270 | "type": "path" 271 | }, 272 | "original": { 273 | "path": "add", 274 | "type": "path" 275 | } 276 | }, 277 | "lis": { 278 | "inputs": { 279 | "x": [ 280 | "li" 281 | ], 282 | "y": [ 283 | "s" 284 | ] 285 | }, 286 | "locked": { 287 | "lastModified": 1, 288 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 289 | "path": "add", 290 | "type": "path" 291 | }, 292 | "original": { 293 | "path": "add", 294 | "type": "path" 295 | } 296 | }, 297 | "list": { 298 | "inputs": { 299 | "x": [ 300 | "lis" 301 | ], 302 | "y": [ 303 | "t" 304 | ] 305 | }, 306 | "locked": { 307 | "lastModified": 1, 308 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 309 | "path": "add", 310 | "type": "path" 311 | }, 312 | "original": { 313 | "path": "add", 314 | "type": "path" 315 | } 316 | }, 317 | "listT": { 318 | "inputs": { 319 | "x": [ 320 | "list" 321 | ], 322 | "y": [ 323 | "T" 324 | ] 325 | }, 326 | "locked": { 327 | "lastModified": 1, 328 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 329 | "path": "add", 330 | "type": "path" 331 | }, 332 | "original": { 333 | "path": "add", 334 | "type": "path" 335 | } 336 | }, 337 | "listTo": { 338 | "inputs": { 339 | "x": [ 340 | "listT" 341 | ], 342 | "y": [ 343 | "o" 344 | ] 345 | }, 346 | "locked": { 347 | "lastModified": 1, 348 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 349 | "path": "add", 350 | "type": "path" 351 | }, 352 | "original": { 353 | "path": "add", 354 | "type": "path" 355 | } 356 | }, 357 | "listToA": { 358 | "inputs": { 359 | "x": [ 360 | "listTo" 361 | ], 362 | "y": [ 363 | "A" 364 | ] 365 | }, 366 | "locked": { 367 | "lastModified": 1, 368 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 369 | "path": "add", 370 | "type": "path" 371 | }, 372 | "original": { 373 | "path": "add", 374 | "type": "path" 375 | } 376 | }, 377 | "listToAt": { 378 | "inputs": { 379 | "x": [ 380 | "listToA" 381 | ], 382 | "y": [ 383 | "t" 384 | ] 385 | }, 386 | "locked": { 387 | "lastModified": 1, 388 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 389 | "path": "add", 390 | "type": "path" 391 | }, 392 | "original": { 393 | "path": "add", 394 | "type": "path" 395 | } 396 | }, 397 | "listToAtt": { 398 | "inputs": { 399 | "x": [ 400 | "listToAt" 401 | ], 402 | "y": [ 403 | "t" 404 | ] 405 | }, 406 | "locked": { 407 | "lastModified": 1, 408 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 409 | "path": "add", 410 | "type": "path" 411 | }, 412 | "original": { 413 | "path": "add", 414 | "type": "path" 415 | } 416 | }, 417 | "listToAttr": { 418 | "inputs": { 419 | "x": [ 420 | "listToAtt" 421 | ], 422 | "y": [ 423 | "r" 424 | ] 425 | }, 426 | "locked": { 427 | "lastModified": 1, 428 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 429 | "path": "add", 430 | "type": "path" 431 | }, 432 | "original": { 433 | "path": "add", 434 | "type": "path" 435 | } 436 | }, 437 | "listToAttrs": { 438 | "inputs": { 439 | "x": [ 440 | "listToAttr" 441 | ], 442 | "y": [ 443 | "s" 444 | ] 445 | }, 446 | "locked": { 447 | "lastModified": 1, 448 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 449 | "path": "add", 450 | "type": "path" 451 | }, 452 | "original": { 453 | "path": "add", 454 | "type": "path" 455 | } 456 | }, 457 | "n": { 458 | "inputs": { 459 | "x": [ 460 | "n110" 461 | ] 462 | }, 463 | "locked": { 464 | "lastModified": 1, 465 | "narHash": "sha256-kDzS0vmIbCJrkyrtWFe64j9mfcDmGJPkEVQQG50oLOw=", 466 | "path": "ascii", 467 | "type": "path" 468 | }, 469 | "original": { 470 | "path": "ascii", 471 | "type": "path" 472 | } 473 | }, 474 | "n0": { 475 | "locked": { 476 | "lastModified": 1, 477 | "narHash": "sha256-e7xOfDEmrJDZ9Zq3HUvxqybNnvuoeUJ9kY1+u/YpwkM=", 478 | "path": "zero", 479 | "type": "path" 480 | }, 481 | "original": { 482 | "path": "zero", 483 | "type": "path" 484 | } 485 | }, 486 | "n1": { 487 | "inputs": { 488 | "x": [ 489 | "n0" 490 | ] 491 | }, 492 | "locked": { 493 | "lastModified": 1, 494 | "narHash": "sha256-6oaDNEGWN8h7qYrKmPw6F4UgkiFCgN6ZVnxuO37igiA=", 495 | "path": "succ", 496 | "type": "path" 497 | }, 498 | "original": { 499 | "path": "succ", 500 | "type": "path" 501 | } 502 | }, 503 | "n101": { 504 | "inputs": { 505 | "x": [ 506 | "n110" 507 | ] 508 | }, 509 | "locked": { 510 | "lastModified": 1, 511 | "narHash": "sha256-6oaDNEGWN8h7qYrKmPw6F4UgkiFCgN6ZVnxuO37igiA=", 512 | "path": "succ", 513 | "type": "path" 514 | }, 515 | "original": { 516 | "path": "succ", 517 | "type": "path" 518 | } 519 | }, 520 | "n105": { 521 | "inputs": { 522 | "x": [ 523 | "n108" 524 | ], 525 | "y": [ 526 | "n3" 527 | ] 528 | }, 529 | "locked": { 530 | "lastModified": 1, 531 | "narHash": "sha256-X7QUknIE9XArKQnFpRzPZmb6kMu9p/VatQ5AakebQ84=", 532 | "path": "sub", 533 | "type": "path" 534 | }, 535 | "original": { 536 | "path": "sub", 537 | "type": "path" 538 | } 539 | }, 540 | "n108": { 541 | "inputs": { 542 | "x": [ 543 | "n36" 544 | ], 545 | "y": [ 546 | "n3" 547 | ] 548 | }, 549 | "locked": { 550 | "lastModified": 1, 551 | "narHash": "sha256-+df4rv57DVUji/50dabyrpgxcpkPc2iVSgQ4GD8ofwU=", 552 | "path": "mul", 553 | "type": "path" 554 | }, 555 | "original": { 556 | "path": "mul", 557 | "type": "path" 558 | } 559 | }, 560 | "n110": { 561 | "inputs": { 562 | "x": [ 563 | "n108" 564 | ], 565 | "y": [ 566 | "n2" 567 | ] 568 | }, 569 | "locked": { 570 | "lastModified": 1, 571 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 572 | "path": "add", 573 | "type": "path" 574 | }, 575 | "original": { 576 | "path": "add", 577 | "type": "path" 578 | } 579 | }, 580 | "n111": { 581 | "inputs": { 582 | "x": [ 583 | "n108" 584 | ], 585 | "y": [ 586 | "n3" 587 | ] 588 | }, 589 | "locked": { 590 | "lastModified": 1, 591 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 592 | "path": "add", 593 | "type": "path" 594 | }, 595 | "original": { 596 | "path": "add", 597 | "type": "path" 598 | } 599 | }, 600 | "n114": { 601 | "inputs": { 602 | "x": [ 603 | "n115" 604 | ], 605 | "y": [ 606 | "n1" 607 | ] 608 | }, 609 | "locked": { 610 | "lastModified": 1, 611 | "narHash": "sha256-X7QUknIE9XArKQnFpRzPZmb6kMu9p/VatQ5AakebQ84=", 612 | "path": "sub", 613 | "type": "path" 614 | }, 615 | "original": { 616 | "path": "sub", 617 | "type": "path" 618 | } 619 | }, 620 | "n115": { 621 | "inputs": { 622 | "x": [ 623 | "n108" 624 | ], 625 | "y": [ 626 | "n7" 627 | ] 628 | }, 629 | "locked": { 630 | "lastModified": 1, 631 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 632 | "path": "add", 633 | "type": "path" 634 | }, 635 | "original": { 636 | "path": "add", 637 | "type": "path" 638 | } 639 | }, 640 | "n116": { 641 | "inputs": { 642 | "x": [ 643 | "n115" 644 | ] 645 | }, 646 | "locked": { 647 | "lastModified": 1, 648 | "narHash": "sha256-6oaDNEGWN8h7qYrKmPw6F4UgkiFCgN6ZVnxuO37igiA=", 649 | "path": "succ", 650 | "type": "path" 651 | }, 652 | "original": { 653 | "path": "succ", 654 | "type": "path" 655 | } 656 | }, 657 | "n119": { 658 | "inputs": { 659 | "x": [ 660 | "n110" 661 | ], 662 | "y": [ 663 | "n9" 664 | ] 665 | }, 666 | "locked": { 667 | "lastModified": 1, 668 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 669 | "path": "add", 670 | "type": "path" 671 | }, 672 | "original": { 673 | "path": "add", 674 | "type": "path" 675 | } 676 | }, 677 | "n13": { 678 | "inputs": { 679 | "x": [ 680 | "n6" 681 | ], 682 | "y": [ 683 | "n7" 684 | ] 685 | }, 686 | "locked": { 687 | "lastModified": 1, 688 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 689 | "path": "add", 690 | "type": "path" 691 | }, 692 | "original": { 693 | "path": "add", 694 | "type": "path" 695 | } 696 | }, 697 | "n2": { 698 | "inputs": { 699 | "x": [ 700 | "n1" 701 | ] 702 | }, 703 | "locked": { 704 | "lastModified": 1, 705 | "narHash": "sha256-6oaDNEGWN8h7qYrKmPw6F4UgkiFCgN6ZVnxuO37igiA=", 706 | "path": "succ", 707 | "type": "path" 708 | }, 709 | "original": { 710 | "path": "succ", 711 | "type": "path" 712 | } 713 | }, 714 | "n3": { 715 | "inputs": { 716 | "x": [ 717 | "n2" 718 | ] 719 | }, 720 | "locked": { 721 | "lastModified": 1, 722 | "narHash": "sha256-6oaDNEGWN8h7qYrKmPw6F4UgkiFCgN6ZVnxuO37igiA=", 723 | "path": "succ", 724 | "type": "path" 725 | }, 726 | "original": { 727 | "path": "succ", 728 | "type": "path" 729 | } 730 | }, 731 | "n36": { 732 | "inputs": { 733 | "x": [ 734 | "n6" 735 | ], 736 | "y": [ 737 | "n6" 738 | ] 739 | }, 740 | "locked": { 741 | "lastModified": 1, 742 | "narHash": "sha256-+df4rv57DVUji/50dabyrpgxcpkPc2iVSgQ4GD8ofwU=", 743 | "path": "mul", 744 | "type": "path" 745 | }, 746 | "original": { 747 | "path": "mul", 748 | "type": "path" 749 | } 750 | }, 751 | "n42": { 752 | "inputs": { 753 | "x": [ 754 | "n36" 755 | ], 756 | "y": [ 757 | "n6" 758 | ] 759 | }, 760 | "locked": { 761 | "lastModified": 1, 762 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 763 | "path": "add", 764 | "type": "path" 765 | }, 766 | "original": { 767 | "path": "add", 768 | "type": "path" 769 | } 770 | }, 771 | "n5": { 772 | "inputs": { 773 | "x": [ 774 | "n2" 775 | ], 776 | "y": [ 777 | "n3" 778 | ] 779 | }, 780 | "locked": { 781 | "lastModified": 1, 782 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 783 | "path": "add", 784 | "type": "path" 785 | }, 786 | "original": { 787 | "path": "add", 788 | "type": "path" 789 | } 790 | }, 791 | "n6": { 792 | "inputs": { 793 | "x": [ 794 | "n5" 795 | ] 796 | }, 797 | "locked": { 798 | "lastModified": 1, 799 | "narHash": "sha256-6oaDNEGWN8h7qYrKmPw6F4UgkiFCgN6ZVnxuO37igiA=", 800 | "path": "succ", 801 | "type": "path" 802 | }, 803 | "original": { 804 | "path": "succ", 805 | "type": "path" 806 | } 807 | }, 808 | "n65": { 809 | "inputs": { 810 | "x": [ 811 | "n5" 812 | ], 813 | "y": [ 814 | "n13" 815 | ] 816 | }, 817 | "locked": { 818 | "lastModified": 1, 819 | "narHash": "sha256-+df4rv57DVUji/50dabyrpgxcpkPc2iVSgQ4GD8ofwU=", 820 | "path": "mul", 821 | "type": "path" 822 | }, 823 | "original": { 824 | "path": "mul", 825 | "type": "path" 826 | } 827 | }, 828 | "n7": { 829 | "inputs": { 830 | "x": [ 831 | "n6" 832 | ] 833 | }, 834 | "locked": { 835 | "lastModified": 1, 836 | "narHash": "sha256-6oaDNEGWN8h7qYrKmPw6F4UgkiFCgN6ZVnxuO37igiA=", 837 | "path": "succ", 838 | "type": "path" 839 | }, 840 | "original": { 841 | "path": "succ", 842 | "type": "path" 843 | } 844 | }, 845 | "n84": { 846 | "inputs": { 847 | "x": [ 848 | "n42" 849 | ], 850 | "y": [ 851 | "n2" 852 | ] 853 | }, 854 | "locked": { 855 | "lastModified": 1, 856 | "narHash": "sha256-+df4rv57DVUji/50dabyrpgxcpkPc2iVSgQ4GD8ofwU=", 857 | "path": "mul", 858 | "type": "path" 859 | }, 860 | "original": { 861 | "path": "mul", 862 | "type": "path" 863 | } 864 | }, 865 | "n9": { 866 | "inputs": { 867 | "x": [ 868 | "n3" 869 | ], 870 | "y": [ 871 | "n3" 872 | ] 873 | }, 874 | "locked": { 875 | "lastModified": 1, 876 | "narHash": "sha256-+df4rv57DVUji/50dabyrpgxcpkPc2iVSgQ4GD8ofwU=", 877 | "path": "mul", 878 | "type": "path" 879 | }, 880 | "original": { 881 | "path": "mul", 882 | "type": "path" 883 | } 884 | }, 885 | "n91": { 886 | "inputs": { 887 | "x": [ 888 | "n7" 889 | ], 890 | "y": [ 891 | "n13" 892 | ] 893 | }, 894 | "locked": { 895 | "lastModified": 1, 896 | "narHash": "sha256-+df4rv57DVUji/50dabyrpgxcpkPc2iVSgQ4GD8ofwU=", 897 | "path": "mul", 898 | "type": "path" 899 | }, 900 | "original": { 901 | "path": "mul", 902 | "type": "path" 903 | } 904 | }, 905 | "n97": { 906 | "inputs": { 907 | "x": [ 908 | "n91" 909 | ], 910 | "y": [ 911 | "n6" 912 | ] 913 | }, 914 | "locked": { 915 | "lastModified": 1, 916 | "narHash": "sha256-ObrJVKb4InjTlL7hrYNylVQE+tUYyXqq5xwHw1kaTmM=", 917 | "path": "add", 918 | "type": "path" 919 | }, 920 | "original": { 921 | "path": "add", 922 | "type": "path" 923 | } 924 | }, 925 | "nil": { 926 | "locked": { 927 | "lastModified": 1, 928 | "narHash": "sha256-Et09QIUCNg7vWCuceRJ1lp80LfjxTRkdgLtD17gKQYw=", 929 | "path": "nil", 930 | "type": "path" 931 | }, 932 | "original": { 933 | "path": "nil", 934 | "type": "path" 935 | } 936 | }, 937 | "o": { 938 | "inputs": { 939 | "x": [ 940 | "n111" 941 | ] 942 | }, 943 | "locked": { 944 | "lastModified": 1, 945 | "narHash": "sha256-kDzS0vmIbCJrkyrtWFe64j9mfcDmGJPkEVQQG50oLOw=", 946 | "path": "ascii", 947 | "type": "path" 948 | }, 949 | "original": { 950 | "path": "ascii", 951 | "type": "path" 952 | } 953 | }, 954 | "pairs": { 955 | "inputs": { 956 | "x": [ 957 | "answerPair" 958 | ], 959 | "xs": [ 960 | "nil" 961 | ] 962 | }, 963 | "locked": { 964 | "lastModified": 1, 965 | "narHash": "sha256-QP3Y/xC5HrZqM+3szdDp0Gc2Y4n7+mYg1diaRqBLFl0=", 966 | "path": "cons", 967 | "type": "path" 968 | }, 969 | "original": { 970 | "path": "cons", 971 | "type": "path" 972 | } 973 | }, 974 | "r": { 975 | "inputs": { 976 | "x": [ 977 | "n114" 978 | ] 979 | }, 980 | "locked": { 981 | "lastModified": 1, 982 | "narHash": "sha256-kDzS0vmIbCJrkyrtWFe64j9mfcDmGJPkEVQQG50oLOw=", 983 | "path": "ascii", 984 | "type": "path" 985 | }, 986 | "original": { 987 | "path": "ascii", 988 | "type": "path" 989 | } 990 | }, 991 | "result": { 992 | "inputs": { 993 | "f": [ 994 | "fListToAttrs" 995 | ], 996 | "x": [ 997 | "pairs" 998 | ] 999 | }, 1000 | "locked": { 1001 | "lastModified": 1, 1002 | "narHash": "sha256-pO+MCT1SvVz6ux6cJFbZbC/6qYA2E6Dev7WMcr5XQik=", 1003 | "path": "apply", 1004 | "type": "path" 1005 | }, 1006 | "original": { 1007 | "path": "apply", 1008 | "type": "path" 1009 | } 1010 | }, 1011 | "root": { 1012 | "inputs": { 1013 | "A": "A", 1014 | "T": "T", 1015 | "a": "a", 1016 | "an": "an", 1017 | "ans": "ans", 1018 | "answ": "answ", 1019 | "answe": "answe", 1020 | "answer": "answer", 1021 | "answerPair": "answerPair", 1022 | "builtins": "builtins", 1023 | "e": "e", 1024 | "fListToAttrs": "fListToAttrs", 1025 | "i": "i", 1026 | "l": "l", 1027 | "li": "li", 1028 | "lis": "lis", 1029 | "list": "list", 1030 | "listT": "listT", 1031 | "listTo": "listTo", 1032 | "listToA": "listToA", 1033 | "listToAt": "listToAt", 1034 | "listToAtt": "listToAtt", 1035 | "listToAttr": "listToAttr", 1036 | "listToAttrs": "listToAttrs", 1037 | "n": "n", 1038 | "n0": "n0", 1039 | "n1": "n1", 1040 | "n101": "n101", 1041 | "n105": "n105", 1042 | "n108": "n108", 1043 | "n110": "n110", 1044 | "n111": "n111", 1045 | "n114": "n114", 1046 | "n115": "n115", 1047 | "n116": "n116", 1048 | "n119": "n119", 1049 | "n13": "n13", 1050 | "n2": "n2", 1051 | "n3": "n3", 1052 | "n36": "n36", 1053 | "n42": "n42", 1054 | "n5": "n5", 1055 | "n6": "n6", 1056 | "n65": "n65", 1057 | "n7": "n7", 1058 | "n84": "n84", 1059 | "n9": "n9", 1060 | "n91": "n91", 1061 | "n97": "n97", 1062 | "nil": "nil", 1063 | "o": "o", 1064 | "pairs": "pairs", 1065 | "r": "r", 1066 | "result": "result", 1067 | "s": "s", 1068 | "t": "t", 1069 | "w": "w" 1070 | } 1071 | }, 1072 | "s": { 1073 | "inputs": { 1074 | "x": [ 1075 | "n115" 1076 | ] 1077 | }, 1078 | "locked": { 1079 | "lastModified": 1, 1080 | "narHash": "sha256-kDzS0vmIbCJrkyrtWFe64j9mfcDmGJPkEVQQG50oLOw=", 1081 | "path": "ascii", 1082 | "type": "path" 1083 | }, 1084 | "original": { 1085 | "path": "ascii", 1086 | "type": "path" 1087 | } 1088 | }, 1089 | "t": { 1090 | "inputs": { 1091 | "x": [ 1092 | "n116" 1093 | ] 1094 | }, 1095 | "locked": { 1096 | "lastModified": 1, 1097 | "narHash": "sha256-kDzS0vmIbCJrkyrtWFe64j9mfcDmGJPkEVQQG50oLOw=", 1098 | "path": "ascii", 1099 | "type": "path" 1100 | }, 1101 | "original": { 1102 | "path": "ascii", 1103 | "type": "path" 1104 | } 1105 | }, 1106 | "w": { 1107 | "inputs": { 1108 | "x": [ 1109 | "n119" 1110 | ] 1111 | }, 1112 | "locked": { 1113 | "lastModified": 1, 1114 | "narHash": "sha256-kDzS0vmIbCJrkyrtWFe64j9mfcDmGJPkEVQQG50oLOw=", 1115 | "path": "ascii", 1116 | "type": "path" 1117 | }, 1118 | "original": { 1119 | "path": "ascii", 1120 | "type": "path" 1121 | } 1122 | } 1123 | }, 1124 | "root": "root", 1125 | "version": 7 1126 | } 1127 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "example"; 3 | 4 | inputs = { 5 | # numbers 6 | n0.url = "path:zero"; 7 | n1 = { 8 | url = "path:succ"; 9 | inputs.x.follows = "n0"; 10 | }; 11 | n2 = { 12 | url = "path:succ"; 13 | inputs.x.follows = "n1"; 14 | }; 15 | n3 = { 16 | url = "path:succ"; 17 | inputs = { 18 | x.follows = "n2"; 19 | }; 20 | }; 21 | n5 = { 22 | url = "path:add"; 23 | inputs = { 24 | x.follows = "n2"; 25 | y.follows = "n3"; 26 | }; 27 | }; 28 | n6 = { 29 | url = "path:succ"; 30 | inputs.x.follows = "n5"; 31 | }; 32 | n7 = { 33 | url = "path:succ"; 34 | inputs.x.follows = "n6"; 35 | }; 36 | n9 = { 37 | url = "path:mul"; 38 | inputs = { 39 | x.follows = "n3"; 40 | y.follows = "n3"; 41 | }; 42 | }; 43 | n13 = { 44 | url = "path:add"; 45 | inputs = { 46 | x.follows = "n6"; 47 | y.follows = "n7"; 48 | }; 49 | }; 50 | n36 = { 51 | url = "path:mul"; 52 | inputs = { 53 | x.follows = "n6"; 54 | y.follows = "n6"; 55 | }; 56 | }; 57 | n42 = { 58 | url = "path:add"; 59 | inputs = { 60 | x.follows = "n36"; 61 | y.follows = "n6"; 62 | }; 63 | }; 64 | n65 = { 65 | url = "path:mul"; 66 | inputs = { 67 | x.follows = "n5"; 68 | y.follows = "n13"; 69 | }; 70 | }; 71 | n91 = { 72 | url = "path:mul"; 73 | inputs = { 74 | x.follows = "n7"; 75 | y.follows = "n13"; 76 | }; 77 | }; 78 | 79 | # numbers for ascii characters 80 | n108 = { 81 | url = "path:mul"; 82 | inputs = { 83 | x.follows = "n36"; 84 | y.follows = "n3"; 85 | }; 86 | }; 87 | n105 = { 88 | url = "path:sub"; 89 | inputs = { 90 | x.follows = "n108"; 91 | y.follows = "n3"; 92 | }; 93 | }; 94 | n115 = { 95 | url = "path:add"; 96 | inputs = { 97 | x.follows = "n108"; 98 | y.follows = "n7"; 99 | }; 100 | }; 101 | n116 = { 102 | url = "path:succ"; 103 | inputs.x.follows = "n115"; 104 | }; 105 | n84 = { 106 | url = "path:mul"; 107 | inputs = { 108 | x.follows = "n42"; 109 | y.follows = "n2"; 110 | }; 111 | }; 112 | n111 = { 113 | url = "path:add"; 114 | inputs = { 115 | x.follows = "n108"; 116 | y.follows = "n3"; 117 | }; 118 | }; 119 | n114 = { 120 | url = "path:sub"; 121 | inputs = { 122 | x.follows = "n115"; 123 | y.follows = "n1"; 124 | }; 125 | }; 126 | n97 = { 127 | url = "path:add"; 128 | inputs = { 129 | x.follows = "n91"; 130 | y.follows = "n6"; 131 | }; 132 | }; 133 | n110 = { 134 | url = "path:add"; 135 | inputs = { 136 | x.follows = "n108"; 137 | y.follows = "n2"; 138 | }; 139 | }; 140 | n119 = { 141 | url = "path:add"; 142 | inputs = { 143 | x.follows = "n110"; 144 | y.follows = "n9"; 145 | }; 146 | }; 147 | n101 = { 148 | url = "path:succ"; 149 | inputs = { 150 | x.follows = "n110"; 151 | }; 152 | }; 153 | 154 | # characters 155 | l = { 156 | url = "path:ascii"; 157 | inputs.x.follows = "n108"; 158 | }; 159 | i = { 160 | url = "path:ascii"; 161 | inputs.x.follows = "n105"; 162 | }; 163 | s = { 164 | url = "path:ascii"; 165 | inputs.x.follows = "n115"; 166 | }; 167 | t = { 168 | url = "path:ascii"; 169 | inputs.x.follows = "n116"; 170 | }; 171 | T = { 172 | url = "path:ascii"; 173 | inputs.x.follows = "n84"; 174 | }; 175 | o = { 176 | url = "path:ascii"; 177 | inputs.x.follows = "n111"; 178 | }; 179 | A = { 180 | url = "path:ascii"; 181 | inputs.x.follows = "n65"; 182 | }; 183 | r = { 184 | url = "path:ascii"; 185 | inputs.x.follows = "n114"; 186 | }; 187 | a = { 188 | url = "path:ascii"; 189 | inputs.x.follows = "n97"; 190 | }; 191 | n = { 192 | url = "path:ascii"; 193 | inputs.x.follows = "n110"; 194 | }; 195 | w = { 196 | url = "path:ascii"; 197 | inputs.x.follows = "n119"; 198 | }; 199 | e = { 200 | url = "path:ascii"; 201 | inputs.x.follows = "n101"; 202 | }; 203 | 204 | # listToAttrs 205 | li = { 206 | url = "path:add"; 207 | inputs = { 208 | x.follows = "l"; 209 | y.follows = "i"; 210 | }; 211 | }; 212 | lis = { 213 | url = "path:add"; 214 | inputs = { 215 | x.follows = "li"; 216 | y.follows = "s"; 217 | }; 218 | }; 219 | list = { 220 | url = "path:add"; 221 | inputs = { 222 | x.follows = "lis"; 223 | y.follows = "t"; 224 | }; 225 | }; 226 | listT = { 227 | url = "path:add"; 228 | inputs = { 229 | x.follows = "list"; 230 | y.follows = "T"; 231 | }; 232 | }; 233 | listTo = { 234 | url = "path:add"; 235 | inputs = { 236 | x.follows = "listT"; 237 | y.follows = "o"; 238 | }; 239 | }; 240 | listToA = { 241 | url = "path:add"; 242 | inputs = { 243 | x.follows = "listTo"; 244 | y.follows = "A"; 245 | }; 246 | }; 247 | listToAt = { 248 | url = "path:add"; 249 | inputs = { 250 | x.follows = "listToA"; 251 | y.follows = "t"; 252 | }; 253 | }; 254 | listToAtt = { 255 | url = "path:add"; 256 | inputs = { 257 | x.follows = "listToAt"; 258 | y.follows = "t"; 259 | }; 260 | }; 261 | listToAttr = { 262 | url = "path:add"; 263 | inputs = { 264 | x.follows = "listToAtt"; 265 | y.follows = "r"; 266 | }; 267 | }; 268 | listToAttrs = { 269 | url = "path:add"; 270 | inputs = { 271 | x.follows = "listToAttr"; 272 | y.follows = "s"; 273 | }; 274 | }; 275 | 276 | # answer 277 | an = { 278 | url = "path:add"; 279 | inputs = { 280 | x.follows = "a"; 281 | y.follows = "n"; 282 | }; 283 | }; 284 | ans = { 285 | url = "path:add"; 286 | inputs = { 287 | x.follows = "an"; 288 | y.follows = "s"; 289 | }; 290 | }; 291 | answ = { 292 | url = "path:add"; 293 | inputs = { 294 | x.follows = "ans"; 295 | y.follows = "w"; 296 | }; 297 | }; 298 | answe = { 299 | url = "path:add"; 300 | inputs = { 301 | x.follows = "answ"; 302 | y.follows = "e"; 303 | }; 304 | }; 305 | answer = { 306 | url = "path:add"; 307 | inputs = { 308 | x.follows = "answe"; 309 | y.follows = "r"; 310 | }; 311 | }; 312 | 313 | # result 314 | builtins.url = "path:builtins"; 315 | fListToAttrs = { 316 | url = "path:getAttr"; 317 | inputs = { 318 | attrs.follows = "builtins"; 319 | name.follows = "listToAttrs"; 320 | }; 321 | }; 322 | answerPair = { 323 | url = "path:nameValue"; 324 | inputs = { 325 | name.follows = "answer"; 326 | value.follows = "n42"; 327 | }; 328 | }; 329 | nil.url = "path:nil"; 330 | pairs = { 331 | url = "path:cons"; 332 | inputs = { 333 | x.follows = "answerPair"; 334 | xs.follows = "nil"; 335 | }; 336 | }; 337 | result = { 338 | url = "path:apply"; 339 | inputs = { 340 | f.follows = "fListToAttrs"; 341 | x.follows = "pairs"; 342 | }; 343 | }; 344 | }; 345 | 346 | outputs = inputs: { inherit (inputs.result) value; }; 347 | } 348 | -------------------------------------------------------------------------------- /getAttr/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs = { 3 | attrs.follows = ""; 4 | name.follows = ""; 5 | }; 6 | 7 | outputs = { attrs, name, ... }: { 8 | value = attrs.value.${name.value}; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /mul/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs = { 3 | x.follows = ""; 4 | y.follows = ""; 5 | }; 6 | 7 | outputs = { x, y, ... }: { 8 | value = x.value * y.value; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /nameValue/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs = { 3 | name.follows = ""; 4 | value.follows = ""; 5 | }; 6 | 7 | outputs = { name, value, ... }: { 8 | value = { 9 | name = name.value; 10 | inherit (value) value; 11 | }; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /nil/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | outputs = _: { 3 | value = [ ]; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /null/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | outputs = _: { 3 | value = null; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /sub/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs = { 3 | x.follows = ""; 4 | y.follows = ""; 5 | }; 6 | 7 | outputs = { x, y, ... }: { 8 | value = x.value - y.value; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /succ/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs = { 3 | x.follows = ""; 4 | }; 5 | 6 | outputs = { x, ... }: { 7 | value = x.value + 1; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /zero/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | outputs = _: { 3 | value = 0; 4 | }; 5 | } 6 | --------------------------------------------------------------------------------