diff --git a/home-manager/config.nix b/home-manager/config.nix index 1500485..9da135d 100644 --- a/home-manager/config.nix +++ b/home-manager/config.nix @@ -5,5 +5,22 @@ ./starship.nix ./firefox.nix ./cli.nix + ./mpv.nix + ./ssh.nix ]; + services.syncthing = { + enable = true; + tray.enable = true; + }; + + services.gpg-agent = { + enable = true; + enableSshSupport = true; + enableFishIntegration = true; + pinentryPackage = pkgs.pinentry-tty; + maxCacheTtl = 60480000; + maxCacheTtlSsh = 60480000; + defaultCacheTtl = 60480000; + defaultCacheTtlSsh = 60480000; + }; } diff --git a/home-manager/firefox.nix b/home-manager/firefox.nix index 78bba58..3806613 100644 --- a/home-manager/firefox.nix +++ b/home-manager/firefox.nix @@ -29,5 +29,7 @@ "extensions.pocket.enabled" = false; "browser.newtabpage.activity-stream.default.sites" = ""; "browser.compactmode.show" = true; + # "ui.textScaleFactor" = 90; + "layout.css.devPixelsPerPx" = 1.7; }; } diff --git a/home-manager/fish.nix b/home-manager/fish.nix index bbc6774..7caf1b3 100644 --- a/home-manager/fish.nix +++ b/home-manager/fish.nix @@ -26,18 +26,36 @@ "df" = "df -x tmpfs -x devtmpfs -x efivarfs -h"; # Nix - "nrs" = "sudo nixos-rebuild switch --flake ~gkaklas/nix/nixos/"; - "upn" = "sudo nix flake update ~gkaklas/nix/nixos/"; - "hms" = "home-manager switch --flake ~/nix/home-manager/"; - "uph" = "nix flake update ~/nix/home-manager/ "; + "nrs" = "sudo nixos-rebuild switch --flake path:/home/gkaklas/nix/nixos/"; + "upn" = "sudo nix flake update --flake path:/home/gkaklas/nix/nixos/"; + "cln" = "sudo nix profile wipe-history --older-than 7d --profile /nix/var/nix/profiles/system"; + "hms" = "home-manager switch --flake path:/home/gkaklas/nix/home-manager/"; + "hm" = "home-manager --flake path:/home/gkaklas/nix/home-manager/"; + "uph" = "nix flake update --flake path:/home/gkaklas/nix/home-manager/ "; + "clh" = "nix profile wipe-history --older-than 7d && home-manager expire-generations '-7 days'"; + "update" = "upn && nrs && cln && uph && hms && clh && nix store gc && nix store optimise && ntfy pub kelly 'Update done!'"; # git "gc" = "git commit --verbose --gpg-sign --signoff"; "gc!" = "git commit --verbose --gpg-sign --signoff --amend"; "gst" = "git status"; + "gd" = "git diff"; + "grbi" = "git rebase -i"; + "grba" = "git rebase --abort"; + "grbc" = "git rebase --continue"; "gdca" = "git diff --cached"; "gapa" = "git add --patched"; "glola" = "git log --graph --pretty=\"%G?-%C(magenta)%h %C(yellow)(%al)%C(cyan): %s\" --color=always"; + + # zellij + kelly + jelly + it's fun and memorable + "zelly" = "zellij attach -c main"; + # TODO: I tried calling $EDITOR but it wouldn't work + "e" = "nvim"; + "cdt" = "cd (mktemp -d)"; + }; + functions = { + ns = "nix shell nixpkgs#$argv[1]"; + nss = "nix shell nixpkgs#$argv[1] -c $argv"; }; shellAbbrs = { diff --git a/home-manager/flake.nix b/home-manager/flake.nix index 66fa209..754e124 100644 --- a/home-manager/flake.nix +++ b/home-manager/flake.nix @@ -16,6 +16,8 @@ inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; }; + nixvim.url = "github:nix-community/nixvim"; + nixvim.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { @@ -23,6 +25,7 @@ home-manager, plasma-manager, nix-flatpak, + nixvim, ... }: let system = "x86_64-linux"; @@ -35,10 +38,12 @@ ./config.nix ./packages.nix ./flatpak.nix - ./plasma/plasma.nix - - plasma-manager.homeManagerModules.plasma-manager nix-flatpak.homeManagerModules.nix-flatpak + ./plasma/plasma.nix + plasma-manager.homeManagerModules.plasma-manager + + nixvim.homeManagerModules.nixvim + ./nixvim/nixvim.nix ]; }; }; diff --git a/home-manager/flatpak.nix b/home-manager/flatpak.nix index 4a20bdf..cb9834f 100644 --- a/home-manager/flatpak.nix +++ b/home-manager/flatpak.nix @@ -6,8 +6,8 @@ services.flatpak.enable = true; services.flatpak.update.auto.enable = false; services.flatpak.uninstallUnmanaged = true; + services.flatpak.update.onActivation = true; services.flatpak.packages = [ - "com.obsproject.Studio" "com.github.tchx84.Flatseal" "com.github.wwmm.easyeffects" "com.prusa3d.PrusaSlicer" @@ -22,10 +22,27 @@ "org.kde.krita" "org.kde.kwrite" "org.kde.okular" + "org.kde.filelight" "org.keepassxc.KeePassXC" "org.libreoffice.LibreOffice" "org.mozilla.Thunderbird" - "com.github.Eloston.UngoogledChromium" - "io.podman_desktop.PodmanDesktop" + "io.github.ungoogled_software.ungoogled_chromium" + "org.sqlitebrowser.sqlitebrowser" + "io.github.jacalz.rymdport" # Wormhole + "ca.hamaluik.Timecop" + "org.kde.kleopatra" + "com.valvesoftware.Steam" + "io.github.nokse22.Exhibit" + "io.github.f3d_app.f3d" + "org.dune3d.dune3d" + "org.freecadweb.FreeCAD" ]; + services.flatpak.overrides = { + global.Context.filesystems = ["xdg-config/gtk-3.0"]; + "com.valvesoftware.Steam".Context = { + filesystems = [ + "/mnt/games:rw" + ]; + }; + }; } diff --git a/home-manager/home.nix b/home-manager/home.nix index a3a2b50..e409c5d 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -7,4 +7,12 @@ home.username = "gkaklas"; home.homeDirectory = "/home/gkaklas"; home.stateVersion = "23.11"; + + services.kdeconnect.enable = true; + home.sessionVariables = rec { + EDITOR = "nvim"; + }; + home.sessionPath = [ + "$HOME/bin" + ]; } diff --git a/home-manager/homeFiles.nix b/home-manager/homeFiles.nix index 3b78b5c..48d1513 100644 --- a/home-manager/homeFiles.nix +++ b/home-manager/homeFiles.nix @@ -6,6 +6,11 @@ }: { imports = [./zellij.nix]; + home.file.".cargo/config.toml".text = '' + [build] + target-dir = "/mnt/build" + ''; + home.file.".config/ripgrep/ignore".text = '' -. ''; @@ -13,6 +18,7 @@ home.file.".config/containers/storage.conf".text = '' [storage] rootless_storage_path="/mnt/storage/.containers" + driver="btrfs" ''; home.file.".config/keepassxc/keepassxc.ini".text = '' diff --git a/home-manager/mpv.nix b/home-manager/mpv.nix new file mode 100644 index 0000000..0716f05 --- /dev/null +++ b/home-manager/mpv.nix @@ -0,0 +1,45 @@ +{pkgs, ...}: { + programs.mpv = { + enable = true; + config={ + volume = 50; + slang = "en,eng"; + alang = "en,eng"; + sub-scale-with-window=true; + fullscreen = true; + pause = true; + }; + + bindings = { + t = "show-progress"; + + UP = "add volume 5"; + DOWN = "add volume -5"; + WHEEL_UP = "add volume 5"; + WHEEL_DOWN = "add volume -5"; + + RIGHT = "seek 10 exact"; + LEFT = "seek -10 exact"; + "Shift+RIGHT" = "seek 3 exact"; + "Shift+LEFT" = "seek -3 exact"; + "Ctrl+RIGHT" = "seek 60 exact"; + "Ctrl+LEFT" = "seek -60 exact"; + + g = "add sub-delay -0.1"; + h = "add sub-delay 0.1"; + j = "add audio-delay -0.05"; + k = "add audio-delay 0.05"; + + v = "cycle sub"; + V = "cycle sub-visibility"; + + "[" = "add speed -0.01"; + "]" = "add speed 0.01"; + + n = "playlist-next force"; + p = "playlist-prev force"; + + Enter = "ignore"; + }; + }; +} diff --git a/home-manager/nixvim/keymaps.nix b/home-manager/nixvim/keymaps.nix new file mode 100644 index 0000000..2edc976 --- /dev/null +++ b/home-manager/nixvim/keymaps.nix @@ -0,0 +1,50 @@ +{ + pkgs, + config, + ... +}: let + # Telescope + # { key = "ff"; + # action = config.lib.nixvim.mkRaw "require('telescope.builtin').find_files"; + # } becomes: + # { key = ldr "ff"; + # action = mfn "telescope.builtin" "find_files"; + # } becomes: + # (tscope "ff" "find_files") + lua = config.lib.nixvim.mkRaw; + ldr = k: "${k}"; + key = k: fn: { + key = "${k}"; + action = lua "${fn}"; + }; + lkey = k: fn: { + key = ldr "${k}"; + action = lua "${fn}"; + }; + luaf = fn: "function() ${fn} end"; + luafr = m: fn: "function() require('${m}').${fn} end"; + + mkey = module: k: fn: (lkey "${k}" "require('${module}').${fn}"); + tscope = k: fn: mkey "telescope.builtin" "${k}" "${fn}"; + gs = k: fn: mkey "gitsigns" "${k}" "${fn}"; +in { + programs.nixvim.keymaps = [ + (tscope "ff" "find_files") + (tscope "fg" "live_grep") + (tscope "fb" "buffers") + (tscope "fh" "help_tags") + + (gs "hs" "stage_hunk") + (gs "rs" "reset_hunk") + (gs "hS" "stage_buffer") + (gs "hu" "undo_stage_hunk") + (gs "hR" "reset_buffer") + (gs "hp" "preview_hunk") + (gs "tb" "toggle_current_line_blame") + (gs "hd" "diffthis") + (gs "td" "toggle_deleted") + + (key "" (luafr "nvim-tree.api" "tree.toggle()")) + (lkey "d" "vim.cmd.bdelete") + ]; +} diff --git a/home-manager/nixvim/nixvim.nix b/home-manager/nixvim/nixvim.nix new file mode 100644 index 0000000..6a3adc7 --- /dev/null +++ b/home-manager/nixvim/nixvim.nix @@ -0,0 +1,109 @@ +{ + pkgs, + config, + ... +}: { + imports = [ + ./keymaps.nix + ]; + programs.nixvim = { + enable = true; + plugins = { + # UI + nvim-tree.enable = true; + notify.enable = true; + which-key.enable = true; + headlines.enable = true; + neoscroll.enable = true; + statuscol.enable = true; + web-devicons.enable =true; + + telescope.enable = true; + telescope.extensions = { + undo.enable = true; + file-browser = { + enable = true; + settings = { + use_fd = true; + hidden = true; + }; + }; + }; + lualine = { + enable = true; + settings.options.theme="molokai"; + }; + barbar = { + enable = true; + settings = { + preset = "slanted"; + }; + }; + + # Code visibility + rainbow-delimiters.enable = true; + indent-blankline.enable = true; + + # Languages + nix.enable = true; + rustaceanvim.enable = true; + + # Git + neogit.enable = true; + diffview.enable = true; + gitsigns = { + enable = true; + settings = { + current_line_blame = true; + }; + }; + + # Uncategorized + luasnip.enable = true; + cmp.enable = true; + cmp_luasnip.enable = true; + cmp-path.enable = true; + cmp-git.enable = true; + friendly-snippets.enable = true; + nvim-ufo.enable = true; + lazy.enable = true; + comment.enable = true; + treesitter.enable = true; + colorizer.enable = true; + }; + plugins.noice= { + enable = true; + settings.presets = { + command_palette = true; + }; + }; + }; + programs.nixvim.extraPlugins = [ + pkgs.vimPlugins.legendary-nvim + pkgs.vimPlugins.guess-indent-nvim + pkgs.vimPlugins.vim-monokai-tasty + (pkgs.vimUtils.buildVimPlugin { + name = "cmp-async-path"; + src = pkgs.fetchgit { + url = "https://codeberg.org/FelipeLema/cmp-async-path"; + rev = "7df7f3721c45aac26b6e0474087538f4681c9c7a"; + hash = "sha256-LSWWsn8aKogjWevcbjITXu30a2k3wY3+f2+l7WDAZpY="; + }; + }) + ]; + + programs.nixvim.colorscheme = "vim-monokai-tasty"; + programs.nixvim.clipboard.providers.wl-copy.enable = true; + programs.nixvim.opts = { + mousemoveevent = true; + relativenumber = true; + number = true; + scroll = 2; + foldlevel = 99; + foldlevelstart = 99; + foldenable = true; + }; + programs.nixvim.globals = { + mapleader = ";"; + }; +} diff --git a/home-manager/packages.nix b/home-manager/packages.nix index ceeb4fa..fc5999a 100644 --- a/home-manager/packages.nix +++ b/home-manager/packages.nix @@ -1,17 +1,14 @@ {pkgs, ...}: { home.packages = with pkgs; [ # GUI - filelight - spotify-qt lxqt.pavucontrol-qt alacritty usbimager - kdeplasma-addons - plasma-systemmonitor + kdePackages.kdeplasma-addons + kdePackages.plasma-systemmonitor # CLI fzf - neovim htop nnn wl-clipboard @@ -22,7 +19,6 @@ ncdu dua gnupg - spotifyd mosh unzip yt-dlp diff --git a/home-manager/plasma/configFile.nix b/home-manager/plasma/configFile.nix index 1225eb8..d6fc1e1 100644 --- a/home-manager/plasma/configFile.nix +++ b/home-manager/plasma/configFile.nix @@ -6,25 +6,7 @@ "kdeglobals"."Shortcuts"."Quit".value = ""; kwinrc = { - Desktops = { - # uuidgen -rC6 - "Id_1".value = "1c3962f3-bd6e-42e4-bcaf-9f1dc0a55cab"; - "Id_2".value = "a76e8497-148d-44d8-96a1-026278642d79"; - "Id_3".value = "e2f3dcc2-8009-46b0-af71-745daf70b846"; - "Id_4".value = "4e471453-b165-4c9f-bc56-a2eb9e7f969e"; - "Id_5".value = "645f9867-ff82-48b3-ac5b-cc389bc9fd31"; - "Id_6".value = "95e0579d-b58f-47c7-a47f-5caf30cdf399"; - "Name_1".value = "Web"; - "Name_2".value = "Main"; - "Name_3".value = "Comm"; - "Name_4".value = "Aux1"; - "Name_5".value = "Aux2"; - "Name_6".value = "Music"; - "Number".value = 6; - "Rows".value = 1; - }; "Windows"."FocusPolicy".value = "FocusFollowsMouse"; - "Windows"."BorderlessMaximizedWindows".value = true; }; kcminputrc = { diff --git a/home-manager/plasma/plasma.nix b/home-manager/plasma/plasma.nix index b2783a7..d9f2dbd 100644 --- a/home-manager/plasma/plasma.nix +++ b/home-manager/plasma/plasma.nix @@ -16,6 +16,18 @@ lookAndFeel = "org.kde.breezedark.desktop"; wallpaper = "${pkgs.libsForQt5.plasma-workspace-wallpapers}/share/wallpapers/MilkyWay/contents/images/1080x1920.png"; }; + kwin.virtualDesktops = { + rows = 1; + number = 6; + names = ["Web" "Main" "Comm" "Aux1" "Aux2" "Music"]; + }; + kwin.borderlessMaximizedWindows = true; + kwin.nightLight = { + enable = true; + mode = "location"; + location.latitude = "37.9755648"; + location.longitude = "23.7348324"; + }; shortcuts = { ksmserver = { diff --git a/home-manager/ssh.nix b/home-manager/ssh.nix new file mode 100644 index 0000000..c153dae --- /dev/null +++ b/home-manager/ssh.nix @@ -0,0 +1,3 @@ +{pkgs, ...}: { + programs.ssh.enable = true; +} diff --git a/home-manager/zellij.nix b/home-manager/zellij.nix index b027634..0b1bcf3 100644 --- a/home-manager/zellij.nix +++ b/home-manager/zellij.nix @@ -13,6 +13,10 @@ normal { bind "Ctrl w" { SwitchToMode "pane"; } bind "Ctrl '" { SwitchToMode "session"; } + } + ui { + pane_frames { + rounded_corners true } } ''; @@ -36,16 +40,22 @@ pane { pane command="htop" pane command="watch" { - args "df" "-h" - } - pane + args "df -x tmpfs -x devtmpfs -x efivarfs -h" + } + pane command="watch" { + args "sensors k10temp-pci-00c3" + } } } } - tab name="HM" cwd="~/nix" { + tab name="HM" cwd="~/nix/home-manager" { pane split_direction="vertical" { pane - pane + pane command="watchexec" { + args "-c" "--" "home-manager" "switch" "--flake" "path:/home/gkaklas/nix/home-manager/" + } + } + } } } } diff --git a/nixos/disko.nix b/nixos/disko.nix index 3ab6acc..4fcd3ec 100644 --- a/nixos/disko.nix +++ b/nixos/disko.nix @@ -43,7 +43,6 @@ subvolumes = { "gkaklas/.local/share/flatpak" = { mountpoint = "/home/gkaklas/.local/share/flatpak"; - mountOptions = ["defaults" "user"]; }; }; mountpoint = "/home"; @@ -55,7 +54,22 @@ type = "filesystem"; format = "btrfs"; mountpoint = "/mnt/storage"; - mountOptions = ["defaults" "user"]; + }; + }; + disko.devices.lvm_vg.VolGroup0.lvs.build = { + size = "20G"; + content = { + type = "filesystem"; + format = "btrfs"; + mountpoint = "/mnt/build"; + }; + }; + disko.devices.lvm_vg.VolGroup0.lvs.games = { + size = "20G"; + content = { + type = "filesystem"; + format = "btrfs"; + mountpoint = "/mnt/games"; }; }; } diff --git a/nixos/kanata.nix b/nixos/kanata.nix index ad0813f..b0706f4 100644 --- a/nixos/kanata.nix +++ b/nixos/kanata.nix @@ -5,8 +5,16 @@ ... }: { services.kanata.enable = true; + services.kanata.keyboards.mykbd.extraDefCfg = '' + linux-dev-names-include ( + "AT Translated Set 2 keyboard" + ) + ''; services.kanata.keyboards.mykbd.config = '' + (defvirtualkeys + tld S-grv + ) (defsrc grv 1 2 3 4 5 6 7 8 9 0 - = bspc tab q w f p b j l u y ' [ ] @@ -54,13 +62,13 @@ XX XX XX XX 0 XX ) - (deflayer misc + (deflayer symbols ;;grv 1 2 3 4 5 6 7 8 9 0 - = bspc XX XX XX XX XX XX XX XX XX XX XX XX XX XX ;;tab q w f p b j l u y ' [ ] - XX S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 S-9 S-0 XX XX + XX S-1 S-2 S-6 S-5 grv S-7 S-3 S-8 S-4 XX XX XX ;;caps a r s t g m n e i o - XX XX XX XX XX XX XX [ S-[ S-9 XX + XX XX XX XX XX @tld XX [ S-[ S-9 XX ;;lsft z x c d v k h , . / XX XX XX XX XX XX XX ] S-] S-0 XX ;;lctl lmet lalt spc ; ret @@ -69,12 +77,13 @@ (defalias num (layer-while-held num) arrows (layer-while-held arrows) - misc (layer-while-held misc) + symbols (layer-while-held symbols) cht (chord example t) chs (chord example s) chd (chord example d) chspc (chord example spc) chret (chord example ret) + tld (on-press tap-virtualkey tld) ) (defchords example 500 (t) t @@ -84,7 +93,7 @@ (ret) ret (spc s) @num (spc t) @arrows - (spc d) @misc + (spc d) @symbols ) ''; }