parent
a4dbd22402
commit
d47b04a887
11 changed files with 538 additions and 97 deletions
132
flake.lock
132
flake.lock
|
@ -2,9 +2,7 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"audiomenu": {
|
"audiomenu": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-schemas": [
|
"flake-schemas": "flake-schemas",
|
||||||
"flake-schemas"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
@ -221,7 +219,6 @@
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nvim-config",
|
|
||||||
"neovim-nightly",
|
"neovim-nightly",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
@ -243,7 +240,6 @@
|
||||||
"flake-parts_2": {
|
"flake-parts_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nvim-config",
|
|
||||||
"neovim-nightly",
|
"neovim-nightly",
|
||||||
"hercules-ci-effects",
|
"hercules-ci-effects",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
|
@ -276,6 +272,20 @@
|
||||||
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A.tar.gz"
|
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-schemas_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1697467827,
|
||||||
|
"narHash": "sha256-j8SR19V1SRysyJwpOBF4TLuAvAjF5t+gMiboN4gYQDU=",
|
||||||
|
"rev": "764932025c817d4e500a8d2a4d8c565563923d29",
|
||||||
|
"revCount": 29,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.2/018b3da8-4cc3-7fbb-8ff7-1588413c53e2/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
|
@ -386,7 +396,7 @@
|
||||||
},
|
},
|
||||||
"haumea": {
|
"haumea": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1685133229,
|
"lastModified": 1685133229,
|
||||||
|
@ -407,7 +417,6 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nvim-config",
|
|
||||||
"neovim-nightly",
|
"neovim-nightly",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
@ -448,9 +457,7 @@
|
||||||
},
|
},
|
||||||
"jpassmenu": {
|
"jpassmenu": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-schemas": [
|
"flake-schemas": "flake-schemas_2",
|
||||||
"flake-schemas"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
@ -473,18 +480,17 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nvim-config",
|
|
||||||
"neovim-nightly",
|
"neovim-nightly",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "contrib",
|
"dir": "contrib",
|
||||||
"lastModified": 1707941489,
|
"lastModified": 1708040042,
|
||||||
"narHash": "sha256-S5KG+iYMFVHIEfeXSWYei2jcHs6kOfhM1pUoVQ9G/Lw=",
|
"narHash": "sha256-8iloeE/jALIKcOcYKgTlI9i7iDW7n52Epqps27jGklU=",
|
||||||
"owner": "neovim",
|
"owner": "neovim",
|
||||||
"repo": "neovim",
|
"repo": "neovim",
|
||||||
"rev": "d09957e0a06f350443c750d9838b5f1016c0cccc",
|
"rev": "04dfa2eea914086a9f42a5a00a33e9524f9fded4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -501,16 +507,15 @@
|
||||||
"hercules-ci-effects": "hercules-ci-effects",
|
"hercules-ci-effects": "hercules-ci-effects",
|
||||||
"neovim-flake": "neovim-flake",
|
"neovim-flake": "neovim-flake",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nvim-config",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1707955468,
|
"lastModified": 1708041826,
|
||||||
"narHash": "sha256-ZVka2bcB1AQTiVWqp2yH9Rnsd4Tvpcf5NXXzJIp7QNE=",
|
"narHash": "sha256-zW7F31gW4HCBYcImcXxold4ntZdlEr/NTlMVhEMA5dw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "neovim-nightly-overlay",
|
"repo": "neovim-nightly-overlay",
|
||||||
"rev": "0b6b4afc71e14d7f17f4e4a367ce271b9d398432",
|
"rev": "1afaeebc41dab1029b855b17d78f2348e8dd49e3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -537,7 +542,6 @@
|
||||||
"nix-github-actions": {
|
"nix-github-actions": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nvim-config",
|
|
||||||
"nixneovim",
|
"nixneovim",
|
||||||
"nixneovimplugins",
|
"nixneovimplugins",
|
||||||
"poetry2nix",
|
"poetry2nix",
|
||||||
|
@ -563,13 +567,11 @@
|
||||||
"flake-utils": "flake-utils_2",
|
"flake-utils": "flake-utils_2",
|
||||||
"haumea": "haumea",
|
"haumea": "haumea",
|
||||||
"home-manager": [
|
"home-manager": [
|
||||||
"nvim-config",
|
|
||||||
"home-manager"
|
"home-manager"
|
||||||
],
|
],
|
||||||
"nix-flake-tests": "nix-flake-tests",
|
"nix-flake-tests": "nix-flake-tests",
|
||||||
"nixneovimplugins": "nixneovimplugins",
|
"nixneovimplugins": "nixneovimplugins",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nvim-config",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nmd": "nmd",
|
"nmd": "nmd",
|
||||||
|
@ -592,12 +594,10 @@
|
||||||
"nixneovimplugins": {
|
"nixneovimplugins": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": [
|
"flake-utils": [
|
||||||
"nvim-config",
|
|
||||||
"nixneovim",
|
"nixneovim",
|
||||||
"flake-utils"
|
"flake-utils"
|
||||||
],
|
],
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nvim-config",
|
|
||||||
"nixneovim",
|
"nixneovim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
|
@ -619,30 +619,32 @@
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1707842204,
|
"lastModified": 1708091350,
|
||||||
"narHash": "sha256-M+HAq1qWQBi/gywaMZwX0odU+Qb/XeqVeANGKRBDOwU=",
|
"narHash": "sha256-o28BJYi68qqvHipT7V2jkWxDiMS1LF9nxUsou+eFUPQ=",
|
||||||
"rev": "f1b2f71c86a5b1941d20608db0b1e88a07d31303",
|
"owner": "NixOS",
|
||||||
"revCount": 1570,
|
"repo": "nixos-hardware",
|
||||||
"type": "tarball",
|
"rev": "106d3fec43bcea19cb2e061ca02531d54b542ce3",
|
||||||
"url": "https://api.flakehub.com/f/pinned/NixOS/nixos-hardware/0.1.1570%2Brev-f1b2f71c86a5b1941d20608db0b1e88a07d31303/018da354-4a5c-7384-b2a6-d88f9fd65c1e/source.tar.gz"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"owner": "NixOS",
|
||||||
"url": "https://flakehub.com/f/NixOS/nixos-hardware/0.1.%2A.tar.gz"
|
"repo": "nixos-hardware",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1707956935,
|
"lastModified": 1681001314,
|
||||||
"narHash": "sha256-ZL2TrjVsiFNKOYwYQozpbvQSwvtV/3Me7Zwhmdsfyu4=",
|
"narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=",
|
||||||
"rev": "a4d4fe8c5002202493e87ec8dbc91335ff55552c",
|
"owner": "nix-community",
|
||||||
"revCount": 584422,
|
"repo": "nixpkgs.lib",
|
||||||
"type": "tarball",
|
"rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4",
|
||||||
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.584422%2Brev-a4d4fe8c5002202493e87ec8dbc91335ff55552c/018dad59-c2e8-7e35-bb7c-808d295bb34a/source.tar.gz"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"owner": "nix-community",
|
||||||
"url": "https://flakehub.com/f/NixOS/nixpkgs/0.1.%2A.tar.gz"
|
"repo": "nixpkgs.lib",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
|
@ -663,17 +665,17 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681001314,
|
"lastModified": 1707956935,
|
||||||
"narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=",
|
"narHash": "sha256-ZL2TrjVsiFNKOYwYQozpbvQSwvtV/3Me7Zwhmdsfyu4=",
|
||||||
"owner": "nix-community",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs",
|
||||||
"rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4",
|
"rev": "a4d4fe8c5002202493e87ec8dbc91335ff55552c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"id": "nixpkgs",
|
||||||
"repo": "nixpkgs.lib",
|
"ref": "nixos-unstable",
|
||||||
"type": "github"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nmd": {
|
"nmd": {
|
||||||
|
@ -709,45 +711,15 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nvim-config": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-schemas": [
|
|
||||||
"flake-schemas"
|
|
||||||
],
|
|
||||||
"home-manager": [
|
|
||||||
"home-manager"
|
|
||||||
],
|
|
||||||
"neovim-nightly": "neovim-nightly",
|
|
||||||
"nixneovim": "nixneovim",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1707972311,
|
|
||||||
"narHash": "sha256-vbDgWhmGuw6x1WTbdlroNG6ufWq7qsCI/hCsvs9FxG4=",
|
|
||||||
"owner": "jalil-salame",
|
|
||||||
"repo": "nvim-config",
|
|
||||||
"rev": "2a106ae6aaa425a3841aecb6f882b45bc2747102",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "jalil-salame",
|
|
||||||
"repo": "nvim-config",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"poetry2nix": {
|
"poetry2nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": [
|
"flake-utils": [
|
||||||
"nvim-config",
|
|
||||||
"nixneovim",
|
"nixneovim",
|
||||||
"nixneovimplugins",
|
"nixneovimplugins",
|
||||||
"flake-utils"
|
"flake-utils"
|
||||||
],
|
],
|
||||||
"nix-github-actions": "nix-github-actions",
|
"nix-github-actions": "nix-github-actions",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nvim-config",
|
|
||||||
"nixneovim",
|
"nixneovim",
|
||||||
"nixneovimplugins",
|
"nixneovimplugins",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
|
@ -794,12 +766,12 @@
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"audiomenu": "audiomenu",
|
"audiomenu": "audiomenu",
|
||||||
"flake-schemas": "flake-schemas",
|
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"jpassmenu": "jpassmenu",
|
"jpassmenu": "jpassmenu",
|
||||||
|
"neovim-nightly": "neovim-nightly",
|
||||||
|
"nixneovim": "nixneovim",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"nvim-config": "nvim-config",
|
|
||||||
"pre-commit-hooks": "pre-commit-hooks",
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
"stylix": "stylix"
|
"stylix": "stylix"
|
||||||
}
|
}
|
||||||
|
|
31
flake.nix
31
flake.nix
|
@ -8,29 +8,27 @@
|
||||||
inputs.stylix.inputs.nixpkgs.follows = "nixpkgs";
|
inputs.stylix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.stylix.inputs.home-manager.follows = "home-manager";
|
inputs.stylix.inputs.home-manager.follows = "home-manager";
|
||||||
|
|
||||||
inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1.*.tar.gz";
|
inputs.nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
inputs.jpassmenu.url = "github:jalil-salame/jpassmenu";
|
inputs.jpassmenu.url = "github:jalil-salame/jpassmenu";
|
||||||
inputs.jpassmenu.inputs.nixpkgs.follows = "nixpkgs";
|
inputs.jpassmenu.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.jpassmenu.inputs.flake-schemas.follows = "flake-schemas";
|
|
||||||
|
|
||||||
inputs.audiomenu.url = "github:jalil-salame/audiomenu";
|
inputs.audiomenu.url = "github:jalil-salame/audiomenu";
|
||||||
inputs.audiomenu.inputs.nixpkgs.follows = "nixpkgs";
|
inputs.audiomenu.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.audiomenu.inputs.flake-schemas.follows = "flake-schemas";
|
|
||||||
|
|
||||||
inputs.nvim-config.url = "github:jalil-salame/nvim-config";
|
inputs.nixneovim.url = "github:NixNeovim/NixNeovim";
|
||||||
inputs.nvim-config.inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixneovim.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.nvim-config.inputs.home-manager.follows = "home-manager";
|
inputs.nixneovim.inputs.home-manager.follows = "home-manager";
|
||||||
inputs.nvim-config.inputs.flake-schemas.follows = "flake-schemas";
|
|
||||||
|
|
||||||
# WARN: Flakehub is outdated (39 days out of date)
|
# WARN: Flakehub is outdated (39 days out of date)
|
||||||
# inputs.home-manager.url = "https://flakehub.com/f/nix-community/home-manager/0.1.*.tar.gz";
|
# inputs.home-manager.url = "https://flakehub.com/f/nix-community/home-manager/0.1.*.tar.gz";
|
||||||
inputs.home-manager.url = "github:nix-community/home-manager";
|
inputs.home-manager.url = "github:nix-community/home-manager";
|
||||||
inputs.home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
inputs.home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
inputs.flake-schemas.url = "https://flakehub.com/f/DeterminateSystems/flake-schemas/*.tar.gz";
|
inputs.nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||||
|
|
||||||
inputs.nixos-hardware.url = "https://flakehub.com/f/NixOS/nixos-hardware/0.1.*.tar.gz";
|
inputs.neovim-nightly.url = "github:nix-community/neovim-nightly-overlay";
|
||||||
|
inputs.neovim-nightly.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
inputs.pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
|
inputs.pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
|
||||||
inputs.pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs";
|
inputs.pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
@ -38,7 +36,6 @@
|
||||||
# Flake outputs that other flakes can use
|
# Flake outputs that other flakes can use
|
||||||
outputs =
|
outputs =
|
||||||
{ self
|
{ self
|
||||||
, flake-schemas
|
|
||||||
, nixpkgs
|
, nixpkgs
|
||||||
, stylix
|
, stylix
|
||||||
, home-manager
|
, home-manager
|
||||||
|
@ -46,7 +43,8 @@
|
||||||
, pre-commit-hooks
|
, pre-commit-hooks
|
||||||
, jpassmenu
|
, jpassmenu
|
||||||
, audiomenu
|
, audiomenu
|
||||||
, nvim-config
|
, nixneovim
|
||||||
|
, neovim-nightly
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (nixpkgs) lib;
|
inherit (nixpkgs) lib;
|
||||||
|
@ -60,9 +58,6 @@
|
||||||
doc = forEachSupportedSystem ({ pkgs, system }: import ./docs { inherit pkgs lib; });
|
doc = forEachSupportedSystem ({ pkgs, system }: import ./docs { inherit pkgs lib; });
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# Schemas tell Nix about the structure of your flake's outputs
|
|
||||||
inherit (flake-schemas) schemas;
|
|
||||||
|
|
||||||
checks = forEachSupportedSystem ({ pkgs, system }: {
|
checks = forEachSupportedSystem ({ pkgs, system }: {
|
||||||
pre-commit-check = pre-commit-hooks.lib.${system}.run {
|
pre-commit-check = pre-commit-hooks.lib.${system}.run {
|
||||||
src = builtins.path { path = ./.; name = "configuration.nix"; };
|
src = builtins.path { path = ./.; name = "configuration.nix"; };
|
||||||
|
@ -75,8 +70,8 @@
|
||||||
|
|
||||||
# Provide necessary overlays
|
# Provide necessary overlays
|
||||||
overlays = {
|
overlays = {
|
||||||
nixneovim = nvim-config.overlays.nixneovim;
|
nixneovim = nixneovim.overlays.default;
|
||||||
neovim-nightly = nvim-config.overlays.neovim-nightly;
|
neovim-nightly = neovim-nightly.overlays.default;
|
||||||
jpassmenu = jpassmenu.overlays.default;
|
jpassmenu = jpassmenu.overlays.default;
|
||||||
audiomenu = audiomenu.overlays.default;
|
audiomenu = audiomenu.overlays.default;
|
||||||
};
|
};
|
||||||
|
@ -128,6 +123,10 @@
|
||||||
|
|
||||||
nixosModules =
|
nixosModules =
|
||||||
let
|
let
|
||||||
|
nvim-config.imports = [
|
||||||
|
nixneovim.nixosModules.homeManager
|
||||||
|
./nvim
|
||||||
|
];
|
||||||
overlays = builtins.attrValues self.overlays;
|
overlays = builtins.attrValues self.overlays;
|
||||||
homeManagerModuleSandalone = import ./home { inherit overlays nvim-config stylix; };
|
homeManagerModuleSandalone = import ./home { inherit overlays nvim-config stylix; };
|
||||||
homeManagerModuleNixOS = import ./home { inherit overlays nvim-config; };
|
homeManagerModuleNixOS = import ./home { inherit overlays nvim-config; };
|
||||||
|
|
|
@ -7,7 +7,7 @@ in
|
||||||
imports = [
|
imports = [
|
||||||
# Apply overlays
|
# Apply overlays
|
||||||
{ nixpkgs = { inherit overlays; }; }
|
{ nixpkgs = { inherit overlays; }; }
|
||||||
nvim-config.nixosModules.default
|
nvim-config
|
||||||
./options.nix
|
./options.nix
|
||||||
./gui
|
./gui
|
||||||
./users.nix
|
./users.nix
|
||||||
|
|
93
nvim/augroups.nix
Normal file
93
nvim/augroups.nix
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
{
|
||||||
|
highlightOnYank.name = "highlightOnYank";
|
||||||
|
highlightOnYank.autocmds = [
|
||||||
|
{
|
||||||
|
event = "TextYankPost";
|
||||||
|
pattern = "*";
|
||||||
|
luaCallback = ''
|
||||||
|
vim.highlight.on_yank {
|
||||||
|
higroup = (
|
||||||
|
vim.fn['hlexists'] 'HighlightedyankRegion' > 0 and 'HighlightedyankRegion' or 'IncSearch'
|
||||||
|
),
|
||||||
|
timeout = 200,
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
runLinter.name = "runLinter";
|
||||||
|
runLinter.autocmds = [
|
||||||
|
{
|
||||||
|
event = "BufWritePost";
|
||||||
|
pattern = "*";
|
||||||
|
luaCallback = ''
|
||||||
|
require("lint").try_lint()
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
restoreCursorPosition.name = "restoreCursorPosition";
|
||||||
|
restoreCursorPosition.autocmds = [
|
||||||
|
{
|
||||||
|
event = "BufReadPost";
|
||||||
|
pattern = "*";
|
||||||
|
luaCallback = ''
|
||||||
|
if vim.fn.line '\'"' > 0 and vim.fn.line '\'"' <= vim.fn.line '$' then
|
||||||
|
vim.cmd [[execute "normal! g'\""]]
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
lspConfig.name = "lspConfig";
|
||||||
|
lspConfig.autocmds = [
|
||||||
|
{
|
||||||
|
event = "LspAttach";
|
||||||
|
pattern = "*";
|
||||||
|
luaCallback =
|
||||||
|
let
|
||||||
|
opts = "noremap = true, buffer = bufnr";
|
||||||
|
in
|
||||||
|
''
|
||||||
|
local bufnr = opts.buf
|
||||||
|
local client = vim.lsp.get_client_by_id(opts.data.client_id)
|
||||||
|
local capabilities = client.server_capabilities
|
||||||
|
-- Set Omnifunc if supported
|
||||||
|
if capabilities.completionProvider then
|
||||||
|
vim.bo[bufnr].omnifunc = "v:lua.vim.lsp.omnifunc"
|
||||||
|
end
|
||||||
|
-- Enable inlay hints if supported
|
||||||
|
if capabilities.inlayHintProvider then
|
||||||
|
vim.lsp.inlay_hint.enable(bufnr, true)
|
||||||
|
end
|
||||||
|
vim.keymap.set('n', -- Some Lsp servers do not advertise inlay hints properly so enable this keybinding regardless
|
||||||
|
'<space>ht',
|
||||||
|
function()
|
||||||
|
vim.lsp.inlay_hint.enable(0, not vim.lsp.inlay_hint.is_enabled())
|
||||||
|
end,
|
||||||
|
{ desc = '[H]ints [T]oggle', ${opts} }
|
||||||
|
)
|
||||||
|
-- Enable hover if supported
|
||||||
|
if capabilities.hoverProvider then
|
||||||
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover, { desc = 'Hover Documentation', ${opts} })
|
||||||
|
end
|
||||||
|
-- Enable rename if supported
|
||||||
|
if capabilities.renameProvider then
|
||||||
|
vim.keymap.set('n', '<leader>r', vim.lsp.buf.rename, { desc = '[R]ename', ${opts} })
|
||||||
|
end
|
||||||
|
-- Enable code actions if supported
|
||||||
|
if capabilities.codeActionProvider then
|
||||||
|
vim.keymap.set({ 'n', 'v' }, '<leader>fa', vim.lsp.buf.code_action, { desc = '[F]ind Code [A]ctions', ${opts} })
|
||||||
|
end
|
||||||
|
-- Enable formatting if supported
|
||||||
|
if capabilities.documentFormattingProvider then
|
||||||
|
vim.keymap.set('n', '<leader>w', function() vim.lsp.buf.format { async = true } end, { desc = 'Format Buffer', ${opts} })
|
||||||
|
end
|
||||||
|
-- Other keybinds
|
||||||
|
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { desc = '[G]o to [D]efinition', ${opts} })
|
||||||
|
vim.keymap.set('n', 'gt', vim.lsp.buf.type_definition, { desc = '[G]o to [T]ype Definition', ${opts} })
|
||||||
|
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, { desc = '[G]o to [I]mplementation', ${opts} })
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
90
nvim/default.nix
Normal file
90
nvim/default.nix
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
{ pkgs, ... }: {
|
||||||
|
|
||||||
|
programs.nixneovim = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.neovim-nightly;
|
||||||
|
defaultEditor = true;
|
||||||
|
colorschemes.gruvbox-nvim = {
|
||||||
|
enable = true;
|
||||||
|
bold = true;
|
||||||
|
transparentBg = true;
|
||||||
|
trueColor = true;
|
||||||
|
};
|
||||||
|
globals.mapleader = " ";
|
||||||
|
options = import ./options.nix;
|
||||||
|
plugins = import ./plugins;
|
||||||
|
mappings = import ./mappings.nix;
|
||||||
|
augroups = import ./augroups.nix;
|
||||||
|
extraPlugins = builtins.attrValues {
|
||||||
|
inherit (pkgs.vimExtraPlugins) dressing-nvim rustaceanvim idris2-nvim nui-nvim nvim-lint;
|
||||||
|
inherit (pkgs.vimPlugins) lualine-lsp-progress nvim-web-devicons FTerm-nvim cmp-cmdline formatter-nvim;
|
||||||
|
};
|
||||||
|
# Formatting
|
||||||
|
extraPackages = builtins.attrValues {
|
||||||
|
# Formatters
|
||||||
|
inherit (pkgs) stylua shfmt taplo yamlfmt alejandra;
|
||||||
|
};
|
||||||
|
extraLuaPreConfig = ''
|
||||||
|
-- Lua Pre Config
|
||||||
|
if vim.fn.has 'termguicolors' then
|
||||||
|
-- Enable RGB colors
|
||||||
|
vim.g.termguicolors = true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Useful function
|
||||||
|
local has_words_before = function()
|
||||||
|
-- unpack = unpack or table.unpack
|
||||||
|
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||||
|
return col ~= 0
|
||||||
|
and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match '%s' == nil
|
||||||
|
end
|
||||||
|
-- END: Lua Pre Config
|
||||||
|
'';
|
||||||
|
extraLuaPostConfig = ''
|
||||||
|
do -- Setup cmp-cmdline
|
||||||
|
local cmp = require "cmp"
|
||||||
|
cmp.setup.cmdline("/", {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = cmp.config.sources { {name = "rg" }, { name = "buffer" } },
|
||||||
|
})
|
||||||
|
cmp.setup.cmdline(":", {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = cmp.config.sources({ { name = "path" } }, { { name = "cmdline" } })
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
do -- Setup dressing.nvim
|
||||||
|
-- require("dressing").setup()
|
||||||
|
end
|
||||||
|
|
||||||
|
do -- Setup formatter.nvim
|
||||||
|
-- local util = require "formatter.util"
|
||||||
|
require("formatter").setup {
|
||||||
|
logging = true,
|
||||||
|
log_level = vim.log.levels.WARN,
|
||||||
|
["*"] = { require("formatter.filetypes.any").remove_trailing_whitespace },
|
||||||
|
-- Filetype Formatting
|
||||||
|
c = { require("formatter.filetypes.c").clangformat },
|
||||||
|
sh = { require("formatter.filetypes.sh").shfmt },
|
||||||
|
cpp = { require("formatter.filetypes.cpp").clangformat },
|
||||||
|
lua = { require("formatter.filetypes.lua").stylua },
|
||||||
|
nix = { require("formatter.filetypes.nix").alejandra },
|
||||||
|
zig = { require("formatter.filetypes.zig").zigfmt },
|
||||||
|
rust = { require("formatter.filetypes.rust").rustfmt },
|
||||||
|
toml = { require("formatter.filetypes.toml").taplo },
|
||||||
|
yaml = { require("formatter.filetypes.yaml").yamlfmt },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
do -- Setup idris2-nvim
|
||||||
|
require("idris2").setup { }
|
||||||
|
end
|
||||||
|
|
||||||
|
do -- Setup nvim-lint
|
||||||
|
require("lint").linters_by_ft = {
|
||||||
|
latex = { "chktex", "typos" },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
91
nvim/mappings.nix
Normal file
91
nvim/mappings.nix
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
{
|
||||||
|
# Quickfix
|
||||||
|
normal."<leader>qo" = {
|
||||||
|
action = "'<cmd>Copen<CR>'";
|
||||||
|
desc = "Quickfix Open";
|
||||||
|
};
|
||||||
|
normal."<leader>qq" = {
|
||||||
|
action = "'<cmd>cclose<CR>'";
|
||||||
|
desc = "Quickfix Quit";
|
||||||
|
};
|
||||||
|
normal."<leader>qj" = {
|
||||||
|
action = "'<cmd>cnext<CR>'";
|
||||||
|
desc = "Quickfix next [J]";
|
||||||
|
};
|
||||||
|
normal."<leader>qk" = {
|
||||||
|
action = "'<cmd>cprev<CR>'";
|
||||||
|
desc = "Quickfix previous [K]";
|
||||||
|
};
|
||||||
|
# Open or create file
|
||||||
|
normal."<leader>gf" = {
|
||||||
|
action = "'<cmd>e <cfile><CR>'";
|
||||||
|
desc = "Go to File";
|
||||||
|
};
|
||||||
|
# Keep Selection when indenting
|
||||||
|
visualOnly.">" = {
|
||||||
|
action = "'>gv'";
|
||||||
|
desc = "Indent Selection";
|
||||||
|
};
|
||||||
|
visualOnly."<" = {
|
||||||
|
action = "'<gv'";
|
||||||
|
desc = "Deindent Selection";
|
||||||
|
};
|
||||||
|
# Diagnostics
|
||||||
|
normal."<leader>dj" = {
|
||||||
|
action = "vim.diagnostic.goto_next";
|
||||||
|
desc = "Diagnostics next [J]";
|
||||||
|
};
|
||||||
|
normal."<leader>dk" = {
|
||||||
|
action = "vim.diagnostic.goto_prev";
|
||||||
|
desc = "Diagnostics previous [K]";
|
||||||
|
};
|
||||||
|
normal."<leader>xx" = {
|
||||||
|
action = "require('trouble').toggle";
|
||||||
|
desc = "Toggle trouble";
|
||||||
|
};
|
||||||
|
normal."<leader>xw" = {
|
||||||
|
action = "function() require('trouble').toggle('workspace_diagnostics') end";
|
||||||
|
desc = "Toggle Workspace trouble";
|
||||||
|
};
|
||||||
|
normal."<leader>xd" = {
|
||||||
|
action = "function() require('trouble').toggle('document_diagnostics') end";
|
||||||
|
desc = "Toggle Document trouble";
|
||||||
|
};
|
||||||
|
normal."<leader>xq" = {
|
||||||
|
action = "function() require('trouble').toggle('quickfix') end";
|
||||||
|
desc = "Toggle Quickfix trouble";
|
||||||
|
};
|
||||||
|
normal."<leader>xl" = {
|
||||||
|
action = "function() require('trouble').toggle('loclist') end";
|
||||||
|
desc = "Toggle Loclist trouble";
|
||||||
|
};
|
||||||
|
normal."gR" = {
|
||||||
|
action = "function() require('trouble').toggle('lsp_references') end";
|
||||||
|
desc = "Toggle lsp References trouble";
|
||||||
|
};
|
||||||
|
# Telescope
|
||||||
|
normal."<leader>ff" = {
|
||||||
|
action = "require('telescope.builtin').find_files";
|
||||||
|
desc = "Find Files";
|
||||||
|
};
|
||||||
|
normal."<leader>fg" = {
|
||||||
|
action = "require('telescope.builtin').live_grep";
|
||||||
|
desc = "Find Grep";
|
||||||
|
};
|
||||||
|
normal."<leader>fh" = {
|
||||||
|
action = "require('telescope.builtin').help_tags";
|
||||||
|
desc = "Find Help";
|
||||||
|
};
|
||||||
|
normal."<leader>fb" = {
|
||||||
|
action = "require('telescope.builtin').buffers";
|
||||||
|
desc = "Find Buffer";
|
||||||
|
};
|
||||||
|
normal."<leader>fd" = {
|
||||||
|
action = "require('telescope.builtin').diagnostics";
|
||||||
|
desc = "Find Diagnostics";
|
||||||
|
};
|
||||||
|
normal."<leader>fq" = {
|
||||||
|
action = "require('telescope.builtin').quickfix";
|
||||||
|
desc = "Find Quickfix";
|
||||||
|
};
|
||||||
|
}
|
22
nvim/options.nix
Normal file
22
nvim/options.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
# Appearance
|
||||||
|
number = true;
|
||||||
|
relativenumber = true;
|
||||||
|
colorcolumn = "+1";
|
||||||
|
cursorline = true;
|
||||||
|
wrap = false;
|
||||||
|
splitright = true;
|
||||||
|
# Tabs & indentation
|
||||||
|
smarttab = true;
|
||||||
|
autoindent = true;
|
||||||
|
smartindent = true;
|
||||||
|
# Search path
|
||||||
|
path = ".,/usr/include,**";
|
||||||
|
wildmenu = true;
|
||||||
|
hlsearch = true;
|
||||||
|
incsearch = true;
|
||||||
|
ignorecase = true; # Search ignores cases
|
||||||
|
smartcase = true; # Unless it has a capital letter
|
||||||
|
# Enable local configuration :h 'exrc'
|
||||||
|
exrc = true; # safe since nvim 0.9
|
||||||
|
}
|
88
nvim/plugins/cmp.nix
Normal file
88
nvim/plugins/cmp.nix
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
# Snippets
|
||||||
|
snippet.luasnip.enable = true;
|
||||||
|
# Completion Sources
|
||||||
|
sources = {
|
||||||
|
buffer.enable = true;
|
||||||
|
buffer.groupIndex = 3;
|
||||||
|
calc.enable = true;
|
||||||
|
calc.groupIndex = 2;
|
||||||
|
conventionalcommits.enable = true;
|
||||||
|
conventionalcommits.groupIndex = 1;
|
||||||
|
# cmdline.enable = true;
|
||||||
|
crates.enable = true;
|
||||||
|
crates.groupIndex = 1;
|
||||||
|
digraphs.enable = true;
|
||||||
|
digraphs.groupIndex = 3;
|
||||||
|
# emoji.enable = true;
|
||||||
|
# fuzzy_buffer.enable = true;
|
||||||
|
# fuzzy_path.enable = true;
|
||||||
|
luasnip.enable = true;
|
||||||
|
luasnip.groupIndex = 1;
|
||||||
|
nvim_lsp.enable = true;
|
||||||
|
nvim_lsp.groupIndex = 1;
|
||||||
|
nvim_lsp_document_symbol.enable = true;
|
||||||
|
nvim_lsp_document_symbol.groupIndex = 1;
|
||||||
|
nvim_lsp_signature_help.enable = true;
|
||||||
|
nvim_lsp_signature_help.groupIndex = 1;
|
||||||
|
path.enable = true;
|
||||||
|
path.groupIndex = 2;
|
||||||
|
# rg.enable = true;
|
||||||
|
spell.enable = true;
|
||||||
|
spell.groupIndex = 2;
|
||||||
|
treesitter.enable = true;
|
||||||
|
treesitter.groupIndex = 2;
|
||||||
|
zsh.enable = true;
|
||||||
|
zsh.groupIndex = 1;
|
||||||
|
};
|
||||||
|
# Menu Icons
|
||||||
|
formatting.format = "require('lspkind').cmp_format { mode = 'symbol', maxwidth = 50 }";
|
||||||
|
mappingPresets = [ "insert" ];
|
||||||
|
mapping = {
|
||||||
|
"<C-n>" = {
|
||||||
|
modes = [ "i" "s" ];
|
||||||
|
action = ''
|
||||||
|
function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif require("luasnip").expand_or_jumpable() then
|
||||||
|
require("luasnip").expand_or_jump()
|
||||||
|
elseif has_words_before() then
|
||||||
|
cmp.complete()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"<C-p>" = {
|
||||||
|
modes = [ "i" "s" ];
|
||||||
|
action = ''
|
||||||
|
function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif require("luasnip").jumpable(-1) then
|
||||||
|
require("luasnip").jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"<C-u>" = ''
|
||||||
|
cmp.mapping(function(fallback)
|
||||||
|
if require("luasnip").choice_active() then
|
||||||
|
require("luasnip").next_choice()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
'';
|
||||||
|
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
|
||||||
|
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
||||||
|
"<C-Space>" = "cmp.mapping.complete {}";
|
||||||
|
"<C-e>" = "cmp.mapping.close()";
|
||||||
|
"<CR>" = "cmp.mapping.confirm { select = true }";
|
||||||
|
};
|
||||||
|
}
|
17
nvim/plugins/default.nix
Normal file
17
nvim/plugins/default.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
colorizer.enable = true;
|
||||||
|
colorizer.userDefaultOptions.names = false; # disable named colors (i.e. red)
|
||||||
|
gitsigns.enable = true;
|
||||||
|
lspconfig = import ./lspconfig.nix;
|
||||||
|
lspkind.enable = true;
|
||||||
|
lualine = import ./lualine.nix;
|
||||||
|
luasnip.enable = true;
|
||||||
|
luasnip.extraConfig = { update_events = "TextChanged,TextChangedI"; };
|
||||||
|
nvim-cmp = import ./cmp.nix;
|
||||||
|
telescope.enable = true;
|
||||||
|
treesitter.enable = true;
|
||||||
|
treesitter.indent = true;
|
||||||
|
treesitter.incrementalSelection.enable = true;
|
||||||
|
treesitter-context.enable = true;
|
||||||
|
trouble.enable = true;
|
||||||
|
}
|
19
nvim/plugins/lspconfig.nix
Normal file
19
nvim/plugins/lspconfig.nix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
servers.bashls.enable = true;
|
||||||
|
servers.clangd.enable = true;
|
||||||
|
servers.html.enable = true;
|
||||||
|
# servers.lua-language-server.enable = true;
|
||||||
|
servers.jsonls.enable = true;
|
||||||
|
servers.nil.enable = true;
|
||||||
|
servers.ocamllsp.enable = true;
|
||||||
|
servers.pyright.enable = true;
|
||||||
|
servers.rnix-lsp.enable = true;
|
||||||
|
servers.ruff-lsp.enable = true;
|
||||||
|
# servers.rust-analyzer.enable = true;
|
||||||
|
# servers.serve_d.enable = true;
|
||||||
|
servers.taplo.enable = true;
|
||||||
|
servers.texlab.enable = true;
|
||||||
|
servers.typst-lsp.enable = true;
|
||||||
|
# servers.vimls.enable = true;
|
||||||
|
}
|
50
nvim/plugins/lualine.nix
Normal file
50
nvim/plugins/lualine.nix
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
theme = "gruvbox";
|
||||||
|
sections = {
|
||||||
|
lualine_a = [ "mode" ];
|
||||||
|
lualine_b = [ "filename" "branch" ];
|
||||||
|
lualine_c = [
|
||||||
|
{
|
||||||
|
lsp_progress = {
|
||||||
|
separators = {
|
||||||
|
component = " ";
|
||||||
|
progress = " | ";
|
||||||
|
percentage = {
|
||||||
|
pre = "";
|
||||||
|
post = "%% ";
|
||||||
|
};
|
||||||
|
title = {
|
||||||
|
pre = "";
|
||||||
|
post = ": ";
|
||||||
|
};
|
||||||
|
lsp_client_name = {
|
||||||
|
pre = "[";
|
||||||
|
post = "]";
|
||||||
|
};
|
||||||
|
spinner = {
|
||||||
|
pre = "";
|
||||||
|
post = "";
|
||||||
|
};
|
||||||
|
message = {
|
||||||
|
pre = "(";
|
||||||
|
post = ")";
|
||||||
|
commenced = "In Progress";
|
||||||
|
completed = "Completed";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
display_components = [ "lsp_client_name" "spinner" "title" "percentage" "message" ];
|
||||||
|
timer = {
|
||||||
|
progress_enddelay = 500;
|
||||||
|
spinner = 1000;
|
||||||
|
lsp_client_name_enddelay = 1000;
|
||||||
|
};
|
||||||
|
spinner_symbols = [ "🌑 " "🌒 " "🌓 " "🌔 " "🌕 " "🌖 " "🌗 " "🌘 " ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
lualine_x = [ ];
|
||||||
|
lualine_y = [ "encoding" "fileformat" "filetype" ];
|
||||||
|
lualine_z = [ "location" ];
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue