Skip to content

Commit 7c70f6b

Browse files
committed
🧩 modularize user profile
...add neovim setup, harden firefox, enhance git & fonts
1 parent 3a74551 commit 7c70f6b

8 files changed

Lines changed: 326 additions & 30 deletions

File tree

modules/fonts.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
dejavu_fonts
66
freefont_ttf
77
liberation_ttf
8+
nerd-fonts.fira-code
89
noto-fonts
910
noto-fonts-cjk-sans
1011
noto-fonts-cjk-serif

profiles/user/ponfertato/default.nix

Lines changed: 58 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
{ pkgs, ... }:
22
{
33
imports = [
4-
./firefox/policies.nix
5-
./firefox/preferences.nix
6-
./thunderbird/policies.nix
7-
./thunderbird/preferences.nix
4+
./firefox
5+
./neovim
6+
./thunderbird
87
];
98

109
users.users.ponfertato = {
@@ -42,39 +41,70 @@
4241
exfatprogs
4342
gimp
4443
git
45-
kdePackages.kate
46-
kdePackages.partitionmanager
47-
kdePackages.tokodon
44+
git-credential-oauth
4845
krita
49-
lazygit
5046
libreoffice
51-
nano
5247
qbittorrent
5348
remmina
5449
thunderbird
50+
vlc
51+
wget
52+
kdePackages.kate
53+
kdePackages.partitionmanager
54+
kdePackages.tokodon
5555
unstable.joplin-desktop
5656
unstable.keepassxc
5757
unstable.lazydocker
58+
unstable.lazygit
5859
unstable.nextcloud-client
5960
unstable.nextcloud-talk-desktop
6061
unstable.telegram-desktop
6162
unstable.v2rayn
6263
unstable.vscodium
63-
vlc
64-
wget
6564
];
6665

6766
programs.git = {
6867
enable = true;
6968
lfs.enable = true;
7069
config = {
70+
alias = {
71+
br = "branch";
72+
ci = "commit";
73+
co = "checkout";
74+
lg = "log --oneline --graph --decorate";
75+
st = "status";
76+
};
77+
color = {
78+
ui = "auto";
79+
};
80+
core = {
81+
autocrlf = "input";
82+
editor = "nvim";
83+
whitespace = "trailing-space,space-before-tab";
84+
};
85+
credential = {
86+
helper = "oauth";
87+
};
88+
diff = {
89+
algorithm = "histogram";
90+
};
91+
init = {
92+
defaultBranch = "main";
93+
};
94+
merge = {
95+
conflictstyle = "zdiff3";
96+
};
97+
pull = {
98+
rebase = true;
99+
};
100+
push = {
101+
default = "current";
102+
autoSetupRemote = true;
103+
};
71104
user = {
72105
name = "ponfertato";
73106
email = "ponfertato@ya.ru";
74107
};
75-
core = {
76-
excludesFile = "/etc/gitignore_global";
77-
};
78108
};
79109
};
80110

@@ -86,21 +116,27 @@
86116
];
87117
};
88118

89-
programs.thunderbird.enable = true;
119+
programs.neovim = {
120+
defaultEditor = true;
121+
enable = true;
122+
viAlias = true;
123+
vimAlias = true;
124+
# withNodeJs = true;
125+
};
90126

127+
programs.thunderbird.enable = true;
91128
programs.bash.shellAliases = {
129+
".." = "cd ..";
130+
"..." = "cd ../..";
131+
gl = "git lg";
132+
gs = "git st";
133+
la = "ls -A";
134+
ll = "ls -lah";
92135
nix-check = "nix flake check";
93136
nix-gc = "sudo nix-collect-garbage -d && sudo nix store optimise";
94137
nix-roll = "sudo nixos-rebuild switch --rollback";
95138
nix-switch = "sudo nixos-rebuild switch --flake .#$(hostname) --impure";
96139
nix-update = "nix flake update";
97-
ll = "ls -lah";
98-
la = "ls -A";
99-
".." = "cd ..";
100-
"..." = "cd ../..";
101-
gs = "git status";
102-
gl = "git log --oneline --graph";
103-
gp = "git pull --rebase";
104140
};
105141

106142
programs.kdeconnect.enable = true;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{ lib, ... }:
2+
{
3+
imports = [
4+
./policies.nix
5+
./preferences.nix
6+
];
7+
}

profiles/user/ponfertato/firefox/policies.nix

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,34 @@
11
{
22
programs.firefox.policies = {
33
AIControls = {
4-
Default = "available";
5-
LinkPreviewKeyPoints = "blocked";
6-
Locked = true;
7-
PDFAltText = "blocked";
8-
SidebarChatbot = "available";
9-
SmartTabGroups = "blocked";
10-
SmartWindow = "blocked";
11-
Translations = "available";
4+
Default = {
5+
Value = "available";
6+
Locked = true;
7+
};
8+
LinkPreviewKeyPoints = {
9+
Value = "blocked";
10+
Locked = true;
11+
};
12+
PDFAltText = {
13+
Value = "blocked";
14+
Locked = true;
15+
};
16+
SidebarChatbot = {
17+
Value = "available";
18+
Locked = false;
19+
};
20+
SmartTabGroups = {
21+
Value = "blocked";
22+
Locked = true;
23+
};
24+
SmartWindow = {
25+
Value = "blocked";
26+
Locked = true;
27+
};
28+
Translations = {
29+
Value = "available";
30+
Locked = false;
31+
};
1232
};
1333

1434
AutofillAddressEnabled = false;
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
{ pkgs, ... }:
2+
{
3+
programs.neovim.configure.customRC = ''
4+
lua << EOF
5+
vim.opt.clipboard = "unnamedplus"
6+
vim.opt.cursorline = true
7+
vim.opt.expandtab = true
8+
vim.opt.mouse = "a"
9+
vim.opt.number = true
10+
vim.opt.relativenumber = true
11+
vim.opt.scrolloff = 8
12+
vim.opt.shiftwidth = 2
13+
vim.opt.signcolumn = "yes"
14+
vim.opt.splitbelow = true
15+
vim.opt.splitright = true
16+
vim.opt.swapfile = false
17+
vim.opt.tabstop = 2
18+
vim.opt.termguicolors = true
19+
vim.opt.undodir = vim.fn.stdpath("cache") .. "/undo"
20+
vim.opt.undofile = true
21+
vim.opt.updatetime = 250
22+
23+
vim.cmd.colorscheme("default")
24+
vim.g.mapleader = " "
25+
26+
local builtin = require("telescope.builtin")
27+
local cmp = require("cmp")
28+
local luasnip = require("luasnip")
29+
30+
require("Comment").setup({})
31+
require("gitsigns").setup({})
32+
require("nvim-autopairs").setup({})
33+
require("which-key").setup({})
34+
35+
vim.lsp.config.bashls = { cmd = { "bash-language-server" } }
36+
vim.lsp.config.dockerls = { cmd = { "dockerfile-language-server" } }
37+
vim.lsp.config.lua_ls = {
38+
cmd = { "lua-language-server" },
39+
settings = {
40+
Lua = {
41+
runtime = { version = "LuaJIT" },
42+
diagnostics = { globals = { "vim" } },
43+
workspace = {
44+
library = vim.api.nvim_get_runtime_file("", true),
45+
checkThirdParty = false,
46+
},
47+
telemetry = { enable = false }
48+
}
49+
}
50+
}
51+
52+
vim.lsp.config.nil_ls = {
53+
cmd = { "nil" },
54+
settings = {
55+
["nil"] = {
56+
formatting = { command = { "${pkgs.nixfmt}/bin/nixfmt" } }
57+
}
58+
}
59+
}
60+
61+
vim.lsp.config.yamlls = {
62+
cmd = { "yaml-language-server" },
63+
settings = {
64+
yaml = {
65+
schemaStore = { enable = true },
66+
validate = true
67+
}
68+
}
69+
}
70+
71+
vim.api.nvim_create_autocmd("LspAttach", {
72+
callback = function(args)
73+
local opts = { buffer = args.buf }
74+
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
75+
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
76+
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
77+
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
78+
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
79+
vim.keymap.set("n", "<leader>lf", function() vim.lsp.buf.format({ async = true }) end, opts)
80+
end,
81+
})
82+
83+
vim.api.nvim_create_autocmd({ "FileType", "BufEnter" }, {
84+
callback = function()
85+
local bufnr = vim.api.nvim_get_current_buf()
86+
local ok = pcall(vim.treesitter.get_parser, bufnr)
87+
if ok then
88+
pcall(vim.treesitter.start, bufnr)
89+
end
90+
end,
91+
})
92+
93+
cmp.setup({
94+
snippet = {
95+
expand = function(args) luasnip.lsp_expand(args.body) end,
96+
},
97+
mapping = cmp.mapping.preset.insert({
98+
["<C-Space>"] = cmp.mapping.complete(),
99+
["<C-e>"] = cmp.mapping.abort(),
100+
["<CR>"] = cmp.mapping.confirm({ select = true }),
101+
["<Tab>"] = cmp.mapping(function(fallback)
102+
if cmp.visible() then
103+
cmp.select_next_item()
104+
elseif luasnip.expand_or_jumpable() then
105+
luasnip.expand_or_jump()
106+
else
107+
fallback()
108+
end
109+
end, { "i", "s" }),
110+
}),
111+
sources = cmp.config.sources({
112+
{ name = "nvim_lsp" },
113+
{ name = "luasnip" },
114+
{ name = "buffer" },
115+
{ name = "path" },
116+
})
117+
})
118+
119+
require("bufferline").setup({
120+
options = {
121+
mode = "buffers",
122+
separator_style = "slant",
123+
}
124+
})
125+
126+
require("lualine").setup({
127+
options = {
128+
theme = "auto",
129+
component_separators = "|",
130+
section_separators = "",
131+
},
132+
sections = {
133+
lualine_a = { "mode" },
134+
lualine_b = { "branch", "diff", "diagnostics" },
135+
lualine_c = { "filename" },
136+
lualine_x = { "encoding", "fileformat", "filetype" },
137+
lualine_y = { "progress" },
138+
lualine_z = { "location" },
139+
}
140+
})
141+
142+
require("nvim-tree").setup({
143+
view = { width = 30 },
144+
renderer = { group_empty = true },
145+
})
146+
147+
require("telescope").setup({
148+
defaults = {
149+
file_ignore_patterns = { "node_modules", ".git", ".cache", "result" },
150+
},
151+
})
152+
153+
vim.lsp.enable({ "nil_ls", "lua_ls", "bashls", "dockerls", "yamlls" })
154+
155+
vim.keymap.set("n", "<S-h>", "<cmd>bprevious<cr>", { desc = "Previous buffer" })
156+
vim.keymap.set("n", "<S-l>", "<cmd>bnext<cr>", { desc = "Next buffer" })
157+
vim.keymap.set("n", "<leader>dd", function() require("lazydocker").open() end, { desc = "LazyDocker" })
158+
vim.keymap.set("n", "<leader>dl", function() require("lazydocker").open() end, { desc = "LazyDocker logs" })
159+
vim.keymap.set("n", "<leader>e", "<cmd>NvimTreeToggle<cr>", { desc = "File tree" })
160+
vim.keymap.set("n", "<leader>fb", builtin.buffers, { desc = "Buffers" })
161+
vim.keymap.set("n", "<leader>ff", builtin.find_files, { desc = "Find files" })
162+
vim.keymap.set("n", "<leader>fg", builtin.live_grep, { desc = "Grep" })
163+
vim.keymap.set("n", "<leader>fh", builtin.help_tags, { desc = "Help" })
164+
vim.keymap.set("n", "<leader>gc", "<cmd>LazyGitCurrentFile<cr>", { desc = "LazyGit current file" })
165+
vim.keymap.set("n", "<leader>gg", "<cmd>LazyGit<cr>", { desc = "LazyGit" })
166+
vim.keymap.set("n", "<leader>q", "<cmd>bdelete<cr>", { desc = "Close buffer" })
167+
vim.keymap.set("n", "<leader>w", "<cmd>w<cr>", { desc = "Save" })
168+
vim.keymap.set("n", "<leader>x", "<cmd>xa<cr>", { desc = "Save all & quit" })
169+
EOF
170+
'';
171+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{ lib, ... }:
2+
{
3+
imports = [
4+
./configure.nix
5+
./packages.nix
6+
];
7+
}

0 commit comments

Comments
 (0)