馃 my neovim config:)
1{
2 description = "comfysage's neovim config";
3
4 inputs = {
5 nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz";
6
7 gift-wrap = {
8 url = "github:tgirlcloud/gift-wrap";
9 inputs.nixpkgs.follows = "nixpkgs";
10 };
11
12 neovim-src = {
13 url = "github:neovim/neovim";
14 flake = false;
15 };
16 };
17
18 outputs =
19 inputs@{
20 self,
21 nixpkgs,
22 ...
23 }:
24 let
25 inherit (nixpkgs) lib;
26
27 forAllSystems =
28 f:
29 lib.genAttrs lib.systems.flakeExposed (
30 system:
31 f (
32 import nixpkgs {
33 inherit system;
34 config.allowUnfree = true;
35 }
36 )
37 );
38
39 mkPackages =
40 default: pkgs:
41 let
42 generatedPackages = import ./default.nix { inherit pkgs inputs; };
43 defaultPackage = lib.optionalAttrs default { default = generatedPackages.ivy; };
44 in
45 generatedPackages // defaultPackage;
46 in
47 {
48 formatter = forAllSystems (pkgs: pkgs.treefmt.withConfig (import ./treefmt.nix { inherit pkgs; }));
49
50 packages = forAllSystems (mkPackages true);
51
52 homeModules.default = import ./modules/home-manager.nix inputs;
53
54 overlays.default = _: mkPackages false;
55
56 devShells = forAllSystems (pkgs: {
57 default = pkgs.mkShellNoCC {
58 packages = [
59 self.formatter.${pkgs.stdenv.hostPlatform.system}
60 pkgs.selene
61 pkgs.stylua
62 ]
63 ++ lib.optional pkgs.stdenv.hostPlatform.isLinux pkgs.npins;
64 };
65 });
66
67 apps = forAllSystems (pkgs: {
68 update = {
69 type = "app";
70 program = lib.getExe (
71 pkgs.writeShellApplication {
72 name = "update";
73 runtimeInputs = [ pkgs.npins ];
74
75 text = ''
76 (cd pkgs/ivy-plugins && npins update)
77 '';
78 }
79 );
80 };
81 });
82 };
83}