diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..a6599c7 --- /dev/null +++ b/.envrc @@ -0,0 +1,12 @@ +watch_file flake.nix flake.lock + +{ + # create gc root dir -> .direnv + mkdir -p "$(direnv_layout_dir)" + eval "$( + nix print-dev-env \ + --no-update-lock-file \ + --no-write-lock-file \ + --profile $(direnv_layout_dir)/flake-profile + )" +} || use nix diff --git a/Project.toml b/Project.toml index bceb4cb..c9f12ee 100644 --- a/Project.toml +++ b/Project.toml @@ -3,6 +3,12 @@ uuid = "5edfbbf5-67b9-46d9-8ca5-929143abcc11" authors = ["Valentin Boettcher"] version = "0.1.0" +[deps] +DifferentialEquations = "0c46a032-eb83-5123-abaf-570d42b7fbaa" +LanguageServer = "2b0e0bc5-e4fd-59b4-8912-456d1b03d8d7" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +Revise = "295af30f-e4ad-537b-8983-00126c2a3abe" + [compat] julia = "1" diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..786b378 --- /dev/null +++ b/flake.lock @@ -0,0 +1,726 @@ +{ + "nodes": { + "blank": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "cells-lab": { + "inputs": { + "nixos": "nixos", + "nixpkgs": "nixpkgs", + "org-roam-book-template": "org-roam-book-template", + "std": "std", + "std-data-collection": "std-data-collection", + "xnlib": "xnlib" + }, + "locked": { + "lastModified": 1676268445, + "narHash": "sha256-FjVVzu9pGQmpuyZwJlPgEGLePfDL94gR+M1PNM1gNKM=", + "owner": "gtrunsec", + "repo": "cells-lab", + "rev": "ab176d3030d2d742d48b9045f07564f5aeda936f", + "type": "github" + }, + "original": { + "owner": "gtrunsec", + "repo": "cells-lab", + "type": "github" + } + }, + "cortex": { + "flake": false, + "locked": { + "lastModified": 1643528409, + "narHash": "sha256-ldmenmCzCEuuBlMtaQYe79vYbcTORgkCXgYgGkOzkL8=", + "owner": "gtrunsec", + "repo": "cortex", + "rev": "ad9a963534e5be323a33eaf0f9aa3e914cca8093", + "type": "github" + }, + "original": { + "owner": "gtrunsec", + "repo": "cortex", + "type": "github" + } + }, + "devshell": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677793770, + "narHash": "sha256-sPBZTh6MNV0R5cMe6It+3BP75PhfP4nXP0M9nRtUHVU=", + "owner": "numtide", + "repo": "devshell", + "rev": "a027fa50746d95abf0ea35847bed0e0bc2d7a9da", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_2": { + "inputs": { + "flake-utils": [ + "julia2nix", + "cells-lab", + "std", + "flake-utils" + ], + "nixpkgs": [ + "julia2nix", + "cells-lab", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "dmerge": { + "inputs": { + "nixlib": [ + "julia2nix", + "cells-lab", + "std", + "nixpkgs" + ], + "yants": [ + "julia2nix", + "cells-lab", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "emacs-overlay": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1676258056, + "narHash": "sha256-LhXVnPc+IPHupy7QexUrzYuloSGXvXEgvIkAlhFs+yY=", + "owner": "nix-community", + "repo": "emacs-overlay", + "rev": "09ebba158540ba3171b5f319b71427b51db8794b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "emacs-overlay", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1676283394, + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "incl": { + "inputs": { + "nixlib": [ + "julia2nix", + "cells-lab", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "julia2nix": { + "inputs": { + "cells-lab": "cells-lab", + "nix-filter": "nix-filter_2", + "nixpkgs": "nixpkgs_3", + "std": [ + "julia2nix", + "cells-lab", + "std" + ], + "std-data-collection": [ + "julia2nix", + "cells-lab", + "std-data-collection" + ] + }, + "locked": { + "lastModified": 1677373375, + "narHash": "sha256-94y8UyaoSlQjsrSIsHdMrzOT7RBaGQFV2dlFqlK6x8g=", + "owner": "JuliaCN", + "repo": "Julia2Nix.jl", + "rev": "4dd90bedf3a3fbc36273670b3fbcfd1b63484142", + "type": "github" + }, + "original": { + "owner": "JuliaCN", + "repo": "Julia2Nix.jl", + "type": "github" + } + }, + "n2c": { + "inputs": { + "flake-utils": [ + "julia2nix", + "cells-lab", + "std", + "flake-utils" + ], + "nixpkgs": [ + "julia2nix", + "cells-lab", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix-filter": { + "locked": { + "lastModified": 1666547822, + "narHash": "sha256-razwnAybPHyoAyhkKCwXdxihIqJi1G6e1XP4FQOJTEs=", + "owner": "numtide", + "repo": "nix-filter", + "rev": "1a3b735e13e90a8d2fd5629f2f8363bd7ffbbec7", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "nix-filter", + "type": "github" + } + }, + "nix-filter_2": { + "locked": { + "lastModified": 1666547822, + "narHash": "sha256-razwnAybPHyoAyhkKCwXdxihIqJi1G6e1XP4FQOJTEs=", + "owner": "numtide", + "repo": "nix-filter", + "rev": "1a3b735e13e90a8d2fd5629f2f8363bd7ffbbec7", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "nix-filter", + "type": "github" + } + }, + "nix-std": { + "locked": { + "lastModified": 1671250799, + "narHash": "sha256-uPIakP98gOf6504NtrAb2/0O0BgRRXNShM0PTV8z+T0=", + "owner": "chessai", + "repo": "nix-std", + "rev": "b300fd6dfeae8cc331c7d8cde0e81b404d50d40c", + "type": "github" + }, + "original": { + "owner": "chessai", + "repo": "nix-std", + "type": "github" + } + }, + "nixago": { + "inputs": { + "flake-utils": [ + "julia2nix", + "cells-lab", + "std", + "flake-utils" + ], + "nixago-exts": [ + "julia2nix", + "cells-lab", + "std", + "blank" + ], + "nixpkgs": [ + "julia2nix", + "cells-lab", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "owner": "nix-community", + "repo": "nixago", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixlib": { + "locked": { + "lastModified": 1673743903, + "narHash": "sha256-sloY6KYyVOozJ1CkbgJPpZ99TKIjIvM+04V48C04sMQ=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "7555e2dfcbac1533f047021f1744ac8871150f9f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixos": { + "locked": { + "lastModified": 1676177817, + "narHash": "sha256-OQnBnuKkpwkfNY31xQyfU5hNpLs1ilWt+hVY6ztEEOM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1b82144edfcd0c86486d2e07c7298f85510e7fb8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1673540789, + "narHash": "sha256-xqnxBOK3qctIeUVxecydrEDbEXjsvHCPGPbvsl63M/U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0f213d0fee84280d8c3a97f7469b988d6fe5fcdf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1672428209, + "narHash": "sha256-eejhqkDz2cb2vc5VeaWphJz8UXNuoNoM8/Op8eWv2tQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "293a28df6d7ff3dec1e61e37cc4ee6e6c0fb0847", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1677655566, + "narHash": "sha256-I8G8Lmpp3YduYl4+pkiIJFGT1WKw+8ZMH2QwANkTu2U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ae8bdd2de4c23b239b5a771501641d2ef5e027d0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nosys": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "org-roam-book-template": { + "inputs": { + "cortex": "cortex", + "emacs-overlay": "emacs-overlay", + "flake-compat": "flake-compat", + "flake-utils": "flake-utils_4", + "nix-filter": "nix-filter", + "nixpkgs": [ + "julia2nix", + "cells-lab", + "nixpkgs" + ], + "ox-hugo": "ox-hugo" + }, + "locked": { + "lastModified": 1676267610, + "narHash": "sha256-rweyZN0cRYY9Uoeo/94Sa1DHgBI2NRXC+/iNdqypptc=", + "owner": "gtrunsec", + "repo": "org-roam-book-template", + "rev": "fd76272fb78c5fae39e7bd8e8c8165ca85fa2d1a", + "type": "github" + }, + "original": { + "owner": "gtrunsec", + "repo": "org-roam-book-template", + "type": "github" + } + }, + "ox-hugo": { + "flake": false, + "locked": { + "lastModified": 1669851508, + "narHash": "sha256-7m9B647uOBnSWYsxIfavlTCsT8loDm33v/epqYSUhLw=", + "owner": "kaushalmodi", + "repo": "ox-hugo", + "rev": "706b5f622d168bb8e0cf503e0525d2db9177c83e", + "type": "github" + }, + "original": { + "owner": "kaushalmodi", + "repo": "ox-hugo", + "type": "github" + } + }, + "paisano": { + "inputs": { + "nixpkgs": [ + "julia2nix", + "cells-lab", + "std", + "nixpkgs" + ], + "nosys": "nosys", + "yants": [ + "julia2nix", + "cells-lab", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1676226775, + "narHash": "sha256-MiY0Y9JOo71wu0K9cSxW+N4gOCuS7taI3bSUMFGtbPI=", + "owner": "divnix", + "repo": "paisano", + "rev": "143afa3083274af3be808687ab23fddbbc9d22ed", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "paisano", + "type": "github" + } + }, + "root": { + "inputs": { + "devshell": "devshell", + "flake-utils": "flake-utils_2", + "julia2nix": "julia2nix", + "nixpkgs": "nixpkgs_4" + } + }, + "std": { + "inputs": { + "arion": [ + "julia2nix", + "cells-lab", + "std", + "blank" + ], + "blank": "blank", + "devshell": "devshell_2", + "dmerge": "dmerge", + "flake-utils": "flake-utils_5", + "incl": "incl", + "makes": [ + "julia2nix", + "cells-lab", + "std", + "blank" + ], + "microvm": [ + "julia2nix", + "cells-lab", + "std", + "blank" + ], + "n2c": "n2c", + "nixago": "nixago", + "nixpkgs": [ + "julia2nix", + "cells-lab", + "nixpkgs" + ], + "paisano": "paisano", + "yants": "yants" + }, + "locked": { + "lastModified": 1676232625, + "narHash": "sha256-M9xLaFVhD58UwGKoodAzeZD1iBdrCTtAsqKwWX5mUXA=", + "owner": "divnix", + "repo": "std", + "rev": "b462198baa6b3a3c6f3f46662500f683e105a2fa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std-data-collection": { + "inputs": { + "nixpkgs": [ + "julia2nix", + "cells-lab", + "nixpkgs" + ], + "std": [ + "julia2nix", + "cells-lab", + "std" + ] + }, + "locked": { + "lastModified": 1676163535, + "narHash": "sha256-xofkWLBqU4zj5vzJhWor2Z9CyPGKt7UGkTchsCT48Po=", + "owner": "divnix", + "repo": "std-data-collection", + "rev": "f713d81a6197e1b0854fb201cc7acde5ef9e93d4", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std-data-collection", + "type": "github" + } + }, + "xnlib": { + "inputs": { + "nix-std": "nix-std", + "nixlib": "nixlib", + "std": [ + "julia2nix", + "cells-lab", + "std" + ] + }, + "locked": { + "lastModified": 1674228201, + "narHash": "sha256-2ONv2b8TTkCAyOSO9LMp3wTzOS9BW6riEBxq5xwsvvc=", + "owner": "gtrunsec", + "repo": "xnlib", + "rev": "b9625c523d34617dc5aab311abb59590406fa8be", + "type": "github" + }, + "original": { + "owner": "gtrunsec", + "repo": "xnlib", + "type": "github" + } + }, + "yants": { + "inputs": { + "nixpkgs": [ + "julia2nix", + "cells-lab", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "owner": "divnix", + "repo": "yants", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..bd2630a --- /dev/null +++ b/flake.nix @@ -0,0 +1,76 @@ +{ + description = "Julia2Nix development environment"; + + inputs = { + flake-utils.url = "github:numtide/flake-utils"; + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + + devshell.url = "github:numtide/devshell"; + devshell.inputs.nixpkgs.follows = "nixpkgs"; + + julia2nix.url = "github:JuliaCN/Julia2Nix.jl"; + }; + + outputs = inputs @ { + self, + julia2nix, + ... + }: + ( + inputs.flake-utils.lib.eachDefaultSystem + (system: let + pkgs = inputs.nixpkgs.legacyPackages.${system}.appendOverlays ([ + self.overlays.default + inputs.devshell.overlays.default + ]); + julia-wrapped = inputs.julia2nix.lib.${system}.julia-wrapped { + # package = pkgs.julia_17-bin; + package = julia2nix.packages.${system}.julia_18-bin; + enable = { + # only x86_64-linux is supported + GR = true; + python = + pkgs.python3.buildEnv.override + { + extraLibs = with pkgs.python3Packages; [xlrd matplotlib pyqt5]; + # ignoreCollisions = true; + }; + }; + }; + + # run this command in your project: nix run github:JuliaCN/Julia2Nix.jl#packages.x86_64-linux.julia2nix + # we need to generate the julia2nix.toml first + project = inputs.julia2nix.lib.${system}.buildProject { + src = ./.; + name = "Looping"; + package = julia-wrapped; + }; + in { + packages = { + # make sure you have generated the julia2nix.toml + default = project; + }; + devShells.default = pkgs.devshell.mkShell { + imports = [ + # you can keep either one of them devshellProfiles.packages or julia-wrapped + # inputs.julia2nix.${pkgs.system}.julia2nix.devshellProfiles.packages + + # add dev-tools in your devshell + inputs.julia2nix.${pkgs.system}.julia2nix.devshellProfiles.dev + + # add nightly julia + # inputs.julia2nix.${pkgs.system}.julia2nix.devshellProfiles.nightly + ]; + commands = [ + { + package = julia-wrapped; + help = julia2nix.packages.${pkgs.system}.julia_18-bin.meta.description; + } + ]; + }; + }) + ) + // { + overlays.default = final: prev: {}; + }; +} diff --git a/julia2nix.toml b/julia2nix.toml new file mode 100644 index 0000000..e75458d --- /dev/null +++ b/julia2nix.toml @@ -0,0 +1,6 @@ + +[depot.x86_64-linux.fetchzip.registry-General] +name = "registries/General" +sha256 = "sha256-WfmgU1GuxVGn9yl/EQ7doYdnDUSMDi7SqCyEy8YamXY=" +stripRoot = false +url = "https://pkg.julialang.org/registry/23338594-aafe-5451-b93e-139f81909106/93737299af624d55235fd13616742788b10c0ed3#registry.tar.gz"