{config, pkgs, ...}: { home.username = "ulve"; home.homeDirectory = "/home/ulve"; programs.git = { enable = true; settings.user.name = "ulve"; settings.user.email = "johansson.olov@gmail.com"; delta.enable = true; }; programs.eza = { enable = true; enableZshIntegration = true; git = true; icons = "auto"; }; programs.bat = { enable = true; }; home.stateVersion = "26.05"; programs.bash = { enable = true; shellAliases = { n = "nvim"; rebuild = "sudo nixos-rebuild switch --flake ~/nixos-dotfiles"; }; }; programs.zoxide = { enable = true; enableZshIntegration = true; options = [ "--cmd z" ]; }; programs.fzf = { enable = true; enableZshIntegration = true; }; programs.zsh = { enable = true; shellAliases = { n = "nvim"; rebuild = "sudo nixos-rebuild switch --flake ~/nixos-dotfiles"; }; initContent = '' bindkey "^[[A" history-search-backward bindkey "^[[B" history-search-forward ''; }; programs.starship = { enable = true; enableZshIntegration = true; settings = { format = "$directory$git_branch$git_status$line_break$character"; right_format = "$time"; directory = { truncation_length = 3; truncate_to_repo = false; style = "bold cyan"; }; git_branch = { format = "[$symbol$branch]($style) "; style = "bold purple"; }; git_status = { format = "([\\[$all_status$ahead_behind\\]]($style) )"; style = "bold red"; ahead = "⇡$count"; behind = "⇣$count"; diverged = "⇕⇡$ahead_count⇣$behind_count"; modified = "!$count"; untracked = "?$count"; staged = "+$count"; deleted = "✘$count"; }; time = { disabled = false; format = "[$time]($style)"; style = "dimmed white"; time_format = "%H:%M:%S"; }; character = { success_symbol = "[❯](bold green)"; error_symbol = "[❯](bold red)"; }; }; }; programs.ssh = { enable = true; enableDefaultConfig = false; settings = { "codeberg.org" = { IdentityFile = "~/.ssh/id_ed25519_codeberg"; }; }; }; xdg.configFile."qtile".source = ./config/qtile; xdg.configFile."nvim" = { source = config.lib.file.mkOutOfStoreSymlink "/home/ulve/nixos-dotfiles/config/dottily"; }; xdg.configFile."sway".source = ./config/sway; home.packages = with pkgs; [ claude-code # ai coding assistant wl-clipboard # wayland copy utils slurp # select region in wayland for copy grim # grab images from wayland brave # browser fastfetch # vanity wlogout # logout menu foot # terminal wmenu # dynamic menu btop # resource monitor htop # process viewer tmux # terminal multiplexer neovim # editor fd # fast find alternative ripgrep # fast grep alternative gcc # c compiler (also needed by treesitter) nodejs # javascript runtime powershell # yes teams-for-linux # teams yazi # terminal file manager thunar # gui file manager tree-sitter # parser generator (nvim) nil # language server for nix nixpkgs-fmt # nix code formatter lua-language-server # lsp: lua pyright # lsp: python bash-language-server # lsp: bash vtsls # lsp: typescript/javascript gopls # lsp: go omnisharp-roslyn # lsp: c# efm-langserver # lsp: general purpose (runs linters/formatters) stylua # formatter: lua lua54Packages.luacheck # linter: lua black # formatter: python python3Packages.flake8 # linter: python prettierd # formatter: js/ts/html/css/json (daemon) eslint_d # linter: js/ts (daemon) fixjson # formatter: json shellcheck # linter: bash/sh shfmt # formatter: bash/sh gofumpt # formatter: go (stricter gofmt) go # go toolchain (needed by gopls + revive) revive # linter: go dotnet-sdk # .net sdk (c#) jq # json processor ]; }