c'est le bordel un peu
This commit is contained in:
@@ -53,6 +53,8 @@
|
||||
scream
|
||||
nixd
|
||||
alejandra
|
||||
|
||||
pulseaudio
|
||||
];
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
|
||||
@@ -2,16 +2,24 @@
|
||||
# Description: Enables X11 with i3 window manager and associated desktop tools
|
||||
# Services: xserver with i3
|
||||
# Packages: alacritty (terminal), tint2 (panel), rofi (launcher), i3lock, dunst
|
||||
{pkgs, ...}: let
|
||||
{
|
||||
pkgs,
|
||||
customConfig,
|
||||
...
|
||||
}: let
|
||||
updatescreen = pkgs.writeShellScript "updatescreens.sh" ''
|
||||
#!/bin/sh
|
||||
i3-msg restart
|
||||
feh --bg-fill --no-xinerama Downloads/fire1.png
|
||||
|
||||
'';
|
||||
in {
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
windowManager.i3.enable = true;
|
||||
windowManager.i3 = {
|
||||
enable = true;
|
||||
configFile = "/etc/nixos/dotconfig/i3/config";
|
||||
};
|
||||
autorun = true;
|
||||
};
|
||||
|
||||
@@ -29,6 +37,7 @@ in {
|
||||
IdleActionSec = "15min";
|
||||
|
||||
HandleLidSwitch = "suspend";
|
||||
HandlePowerSwitch = "ignore";
|
||||
};
|
||||
|
||||
services.picom = {
|
||||
@@ -64,6 +73,17 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.users.${customConfig.username} = {
|
||||
services.polybar = {
|
||||
enable = true;
|
||||
script = "/etc/nixos/dotconfig/polybar/start.sh";
|
||||
package = pkgs.polybar.override {
|
||||
i3Support = true;
|
||||
pulseSupport = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
alacritty
|
||||
maim
|
||||
@@ -71,7 +91,6 @@ in {
|
||||
dunst
|
||||
dex
|
||||
rofi
|
||||
polybarFull
|
||||
oh-my-posh
|
||||
playerctl
|
||||
zscroll
|
||||
|
||||
26
modules/common/editor.nix
Normal file
26
modules/common/editor.nix
Normal file
@@ -0,0 +1,26 @@
|
||||
# modules/common/editor.nix
|
||||
{pkgs, ...}: let
|
||||
nvimCfg = import ./nvim-cfg.nix {inherit pkgs;};
|
||||
in {
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
|
||||
configure = {
|
||||
customRC = ''
|
||||
${nvimCfg.baseVimConfig}
|
||||
|
||||
lua << EOF
|
||||
${nvimCfg.baseLuaConfig}
|
||||
EOF
|
||||
'';
|
||||
|
||||
packages.myNeovimPackages = {
|
||||
start = nvimCfg.basePlugins;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -12,7 +12,7 @@
|
||||
}: let
|
||||
backupToml = pkgs.writeText "dnscrypt-proxy-backup.toml" ''
|
||||
listen_addresses = ["127.0.0.2:53"]
|
||||
server_names = ["dns0-eu"]
|
||||
server_names = ["dns4eu"]
|
||||
|
||||
[sources.public-resolvers]
|
||||
urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md']
|
||||
@@ -85,7 +85,7 @@ in {
|
||||
};
|
||||
|
||||
systemd.services."dnscrypt-proxy-backup" = {
|
||||
description = "dnscrypt-proxy backup (dns0-eu)";
|
||||
description = "dnscrypt-proxy backup (dns4eu)";
|
||||
after = ["network.target"];
|
||||
wantedBy = ["multi-user.target"];
|
||||
serviceConfig = {
|
||||
@@ -93,6 +93,7 @@ in {
|
||||
Restart = "on-failure";
|
||||
NoNewPrivileges = true;
|
||||
DynamicUser = true;
|
||||
StateDirectory = "dnscrypt-proxy-backup";
|
||||
AmbientCapabilities = "CAP_NET_BIND_SERVICE";
|
||||
};
|
||||
};
|
||||
|
||||
194
modules/common/nvim-cfg.nix
Normal file
194
modules/common/nvim-cfg.nix
Normal file
@@ -0,0 +1,194 @@
|
||||
# This file configures Neovim with a set of plugins and settings to enhance the editing experience.
|
||||
{pkgs}: {
|
||||
basePlugins = with pkgs.vimPlugins; [
|
||||
rose-pine
|
||||
lualine-nvim
|
||||
everforest
|
||||
|
||||
nvim-tree-lua
|
||||
nvim-web-devicons
|
||||
|
||||
nvim-lspconfig
|
||||
nvim-cmp
|
||||
cmp-nvim-lsp
|
||||
cmp-buffer
|
||||
cmp-path
|
||||
luasnip
|
||||
cmp_luasnip
|
||||
friendly-snippets
|
||||
|
||||
conform-nvim
|
||||
|
||||
indent-blankline-nvim
|
||||
nvim-autopairs
|
||||
|
||||
copilot-vim
|
||||
];
|
||||
|
||||
baseVimConfig = ''
|
||||
set number
|
||||
set relativenumber
|
||||
set cursorline
|
||||
set expandtab
|
||||
set shiftwidth=2
|
||||
set tabstop=2
|
||||
set smartindent
|
||||
set wrap
|
||||
set scrolloff=8
|
||||
set sidescrolloff=8
|
||||
set signcolumn=yes
|
||||
'';
|
||||
|
||||
baseLuaConfig = ''
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = ","
|
||||
|
||||
-- Style/Theme
|
||||
vim.opt.termguicolors = true
|
||||
vim.opt.background = "dark"
|
||||
|
||||
require("rose-pine").setup({
|
||||
variant = "main", -- "main", "moon" ou "dawn"
|
||||
})
|
||||
|
||||
vim.cmd.colorscheme("rose-pine")
|
||||
|
||||
require("lualine").setup({
|
||||
options = {
|
||||
theme = "everforest",
|
||||
globalstatus = true,
|
||||
}
|
||||
})
|
||||
|
||||
require("ibl").setup()
|
||||
|
||||
-- File explorer
|
||||
vim.g.loadednetrw = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
|
||||
require("nvim-tree").setup({
|
||||
view = {
|
||||
side = "left",
|
||||
width = 30,
|
||||
},
|
||||
renderer = {
|
||||
group_empty = true,
|
||||
},
|
||||
filters = {
|
||||
dotfiles = false,
|
||||
},
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>b", ":NvimTreeToggle<CR>", {
|
||||
noremap = true,
|
||||
silent = true,
|
||||
desc = "Toggle file tree",
|
||||
})
|
||||
|
||||
-- Diagnostics lisibles
|
||||
vim.diagnostic.config({
|
||||
virtual_text = true,
|
||||
signs = true,
|
||||
underline = true,
|
||||
update_in_insert = false,
|
||||
severity_sort = true,
|
||||
})
|
||||
|
||||
-- Raccourcis LSP
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
callback = function(event)
|
||||
local opts = { buffer = event.buf, silent = true }
|
||||
|
||||
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
|
||||
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
|
||||
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
|
||||
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
|
||||
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
|
||||
vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts)
|
||||
|
||||
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
|
||||
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
|
||||
|
||||
vim.keymap.set("n", "<leader>f", function()
|
||||
require("conform").format({
|
||||
async = true,
|
||||
lsp_format = "fallback",
|
||||
})
|
||||
end, opts)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Autocomplétion
|
||||
require("nvim-autopairs").setup({
|
||||
disable_filetype = { "TelescopePrompt" , "vim" },
|
||||
})
|
||||
|
||||
local cmp = require("cmp")
|
||||
local luasnip = require("luasnip")
|
||||
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<C-Space>"] = cmp.mapping.complete(),
|
||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
||||
["<Tab>"] = cmp.mapping.select_next_item(),
|
||||
["<S-Tab>"] = cmp.mapping.select_prev_item(),
|
||||
}),
|
||||
|
||||
sources = cmp.config.sources({
|
||||
{ name = "nvim_lsp" },
|
||||
{ name = "luasnip" },
|
||||
{ name = "path" },
|
||||
{ name = "buffer" },
|
||||
}),
|
||||
})
|
||||
|
||||
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||
|
||||
-- LSP Nix avec nixd
|
||||
vim.lsp.config("nixd", {
|
||||
cmd = { "nixd" },
|
||||
filetypes = { "nix" },
|
||||
capabilities = capabilities,
|
||||
|
||||
settings = {
|
||||
nixd = {
|
||||
nixpkgs = {
|
||||
expr = "import <nixpkgs> { }",
|
||||
},
|
||||
|
||||
formatting = {
|
||||
command = { "alejandra" },
|
||||
},
|
||||
|
||||
options = {
|
||||
nixos = {
|
||||
expr = '(builtins.getFlake (builtins.toString ./.)).nixosConfigurations."laptop".options',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
vim.lsp.enable("nixd")
|
||||
|
||||
-- Formatage automatique avec alejandra
|
||||
require("conform").setup({
|
||||
formatters_by_ft = {
|
||||
nix = { "alejandra" },
|
||||
},
|
||||
|
||||
format_on_save = {
|
||||
timeout_ms = 1000,
|
||||
lsp_format = "fallback",
|
||||
},
|
||||
})
|
||||
'';
|
||||
}
|
||||
10
modules/common/terminal.nix
Normal file
10
modules/common/terminal.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
pkgs,
|
||||
customConfig,
|
||||
...
|
||||
}: {
|
||||
home-manager.users.${customConfig.username} = {
|
||||
programs.zellij.enable = true;
|
||||
programs.zellij.enableFishIntegration = true;
|
||||
};
|
||||
}
|
||||
@@ -7,11 +7,12 @@
|
||||
customConfig,
|
||||
...
|
||||
}: {
|
||||
systemd.sysusers.enable = false;
|
||||
users.users."${customConfig.username}" = {
|
||||
isNormalUser = true;
|
||||
home = "/home/${customConfig.username}";
|
||||
# Base groups - docker/vboxusers are added by virtualization.nix if enabled
|
||||
extraGroups = ["wheel" "audio" "dialout" "plugdev"];
|
||||
extraGroups = ["wheel" "audio" "dialout" "plugdev" "tty"];
|
||||
packages = with pkgs; [
|
||||
# Browsers & Web
|
||||
firefox
|
||||
@@ -24,7 +25,6 @@
|
||||
nextcloud-client
|
||||
|
||||
# Development
|
||||
neovim
|
||||
git
|
||||
vscode
|
||||
zotero
|
||||
@@ -46,7 +46,7 @@
|
||||
# Gaming & Entertainment
|
||||
prismlauncher # Minecraft launcher
|
||||
# widelands # Strategy game
|
||||
wasistlos # Game
|
||||
whatsapp-electron
|
||||
signal-desktop
|
||||
moonlight-qt # Game streaming
|
||||
|
||||
|
||||
Reference in New Issue
Block a user