commit 139aac8feff0e908e8287ab00384fe94584a3ea1 Author: Daniel Kauss Serna Date: Fri Feb 6 10:26:29 2026 +0100 initial commit, pc config diff --git a/config/nvim/init.lua b/config/nvim/init.lua new file mode 100644 index 0000000..ace8d80 --- /dev/null +++ b/config/nvim/init.lua @@ -0,0 +1,202 @@ +-- General +vim.o.mouse = "" +vim.o.number = true +vim.o.relativenumber = true +vim.g.mapleader = " " + +-- Search +vim.o.showmatch = true +vim.o.ignorecase = true +vim.o.hlsearch = true +vim.o.wildmode = "longest,list" + +-- Tab +vim.o.tabstop = 4 +vim.o.shiftwidth = 4 +vim.o.autoindent = true +-- vim.o.smartindent = true + +-- Style +vim.o.termguicolors = true +-- set list listchars=tab:\▎\ ,nbsp:␣,trail:•,extends:⟩,precedes:⟨ +-- hi NonText guifg=bg + +-- Keybinds +-- Remove arrow keys +vim.keymap.set('', '', '') +vim.keymap.set('', '', '') +vim.keymap.set('', '', '') +vim.keymap.set('', '', '') +vim.keymap.set('i', '', '') +vim.keymap.set('i', '', '') +vim.keymap.set('i', '', '') +vim.keymap.set('i', '', '') + +-- LSP +vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) +vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) +vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) +vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) +vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts) +vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts) +vim.keymap.set('n', 'wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) +end, opts) +vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) +vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) +vim.keymap.set("n", "e", vim.diagnostic.open_float, bufopts) +vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts) +vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) +vim.keymap.set('n', 's', function() + vim.lsp.buf.format { async = true } +end, opts) + +-- Terminal +vim.keymap.set('', 'tt', ':terminali') +vim.keymap.set('t', '', '') + +-- Other +vim.keymap.set('n', '', 'tabnew $MYVIMRC') + +-- bootstrap lazy.nvim +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +-- Plugins +require("lazy").setup({ + -- dependencies + "onsails/lspkind.nvim", + "kyazdani42/nvim-web-devicons", + "nvim-lua/plenary.nvim", + + -- style + "nvim-treesitter/nvim-treesitter", -- syntax highlight + + -- themes + "kdheepak/monochrome.nvim", + "Domeee/mosel.nvim", + "folke/tokyonight.nvim", + "rose-pine/neovim", + + -- integrations + "lewis6991/gitsigns.nvim", -- git sign bar integration + "nvim-telescope/telescope.nvim", -- fuzzy search + + -- cmp + "hrsh7th/nvim-cmp", -- autocompletion + "hrsh7th/cmp-nvim-lsp", -- lsp source + "hrsh7th/cmp-buffer", -- buffer source + "hrsh7th/cmp-path", -- path source + "saadparwaiz1/cmp_luasnip", + "L3MON4D3/LuaSnip", -- snippet engine + + -- lsp + "williamboman/mason.nvim", -- lsp auto install + "williamboman/mason-lspconfig.nvim", -- auto lsp config + "neovim/nvim-lspconfig", -- lsp config + + -- formating + "sbdchd/neoformat", + + -- linting + "mfussenegger/nvim-lint" +}) +vim.cmd("colo mosel") + + +-- treesitter +require("nvim-treesitter").setup({ + highlight = { + enable = true + } +}) + +-- gitsigns +require('gitsigns').setup() +vim.keymap.set('n', 'gb', 'Gitsigns blame_line') + +-- telescope +local builtin = require('telescope.builtin') +vim.keymap.set('n', 'ff', 'Telescope find_files') +vim.keymap.set('n', 'fr', 'Telescope oldfiles') +vim.keymap.set('n', 'fg', 'Telescope live_grep') +vim.keymap.set('n', 'fs', 'Telescope grep_string') +vim.keymap.set('n', 'fb', 'Telescope buffers') +vim.keymap.set('n', 'fh', 'Telescope help_tags') + +-- cmp config +local cmp = require("cmp") +cmp.setup { + formatting = { + format = function(entry, vim_item) + -- fancy icons and a name of kind + vim_item.kind = require("lspkind").presets.default[vim_item.kind] .. + " " .. vim_item.kind + -- set a name for each source + vim_item.menu = ({ + buffer = "[Buffer]", + nvim_lsp = "[LSP]", + path = "[Path]", + -- snip = "[Snip]" + })[entry.source.name] + return vim_item + end + }, + mapping = { + [""] = cmp.mapping.select_prev_item(), + [""] = cmp.mapping.select_next_item(), + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.close(), + [""] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Insert, + select = true + }), + }, + sources = { + { name = "nvim_lsp" }, + { name = "buffer" }, + { name = "path" }, + -- { name = "luasnip" } + }, + snippet = { + expand = function(args) + require 'luasnip'.lsp_expand(args.body) + end + }, + completion = { completeopt = "menu,menuone,noinsert" } +} + +-- mason +require("mason").setup() +require("mason-lspconfig").setup { + automatic_enable = true +} + +vim.lsp.enable({ + 'clangd', + 'hls' +}) + +-- require('lint').linters_by_ft = { +-- markdown = {'vale'}, +-- css = {"stylelint"}, +-- html = {"htmlhint"}, +-- } + +-- vim.api.nvim_create_autocmd({ "BufWritePost" }, { +-- callback = function() +-- require("lint").try_lint() +-- end, +-- }) diff --git a/nixos/configuration.nix b/nixos/configuration.nix new file mode 100644 index 0000000..dd44885 --- /dev/null +++ b/nixos/configuration.nix @@ -0,0 +1,74 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ./hardware-configuration.nix + ./programs.nix + ]; + + users.users.daniel = { + isNormalUser = true; + description = "Daniel"; + extraGroups = [ "networkmanager" "wheel" ]; + }; + + users.defaultUserShell = pkgs.zsh; + environment.shellAliases = { + rebuild = "sudo nixos-rebuild switch --flake ~/Documents/Nix/pc-config/nixos#daniel"; + rebuild-test = "sudo nixos-rebuild test --flake ~/Documents/Nix/pc-config/nixos#daniel"; + rebuild-dry = "nixos-rebuild dry-run --flake ~/Documents/Nix/pc-config/nixos#daniel"; + + to-public = "ssh -r danielk.me:/var/www/danielk.me/public"; + }; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "laptop"; + networking.networkmanager.enable = true; + networking.firewall.enable = false; + + time.timeZone = "Europe/Madrid"; + + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + console.keyMap = "es"; + + services.xserver.enable = false; + services.xserver.xkb.layout = "es"; + + services.displayManager.gdm.enable = true; + services.displayManager.gdm.wayland = true; + services.desktopManager.gnome.enable = true; + + services.printing.enable = true; + services.libinput.enable = true; + + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + services.pulseaudio.enable = false; + security.rtkit.enable = true; + + nixpkgs.config.allowUnfree = true; + + system.stateVersion = "25.11"; +} + diff --git a/nixos/flake.lock b/nixos/flake.lock new file mode 100644 index 0000000..8b40c7b --- /dev/null +++ b/nixos/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1770136044, + "narHash": "sha256-tlFqNG/uzz2++aAmn4v8J0vAkV3z7XngeIIB3rM3650=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e576e3c9cf9bad747afcddd9e34f51d18c855b4e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nixos/flake.nix b/nixos/flake.nix new file mode 100644 index 0000000..8a6fe80 --- /dev/null +++ b/nixos/flake.nix @@ -0,0 +1,19 @@ +{ + description = "Personal computer NixOS configuration"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; + }; + + outputs = { self, nixpkgs, ... }: + let + system = "x86_64-linux"; + in { + nixosConfigurations.daniel = nixpkgs.lib.nixosSystem { + inherit system; + modules = [ + ./configuration.nix + ]; + }; + }; +} diff --git a/nixos/hardware-configuration.nix b/nixos/hardware-configuration.nix new file mode 100644 index 0000000..d8de6ea --- /dev/null +++ b/nixos/hardware-configuration.nix @@ -0,0 +1,33 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/7d432fe3-7b18-47ed-bffa-28355e34c131"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/60E7-33F0"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/785d9e21-9079-4c21-88f4-c114f7593703"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/nixos/programs.nix b/nixos/programs.nix new file mode 100644 index 0000000..2df7db5 --- /dev/null +++ b/nixos/programs.nix @@ -0,0 +1,39 @@ +{ config, pkgs, ... }: + +{ + users.users.daniel.packages = with pkgs; [ + ghostty + vlc + localsend + krita + aseprite + godot + godotPackages.export-template + audacity + steam + libreoffice + signal-desktop + python313 + nodejs_24 + ]; + + programs.zsh.enable = true; + programs.git.enable = true; + programs.firefox.enable = true; + + environment.systemPackages = with pkgs; [ + neovim + wget + ffmpeg-full + libva-utils + vdpauinfo + ]; + + hardware.graphics.enable = true; + hardware.graphics.extraPackages = with pkgs; [ + intel-media-driver + intel-vaapi-driver + libva-vdpau-driver + libvdpau-va-gl + ]; +}