summaryrefslogtreecommitdiff
path: root/nix/home.nix
blob: 5663bd2c8576b6bd1799298fb16d7381bf4ab415 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
{
  config,
  pkgs,
  ...
}: let
  sources = import ./npins;
in {
  home = {
    file.".profile".enable = false;
    homeDirectory = "/home/${config.home.username}";
    packages = [
      (pkgs.callPackage "${sources.agenix}/pkgs/agenix.nix" {})
      pkgs.anki
      pkgs.mindustry-wayland
      pkgs.nix-output-monitor
      pkgs.npins
    ];
    stateVersion = "26.05";
    username = "andromeda";
  };
  imports = [(import sources.nvf).homeManagerModules.nvf];
  programs = {
    firefox = {
      enable = true;
      package = pkgs.firefox.override {
        cfg.enableTridactylNative = true;
      };
      profiles.default = {
        extensions = {
          force = true;
          packages = [(import sources.NUR {inherit pkgs;}).repos.rycee.firefox-addons.tridactyl];
        };
        settings = {
          "extensions.autoDisableScopes" = 0;
          "intl.accepted_languages" = "de_DE";
        };
      };
    };
    gpg.enable = true;
    home-manager.enable = true;
    nvf = {
      enable = true;
      settings.vim = {
        startPlugins = [pkgs.vimPlugins.parinfer-rust];
        autocomplete.nvim-cmp.enable = false;
        formatter.conform-nvim = {
          enable = true;
          setupOpts.format_on_save = {
            lsp_format = "fallback";
            timeout_ms = 5000;
          };
        };
        lsp.otter-nvim.enable = true;
        git.enable = true;
        keymaps = [
          {
            key = "<Down>";
            mode = ["i" "n" "v" "c"];
            action = "<NOP>";
          }
          {
            key = "<Up>";
            mode = ["i" "n" "v" "c"];
            action = "<NOP>";
          }
          {
            key = "<Left>";
            mode = ["i" "n" "v" "c"];
            action = "<NOP>";
          }
          {
            key = "<Right>";
            mode = ["i" "n" "v" "c"];
            action = "<NOP>";
          }
          {
            key = "jj";
            mode = ["i"];
            action = "<Esc>";
          }
          {
            key = "kk";
            mode = ["i"];
            action = "<Esc>";
          }
          {
            key = "jk";
            mode = ["i"];
            action = "<Esc>";
          }
          {
            key = "kj";
            mode = ["i"];
            action = "<Esc>";
          }
          {
            key = "<Esc>";
            mode = ["i"];
            action = "<Nop>";
          }
        ];
        languages = {
          nix = {
            enable = true;
            format.enable = true;
            lsp.enable = true;
          };
          haskell = {
            enable = true;
            lsp.enable = true;
          };
          rust = {
            enable = true;
            format.enable = true;
            lsp.enable = true;
            treesitter.enable = true;
          };
        };
        lineNumberMode = "relative";
        options = {
          tabstop = 2;
          shiftwidth = 2;
          expandtab = true;
          smarttab = true;
          foldmethod = "indent";
          number = true;
          colorcolumn = "80";
        };
        statusline.lualine.enable = true;
        syntaxHighlighting = true;
      };
    };
    ssh.enable = true;
  };
  services.gpg-agent = {
    enable = true;
    pinentry.package = pkgs.pinentry-curses;
  };
  xdg = {
    portal = {
      enable = true;
      extraPortals = [pkgs.xdg-desktop-portal-shana];
    };
  };
}