cleanup
This commit is contained in:
@@ -1,5 +0,0 @@
|
|||||||
{ util, inputs, ... }:
|
|
||||||
util.vimPlugin {
|
|
||||||
name = "commander.nvim";
|
|
||||||
source = inputs.commander-nvim;
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,9 @@
|
|||||||
{ lib, inputs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
pkgs-unstable,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
inherit (builtins) attrNames filter readDir;
|
inherit (builtins) attrNames filter readDir;
|
||||||
dirs =
|
dirs =
|
||||||
@@ -13,7 +18,7 @@ lib.composeManyExtensions (
|
|||||||
dir:
|
dir:
|
||||||
import ./${dir} {
|
import ./${dir} {
|
||||||
util = util dir;
|
util = util dir;
|
||||||
inherit inputs;
|
inherit inputs pkgs-unstable;
|
||||||
}
|
}
|
||||||
) dirs
|
) dirs
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
{ util, ... }: util.package { }
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
stdenv,
|
|
||||||
fetchurl,
|
|
||||||
python3,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "fb-client";
|
|
||||||
version = "2.3.0";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://paste.xinu.at/data/client/fb-${version}.tar.gz";
|
|
||||||
sha256 = "sha256-EWTsoG7qy0IQ1GLEuvHEAEJyphl9hz1hFm53k1OdGYM=";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = [
|
|
||||||
(python3.withPackages (
|
|
||||||
pyPkgs: with pyPkgs; [
|
|
||||||
pycurl
|
|
||||||
pyxdg
|
|
||||||
]
|
|
||||||
))
|
|
||||||
];
|
|
||||||
|
|
||||||
makeFlags = [ "PREFIX=$(out)" ];
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
mainProgram = "fb";
|
|
||||||
description = "Client for paste.xinu.at";
|
|
||||||
homepage = "https://paste.xinu.at";
|
|
||||||
license = licenses.gpl3Only;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{ inputs, util, ... }:
|
|
||||||
util.vimPlugin {
|
|
||||||
name = "gen.nvim";
|
|
||||||
source = inputs.gen-nvim;
|
|
||||||
}
|
|
||||||
@@ -1 +1 @@
|
|||||||
{ util, inputs, ... }: util.package { inherit inputs; }
|
{ util, pkgs-unstable, ... }: util.package { inherit pkgs-unstable; }
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{ pkgs, inputs }:
|
{ pkgs, pkgs-unstable }:
|
||||||
let
|
let
|
||||||
yubikey-manager = inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.yubikey-manager;
|
yubikey-manager = pkgs-unstable.yubikey-manager;
|
||||||
ykman = "${yubikey-manager}/bin/ykman";
|
ykman = "${yubikey-manager}/bin/ykman";
|
||||||
sk = "${pkgs.skim}/bin/sk";
|
sk = "${pkgs.skim}/bin/sk";
|
||||||
wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy";
|
wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy";
|
||||||
|
|||||||
@@ -1,17 +1,4 @@
|
|||||||
dir: {
|
dir: {
|
||||||
vimPlugin =
|
|
||||||
{ name, source }:
|
|
||||||
final: prev: {
|
|
||||||
vimPlugins = prev.vimPlugins // {
|
|
||||||
"${dir}" = prev.vimUtils.buildVimPlugin {
|
|
||||||
pname = name;
|
|
||||||
version = source.lastModifiedDate;
|
|
||||||
src = source;
|
|
||||||
doCheck = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
package = attrs: final: prev: {
|
package = attrs: final: prev: {
|
||||||
"${dir}" = final.callPackage ./${dir}/package.nix (attrs // { pkgs = prev; });
|
"${dir}" = final.callPackage ./${dir}/package.nix (attrs // { pkgs = prev; });
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
{ inputs, util, ... }:
|
|
||||||
util.vimPlugin {
|
|
||||||
name = "vimpeccable";
|
|
||||||
source = inputs.vimpeccable;
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{ inputs, util, ... }:
|
|
||||||
util.vimPlugin {
|
|
||||||
name = "windline.nvim";
|
|
||||||
source = inputs.windline-nvim;
|
|
||||||
}
|
|
||||||
165
flake.lock
generated
165
flake.lock
generated
@@ -47,22 +47,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"commander-nvim": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1717816527,
|
|
||||||
"narHash": "sha256-eXOHR+lwHVJze6jvFuDlvcUtFSpV8EJqlWvXLRWeCNI=",
|
|
||||||
"owner": "FeiyouG",
|
|
||||||
"repo": "commander.nvim",
|
|
||||||
"rev": "84101e8eb1613a72bbdec655b734f891d8a00694",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "FeiyouG",
|
|
||||||
"repo": "commander.nvim",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"crane": {
|
"crane": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750266157,
|
"lastModified": 1750266157,
|
||||||
@@ -312,22 +296,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gen-nvim": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1746271309,
|
|
||||||
"narHash": "sha256-s12r8dvva0O2VvEPjOQvpjVpEehxsa4AWoGHXFYxQlI=",
|
|
||||||
"owner": "David-Kunz",
|
|
||||||
"repo": "gen.nvim",
|
|
||||||
"rev": "c8e1f574d4a3a839dde73a87bdc319a62ee1e559",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "David-Kunz",
|
|
||||||
"repo": "gen.nvim",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gitignore": {
|
"gitignore": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -456,22 +424,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"keycloak-realms": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1721562747,
|
|
||||||
"narHash": "sha256-uHNWpe/j5Q7Ak9+SNQkCPy7t9ayQUDAt+2tZ7OFYv6Q=",
|
|
||||||
"owner": "rorosen",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "79862894befe49e2837e3f5eefe11433eef6611a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "rorosen",
|
|
||||||
"ref": "keycloak-realm-import",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ksoloti-pr": {
|
"ksoloti-pr": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1730719587,
|
"lastModified": 1730719587,
|
||||||
@@ -511,28 +463,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nextcloud": {
|
|
||||||
"inputs": {
|
|
||||||
"keycloak-realms": "keycloak-realms",
|
|
||||||
"nixos-shell": "nixos-shell",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1730827799,
|
|
||||||
"narHash": "sha256-79sE72rlztvhx37PYh6m2TLE2J6ybVvDRMQBRWaohqc=",
|
|
||||||
"owner": "onny",
|
|
||||||
"repo": "nixos-nextcloud-testumgebung",
|
|
||||||
"rev": "c3fdbf165814d403a8f8e81ff8e15adcbe7eadd0",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "onny",
|
|
||||||
"repo": "nixos-nextcloud-testumgebung",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-github-actions": {
|
"nix-github-actions": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -570,24 +500,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixos-shell": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs_4"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1728308049,
|
|
||||||
"narHash": "sha256-wjAkG8f5orZ4+wgXmEaFAJkVJS6ORqfgM0zzLEvbUNw=",
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "nixos-shell",
|
|
||||||
"rev": "9373ca9522f844a3b8029720c74f340e560e4462",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "nixos-shell",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1717196966,
|
"lastModified": 1717196966,
|
||||||
@@ -692,21 +604,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1628465643,
|
|
||||||
"narHash": "sha256-QSNw9bDq9uGUniQQtakRuw4m21Jxugm23SXLVgEV4DM=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "6ef4f522d63f22b40004319778761040d3197390",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_5": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751741127,
|
"lastModified": 1751741127,
|
||||||
"narHash": "sha256-t75Shs76NgxjZSgvvZZ9qOmz5zuBE8buUaYD28BMTxg=",
|
"narHash": "sha256-t75Shs76NgxjZSgvvZZ9qOmz5zuBE8buUaYD28BMTxg=",
|
||||||
@@ -771,25 +668,19 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
"colmena": "colmena",
|
"colmena": "colmena",
|
||||||
"commander-nvim": "commander-nvim",
|
|
||||||
"dnote": "dnote",
|
"dnote": "dnote",
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"gen-nvim": "gen-nvim",
|
|
||||||
"gtrackmap": "gtrackmap",
|
"gtrackmap": "gtrackmap",
|
||||||
"hastebin": "hastebin",
|
"hastebin": "hastebin",
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
"ketchup": "ketchup",
|
"ketchup": "ketchup",
|
||||||
"ksoloti-pr": "ksoloti-pr",
|
"ksoloti-pr": "ksoloti-pr",
|
||||||
"lanzaboote": "lanzaboote",
|
"lanzaboote": "lanzaboote",
|
||||||
"nextcloud": "nextcloud",
|
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs_5",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"syntax-renderer": "syntax-renderer",
|
"syntax-renderer": "syntax-renderer",
|
||||||
"vimpeccable": "vimpeccable",
|
"workout-sync": "workout-sync"
|
||||||
"windline-nvim": "windline-nvim",
|
|
||||||
"workout-sync": "workout-sync",
|
|
||||||
"zen-browser": "zen-browser"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
@@ -905,38 +796,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vimpeccable": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1640723263,
|
|
||||||
"narHash": "sha256-MnEOCb/0wvvcYnTOROmVO8HUge3dWmuweAXdpx1zbXE=",
|
|
||||||
"owner": "svermeulen",
|
|
||||||
"repo": "vimpeccable",
|
|
||||||
"rev": "bd19b2a86a3d4a0ee184412aa3edb7ed57025d56",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "svermeulen",
|
|
||||||
"repo": "vimpeccable",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"windline-nvim": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1743727738,
|
|
||||||
"narHash": "sha256-FIpbRzJMK/NcNnXJp7VXhMVPSknGYkLyaUqzhw5TYJY=",
|
|
||||||
"owner": "windwp",
|
|
||||||
"repo": "windline.nvim",
|
|
||||||
"rev": "1630ab15aa3349f1ad32ef78d5cff632ae74625d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "windwp",
|
|
||||||
"repo": "windline.nvim",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workout-sync": {
|
"workout-sync": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -956,26 +815,6 @@
|
|||||||
"repo": "workout-sync",
|
"repo": "workout-sync",
|
||||||
"type": "sourcehut"
|
"type": "sourcehut"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"zen-browser": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727721329,
|
|
||||||
"narHash": "sha256-QYlWZwUSwrM7BuO+dXclZIwoPvBIuJr6GpFKv9XKFPI=",
|
|
||||||
"owner": "MarceColl",
|
|
||||||
"repo": "zen-browser-flake",
|
|
||||||
"rev": "e6ab73f405e9a2896cce5956c549a9cc359e5fcc",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "MarceColl",
|
|
||||||
"repo": "zen-browser-flake",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
24
flake.nix
24
flake.nix
@@ -3,10 +3,6 @@
|
|||||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
||||||
nextcloud = {
|
|
||||||
url = "github:onny/nixos-nextcloud-testumgebung";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
gtrackmap = {
|
gtrackmap = {
|
||||||
url = "github:gtrackmap/gtrackmap";
|
url = "github:gtrackmap/gtrackmap";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -19,22 +15,6 @@
|
|||||||
nixpkgs.follows = "nixpkgs";
|
nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
commander-nvim = {
|
|
||||||
url = "github:FeiyouG/commander.nvim";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
vimpeccable = {
|
|
||||||
url = "github:svermeulen/vimpeccable";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
windline-nvim = {
|
|
||||||
url = "github:windwp/windline.nvim";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
gen-nvim = {
|
|
||||||
url = "github:David-Kunz/gen.nvim";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
ketchup = {
|
ketchup = {
|
||||||
url = "github:repomaa/ketchup";
|
url = "github:repomaa/ketchup";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -64,10 +44,6 @@
|
|||||||
url = "sourcehut:~repomaa/syntax-renderer";
|
url = "sourcehut:~repomaa/syntax-renderer";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
zen-browser = {
|
|
||||||
url = "github:MarceColl/zen-browser-flake";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
outputs =
|
outputs =
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
pkgs-unstable,
|
||||||
inputs,
|
inputs,
|
||||||
self,
|
self,
|
||||||
...
|
...
|
||||||
@@ -9,8 +10,6 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../gnome
|
../gnome
|
||||||
../custom-programs
|
|
||||||
./neovim
|
|
||||||
./dnote.nix
|
./dnote.nix
|
||||||
../modules/zed
|
../modules/zed
|
||||||
inputs.hastebin.nixosModules.hm
|
inputs.hastebin.nixosModules.hm
|
||||||
@@ -28,8 +27,8 @@
|
|||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
htop
|
htop
|
||||||
gnupg
|
gnupg
|
||||||
inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.yubioath-flutter
|
pkgs-unstable.yubioath-flutter
|
||||||
inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.yubikey-manager
|
pkgs-unstable.yubikey-manager
|
||||||
gcc
|
gcc
|
||||||
sqlite
|
sqlite
|
||||||
noto-fonts
|
noto-fonts
|
||||||
@@ -78,10 +77,9 @@
|
|||||||
nixfmt-rfc-style
|
nixfmt-rfc-style
|
||||||
tree
|
tree
|
||||||
virt-manager
|
virt-manager
|
||||||
inputs.zen-browser.packages.${pkgs.system}.specific
|
pkgs-unstable.ncspot
|
||||||
inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.ncspot
|
|
||||||
devbox
|
devbox
|
||||||
inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.feishin
|
pkgs-unstable.feishin
|
||||||
openscad
|
openscad
|
||||||
bambu-studio
|
bambu-studio
|
||||||
];
|
];
|
||||||
@@ -117,11 +115,6 @@
|
|||||||
gpu-context = "wayland";
|
gpu-context = "wayland";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
fb-client = {
|
|
||||||
enable = true;
|
|
||||||
pastebin = "https://p.jokke.space";
|
|
||||||
clipboard_cmd = "${pkgs.wl-copy-both}/bin/wl-copy";
|
|
||||||
};
|
|
||||||
kitty = {
|
kitty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
font = {
|
font = {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
inputs,
|
inputs,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
pkgs-unstable,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
@@ -23,11 +24,10 @@ let
|
|||||||
phases = [ "installPhase" ];
|
phases = [ "installPhase" ];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
cp ${unstablePkgs.dnote}/bin/dnote-cli $out/bin/dnote
|
cp ${pkgs-unstable.dnote}/bin/dnote-cli $out/bin/dnote
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
cfg = config.programs.dnote;
|
cfg = config.programs.dnote;
|
||||||
unstablePkgs = inputs.nixpkgs-unstable.legacyPackages.${pkgs.system};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.programs.dnote = {
|
options.programs.dnote = {
|
||||||
|
|||||||
@@ -1,495 +0,0 @@
|
|||||||
{ pkgs, lib, ... }:
|
|
||||||
{
|
|
||||||
imports = [ ../../modules/neovim ];
|
|
||||||
|
|
||||||
programs.neovim =
|
|
||||||
let
|
|
||||||
toLua = lib.generators.toLua { };
|
|
||||||
luaMap = rhs: {
|
|
||||||
rhs = rhs;
|
|
||||||
lua = true;
|
|
||||||
options = {
|
|
||||||
silent = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
defaultEditor = false;
|
|
||||||
options = {
|
|
||||||
number = true;
|
|
||||||
expandtab = true;
|
|
||||||
tabstop = 2;
|
|
||||||
shiftwidth = 2;
|
|
||||||
softtabstop = 2;
|
|
||||||
signcolumn = "yes";
|
|
||||||
modeline = true;
|
|
||||||
hidden = true;
|
|
||||||
listchars = "tab:▸ ,trail:·";
|
|
||||||
list = true;
|
|
||||||
undofile = true;
|
|
||||||
winblend = 30;
|
|
||||||
};
|
|
||||||
withTreesitterPlugins = p: [
|
|
||||||
p.lua
|
|
||||||
p.vim
|
|
||||||
p.vimdoc
|
|
||||||
p.nix
|
|
||||||
p.query
|
|
||||||
p.make
|
|
||||||
];
|
|
||||||
formatters = [
|
|
||||||
{
|
|
||||||
filetypes = [ "nix" ];
|
|
||||||
globs = [ "*.nix" ];
|
|
||||||
exe = "${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt";
|
|
||||||
stdin = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
filetypes = [ "lua" ];
|
|
||||||
globs = [ "*.lua" ];
|
|
||||||
exe = "${pkgs.stylua}/bin/stylua";
|
|
||||||
args = _: [ "-" ];
|
|
||||||
stdin = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
filetypes = [ "crystal" ];
|
|
||||||
globs = [ "*.cr" ];
|
|
||||||
exe = "${pkgs.crystal}/bin/crystal";
|
|
||||||
args = file: [
|
|
||||||
"tool"
|
|
||||||
"format"
|
|
||||||
];
|
|
||||||
stdin = false;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
autoCommands = [
|
|
||||||
{
|
|
||||||
event = "FileType";
|
|
||||||
pattern = [ "lua" ];
|
|
||||||
command = "setlocal expandtab";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
event = "FileType";
|
|
||||||
pattern = [
|
|
||||||
"makefile"
|
|
||||||
];
|
|
||||||
command = "setlocal shiftwidth=4 tabstop=4 softtabstop=4 noexpandtab";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
event = "FileType";
|
|
||||||
pattern = [
|
|
||||||
"gitcommit"
|
|
||||||
"gitrebase"
|
|
||||||
"gitconfig"
|
|
||||||
];
|
|
||||||
command = "set bufhidden=delete";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
event = "BufWinEnter";
|
|
||||||
pattern = "*";
|
|
||||||
command = "if line2byte(line('$')) > 1000000 | syntax clear | endif";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
signs = {
|
|
||||||
error = "";
|
|
||||||
warning = "";
|
|
||||||
hint = "";
|
|
||||||
info = "";
|
|
||||||
};
|
|
||||||
env = {
|
|
||||||
GIT_EDITOR = "nvr -cc split --remote-wait";
|
|
||||||
EDITOR = "nvr -cc close --remote-wait";
|
|
||||||
};
|
|
||||||
leader = " ";
|
|
||||||
mappings = {
|
|
||||||
normal = {
|
|
||||||
"<C-h>" = "<C-w>h";
|
|
||||||
"<C-j>" = "<C-w>j";
|
|
||||||
"<C-k>" = "<C-w>k";
|
|
||||||
"<C-l>" = "<c-w>l";
|
|
||||||
"n" = "n";
|
|
||||||
};
|
|
||||||
visual = {
|
|
||||||
"<tab>" = ">gv^";
|
|
||||||
"<s-tab>" = "<gv^";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
snippets = {
|
|
||||||
snippets = ./snippets;
|
|
||||||
luasnippets = ./luasnippets;
|
|
||||||
};
|
|
||||||
plug = with pkgs.vimPlugins; [
|
|
||||||
vimpeccable
|
|
||||||
vim-crystal
|
|
||||||
{
|
|
||||||
plugin = telescope-nvim;
|
|
||||||
dependencies = [
|
|
||||||
plenary-nvim
|
|
||||||
telescope-file-browser-nvim
|
|
||||||
commander-nvim
|
|
||||||
telescope-ui-select-nvim
|
|
||||||
];
|
|
||||||
config =
|
|
||||||
let
|
|
||||||
commands = [
|
|
||||||
{
|
|
||||||
cmd = "<cmd>!rails db:migrate<cr>";
|
|
||||||
desc = "Run rails migrations";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
cmd = "<cmd>!yarn codegen --no-watch<cr>";
|
|
||||||
desc = "Run yarn codegen";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
cmd = "<cmd>!rails translations:update<cr>";
|
|
||||||
desc = "Update i18n translations";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
cmd = "<cmd>!deploy staging-v6 -t $(git branch --show-current)<cr>";
|
|
||||||
desc = "Deploy to staging";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
cmd = "<cmd>!db-restore -d db-prod-inc<cr>";
|
|
||||||
desc = "Restore db from prod-inc";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
mappings = {
|
|
||||||
i = {
|
|
||||||
"<c-h>" = "which_key";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
''
|
|
||||||
local telescope = require('telescope')
|
|
||||||
local commander = require('commander')
|
|
||||||
|
|
||||||
commander.add(${toLua commands})
|
|
||||||
telescope.load_extension('commander')
|
|
||||||
telescope.load_extension('ui-select')
|
|
||||||
|
|
||||||
telescope.setup({
|
|
||||||
defaults = { mappings = ${toLua mappings}, winblend = 30; },
|
|
||||||
pickers = {
|
|
||||||
find_files = {
|
|
||||||
find_command = { "${pkgs.fd}/bin/fd", "-H", "--type=file", "--type=symlink" }
|
|
||||||
},
|
|
||||||
},
|
|
||||||
extensions = {
|
|
||||||
file_browser = {
|
|
||||||
hidden = true
|
|
||||||
},
|
|
||||||
}
|
|
||||||
})
|
|
||||||
'';
|
|
||||||
mappings = {
|
|
||||||
normal =
|
|
||||||
(lib.attrsets.mapAttrs (key: value: luaMap "require('telescope.builtin').${value}") {
|
|
||||||
"<leader>f" = "find_files";
|
|
||||||
"<leader>r" = "live_grep";
|
|
||||||
"<leader>b" = "buffers";
|
|
||||||
"<leader>h" = "help_tags";
|
|
||||||
"<leader>o" = "oldfiles";
|
|
||||||
"<leader>s" = "git_status";
|
|
||||||
"<leader>/" = "current_buffer_fuzzy_find";
|
|
||||||
"<leader>c" = "git_branches";
|
|
||||||
})
|
|
||||||
// (lib.attrsets.mapAttrs (key: value: luaMap "require('telescope').extensions.${value}") {
|
|
||||||
"<leader>n" = "file_browser.file_browser";
|
|
||||||
"<leader>:" = "commander.filter";
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
plugin = base16-nvim;
|
|
||||||
config = ''
|
|
||||||
vim.opt.termguicolors = true
|
|
||||||
vim.cmd('colorscheme base16-tomorrow-night')
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
{
|
|
||||||
plugin = octo-nvim;
|
|
||||||
config = "require('octo').setup()";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
plugin = gitsigns-nvim;
|
|
||||||
dependencies = [ plenary-nvim ];
|
|
||||||
config = ''
|
|
||||||
require('gitsigns').setup(${
|
|
||||||
toLua {
|
|
||||||
current_line_blame = true;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
{
|
|
||||||
plugin = windline-nvim;
|
|
||||||
config = "require('wlsample.airline')";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
plugin = luasnip;
|
|
||||||
config = ''
|
|
||||||
require('luasnip.loaders.from_snipmate').lazy_load()
|
|
||||||
require('luasnip.loaders.from_lua').lazy_load()
|
|
||||||
local luasnip = require('luasnip')
|
|
||||||
luasnip.setup({ updateevents = 'TextChanged,TextChangedI' })
|
|
||||||
'';
|
|
||||||
mappings =
|
|
||||||
let
|
|
||||||
mapping = rhs: luaMap "function() ${rhs} end";
|
|
||||||
mappings = {
|
|
||||||
"<c-n>" = mapping "luasnip.jump(1)";
|
|
||||||
"<c-p>" = mapping "luasnip.jump(-1)";
|
|
||||||
"<c-e>" = mapping "if luasnip.choice_active() then luasnip.change_choice(1) end";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
insert = mappings;
|
|
||||||
select = mappings;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{ plugin = vim-abolish; }
|
|
||||||
{ plugin = NrrwRgn; }
|
|
||||||
{
|
|
||||||
plugin = trouble-nvim;
|
|
||||||
dependencies = [ nvim-web-devicons ];
|
|
||||||
mappings =
|
|
||||||
let
|
|
||||||
mapping = rhs: luaMap "function() require('trouble').${rhs} end";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
normal = {
|
|
||||||
"<leader>xx" = mapping "open()";
|
|
||||||
"<leader>xd" = mapping "open('document_diagnostics')";
|
|
||||||
"<leader>xl" = mapping "open('loclist')";
|
|
||||||
"gR" = mapping "open('lsp_references')";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{ plugin = twilight-nvim; }
|
|
||||||
{ plugin = which-key-nvim; }
|
|
||||||
{ plugin = zen-mode-nvim; }
|
|
||||||
{
|
|
||||||
plugin = diffview-nvim;
|
|
||||||
config =
|
|
||||||
let
|
|
||||||
config = {
|
|
||||||
default = {
|
|
||||||
layout = "diff2_vertical";
|
|
||||||
};
|
|
||||||
merge_tool = {
|
|
||||||
layout = "diff3_vertical";
|
|
||||||
};
|
|
||||||
file_history = {
|
|
||||||
layout = "diff2_vertical";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
''
|
|
||||||
require('diffview').setup(${toLua config})
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
{
|
|
||||||
plugin = toggleterm-nvim;
|
|
||||||
dependencies = [
|
|
||||||
plenary-nvim
|
|
||||||
pkgs.lazygit
|
|
||||||
];
|
|
||||||
config = ''
|
|
||||||
local Terminal = require('toggleterm.terminal').Terminal
|
|
||||||
local lazygit = Terminal:new({
|
|
||||||
cmd = "${pkgs.lazygit}/bin/lazygit",
|
|
||||||
dir = "git_dir",
|
|
||||||
direction = "float",
|
|
||||||
hidden = true,
|
|
||||||
on_open = function (term)
|
|
||||||
vim.cmd('startinsert!')
|
|
||||||
vim.api.nvim_buf_set_keymap(term.bufnr, 'n', 'q', '<cmd>close<cr>', { noremap = true, silent = true })
|
|
||||||
end,
|
|
||||||
on_close = function (term)
|
|
||||||
vim.cmd('startinsert!')
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
'';
|
|
||||||
mappings = {
|
|
||||||
normal = {
|
|
||||||
"<leader>g" = luaMap "function () lazygit:toggle() end";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
plugin = copilot-cmp;
|
|
||||||
dependencies = [
|
|
||||||
{
|
|
||||||
plugin = copilot-lua;
|
|
||||||
config = ''
|
|
||||||
require('copilot').setup({
|
|
||||||
suggestion = { enabled = false },
|
|
||||||
panel = { enajkbled = false },
|
|
||||||
copilot_node_command = '${pkgs.nodejs}/bin/node',
|
|
||||||
})
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
config = ''
|
|
||||||
require('copilot_cmp').setup()
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
{
|
|
||||||
plugin = gen-nvim;
|
|
||||||
config =
|
|
||||||
let
|
|
||||||
config = {
|
|
||||||
model = "llama3";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
''
|
|
||||||
require('gen').setup(${toLua config})
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
{
|
|
||||||
plugin = bufferline-nvim;
|
|
||||||
config =
|
|
||||||
let
|
|
||||||
options = {
|
|
||||||
hover = {
|
|
||||||
enabled = true;
|
|
||||||
delay = 200;
|
|
||||||
reveal = [ "close" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
''
|
|
||||||
require('bufferline').setup({ options = ${toLua options} })
|
|
||||||
'';
|
|
||||||
dependencies = [
|
|
||||||
{
|
|
||||||
plugin = nvim-web-devicons;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
lsp = {
|
|
||||||
servers = with pkgs; [
|
|
||||||
{
|
|
||||||
name = "lua_ls";
|
|
||||||
config = {
|
|
||||||
settings = {
|
|
||||||
Lua = {
|
|
||||||
diagnostics = {
|
|
||||||
globals = [ "vim" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
package = lua-language-server;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "yamlls";
|
|
||||||
config = {
|
|
||||||
settings = {
|
|
||||||
redhat = {
|
|
||||||
telemetry = {
|
|
||||||
enabled = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
yaml = {
|
|
||||||
schemas = {
|
|
||||||
"https://json.schemastore.org/github-workflow" = ".github/workflows/*.yml";
|
|
||||||
"https://json.schemastore.org/prettierrc" = ".prettierrc";
|
|
||||||
"https://json.schemastore.org/prettierrc.yml" = ".prettierrc.yml";
|
|
||||||
"https://json.schemastore.org/prettierrc.yaml" = ".prettierrc.yaml";
|
|
||||||
"https://json.schemastore.org/prettier.config.yml" = "prettier.config.yml";
|
|
||||||
"https://json.schemastore.org/prettier.config.yaml" = "prettier.config.yaml";
|
|
||||||
"https://schema.jokke.space/caddy.json" = [
|
|
||||||
"*caddy*.yml"
|
|
||||||
"*caddy*.yaml"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
package = yaml-language-server;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "tailwindcss";
|
|
||||||
config = {
|
|
||||||
settings = {
|
|
||||||
tailwindCSS = {
|
|
||||||
classAttributes = [
|
|
||||||
"class"
|
|
||||||
"className"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
package = tailwindcss-language-server;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "ts_ls";
|
|
||||||
package = nodePackages.typescript-language-server;
|
|
||||||
config = {
|
|
||||||
single_file_support = false;
|
|
||||||
};
|
|
||||||
rootPattern = [ "package.json" ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "eslint";
|
|
||||||
package = vscode-langservers-extracted;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "nixd";
|
|
||||||
package = nixd;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "bashls";
|
|
||||||
package = nodePackages.bash-language-server.overrideAttrs (oldAttrs: {
|
|
||||||
buildDependencies = [ shellcheck ];
|
|
||||||
afterInstall = ''
|
|
||||||
wrapProgram "$out/bin/bash-language-server" --prefix PATH : "${shellcheck}/bin"
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "crystalline";
|
|
||||||
package = crystalline;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "rust_analyzer";
|
|
||||||
package = rust-analyzer;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
mappings = {
|
|
||||||
buf = {
|
|
||||||
declaration = "gD";
|
|
||||||
definition = "gd";
|
|
||||||
hover = "K";
|
|
||||||
implementation = "gi";
|
|
||||||
type_definition = "<leader>D";
|
|
||||||
rename = "<leader>rn";
|
|
||||||
code_action = "<leader>ca";
|
|
||||||
};
|
|
||||||
diagnostic = {
|
|
||||||
show_line_diagnostics = "<leader>e";
|
|
||||||
goto_prev = "[d";
|
|
||||||
goto_next = "]d";
|
|
||||||
set_loclist = "<leader>q";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraLuaConfig = ''
|
|
||||||
local function close_all_other_buffers(opts)
|
|
||||||
local current_buf = vim.api.nvim_get_current_buf()
|
|
||||||
local buffers = vim.api.nvim_list_bufs()
|
|
||||||
|
|
||||||
for _, buf in ipairs(buffers) do
|
|
||||||
if buf ~= current_buf and vim.api.nvim_buf_is_loaded(buf) then
|
|
||||||
vim.api.nvim_buf_delete(buf, { force = opts.bang })
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_create_user_command('CloseOtherBuffers', close_all_other_buffers, { bang = true })
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
local Formatters = {}
|
|
||||||
|
|
||||||
Formatters.setup = function()
|
|
||||||
local formatter = require('formatter')
|
|
||||||
local util = require('formatter.util')
|
|
||||||
|
|
||||||
local js = {
|
|
||||||
function ()
|
|
||||||
return {
|
|
||||||
exe = "npx",
|
|
||||||
args = {"prettier", "--stdin-filepath", util.escape_path(util.get_current_buffer_file_name())},
|
|
||||||
stdin = true,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
local ruby = {
|
|
||||||
function ()
|
|
||||||
return {
|
|
||||||
exe = "bundle",
|
|
||||||
args = {"exec", "rufo", "-x", "--filename", util.escape_path(util.get_current_buffer_file_name())},
|
|
||||||
stdin = true,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
formatter.setup {
|
|
||||||
filetype = {
|
|
||||||
javascript = js,
|
|
||||||
typescript = js,
|
|
||||||
javascriptreact = js,
|
|
||||||
typescriptreact = js,
|
|
||||||
svelte = js,
|
|
||||||
ruby = ruby,
|
|
||||||
haml = ruby,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("BufWritePost", {
|
|
||||||
pattern = { "*.js", "*.ts", "*.jsx", "*.tsx", "*.svelte", "*.rb", "*.haml", "Gemfile", "*.rake" },
|
|
||||||
command = "FormatWrite",
|
|
||||||
group = vim.api.nvim_create_augroup("FormatAutogroup", { clear = true }),
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
Formatters.setup()
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
local ls = require("luasnip")
|
|
||||||
local fmt = require("luasnip.extras.fmt").fmt
|
|
||||||
local s = ls.snippet
|
|
||||||
local sn = ls.snippet_node
|
|
||||||
local i = ls.insert_node
|
|
||||||
local f = ls.function_node
|
|
||||||
local d = ls.dynamic_node
|
|
||||||
|
|
||||||
return {
|
|
||||||
s(
|
|
||||||
{ trig = "fc", desc = "React.FC" },
|
|
||||||
fmt(
|
|
||||||
[[
|
|
||||||
import React from "react"
|
|
||||||
|
|
||||||
interface {props_name} {{
|
|
||||||
{prop_types}
|
|
||||||
}}
|
|
||||||
|
|
||||||
const {component_name}: React.FC<{props_name}> = ({props}) => {{
|
|
||||||
return (
|
|
||||||
{markup}
|
|
||||||
)
|
|
||||||
}}
|
|
||||||
|
|
||||||
export default {component_name}
|
|
||||||
]],
|
|
||||||
{
|
|
||||||
props_name = i(3, "Props"),
|
|
||||||
prop_types = i(2),
|
|
||||||
component_name = d(1, function()
|
|
||||||
local filename = vim.api.nvim_buf_get_name(0)
|
|
||||||
local component_name
|
|
||||||
|
|
||||||
if filename == "index.tsx" then
|
|
||||||
component_name = vim.fs.basename(vim.fs.dirname(filename))
|
|
||||||
else
|
|
||||||
component_name = vim.fs.basename(filename):match("(.+)%.tsx")
|
|
||||||
end
|
|
||||||
|
|
||||||
return sn(nil, i(1, component_name))
|
|
||||||
end),
|
|
||||||
props = f(function(prop_types)
|
|
||||||
local props = {}
|
|
||||||
|
|
||||||
for _, prop in ipairs(prop_types[1]) do
|
|
||||||
local parts = vim.split(prop, ":", { plain = true, trimempty = true })
|
|
||||||
local name = parts[1]
|
|
||||||
if name then
|
|
||||||
table.insert(props, vim.trim(name))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return "{ " .. table.concat(props, ", ") .. " }"
|
|
||||||
end, { 2 }),
|
|
||||||
markup = i(0),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
repeat_duplicates = true,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
),
|
|
||||||
s(
|
|
||||||
{ trig = "t", desc = "<tag>" },
|
|
||||||
fmt(
|
|
||||||
[[
|
|
||||||
<{tag}>
|
|
||||||
{children}
|
|
||||||
</{closing_tag}>
|
|
||||||
]],
|
|
||||||
{
|
|
||||||
tag = i(1, "div"),
|
|
||||||
closing_tag = f(function(tag)
|
|
||||||
return vim.split(tag[1][1], " ")[1]
|
|
||||||
end, { 1 }),
|
|
||||||
children = i(0),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
repeat_duplicates = true,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
),
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
snippet if ruby if statement
|
|
||||||
if $1
|
|
||||||
$0
|
|
||||||
end
|
|
||||||
|
|
||||||
snippet qt graphql query test
|
|
||||||
require "test_helper"
|
|
||||||
|
|
||||||
module Graphql
|
|
||||||
module Queries
|
|
||||||
class $1Test < ActionDispatch::IntegrationTest
|
|
||||||
setup do
|
|
||||||
@user = users(:tobias)
|
|
||||||
rack_login(@user)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "Query$1" do
|
|
||||||
run_query("Query$1") do |json, msg|
|
|
||||||
$0
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
test "Query$1 without $2 permissions" do
|
|
||||||
@user.permission.update!($2: 0)
|
|
||||||
|
|
||||||
run_query("Query$1") do |json, msg|
|
|
||||||
assert false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{ ... }:
|
|
||||||
let
|
|
||||||
inherit (builtins) attrNames filter readDir;
|
|
||||||
dirs =
|
|
||||||
let
|
|
||||||
files = readDir ./.;
|
|
||||||
in
|
|
||||||
filter (name: files."${name}" == "directory") (attrNames files);
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = map (dir: ./${dir}) dirs;
|
|
||||||
}
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.programs.fb-client;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.programs.fb-client =
|
|
||||||
let
|
|
||||||
inherit (lib) mkEnableOption mkOption types;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
enable = mkEnableOption { };
|
|
||||||
pastebin = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "https://paste.xinu.at";
|
|
||||||
};
|
|
||||||
clipboard_cmd = mkOption {
|
|
||||||
type = types.pathInStore;
|
|
||||||
default = "${pkgs.wl-clipboard}/bin/wl-copy";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
home.packages = [ pkgs.fb-client ];
|
|
||||||
xdg = {
|
|
||||||
configFile = {
|
|
||||||
"fb-client/config".text = ''
|
|
||||||
pastebin="${cfg.pastebin}"
|
|
||||||
apikey_file="${config.xdg.dataHome}/fb-client/apikey"
|
|
||||||
clipboard_cmd="${cfg.clipboard_cmd}"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,11 +1,16 @@
|
|||||||
{ inputs, self, ... }:
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs-unstable,
|
||||||
|
self,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
home-manager = {
|
home-manager = {
|
||||||
users = {
|
users = {
|
||||||
jokke = import ./jokke;
|
jokke = import ./jokke;
|
||||||
moco = import ./moco;
|
moco = import ./moco;
|
||||||
};
|
};
|
||||||
extraSpecialArgs = { inherit inputs self; };
|
extraSpecialArgs = { inherit inputs self pkgs-unstable; };
|
||||||
sharedModules = [ (import ./common) ];
|
sharedModules = [ (import ./common) ];
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
|
|||||||
@@ -31,72 +31,6 @@
|
|||||||
|
|
||||||
gnome.profilePicture = ../assets/profile-pictures/jokke.png;
|
gnome.profilePicture = ../assets/profile-pictures/jokke.png;
|
||||||
|
|
||||||
programs.neovim = {
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
nodePackages.graphql-language-service-cli
|
|
||||||
];
|
|
||||||
withTreesitterPlugins = p: [
|
|
||||||
p.typescript
|
|
||||||
p.svelte
|
|
||||||
p.prisma
|
|
||||||
p.graphql
|
|
||||||
];
|
|
||||||
formatters = [
|
|
||||||
{
|
|
||||||
filetypes = [
|
|
||||||
"typescript"
|
|
||||||
"typescriptreact"
|
|
||||||
"svelte"
|
|
||||||
];
|
|
||||||
globs = [
|
|
||||||
"*.ts"
|
|
||||||
"*.tsx"
|
|
||||||
"*.svelte"
|
|
||||||
];
|
|
||||||
exe = "npx";
|
|
||||||
args = file: [
|
|
||||||
"prettier"
|
|
||||||
"--stdin-filepath"
|
|
||||||
file
|
|
||||||
];
|
|
||||||
stdin = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
filetypes = [ "prisma" ];
|
|
||||||
globs = [ "*.prisma" ];
|
|
||||||
exe = "${pkgs.nodePackages.prisma}/bin/prisma";
|
|
||||||
args = file: [
|
|
||||||
"format"
|
|
||||||
"--schema"
|
|
||||||
];
|
|
||||||
stdin = false;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
lsp.servers = with pkgs; [
|
|
||||||
{
|
|
||||||
name = "svelte";
|
|
||||||
package = nodePackages.svelte-language-server;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "denols";
|
|
||||||
package = deno;
|
|
||||||
rootPattern = [ "deno.json" ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "graphql";
|
|
||||||
package = nodePackages.graphql-language-service-cli;
|
|
||||||
config = {
|
|
||||||
filetypes = [
|
|
||||||
"typescript"
|
|
||||||
"typescriptreact"
|
|
||||||
"graphql"
|
|
||||||
"svelte"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.ssh.matchBlocks = {
|
programs.ssh.matchBlocks = {
|
||||||
"alderaan" = {
|
"alderaan" = {
|
||||||
hostname = "alderaan.space";
|
hostname = "alderaan.space";
|
||||||
|
|||||||
@@ -70,70 +70,6 @@ in
|
|||||||
|
|
||||||
programs.git.extraConfig.user.email = "joakim.repomaa@mocoapp.com";
|
programs.git.extraConfig.user.email = "joakim.repomaa@mocoapp.com";
|
||||||
|
|
||||||
programs.neovim = {
|
|
||||||
withTreesitterPlugins = p: [
|
|
||||||
p.ruby
|
|
||||||
p.javascript
|
|
||||||
p.typescript
|
|
||||||
p.graphql
|
|
||||||
];
|
|
||||||
formatters = [
|
|
||||||
{
|
|
||||||
filetypes = [ "ruby" ];
|
|
||||||
globs = [
|
|
||||||
"*.rb"
|
|
||||||
"Gemfile"
|
|
||||||
"*.rake"
|
|
||||||
];
|
|
||||||
exe = "bundle";
|
|
||||||
args = file: [
|
|
||||||
"exec"
|
|
||||||
"rufo"
|
|
||||||
"-x"
|
|
||||||
"--filename"
|
|
||||||
file
|
|
||||||
];
|
|
||||||
stdin = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
filetypes = [
|
|
||||||
"javascript"
|
|
||||||
"typescript"
|
|
||||||
"javascriptreact"
|
|
||||||
"typescriptreact"
|
|
||||||
];
|
|
||||||
globs = [
|
|
||||||
"*.js"
|
|
||||||
"*.jsx"
|
|
||||||
"*.ts"
|
|
||||||
"*.tsx"
|
|
||||||
];
|
|
||||||
exe = "npx";
|
|
||||||
args = file: [
|
|
||||||
"prettier"
|
|
||||||
"--stdin-filepath"
|
|
||||||
file
|
|
||||||
];
|
|
||||||
stdin = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
lsp.servers = with pkgs; [
|
|
||||||
{
|
|
||||||
name = "ruby_lsp";
|
|
||||||
config = {
|
|
||||||
init_options = {
|
|
||||||
formatter = "auto";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
package = ruby-lsp;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "graphql";
|
|
||||||
package = nodePackages.graphql-language-service-cli;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.ssh.matchBlocks =
|
programs.ssh.matchBlocks =
|
||||||
let
|
let
|
||||||
aliases = [
|
aliases = [
|
||||||
|
|||||||
@@ -1,546 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.programs.neovim;
|
|
||||||
toLua = lib.generators.toLua { };
|
|
||||||
buildPluginConfig =
|
|
||||||
p:
|
|
||||||
let
|
|
||||||
pluginConfig = if builtins.hasAttr "plugin" p then p else { plugin = p; };
|
|
||||||
name = pluginConfig.plugin.name;
|
|
||||||
|
|
||||||
config = if (builtins.isNull pluginConfig.config or null) then "" else pluginConfig.config;
|
|
||||||
mappings =
|
|
||||||
if (builtins.isNull pluginConfig.mappings or null) then
|
|
||||||
""
|
|
||||||
else
|
|
||||||
generateMappings pluginConfig.mappings;
|
|
||||||
mergedConfig = config + mappings;
|
|
||||||
in
|
|
||||||
[
|
|
||||||
{
|
|
||||||
plugin = pluginConfig.plugin;
|
|
||||||
config = lib.modules.mkIf (mergedConfig != "") ''
|
|
||||||
Plugins[${toLua name}] = {}
|
|
||||||
Plugins[${toLua name}].setup = function()
|
|
||||||
${
|
|
||||||
lib.strings.concatMapStrings (line: if line == "" then "" else " ${line}\n") (
|
|
||||||
lib.strings.splitString "\n" mergedConfig
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
Plugins[${toLua name}].setup()
|
|
||||||
'';
|
|
||||||
type = "lua";
|
|
||||||
}
|
|
||||||
]
|
|
||||||
++ (lib.lists.concatMap buildPluginConfig pluginConfig.dependencies or [ ]);
|
|
||||||
|
|
||||||
lspPluginConfig = with pkgs.vimPlugins; {
|
|
||||||
plugin = nvim-lspconfig;
|
|
||||||
dependencies = [
|
|
||||||
nvim-cmp
|
|
||||||
cmp-nvim-lsp
|
|
||||||
cmp_luasnip
|
|
||||||
luasnip
|
|
||||||
];
|
|
||||||
|
|
||||||
config =
|
|
||||||
(builtins.readFile ./lsp-config.lua)
|
|
||||||
+ ''
|
|
||||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
||||||
capabilities.workspace.didChangeWatchedFiles.dynamicRegistration = true
|
|
||||||
local lspconfig = require('lspconfig')
|
|
||||||
local util = require('lspconfig.util')
|
|
||||||
|
|
||||||
local on_attach = function (client, bufnr)
|
|
||||||
local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
|
|
||||||
local map = function (lhs, rhs)
|
|
||||||
print('set mapping ' .. lhs)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Enable completion triggered by <c-x><c-o>
|
|
||||||
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
|
|
||||||
|
|
||||||
-- Mappings.
|
|
||||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
|
||||||
|
|
||||||
${lib.strings.concatLines (
|
|
||||||
lib.attrsets.mapAttrsToList (name: value: ''
|
|
||||||
local buf_${name} = vim.lsp.buf[${toLua name}]
|
|
||||||
if buf_${name} then
|
|
||||||
vim.keymap.set('n', ${toLua value}, buf_${name}, { buffer = bufnr })
|
|
||||||
end
|
|
||||||
'') cfg.lsp.mappings.buf
|
|
||||||
)}
|
|
||||||
${lib.strings.concatLines (
|
|
||||||
lib.attrsets.mapAttrsToList (name: value: ''
|
|
||||||
local diagnostic_${name} = vim.lsp.buf[${toLua name}]
|
|
||||||
if diagnostic_${name} then
|
|
||||||
vim.keymap.set('n', ${toLua value}, diagnostic_${name}, { buffer = bufnr })
|
|
||||||
end
|
|
||||||
'') cfg.lsp.mappings.diagnostic
|
|
||||||
)}
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.env.PATH = ${
|
|
||||||
toLua (
|
|
||||||
lib.makeBinPath (
|
|
||||||
map (s: s.package) (builtins.filter (s: builtins.hasAttr "package" s) cfg.lsp.servers)
|
|
||||||
)
|
|
||||||
+ ":"
|
|
||||||
)
|
|
||||||
} .. vim.env.PATH
|
|
||||||
local servers = ${
|
|
||||||
toLua (
|
|
||||||
map (
|
|
||||||
{
|
|
||||||
name,
|
|
||||||
config ? { },
|
|
||||||
rootPattern ? null,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
inherit name;
|
|
||||||
config = config // (if (builtins.isNull rootPattern) then { } else { inherit rootPattern; });
|
|
||||||
}
|
|
||||||
) cfg.lsp.servers
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, server in ipairs(servers) do
|
|
||||||
local server_config = server.config
|
|
||||||
server_config.on_attach = on_attach
|
|
||||||
server_config.capabilities = capabilities
|
|
||||||
server_config.flags = {
|
|
||||||
debounce_text_changes = 150
|
|
||||||
}
|
|
||||||
|
|
||||||
if server_config.rootPattern then
|
|
||||||
server_config.root_dir = util.root_pattern(
|
|
||||||
unpack(server_config.rootPattern)
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
lspconfig[server.name].setup(server_config)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
treesitterPluginConfig = with pkgs.vimPlugins; {
|
|
||||||
plugin = nvim-treesitter.withPlugins cfg.withTreesitterPlugins;
|
|
||||||
config = ''
|
|
||||||
require('nvim-treesitter.configs').setup(${
|
|
||||||
toLua {
|
|
||||||
highlight = {
|
|
||||||
enable = true;
|
|
||||||
additional_vim_regex_highlighting = false;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
formatterPluginConfig = with pkgs.vimPlugins; {
|
|
||||||
plugin = formatter-nvim;
|
|
||||||
config = ''
|
|
||||||
local formatter = require('formatter')
|
|
||||||
local util = require('formatter.util')
|
|
||||||
|
|
||||||
formatter.setup({
|
|
||||||
filetype = {
|
|
||||||
${lib.strings.concatMapStringsSep ",\n " (
|
|
||||||
{
|
|
||||||
exe,
|
|
||||||
args,
|
|
||||||
stdin,
|
|
||||||
no_append,
|
|
||||||
filetypes,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
lib.strings.concatMapStringsSep ",\n " (filetype: ''
|
|
||||||
[${toLua filetype}] = {
|
|
||||||
function ()
|
|
||||||
return {
|
|
||||||
exe = ${toLua exe},
|
|
||||||
args = {
|
|
||||||
${lib.strings.concatMapStringsSep ",\n " (
|
|
||||||
arg:
|
|
||||||
if arg == "<<FILE>>" then "util.escape_path(util.get_current_buffer_file_path())" else toLua arg
|
|
||||||
) (args "<<FILE>>")}
|
|
||||||
},
|
|
||||||
stdin = ${toLua stdin},
|
|
||||||
no_append = ${toLua no_append},
|
|
||||||
}
|
|
||||||
end
|
|
||||||
}
|
|
||||||
'') filetypes
|
|
||||||
) cfg.formatters}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
${generateAutoCommand {
|
|
||||||
event = "BufWritePost";
|
|
||||||
pattern = lib.lists.concatMap ({ globs, ... }: globs) cfg.formatters;
|
|
||||||
command = "FormatWrite";
|
|
||||||
group = "FormatAutogroup";
|
|
||||||
}}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
customTypes =
|
|
||||||
let
|
|
||||||
inherit (lib) mkOption mkEnableOption types;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
mapping = types.submodule {
|
|
||||||
options = {
|
|
||||||
rhs = mkOption { type = types.str; };
|
|
||||||
lua = mkEnableOption { };
|
|
||||||
options = mkOption {
|
|
||||||
type = types.nullOr (
|
|
||||||
types.submodule {
|
|
||||||
options = {
|
|
||||||
buffer = mkOption {
|
|
||||||
type = types.nullOr (types.either types.int types.bool);
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
nowait = mkOption {
|
|
||||||
type = types.nullOr types.bool;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
silent = mkOption {
|
|
||||||
type = types.nullOr types.bool;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
expr = mkOption {
|
|
||||||
type = types.nullOr types.bool;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
script = mkOption {
|
|
||||||
type = types.nullOr types.bool;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
unique = mkOption {
|
|
||||||
type = types.nullOr types.bool;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
replace_keycodes = mkOption {
|
|
||||||
type = types.nullOr types.bool;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
modeMappings = types.attrsOf (types.either types.str customTypes.mapping);
|
|
||||||
|
|
||||||
mappings = types.submodule {
|
|
||||||
options = {
|
|
||||||
normal = mkOption {
|
|
||||||
type = customTypes.modeMappings;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
insert = mkOption {
|
|
||||||
type = customTypes.modeMappings;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
visual = mkOption {
|
|
||||||
type = customTypes.modeMappings;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
command = mkOption {
|
|
||||||
type = customTypes.modeMappings;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
select = mkOption {
|
|
||||||
type = customTypes.modeMappings;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
plugin = types.either types.package (
|
|
||||||
types.submodule {
|
|
||||||
options = {
|
|
||||||
plugin = mkOption { type = types.package; };
|
|
||||||
dependencies = mkOption {
|
|
||||||
type = types.listOf customTypes.plugin;
|
|
||||||
default = [ ];
|
|
||||||
};
|
|
||||||
mappings = mkOption {
|
|
||||||
type = customTypes.mappings;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
config = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
autoCommand = types.submodule {
|
|
||||||
options = {
|
|
||||||
event = mkOption { type = types.either types.str (types.listOf types.str); };
|
|
||||||
pattern = mkOption { type = types.either types.str (types.listOf types.str); };
|
|
||||||
command = mkOption { type = types.str; };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
lspServer = types.submodule {
|
|
||||||
options = {
|
|
||||||
name = mkOption { type = types.str; };
|
|
||||||
config = mkOption {
|
|
||||||
type = types.attrs;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
package = mkOption {
|
|
||||||
type = types.nullOr types.package;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
rootPattern = mkOption {
|
|
||||||
type = types.nullOr (types.listOf types.str);
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
formatter = types.submodule {
|
|
||||||
options = {
|
|
||||||
filetypes = mkOption { type = types.listOf types.str; };
|
|
||||||
globs = mkOption { type = types.listOf types.str; };
|
|
||||||
exe = mkOption { type = types.either types.path types.str; };
|
|
||||||
args = mkOption {
|
|
||||||
type = types.functionTo (types.listOf types.str);
|
|
||||||
default = _: [ ];
|
|
||||||
};
|
|
||||||
stdin = mkEnableOption { };
|
|
||||||
no_append = mkEnableOption { };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
generateMappings =
|
|
||||||
mappings:
|
|
||||||
lib.strings.concatLines (
|
|
||||||
lib.attrsets.mapAttrsToList (
|
|
||||||
mode: modeMappings:
|
|
||||||
lib.strings.concatLines (
|
|
||||||
lib.attrsets.mapAttrsToList (
|
|
||||||
name: value:
|
|
||||||
|
|
||||||
let
|
|
||||||
mapping = {
|
|
||||||
lhs = name;
|
|
||||||
lua = false;
|
|
||||||
options = { };
|
|
||||||
} // (if builtins.isString value then { rhs = value; } else value);
|
|
||||||
args = [
|
|
||||||
(toLua (builtins.substring 0 1 mode))
|
|
||||||
(toLua mapping.lhs)
|
|
||||||
(if mapping.lua then mapping.rhs else toLua mapping.rhs)
|
|
||||||
(toLua (
|
|
||||||
builtins.listToAttrs (
|
|
||||||
builtins.filter ({ value, ... }: !isNull (value)) (lib.attrsets.attrsToList mapping.options)
|
|
||||||
)
|
|
||||||
))
|
|
||||||
];
|
|
||||||
in
|
|
||||||
"vim.keymap.set(${lib.strings.concatStringsSep ", " args})"
|
|
||||||
) modeMappings
|
|
||||||
)
|
|
||||||
) mappings
|
|
||||||
);
|
|
||||||
|
|
||||||
generateAutoCommand =
|
|
||||||
{
|
|
||||||
event,
|
|
||||||
pattern,
|
|
||||||
command,
|
|
||||||
group ? null,
|
|
||||||
}:
|
|
||||||
''
|
|
||||||
vim.api.nvim_create_autocmd(${toLua event}, {
|
|
||||||
pattern = ${toLua pattern},
|
|
||||||
command = ${toLua command},
|
|
||||||
group = ${
|
|
||||||
if isNull group then
|
|
||||||
toLua group
|
|
||||||
else
|
|
||||||
''
|
|
||||||
vim.api.nvim_create_augroup(${toLua group}, { clear = true })
|
|
||||||
''
|
|
||||||
},
|
|
||||||
})
|
|
||||||
'';
|
|
||||||
|
|
||||||
generateAutoCommands = autoCommands: lib.strings.concatLines (map generateAutoCommand autoCommands);
|
|
||||||
|
|
||||||
generateSignDefinitions =
|
|
||||||
signs:
|
|
||||||
lib.strings.concatLines (
|
|
||||||
lib.attrsets.mapAttrsToList (
|
|
||||||
name: value:
|
|
||||||
let
|
|
||||||
hl = "DiagnosticSign${
|
|
||||||
lib.strings.toUpper (builtins.substring 0 1 name)
|
|
||||||
}${builtins.substring 1 (-1) name}";
|
|
||||||
in
|
|
||||||
"vim.fn.sign_define(${toLua hl}, ${
|
|
||||||
toLua {
|
|
||||||
text = value;
|
|
||||||
texthl = hl;
|
|
||||||
numhl = "";
|
|
||||||
}
|
|
||||||
})"
|
|
||||||
) signs
|
|
||||||
);
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.programs.neovim =
|
|
||||||
let
|
|
||||||
inherit (lib) mkOption types;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
mappings = mkOption {
|
|
||||||
type = customTypes.mappings;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
plug = mkOption {
|
|
||||||
type = types.listOf customTypes.plugin;
|
|
||||||
default = [ ];
|
|
||||||
};
|
|
||||||
leader = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "\\";
|
|
||||||
};
|
|
||||||
options = mkOption {
|
|
||||||
type = types.attrs;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
snippets = mkOption {
|
|
||||||
type = types.attrsOf types.path;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
autoCommands = mkOption {
|
|
||||||
type = types.listOf customTypes.autoCommand;
|
|
||||||
default = [ ];
|
|
||||||
};
|
|
||||||
env = mkOption {
|
|
||||||
type = types.attrsOf types.str;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
signs = {
|
|
||||||
error = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
warning = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
info = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
hint = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
lsp = {
|
|
||||||
servers = mkOption {
|
|
||||||
type = types.listOf customTypes.lspServer;
|
|
||||||
default = [ ];
|
|
||||||
};
|
|
||||||
mappings = {
|
|
||||||
buf = mkOption {
|
|
||||||
type = types.attrsOf types.str;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
diagnostic = mkOption {
|
|
||||||
type = types.attrsOf types.str;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
withTreesitterPlugins = mkOption {
|
|
||||||
type = types.functionTo (types.listOf types.package);
|
|
||||||
default = _: [ ];
|
|
||||||
};
|
|
||||||
formatters = mkOption {
|
|
||||||
type = types.listOf customTypes.formatter;
|
|
||||||
default = [ ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
programs.neovim = {
|
|
||||||
extraLuaConfig = lib.strings.concatLines [
|
|
||||||
"local Plugins = {}"
|
|
||||||
(generateMappings cfg.mappings)
|
|
||||||
(generateAutoCommands cfg.autoCommands)
|
|
||||||
(lib.strings.concatLines (
|
|
||||||
lib.attrsets.mapAttrsToList (name: value: "vim.env.${name} = ${toLua value}") cfg.env
|
|
||||||
))
|
|
||||||
(lib.strings.concatLines (
|
|
||||||
lib.attrsets.mapAttrsToList (name: value: "vim.opt.${name} = ${toLua value}") cfg.options
|
|
||||||
))
|
|
||||||
(generateSignDefinitions cfg.signs)
|
|
||||||
"vim.g.mapleader = ${toLua cfg.leader}"
|
|
||||||
''
|
|
||||||
local undodir = ${
|
|
||||||
toLua (
|
|
||||||
if builtins.hasAttr "undodir" cfg.options then
|
|
||||||
cfg.options.undodir
|
|
||||||
else
|
|
||||||
"${config.xdg.cacheHome}/nvim/undo"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
vim.opt.undodir = undodir
|
|
||||||
vim.fn.mkdir(undodir, 'p')
|
|
||||||
''
|
|
||||||
];
|
|
||||||
plugins = lib.lists.concatMap buildPluginConfig (
|
|
||||||
cfg.plug
|
|
||||||
++ [
|
|
||||||
lspPluginConfig
|
|
||||||
treesitterPluginConfig
|
|
||||||
formatterPluginConfig
|
|
||||||
]
|
|
||||||
);
|
|
||||||
vimAlias = lib.mkForce false;
|
|
||||||
vimdiffAlias = lib.mkForce false;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile = (
|
|
||||||
lib.attrsets.mapAttrs' (name: value: {
|
|
||||||
name = "nvim/${name}";
|
|
||||||
value = {
|
|
||||||
source = value;
|
|
||||||
};
|
|
||||||
}) cfg.snippets
|
|
||||||
);
|
|
||||||
|
|
||||||
home.shellAliases =
|
|
||||||
let
|
|
||||||
nvim = ''nvim --listen "$XDG_RUNTIME_DIR/nvimsocket"'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit nvim;
|
|
||||||
vim = nvim;
|
|
||||||
vimdiff = "${nvim} -d";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
local Lsp = {}
|
|
||||||
|
|
||||||
Lsp.setup = function()
|
|
||||||
local luasnip = require("luasnip")
|
|
||||||
local cmp = require("cmp")
|
|
||||||
|
|
||||||
local has_words_before = function()
|
|
||||||
if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
|
||||||
return col ~= 0 and vim.api.nvim_buf_get_text(0, line - 1, 0, line - 1, col, {})[1]:match("^%s*$") == nil
|
|
||||||
end
|
|
||||||
|
|
||||||
cmp.setup({
|
|
||||||
snippet = {
|
|
||||||
expand = function(args)
|
|
||||||
luasnip.lsp_expand(args.body)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
window = {
|
|
||||||
completion = cmp.config.window.bordered(),
|
|
||||||
documentation = cmp.config.window.bordered(),
|
|
||||||
},
|
|
||||||
mapping = {
|
|
||||||
["<C-p>"] = function()
|
|
||||||
if luasnip.jumpable(-1) then
|
|
||||||
luasnip.jump(-1)
|
|
||||||
else
|
|
||||||
cmp.mapping.select_prev_item()
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
["<C-n>"] = function()
|
|
||||||
if luasnip.expand_or_jumpable() then
|
|
||||||
luasnip.expand_or_jump()
|
|
||||||
else
|
|
||||||
cmp.mapping.select_next_item()
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
["<C-d>"] = 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({
|
|
||||||
behavior = cmp.ConfirmBehavior.Replace,
|
|
||||||
select = true,
|
|
||||||
}),
|
|
||||||
["<Tab>"] = function(fallback)
|
|
||||||
if cmp.visible() and has_words_before() then
|
|
||||||
cmp.select_next_item()
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
["<S-Tab>"] = function(fallback)
|
|
||||||
if cmp.visible() and has_words_before() then
|
|
||||||
cmp.select_prev_item()
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
sources = {
|
|
||||||
{ name = "copilot", group_index = 2 },
|
|
||||||
{ name = "nvim_lsp", group_index = 2 },
|
|
||||||
{ name = "luasnip", group_index = 2 },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.o.completeopt = "menuone,noselect"
|
|
||||||
vim.o.updatetime = 250
|
|
||||||
vim.cmd([[autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false})]])
|
|
||||||
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
|
|
||||||
virtual_text = {
|
|
||||||
source = "if_many",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded" })
|
|
||||||
|
|
||||||
vim.lsp.handlers["textDocument/signatureHelp"] =
|
|
||||||
vim.lsp.with(vim.lsp.handlers.signature_help, { border = "rounded" })
|
|
||||||
|
|
||||||
vim.diagnostic.config({
|
|
||||||
float = { border = "rounded", zindex = 1 },
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
Lsp.setup()
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
pkgs-unstable,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -70,7 +70,7 @@ in
|
|||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
programs.zed-editor = {
|
programs.zed-editor = {
|
||||||
package = inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.zed-editor;
|
package = pkgs-unstable.zed-editor;
|
||||||
extensions = [
|
extensions = [
|
||||||
"ruby"
|
"ruby"
|
||||||
"crystal"
|
"crystal"
|
||||||
@@ -169,9 +169,7 @@ in
|
|||||||
path = lib.getExe nodePackages.vscode-json-languageserver;
|
path = lib.getExe nodePackages.vscode-json-languageserver;
|
||||||
arguments = [ "--stdio" ];
|
arguments = [ "--stdio" ];
|
||||||
};
|
};
|
||||||
package-version-server.binary.path =
|
package-version-server.binary.path = lib.getExe pkgs-unstable.package-version-server;
|
||||||
lib.getExe
|
|
||||||
inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.package-version-server;
|
|
||||||
eslint.settings.onIgnoredFiles = "off";
|
eslint.settings.onIgnoredFiles = "off";
|
||||||
crystalline.binary.path = lib.getExe crystalline;
|
crystalline.binary.path = lib.getExe crystalline;
|
||||||
ameba-ls.binary.path = lib.getExe ameba-ls;
|
ameba-ls.binary.path = lib.getExe ameba-ls;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
|
pkgs-unstable,
|
||||||
config,
|
config,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
@@ -213,7 +214,7 @@ in
|
|||||||
|
|
||||||
mealie = {
|
mealie = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.mealie;
|
package = pkgs-unstable.mealie;
|
||||||
subdomain = "cook";
|
subdomain = "cook";
|
||||||
credentialsFile = secrets.mealie.path;
|
credentialsFile = secrets.mealie.path;
|
||||||
settings = {
|
settings = {
|
||||||
|
|||||||
@@ -1,20 +1,18 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
|
pkgs-unstable,
|
||||||
inputs,
|
inputs,
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
|
||||||
pkgsUnstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.system};
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
hardware.bluetooth.powerOnBoot = true;
|
hardware.bluetooth.powerOnBoot = true;
|
||||||
|
|
||||||
services.udev.packages = [
|
services.udev.packages = [
|
||||||
pkgs.zsa-udev-rules
|
pkgs.zsa-udev-rules
|
||||||
pkgsUnstable.yubikey-personalization
|
pkgs-unstable.yubikey-personalization
|
||||||
inputs.ksoloti-pr.legacyPackages.${pkgs.system}.ksoloti
|
inputs.ksoloti-pr.legacyPackages.${pkgs.system}.ksoloti
|
||||||
];
|
];
|
||||||
services.usbmuxd = {
|
services.usbmuxd = {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
|
pkgs-unstable,
|
||||||
lib,
|
lib,
|
||||||
inputs,
|
inputs,
|
||||||
config,
|
config,
|
||||||
@@ -10,7 +11,7 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
nixpkgs.overlays = [ (import ../../custom-pkgs { inherit lib inputs; }) ];
|
nixpkgs.overlays = [ (import ../../custom-pkgs { inherit lib inputs pkgs-unstable; }) ];
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
@@ -27,7 +28,7 @@ in
|
|||||||
pathsToLink = [ "/share/zsh" ];
|
pathsToLink = [ "/share/zsh" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
fonts.packages = with inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}; [
|
fonts.packages = with pkgs-unstable; [
|
||||||
nerd-fonts.iosevka
|
nerd-fonts.iosevka
|
||||||
nerd-fonts.iosevka-term
|
nerd-fonts.iosevka-term
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
{ inputs, ... }:
|
{ inputs, config, ... }:
|
||||||
{
|
{
|
||||||
|
_module.args = {
|
||||||
|
pkgs-unstable = inputs.nixpkgs-unstable.legacyPackages.${config.nixpkgs.hostPlatform.system};
|
||||||
|
};
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./vlans.nix
|
./vlans.nix
|
||||||
./firewall.nix
|
./firewall.nix
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
inputs,
|
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
pkgs-unstable,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.services.dnote;
|
cfg = config.services.dnote;
|
||||||
fqdn = "${cfg.subdomain}.${config.networking.domain}";
|
fqdn = "${cfg.subdomain}.${config.networking.domain}";
|
||||||
pkgsUnstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.system};
|
|
||||||
|
|
||||||
types = {
|
types = {
|
||||||
environment = lib.types.submodule {
|
environment = lib.types.submodule {
|
||||||
@@ -91,7 +90,7 @@ in
|
|||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.service" ];
|
||||||
requires = [ "postgresql.service" ];
|
requires = [ "postgresql.service" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkgsUnstable.dnote}/bin/dnote-server -port ${toString cfg.port} start";
|
ExecStart = "${pkgs-unstable.dnote}/bin/dnote-server -port ${toString cfg.port} start";
|
||||||
EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile;
|
EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile;
|
||||||
User = cfg.user;
|
User = cfg.user;
|
||||||
BindPaths = [
|
BindPaths = [
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs-unstable,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
inputs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.services.workout-tracker;
|
cfg = config.services.workout-tracker;
|
||||||
fqdn = "${cfg.subdomain}.${config.networking.domain}";
|
fqdn = "${cfg.subdomain}.${config.networking.domain}";
|
||||||
port = cfg.port;
|
port = cfg.port;
|
||||||
package = inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.workout-tracker;
|
package = pkgs-unstable.workout-tracker;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.services.workout-tracker = {
|
options.services.workout-tracker = {
|
||||||
|
|||||||
Reference in New Issue
Block a user