diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/desktop/apps/browsers/firefox.nix | 4 | ||||
-rw-r--r-- | modules/desktop/apps/editors/neovim.nix | 48 | ||||
-rw-r--r-- | modules/desktop/apps/editors/vscode.nix | 27 | ||||
-rw-r--r-- | modules/desktop/apps/games/lutris.nix | 23 | ||||
-rw-r--r-- | modules/desktop/apps/games/prism.nix | 23 | ||||
-rw-r--r-- | modules/desktop/apps/games/vintagestory.nix | 14 | ||||
-rw-r--r-- | modules/desktop/apps/mpd.nix | 8 | ||||
-rw-r--r-- | modules/desktop/apps/mutt-wizard.nix | 26 | ||||
-rw-r--r-- | modules/desktop/apps/virt.nix | 49 | ||||
-rw-r--r-- | modules/desktop/hyprland.nix | 62 | ||||
-rw-r--r-- | modules/hardware/audio.nix | 22 | ||||
-rw-r--r-- | modules/hardware/bluetooth.nix | 2 | ||||
-rw-r--r-- | modules/hardware/gpu.nix | 37 | ||||
-rw-r--r-- | modules/options.nix | 1 | ||||
-rw-r--r-- | modules/security.nix | 28 |
15 files changed, 286 insertions, 88 deletions
diff --git a/modules/desktop/apps/browsers/firefox.nix b/modules/desktop/apps/browsers/firefox.nix index 3c647f1..16cd3fd 100644 --- a/modules/desktop/apps/browsers/firefox.nix +++ b/modules/desktop/apps/browsers/firefox.nix @@ -47,8 +47,8 @@ in definedAliases = [ "@np" ]; }; "NixOS Wiki" = { - urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }]; - iconUpdateURL = "https://nixos.wiki/favicon.png"; + urls = [{ template = "https://wiki.nixos.org/index.php?search={searchTerms}"; }]; + iconUpdateURL = "https://wiki.nixos.org/favicon.png"; updateInterval = 24 * 60 * 60 * 1000; definedAliases = [ "@nw" ]; }; diff --git a/modules/desktop/apps/editors/neovim.nix b/modules/desktop/apps/editors/neovim.nix index ee6424b..f0040e0 100644 --- a/modules/desktop/apps/editors/neovim.nix +++ b/modules/desktop/apps/editors/neovim.nix @@ -1,12 +1,10 @@ { config, - options, lib, pkgs, ... }: let nvimConf = config.modules.desktop.apps.editors.neovim; - configDir = config.nixosConfig.configDir; in { options.modules.desktop.apps.editors.neovim = { enable = lib.mkOption { @@ -24,11 +22,9 @@ in { }; home.packages = [ - pkgs.rnix-lsp - pkgs.ccls - pkgs.nodePackages.bash-language-server + pkgs.clang-tools + pkgs.nil pkgs.texlab - pkgs.sumneko-lua-language-server ]; home.manager.programs.neovim = { @@ -41,31 +37,37 @@ in { luafile /etc/nixos/config/nvim/lua/settings.lua luafile /etc/nixos/config/nvim/lua/lsp.lua ''; + coc.enable = true; + coc.settings = { + "suggest.noselect" = true; + "suggest.enablePreview" = true; + "suggest.enablePreselect" = false; + "suggest.disableKind" = true; + "inlayHint.enable" = false; + + "nix.enableLanguageServer" = true; + "nix.serverPath" = "nil"; + }; plugins = with pkgs.vimPlugins; [ nvim-web-devicons gitsigns-nvim - nvim-tree-lua catppuccin-nvim + vim-commentary + vim-fugitive + + popup-nvim + plenary-nvim + telescope-nvim + nvim-lspconfig - nvim-cmp - cmp-cmdline - cmp-nvim-lsp - cmp-buffer - cmp-path - cmp-vsnip - cmp-treesitter - - vim-nix - vim-vsnip - nvim-treesitter.withAllGrammars - neoformat + nvim-treesitter nvim-treesitter.withAllGrammars - bufferline-nvim - lualine-nvim - alpha-nvim - ]; + coc-clangd + coc-lua + coc-spell-checker + ]; }; }; } diff --git a/modules/desktop/apps/editors/vscode.nix b/modules/desktop/apps/editors/vscode.nix new file mode 100644 index 0000000..23bf15d --- /dev/null +++ b/modules/desktop/apps/editors/vscode.nix @@ -0,0 +1,27 @@ +{ + config, + options, + lib, + pkgs, + ... +}: let + codeConf = config.modules.desktop.apps.editors.vscode; + configDir = config.nixosConfig.configDir; +in { + options.modules.desktop.apps.editors.vscode = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + }; + }; + + config = lib.mkIf (codeConf.enable) { + home.manager.programs.vscode = { + enable = true; + extensions = with pkgs.vscode-extensions; [ + catppuccin.catppuccin-vsc catppuccin.catppuccin-vsc-icons + ms-dotnettools.csharp + ]; + }; + }; +} diff --git a/modules/desktop/apps/games/lutris.nix b/modules/desktop/apps/games/lutris.nix new file mode 100644 index 0000000..c1c5d31 --- /dev/null +++ b/modules/desktop/apps/games/lutris.nix @@ -0,0 +1,23 @@ +{ + config, + options, + lib, + pkgs, + ... +}: let + lutrisConf = config.modules.desktop.apps.games.lutris; + configDir = config.nixosConfig.configDir; +in { + options.modules.desktop.apps.games.lutris = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + }; + }; + + config = lib.mkIf (lutrisConf.enable) { + environment.systemPackages = [ + pkgs.lutris + ]; + }; +} diff --git a/modules/desktop/apps/games/prism.nix b/modules/desktop/apps/games/prism.nix new file mode 100644 index 0000000..4eb0a5f --- /dev/null +++ b/modules/desktop/apps/games/prism.nix @@ -0,0 +1,23 @@ +{ + config, + options, + lib, + pkgs, + ... +}: let + prismConf = config.modules.desktop.apps.games; + configDir = config.nixosConfig.configDir; +in { + options.modules.desktop.apps.games.prism = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + }; + }; + + config = lib.mkIf (prismConf.enable) { + environment.systemPackages = [ + pkgs.prismlauncher + ]; + }; +} diff --git a/modules/desktop/apps/games/vintagestory.nix b/modules/desktop/apps/games/vintagestory.nix new file mode 100644 index 0000000..ec82058 --- /dev/null +++ b/modules/desktop/apps/games/vintagestory.nix @@ -0,0 +1,14 @@ +{ + config, + options, + lib, + pkgs, + ... +}: let + gamesConf = config.modules.desktop.apps.games; + configDir = config.nixosConfig.configDir; +in { + config = lib.mkIf (gamesConf.enable) { + + }; +} diff --git a/modules/desktop/apps/mpd.nix b/modules/desktop/apps/mpd.nix index e7af8c3..17b22ec 100644 --- a/modules/desktop/apps/mpd.nix +++ b/modules/desktop/apps/mpd.nix @@ -18,12 +18,11 @@ in config = lib.mkIf (mpdConfig.enable) { home.packages = [ pkgs.mpc-cli - pkgs.ncmpcpp ]; services.mpd = { enable = true; - musicDirectory = /home/jon/mus; + musicDirectory = "/home/jon/mus"; extraConfig = '' audio_output { type "pipewire" @@ -34,6 +33,11 @@ audio_output { }; systemd.services.mpd.environment = { XDG_RUNTIME_DIR = "/run/user/1000"; + }; + + home.manager.programs.ncmpcpp = { + enable = true; + mpdMusicDir = /home/jon/mus; }; }; } diff --git a/modules/desktop/apps/mutt-wizard.nix b/modules/desktop/apps/mutt-wizard.nix new file mode 100644 index 0000000..3b8a5db --- /dev/null +++ b/modules/desktop/apps/mutt-wizard.nix @@ -0,0 +1,26 @@ +{ + config, + options, + lib, + pkgs, + ... +}: let + muttConfig = config.modules.desktop.apps.mutt; +in +{ + options.modules.desktop.apps.mutt = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + }; + }; + + config = lib.mkIf (muttConfig.enable) { + home.packages = [ + pkgs.neomutt + pkgs.isync + pkgs.lynx + pkgs.mutt-wizard + ]; + }; +} diff --git a/modules/desktop/apps/virt.nix b/modules/desktop/apps/virt.nix new file mode 100644 index 0000000..a9eaef4 --- /dev/null +++ b/modules/desktop/apps/virt.nix @@ -0,0 +1,49 @@ +{ + config, + options, + lib, + pkgs, + ... +}: let + virtConfig = config.modules.desktop.apps.virt-manager; +in +{ + options.modules.desktop.apps.virt-manager = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + }; + }; + + config = lib.mkIf (virtConfig.enable) { + home.packages = [ + pkgs.virtiofsd + ]; + + virtualisation.libvirtd = { + enable = true; + qemu = { + package = pkgs.qemu_kvm; + runAsRoot = true; + swtpm.enable = true; + ovmf = { + enable = true; + packages = [(pkgs.OVMF.override { + secureBoot = true; + tpmSupport = true; + }).fd]; + }; + }; + }; + programs.virt-manager.enable = true; + + home.manager.dconf.settings = { + "org/virt-manager/virt-manager/connections" = { + autoconnect = ["qemu:///system"]; + uris = ["qemu:///system"]; + }; + }; + + user.extraGroups = ["libvirtd"]; + }; +} diff --git a/modules/desktop/hyprland.nix b/modules/desktop/hyprland.nix index 0440453..7d594e1 100644 --- a/modules/desktop/hyprland.nix +++ b/modules/desktop/hyprland.nix @@ -34,12 +34,6 @@ size = 3; passes = 1; }; - drop_shadow = true; - shadow_ignore_window = true; - shadow_offset = "0 2"; - shadow_range = 20; - shadow_render_power = 3; - "col.shadow" = "rgba(00000055)"; }; animations = { @@ -108,8 +102,6 @@ in { config = lib.mkIf (hyprlandConf.enable) (lib.mkMerge [ { - environment.variables.WLR_NO_HARDWARE_CURSORS = "1"; - home.packages = [ pkgs.killall pkgs.wl-clipboard @@ -134,13 +126,18 @@ in { }; }; }; - extraPortals = [pkgs.xdg-desktop-portal-gtk]; - config.common.default = ["wlr" "gtk"]; + extraPortals = [ + pkgs.xdg-desktop-portal-gtk + pkgs.xdg-desktop-portal-hyprland + ]; + config.common.default = ["wlr" "gtk" "hyprland" ]; }; + environment.sessionVariables.NIXOS_OZONE_WL = "1"; home.manager.wayland.windowManager.hyprland = { enable = true; xwayland.enable = hyprlandConf.xwayland; + systemd.enable = true; settings = { "$mod" = "SUPER"; @@ -170,18 +167,41 @@ in { "swww img ${configDir}/hypr/wallpaper.png" ]; - env = [ + env = lib.mkMerge [ + ([ "XDG_CURRENT_DESKTOP,Hyprland" "XDG_SESSION_TYPE,wayland" "XDG_SESSION_DESKTOP,Hyprland" - "GDK_BACKEND,wayland" + "GDK_BACKEND,wayland,x11" + "SDL_VIDEODRIVER,wayland" + "CLUTTER_BACKEND,wayland" + "MOZ_ENABLE_WAYLAND,1" + "MOZ_DISABLE_RDD_SANDBOX,1" + "_JAVA_AWT_WM_NONREPARENTING,1" + "QT_AUTO_SCREEN_SCALE_FACTOR,1" "QT_QPA_PLATFORM,wayland" "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" - "QT_AUTO_SCREEN_SCALE_FACTOR,1" - - "SDL_VIDEODRIVER,wayland" - ]; + + "disable_hyprland_logo,true" + "force_default_wallpaper,0" + ]) + ( lib.mkIf (config.modules.device.gpu == "nvidia") + [ + "GBM_BACKEND,nvidia" + "__GLX_VENDOR_LIBRARY_NAME,nvidia" + "LIBVA_DRIVER_NAME,nvidia" + "NVD_BACKEND,direct" + "PROTON_ENABLE_NGX_UPDATER,1" + "__GL_GSYNC_ALLOWED,1" + "__GL_VRR_ALLOWED,1" + "__GL_MaxFramesAllowed,1" + "__NV_PRIME_RENDER_OFFLOAD,1" + "__VK_LAYER_NV_optimus,NIVIDA_only" + "WLR_DRM_NO_ATOMIC,1" + "WLR_USE_LIBINPUT,1" + "WLR_RENDERER_ALLOW_SOFTWARE,1" + ])]; decoration = decoration; animations = animations; @@ -204,16 +224,6 @@ in { security.pam.services.swaylock = {}; } - (lib.mkIf (device.gpu == "nvidia") { - home.manager.wayland.windowManager.hyprland.settings.env = [ - "GBM_BACKEND,nvidia-drm" - "__GLX_VENDOR_LIBRARY_NAME,nvidia" - "LIBVA_DRIVER_NAME,nvidia" - "__GL_GSYNC_ALLOWED" - "__GL_VRR_ALLOWED" - "WLR_DRM_NO_ATOMIC,1" - ]; - }) (lib.mkIf (config.modules.desktop.greetd.enable) { services.greetd.settings = { default_session.command = '' diff --git a/modules/hardware/audio.nix b/modules/hardware/audio.nix index 3ffa32a..a674597 100644 --- a/modules/hardware/audio.nix +++ b/modules/hardware/audio.nix @@ -23,22 +23,18 @@ in { alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; + + wireplumber.extraConfig.bluetoothEnhancements = { + "monitor.bluez.properties" = { + "bluez5.enable-sbc-xq" = true; + "bluez5.enable-msbc" = true; + "bluez5.enable-hw-volume" = true; + }; + }; }; user.extraGroups = ["audio"]; home.packages = [pkgs.pavucontrol]; - } - (lib.mkIf (device.hasBluetooth) { - home.configFile = { - "wireplumber/bluetooth.lua.d/51-bluez-config.lua".text = '' - bluez_monitor.properties = { - ["bluez5.enable-sbc-xq"] = true, - ["bluez5.enable-msbc"] = true, - ["bluez5.enable-hw-volume"] = true, - ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]" - } - ''; - }; - }) + } ]); } diff --git a/modules/hardware/bluetooth.nix b/modules/hardware/bluetooth.nix index 7f835bf..c5da0fa 100644 --- a/modules/hardware/bluetooth.nix +++ b/modules/hardware/bluetooth.nix @@ -18,9 +18,9 @@ in { config = lib.mkIf (bluetoothConfig.enable && device.hasBluetooth) { hardware.bluetooth = { enable = true; - package = pkgs.bluez; powerOnBoot = true; }; + services.blueman.enable = true; user.extraGroups = ["bluetooth"]; }; } diff --git a/modules/hardware/gpu.nix b/modules/hardware/gpu.nix index d7dfe17..be2ab58 100644 --- a/modules/hardware/gpu.nix +++ b/modules/hardware/gpu.nix @@ -17,10 +17,8 @@ in { config = lib.mkIf (gpuConfig.enable) (lib.mkMerge [ { - hardware.opengl = { + hardware.graphics = { enable = true; - driSupport = true; - driSupport32Bit = true; }; } (lib.mkIf (device.gpu == "intel") { @@ -38,24 +36,21 @@ in { environment.variables.VDPAU_DRIVER = "va_gl"; }) (lib.mkIf (device.gpu == "nvidia") { - services.xserver.videoDrivers = ["nvidia"]; - hardware.nvidia = { - modesetting.enable = true; - powerManagement.enable = false; - powerManagement.finegrained = false; - open = false; - nvidiaSettings = true; - package = config.boot.kernelPackages.nvidiaPackages.beta; - }; - boot.initrd.kernelModules = [ - "nvidia" - "nvidia_modeset" - "nvidia_uvm" - "nvidia_drm" - ]; - boot.extraModprobeConfig = '' - options modeset=1 fbdev=1 - ''; + services.xserver.videoDrivers = ["nvidia"]; + boot.initrd.kernelModules = [ "nvidia" ]; + + hardware.nvidia = { + modesetting.enable = true; + powerManagement.enable = false; + powerManagement.finegrained = false; + open = true; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.latest; + }; + + environment.systemPackages = with pkgs; [ + nvtopPackages.nvidia + ]; }) ]); } diff --git a/modules/options.nix b/modules/options.nix index e429171..c2463b4 100644 --- a/modules/options.nix +++ b/modules/options.nix @@ -95,6 +95,7 @@ # home manager configuration home-manager = { useUserPackages = true; + useGlobalPkgs = true; users.${config.user.name} = lib.mkAliasDefinitions options.home.manager; }; diff --git a/modules/security.nix b/modules/security.nix new file mode 100644 index 0000000..c88fe0c --- /dev/null +++ b/modules/security.nix @@ -0,0 +1,28 @@ +{ + config, + options, + lib, + pkgs, + ... +}: let + +in { + config = { + security.polkit.enable = true; + services.pcscd.enable = true; + + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + + environment.systemPackages = [ + pkgs.pinentry-curses + ]; + + home.packages = [ + (pkgs.pass.withExtensions (exts: [exts.pass-otp ])) + pkgs.pinentry-qt + ]; + }; +} |