├── templates ├── nightly │ ├── example │ │ └── init.lua │ ├── flake.nix │ └── flake.lock └── stable │ ├── example │ └── init.lua │ └── flake.nix ├── post-check.lua ├── pre-check.lua ├── default.nix ├── PATCH.patch ├── .github └── workflows │ ├── build.yml │ └── update-flake-lock.yml ├── README.md ├── flake.lock └── flake.nix /templates/nightly/example/init.lua: -------------------------------------------------------------------------------- 1 | vim.cmd.colorscheme("catppuccin") 2 | 3 | vim.notify("Hello from init.lua!", vim.log.levels.INFO) 4 | -------------------------------------------------------------------------------- /templates/stable/example/init.lua: -------------------------------------------------------------------------------- 1 | vim.cmd.colorscheme("catppuccin") 2 | 3 | vim.notify("Hello from init.lua!", vim.log.levels.INFO) 4 | -------------------------------------------------------------------------------- /post-check.lua: -------------------------------------------------------------------------------- 1 | -- see also pre-check.lua 2 | 3 | if #vim.g._err > 0 then 4 | vim.call("writefile", vim.g._err, "stderr.txt") 5 | 6 | vim.cmd("cq 1") 7 | end 8 | 9 | vim.cmd("cq 0") 10 | -------------------------------------------------------------------------------- /pre-check.lua: -------------------------------------------------------------------------------- 1 | -- checks for any error notifications 2 | -- see also post-check.lua 3 | 4 | -- TODO: Update to include v:errmsg somehow... 5 | 6 | vim.g._err = {} 7 | 8 | vim.notify = function(msg, level) 9 | local tbl = vim.g._err 10 | 11 | if level == vim.log.levels.ERROR then 12 | table.insert(tbl, msg) 13 | vim.g._err = tbl 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /default.nix: -------------------------------------------------------------------------------- 1 | { 2 | system ? builtins.currentSystem, 3 | }: 4 | let 5 | lock = builtins.fromJSON (builtins.readFile ./flake.lock); 6 | 7 | root = lock.nodes.${lock.root}; 8 | inherit (lock.nodes.${root.inputs.flake-compat}.locked) 9 | owner 10 | repo 11 | rev 12 | narHash 13 | ; 14 | 15 | flake-compat = fetchTarball { 16 | url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz"; 17 | sha256 = narHash; 18 | }; 19 | 20 | flake = import flake-compat { 21 | inherit system; 22 | src = ./.; 23 | }; 24 | in 25 | flake.defaultNix 26 | -------------------------------------------------------------------------------- /PATCH.patch: -------------------------------------------------------------------------------- 1 | From 468bc015737f31f3e99bbb9594f5a2d5821f7a24 Mon Sep 17 00:00:00 2001 2 | From: marshmallow 3 | Date: Tue, 18 Jun 2024 16:12:18 +1000 4 | Subject: [PATCH] NIX_ABS_CONFIG 5 | 6 | --- 7 | src/nvim/os/stdpaths.c | 6 ++++++ 8 | 1 file changed, 6 insertions(+) 9 | 10 | diff --git a/src/nvim/os/stdpaths.c b/src/nvim/os/stdpaths.c 11 | index e4435bc..985cbe3 100644 12 | --- a/src/nvim/os/stdpaths.c 13 | +++ b/src/nvim/os/stdpaths.c 14 | @@ -178,6 +178,12 @@ char *stdpaths_get_xdg_var(const XDGVarType idx) 15 | ret = xdg_remove_duplicate(ret, ENV_SEPSTR); 16 | } 17 | 18 | + char *nix = os_getenv("NIX_ABS_CONFIG"); 19 | + 20 | + if (idx == kXDGConfigHome && nix != NULL) { 21 | + ret = xstrdup(nix); 22 | + } 23 | + 24 | return ret; 25 | } 26 | 27 | -- 28 | 2.44.0 29 | 30 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: "Test Build & Templates" 2 | on: 3 | pull_request: 4 | push: 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | strategy: 9 | matrix: 10 | package: [stable, nightly] 11 | steps: 12 | - uses: actions/checkout@v4 13 | - uses: cachix/install-nix-action@v27 14 | with: 15 | nix_path: nixpkgs=channel:nixos-unstable 16 | - uses: cachix/cachix-action@v15 17 | with: 18 | name: wires 19 | authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' 20 | - run: nix build .#${{ matrix.package }} 21 | 22 | template: 23 | runs-on: ubuntu-latest 24 | needs: build 25 | strategy: 26 | matrix: 27 | template: [stable, nightly] 28 | package: [neovim, testing] 29 | steps: 30 | - uses: actions/checkout@v4 31 | - uses: cachix/install-nix-action@v27 32 | with: 33 | nix_path: nixpkgs=channel:nixos-unstable 34 | extra_nix_config: | 35 | trusted-public-keys = wires.cachix.org-1:7XQoG91Bh+Aj01mAJi77Ui5AYyM1uEyV0h1wOomqjpk= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= 36 | substituters = https://wires.cachix.org https://cache.nixos.org/ 37 | - name: Build 38 | working-directory: ./templates/${{ matrix.template }} 39 | run: nix build .#${{ matrix.package }} --impure --override-input tolerable ../../. 40 | -------------------------------------------------------------------------------- /templates/stable/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs.nixpkgs.url = "github:nixos/nixpkgs?ref=nixpkgs-unstable"; 3 | 4 | inputs.tolerable.url = "github:wires-org/tolerable-nvim-nix"; 5 | inputs.tolerable.inputs.nixpkgs.follows = "nixpkgs"; 6 | 7 | outputs = 8 | { 9 | self, 10 | nixpkgs, 11 | ... 12 | }@inputs: 13 | let 14 | forAllSystems = 15 | function: 16 | nixpkgs.lib.genAttrs [ 17 | "x86_64-linux" 18 | "x86_64-darwin" 19 | "aarch64-linux" 20 | "aarch64-darwin" 21 | ] (system: function nixpkgs.legacyPackages.${system}); 22 | in 23 | { 24 | packages = forAllSystems ( 25 | pkgs: 26 | let 27 | tolerable = { 28 | inherit pkgs; 29 | src = pkgs.lib.fileset.toSource { 30 | root = ./.; 31 | fileset = ./example; 32 | }; 33 | config = { 34 | plugins = with pkgs.vimPlugins; [ 35 | catppuccin-nvim 36 | ]; 37 | }; 38 | path = with pkgs; [ 39 | lua-language-server 40 | ]; 41 | }; 42 | in 43 | { 44 | neovim = inputs.tolerable.makeNeovimConfig "example" tolerable; 45 | testing = inputs.tolerable.makeNightlyNeovimConfig "example" ( 46 | tolerable 47 | // { 48 | testing = true; 49 | } 50 | ); 51 | } 52 | ); 53 | }; 54 | } 55 | -------------------------------------------------------------------------------- /.github/workflows/update-flake-lock.yml: -------------------------------------------------------------------------------- 1 | name: update-flake-lock 2 | on: 3 | workflow_dispatch: 4 | schedule: 5 | - cron: '0 1 * * *' # runs an hour past midnight 6 | 7 | jobs: 8 | update-lock: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | - uses: cachix/install-nix-action@v27 13 | with: 14 | nix_path: nixpkgs=channel:nixos-unstable 15 | extra_nix_config: | 16 | trusted-public-keys = wires.cachix.org-1:7XQoG91Bh+Aj01mAJi77Ui5AYyM1uEyV0h1wOomqjpk= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= 17 | substituters = https://wires.cachix.org https://cache.nixos.org/ 18 | - uses: cachix/cachix-action@v15 19 | with: 20 | name: wires 21 | authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' 22 | - name: Configure git 23 | run: | 24 | git config user.name "github-actions[bot]" 25 | git config user.email "41898282+github-actions[bot]@users.noreply.github.com" 26 | - run: nix flake update --commit-lock-file 27 | - name: Test builds against new lock 28 | run: | 29 | nix build .#stable 30 | nix build .#nightly 31 | - name: Build Stable Template 32 | working-directory: ./templates/stable 33 | run: nix build .#neovim --override-input tolerable ../../. 34 | - name: Build Nightly Template 35 | working-directory: ./templates/nightly 36 | run: nix build .#neovim --override-input tolerable ../../. 37 | - name: Push changes 38 | run: | 39 | git push 40 | 41 | -------------------------------------------------------------------------------- /templates/nightly/flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs.nixpkgs.url = "github:nixos/nixpkgs?ref=nixpkgs-unstable"; 3 | 4 | inputs.tolerable.url = "github:wires-org/tolerable-nvim-nix"; 5 | inputs.tolerable.inputs.nixpkgs.follows = "nixpkgs"; 6 | 7 | inputs.nightly.url = "github:nix-community/neovim-nightly-overlay"; 8 | inputs.tolerable.inputs.nightly.follows = "nightly"; 9 | 10 | outputs = 11 | { 12 | self, 13 | nixpkgs, 14 | ... 15 | }@inputs: 16 | let 17 | forAllSystems = 18 | function: 19 | nixpkgs.lib.genAttrs [ 20 | "x86_64-linux" 21 | "x86_64-darwin" 22 | "aarch64-linux" 23 | "aarch64-darwin" 24 | ] (system: function nixpkgs.legacyPackages.${system}); 25 | in 26 | { 27 | packages = forAllSystems ( 28 | pkgs: 29 | let 30 | tolerable = { 31 | inherit pkgs; 32 | src = pkgs.lib.fileset.toSource { 33 | root = ./.; 34 | fileset = ./example; 35 | }; 36 | config = { 37 | plugins = with pkgs.vimPlugins; [ 38 | catppuccin-nvim 39 | ]; 40 | }; 41 | path = with pkgs; [ 42 | lua-language-server 43 | ]; 44 | }; 45 | in 46 | { 47 | neovim = inputs.tolerable.makeNightlyNeovimConfig "example" tolerable; 48 | testing = inputs.tolerable.makeNightlyNeovimConfig "example" ( 49 | tolerable 50 | // { 51 | testing = true; 52 | } 53 | ); 54 | } 55 | ); 56 | }; 57 | } 58 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # tolerable-nvim-nix 2 | 3 | ![Templates Test Workflow Status](https://img.shields.io/github/actions/workflow/status/wires-org/tolerable-nvim-nix/build.yml?style=for-the-badge&label=Templates) ![Tracking Nightly Workflow Status](https://img.shields.io/github/actions/workflow/status/wires-org/tolerable-nvim-nix/update-flake-lock.yml?style=for-the-badge&label=Tracking%20Nightly) ![Static Badge](https://img.shields.io/badge/nix-text?style=for-the-badge&logo=nixos&label=built%20with) 4 | 5 | Make your `~/.config/nvim/` portable with nix! This flake patches neovim to support absolute configuration paths, and exposes a nix function to create a package with your configuration baked in. 6 | 7 | > [!TIP] 8 | > lazy.nvim / LazyVim works for the most part, however mason will not work under nix. Remove the part of your config that bootstraps lazy.nvim and add `pkgs.vimPlugins.lazy-nvim` to the list of plugins to keep using lazy 9 | 10 | Read `:h config` for how to configure neovim. 11 | 12 | Additionally, this flake adds a few checks to your config. The derivation will fail to build if any lua syntax errors are found or any `vim.notify(..., vim.log.levels.ERROR)`'s are thrown. 13 | 14 | ## Getting Started 15 | 16 | ```sh 17 | nix flake init -t github:wires-org/tolerable-nvim-nix#stable 18 | 19 | nix flake init -t github:wires-org/tolerable-nvim-nix#nightly 20 | ``` 21 | 22 | You can now alter the `example` directory and use it exactly as you would your normal `~/.config/nvim/`. 23 | 24 | > [!NOTE] 25 | > If any plugins are causing your plugin to fail the checkPhase, disable them based on the presence of the environment variable `TOLERABLE_CHECK`, or disable the phase entirely with `doCheck = false`. 26 | 27 | ## Example 28 | 29 | Your configuration directory structure should look something like this: 30 | 31 | ``` 32 | ~/my/neovim/config/ 33 | ├── MY_APPNAME 34 | │ ├── after 35 | │ │ └── ... 36 | │ ├── ftplugin 37 | │ │ └── ... 38 | │ ├── lua 39 | │ │ └── ... 40 | │ ├── queries 41 | │ │ └── ... 42 | │ └── init.lua 43 | └── flake.nix 44 | ``` 45 | 46 | You should change MY_APPNAME to something unique for your neovim configuration. This prevents any collisions with other neovim configurations on systems. 47 | 48 | ```nix 49 | # use makeNightlyNeovimConfig for nightly neovim 50 | neovim = inputs.tolerable.makeNeovimConfig "MY_APPNAME" { 51 | inherit pkgs; 52 | # Use a fileset to prevent rebuilding neovim when files irrelevant to your configuration change. 53 | src = pkgs.lib.fileset.toSource { 54 | root = ./.; 55 | fileset = ./MY_APPNAME; 56 | }; 57 | # passed to pkgs.neovimUtils.makeNeovimConfig 58 | config = { 59 | plugins = with pkgs.vimPlugins; [ 60 | nvim-treesitter.withAllGrammars 61 | nvim-lspconfig 62 | # ... 63 | ]; 64 | }; 65 | # add packages to the path that will be available to neovim 66 | # (aka, LSP's) 67 | # some packages have different binary names, and lspconfig may have to be adjusted 68 | path = with pkgs; [ 69 | lua-language-server 70 | nil 71 | prettierd 72 | # ... 73 | ]; 74 | }; 75 | ``` 76 | 77 | ## Development Process 78 | 79 | Building a config with `testing = true` will allow you to rapidly test 80 | your config without waiting for nix to finish building. 81 | 82 | The templates include an example: 83 | 84 | ```nix 85 | nix build .#testing --impure 86 | 87 | ./result/bin/nvim 88 | ``` 89 | 90 | Re-run the binary to refresh just as if your config was in `~/.config/nvim`. 91 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "flake-compat": { 4 | "locked": { 5 | "lastModified": 1761640442, 6 | "narHash": "sha256-AtrEP6Jmdvrqiv4x2xa5mrtaIp3OEe8uBYCDZDS+hu8=", 7 | "owner": "nix-community", 8 | "repo": "flake-compat", 9 | "rev": "4a56054d8ffc173222d09dad23adf4ba946c8884", 10 | "type": "github" 11 | }, 12 | "original": { 13 | "owner": "nix-community", 14 | "repo": "flake-compat", 15 | "type": "github" 16 | } 17 | }, 18 | "flake-parts": { 19 | "inputs": { 20 | "nixpkgs-lib": [ 21 | "nightly", 22 | "nixpkgs" 23 | ] 24 | }, 25 | "locked": { 26 | "lastModified": 1765835352, 27 | "narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=", 28 | "owner": "hercules-ci", 29 | "repo": "flake-parts", 30 | "rev": "a34fae9c08a15ad73f295041fec82323541400a9", 31 | "type": "github" 32 | }, 33 | "original": { 34 | "owner": "hercules-ci", 35 | "repo": "flake-parts", 36 | "type": "github" 37 | } 38 | }, 39 | "neovim-src": { 40 | "flake": false, 41 | "locked": { 42 | "lastModified": 1766445637, 43 | "narHash": "sha256-cfQs0hxQO5WuSFjla1+xcC1zyUm+ti+oJ374bVbZrpI=", 44 | "owner": "neovim", 45 | "repo": "neovim", 46 | "rev": "49b1a6540f50675a4313fd1e3a88628b46dbe82d", 47 | "type": "github" 48 | }, 49 | "original": { 50 | "owner": "neovim", 51 | "repo": "neovim", 52 | "type": "github" 53 | } 54 | }, 55 | "nightly": { 56 | "inputs": { 57 | "flake-parts": "flake-parts", 58 | "neovim-src": "neovim-src", 59 | "nixpkgs": "nixpkgs" 60 | }, 61 | "locked": { 62 | "lastModified": 1766448279, 63 | "narHash": "sha256-7exwtYJfU6NbKYOY/NoTUMBQkrhcpi4m5R7QD251J38=", 64 | "owner": "nix-community", 65 | "repo": "neovim-nightly-overlay", 66 | "rev": "809b2b24874a9e92264a0f5dee0e160381165e42", 67 | "type": "github" 68 | }, 69 | "original": { 70 | "owner": "nix-community", 71 | "repo": "neovim-nightly-overlay", 72 | "type": "github" 73 | } 74 | }, 75 | "nixpkgs": { 76 | "locked": { 77 | "lastModified": 1766314097, 78 | "narHash": "sha256-laJftWbghBehazn/zxVJ8NdENVgjccsWAdAqKXhErrM=", 79 | "owner": "NixOS", 80 | "repo": "nixpkgs", 81 | "rev": "306ea70f9eb0fb4e040f8540e2deab32ed7e2055", 82 | "type": "github" 83 | }, 84 | "original": { 85 | "owner": "NixOS", 86 | "ref": "nixpkgs-unstable", 87 | "repo": "nixpkgs", 88 | "type": "github" 89 | } 90 | }, 91 | "nixpkgs_2": { 92 | "locked": { 93 | "lastModified": 1766314097, 94 | "narHash": "sha256-laJftWbghBehazn/zxVJ8NdENVgjccsWAdAqKXhErrM=", 95 | "owner": "nixos", 96 | "repo": "nixpkgs", 97 | "rev": "306ea70f9eb0fb4e040f8540e2deab32ed7e2055", 98 | "type": "github" 99 | }, 100 | "original": { 101 | "owner": "nixos", 102 | "ref": "nixpkgs-unstable", 103 | "repo": "nixpkgs", 104 | "type": "github" 105 | } 106 | }, 107 | "root": { 108 | "inputs": { 109 | "flake-compat": "flake-compat", 110 | "nightly": "nightly", 111 | "nixpkgs": "nixpkgs_2" 112 | } 113 | } 114 | }, 115 | "root": "root", 116 | "version": 7 117 | } 118 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "use ~/.config/nvim/ within nix"; 3 | 4 | inputs = { 5 | nixpkgs.url = "github:nixos/nixpkgs?ref=nixpkgs-unstable"; 6 | nightly.url = "github:nix-community/neovim-nightly-overlay"; 7 | flake-compat.url = "github:nix-community/flake-compat"; 8 | }; 9 | 10 | outputs = 11 | { 12 | self, 13 | nixpkgs, 14 | ... 15 | }@inputs: 16 | let 17 | forAllSystems = 18 | function: 19 | nixpkgs.lib.genAttrs [ 20 | "x86_64-linux" 21 | "x86_64-darwin" 22 | "aarch64-linux" 23 | "aarch64-darwin" 24 | ] (system: function nixpkgs.legacyPackages.${system}); 25 | in 26 | rec { 27 | packages = forAllSystems (pkgs: { 28 | nightly = inputs.nightly.packages.${pkgs.system}.neovim.overrideAttrs (old: { 29 | patches = old.pactches or [ ] ++ [ ./PATCH.patch ]; 30 | }); 31 | 32 | stable = pkgs.neovim-unwrapped.overrideAttrs (old: { 33 | patches = old.pactches or [ ] ++ [ ./PATCH.patch ]; 34 | }); 35 | }); 36 | 37 | makeNightlyNeovimConfig = 38 | appname: args: 39 | makeNeovimConfig appname (args // { package = packages.${args.pkgs.system}.nightly; }); 40 | 41 | makeNeovimConfig = 42 | appname: 43 | { 44 | pkgs, 45 | config, 46 | package ? null, 47 | buildInputs ? [ ], 48 | doCheck ? true, 49 | path ? [ ], 50 | testing ? false, 51 | src, 52 | ... 53 | }: 54 | let 55 | _config = pkgs.neovimUtils.makeNeovimConfig (config // { wrapRc = false; }); 56 | _package = if package == null then packages.${pkgs.system}.stable else package; 57 | wrappedPackage = pkgs.wrapNeovimUnstable _package _config; 58 | in 59 | wrappedPackage.overrideAttrs (old: { 60 | generatedWrapperArgs = old.generatedWrapperArgs or [ ] ++ [ 61 | "--set" 62 | "NVIM_APPNAME" 63 | appname 64 | "--set" 65 | "NIX_ABS_CONFIG" 66 | ( 67 | if testing then 68 | ( 69 | if builtins ? currentSystem then 70 | builtins.getEnv "PWD" 71 | else 72 | builtins.throw '' 73 | Building a tolerable-nvim-nix config with `testing = true`, but building in a pure mode! 74 | 75 | Try again with --impure. 76 | '' 77 | ) 78 | else 79 | src 80 | ) 81 | "--prefix" 82 | "PATH" 83 | ":" 84 | (pkgs.lib.makeBinPath path) 85 | ]; 86 | buildInputs = old.buildInputs or [ ] ++ buildInputs; 87 | inherit doCheck; 88 | nativeCheckInputs = [ pkgs.luajitPackages.luacheck ]; 89 | checkPhase = '' 90 | luacheck ${src}/${appname} --only 0 91 | 92 | TOLERABLE_CHECK=1 $out/bin/nvim \ 93 | --headless \ 94 | --cmd "source ${./pre-check.lua}" \ 95 | -c "source ${./post-check.lua}" || (>&2 cat stderr.txt && exit 1) 96 | ''; 97 | }); 98 | 99 | templates = 100 | let 101 | welcomeText = '' 102 | Rename the `example/` directory, and references to it in `flake.nix`, to something unique for your neovim configuration. 103 | 104 | Read more about configuring neovim with `:h config`. 105 | 106 | Run your neovim configuration with `nix run .#neovim`. 107 | ''; 108 | in 109 | { 110 | stable = { 111 | inherit welcomeText; 112 | path = ./templates/stable; 113 | description = "A simple stable neovim configuration flake"; 114 | }; 115 | 116 | nightly = { 117 | inherit welcomeText; 118 | path = ./templates/nightly; 119 | description = "A simple nightly neovim configuration flake"; 120 | }; 121 | }; 122 | }; 123 | } 124 | -------------------------------------------------------------------------------- /templates/nightly/flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "flake-compat": { 4 | "flake": false, 5 | "locked": { 6 | "lastModified": 1747046372, 7 | "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", 8 | "owner": "edolstra", 9 | "repo": "flake-compat", 10 | "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", 11 | "type": "github" 12 | }, 13 | "original": { 14 | "owner": "edolstra", 15 | "repo": "flake-compat", 16 | "type": "github" 17 | } 18 | }, 19 | "flake-compat_2": { 20 | "flake": false, 21 | "locked": { 22 | "lastModified": 1696426674, 23 | "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", 24 | "owner": "edolstra", 25 | "repo": "flake-compat", 26 | "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", 27 | "type": "github" 28 | }, 29 | "original": { 30 | "owner": "edolstra", 31 | "repo": "flake-compat", 32 | "type": "github" 33 | } 34 | }, 35 | "flake-parts": { 36 | "inputs": { 37 | "nixpkgs-lib": [ 38 | "nightly", 39 | "nixpkgs" 40 | ] 41 | }, 42 | "locked": { 43 | "lastModified": 1743550720, 44 | "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", 45 | "owner": "hercules-ci", 46 | "repo": "flake-parts", 47 | "rev": "c621e8422220273271f52058f618c94e405bb0f5", 48 | "type": "github" 49 | }, 50 | "original": { 51 | "owner": "hercules-ci", 52 | "repo": "flake-parts", 53 | "type": "github" 54 | } 55 | }, 56 | "flake-parts_2": { 57 | "inputs": { 58 | "nixpkgs-lib": [ 59 | "nightly", 60 | "hercules-ci-effects", 61 | "nixpkgs" 62 | ] 63 | }, 64 | "locked": { 65 | "lastModified": 1743550720, 66 | "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", 67 | "owner": "hercules-ci", 68 | "repo": "flake-parts", 69 | "rev": "c621e8422220273271f52058f618c94e405bb0f5", 70 | "type": "github" 71 | }, 72 | "original": { 73 | "id": "flake-parts", 74 | "type": "indirect" 75 | } 76 | }, 77 | "git-hooks": { 78 | "inputs": { 79 | "flake-compat": "flake-compat_2", 80 | "gitignore": "gitignore", 81 | "nixpkgs": [ 82 | "nightly", 83 | "nixpkgs" 84 | ] 85 | }, 86 | "locked": { 87 | "lastModified": 1747372754, 88 | "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", 89 | "owner": "cachix", 90 | "repo": "git-hooks.nix", 91 | "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", 92 | "type": "github" 93 | }, 94 | "original": { 95 | "owner": "cachix", 96 | "repo": "git-hooks.nix", 97 | "type": "github" 98 | } 99 | }, 100 | "gitignore": { 101 | "inputs": { 102 | "nixpkgs": [ 103 | "nightly", 104 | "git-hooks", 105 | "nixpkgs" 106 | ] 107 | }, 108 | "locked": { 109 | "lastModified": 1709087332, 110 | "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", 111 | "owner": "hercules-ci", 112 | "repo": "gitignore.nix", 113 | "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", 114 | "type": "github" 115 | }, 116 | "original": { 117 | "owner": "hercules-ci", 118 | "repo": "gitignore.nix", 119 | "type": "github" 120 | } 121 | }, 122 | "hercules-ci-effects": { 123 | "inputs": { 124 | "flake-parts": "flake-parts_2", 125 | "nixpkgs": [ 126 | "nightly", 127 | "nixpkgs" 128 | ] 129 | }, 130 | "locked": { 131 | "lastModified": 1747284884, 132 | "narHash": "sha256-lTSKhRrassMcJ1ZsuUVunyl/F04vvCKY80HB/4rvvm4=", 133 | "owner": "hercules-ci", 134 | "repo": "hercules-ci-effects", 135 | "rev": "7168f6002a6b48a9b6151e1e97e974a0722ecfdc", 136 | "type": "github" 137 | }, 138 | "original": { 139 | "owner": "hercules-ci", 140 | "repo": "hercules-ci-effects", 141 | "type": "github" 142 | } 143 | }, 144 | "neovim-src": { 145 | "flake": false, 146 | "locked": { 147 | "lastModified": 1747523215, 148 | "narHash": "sha256-55RIMak4EwDaLdNTkM+4d3LjC90wlkNRaaG8DupK3AM=", 149 | "owner": "neovim", 150 | "repo": "neovim", 151 | "rev": "5661f74ab2a6ef0c497ef2ea49bc58ea89b6ab6b", 152 | "type": "github" 153 | }, 154 | "original": { 155 | "owner": "neovim", 156 | "repo": "neovim", 157 | "type": "github" 158 | } 159 | }, 160 | "nightly": { 161 | "inputs": { 162 | "flake-compat": "flake-compat", 163 | "flake-parts": "flake-parts", 164 | "git-hooks": "git-hooks", 165 | "hercules-ci-effects": "hercules-ci-effects", 166 | "neovim-src": "neovim-src", 167 | "nixpkgs": "nixpkgs", 168 | "treefmt-nix": "treefmt-nix" 169 | }, 170 | "locked": { 171 | "lastModified": 1747554936, 172 | "narHash": "sha256-LBFEVTt3JISA/HDHznJanvlNvKllNfILr1nfI8KZmVM=", 173 | "owner": "nix-community", 174 | "repo": "neovim-nightly-overlay", 175 | "rev": "5a732bf3edb47767a25c3b05436e4c21f91edf91", 176 | "type": "github" 177 | }, 178 | "original": { 179 | "owner": "nix-community", 180 | "repo": "neovim-nightly-overlay", 181 | "type": "github" 182 | } 183 | }, 184 | "nixpkgs": { 185 | "locked": { 186 | "lastModified": 1747426788, 187 | "narHash": "sha256-N4cp0asTsJCnRMFZ/k19V9akkxb7J/opG+K+jU57JGc=", 188 | "owner": "NixOS", 189 | "repo": "nixpkgs", 190 | "rev": "12a55407652e04dcf2309436eb06fef0d3713ef3", 191 | "type": "github" 192 | }, 193 | "original": { 194 | "owner": "NixOS", 195 | "ref": "nixpkgs-unstable", 196 | "repo": "nixpkgs", 197 | "type": "github" 198 | } 199 | }, 200 | "nixpkgs_2": { 201 | "locked": { 202 | "lastModified": 1747467164, 203 | "narHash": "sha256-JBXbjJ0t6T6BbVc9iPVquQI9XSXCGQJD8c8SgnUquus=", 204 | "owner": "nixos", 205 | "repo": "nixpkgs", 206 | "rev": "3fcbdcfc707e0aa42c541b7743e05820472bdaec", 207 | "type": "github" 208 | }, 209 | "original": { 210 | "owner": "nixos", 211 | "ref": "nixpkgs-unstable", 212 | "repo": "nixpkgs", 213 | "type": "github" 214 | } 215 | }, 216 | "root": { 217 | "inputs": { 218 | "nightly": "nightly", 219 | "nixpkgs": "nixpkgs_2", 220 | "tolerable": "tolerable" 221 | } 222 | }, 223 | "tolerable": { 224 | "inputs": { 225 | "nightly": [ 226 | "nightly" 227 | ], 228 | "nixpkgs": [ 229 | "nixpkgs" 230 | ] 231 | }, 232 | "locked": { 233 | "lastModified": 1747536211, 234 | "narHash": "sha256-Q3UXuMo1c1IrWkSbut6cO5+NdgL3vnV2qEbPPopx0Fs=", 235 | "owner": "wires-org", 236 | "repo": "tolerable-nvim-nix", 237 | "rev": "469b8b91e2ee7ccc8e6db2b77904180481514456", 238 | "type": "github" 239 | }, 240 | "original": { 241 | "owner": "wires-org", 242 | "repo": "tolerable-nvim-nix", 243 | "type": "github" 244 | } 245 | }, 246 | "treefmt-nix": { 247 | "inputs": { 248 | "nixpkgs": [ 249 | "nightly", 250 | "nixpkgs" 251 | ] 252 | }, 253 | "locked": { 254 | "lastModified": 1747469671, 255 | "narHash": "sha256-bo1ptiFoNqm6m1B2iAhJmWCBmqveLVvxom6xKmtuzjg=", 256 | "owner": "numtide", 257 | "repo": "treefmt-nix", 258 | "rev": "ab0378b61b0d85e73a8ab05d5c6029b5bd58c9fb", 259 | "type": "github" 260 | }, 261 | "original": { 262 | "owner": "numtide", 263 | "repo": "treefmt-nix", 264 | "type": "github" 265 | } 266 | } 267 | }, 268 | "root": "root", 269 | "version": 7 270 | } 271 | --------------------------------------------------------------------------------