summaryrefslogtreecommitdiffstats
path: root/modules/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'modules/desktop')
-rw-r--r--modules/desktop/apps/browsers/firefox.nix6
-rw-r--r--modules/desktop/apps/editors/neovim.nix48
-rw-r--r--modules/desktop/apps/editors/vscode.nix27
-rw-r--r--modules/desktop/apps/games/freeciv.nix24
-rw-r--r--modules/desktop/apps/games/lutris.nix23
-rw-r--r--modules/desktop/apps/games/openttd.nix28
-rw-r--r--modules/desktop/apps/games/prism.nix23
-rw-r--r--modules/desktop/apps/games/unciv.nix24
-rw-r--r--modules/desktop/apps/games/vintagestory.nix31
-rw-r--r--modules/desktop/apps/mpd.nix8
-rw-r--r--modules/desktop/apps/mutt-wizard.nix46
-rw-r--r--modules/desktop/apps/virt.nix49
-rw-r--r--modules/desktop/apps/vpn.nix23
-rw-r--r--modules/desktop/greetd.nix1
-rw-r--r--modules/desktop/hyprland.nix73
15 files changed, 377 insertions, 57 deletions
diff --git a/modules/desktop/apps/browsers/firefox.nix b/modules/desktop/apps/browsers/firefox.nix
index 3c647f1..2c87bd5 100644
--- a/modules/desktop/apps/browsers/firefox.nix
+++ b/modules/desktop/apps/browsers/firefox.nix
@@ -34,7 +34,7 @@ in
} + "/user.js");
search = {
force = true;
- default = "DuckDuckGo";
+ default = "ddg";
engines = {
"Nix Packages" = {
urls = [{
@@ -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}"; }];
+ icon = "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..a775be8
--- /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;
+ profiles.default.extensions = with pkgs.vscode-extensions; [
+ catppuccin.catppuccin-vsc catppuccin.catppuccin-vsc-icons
+ ms-dotnettools.csharp
+ ];
+ };
+ };
+}
diff --git a/modules/desktop/apps/games/freeciv.nix b/modules/desktop/apps/games/freeciv.nix
new file mode 100644
index 0000000..cb5e462
--- /dev/null
+++ b/modules/desktop/apps/games/freeciv.nix
@@ -0,0 +1,24 @@
+{
+ config,
+ options,
+ lib,
+ pkgs,
+ rootPath,
+ ...
+}: let
+ freecivConf = config.modules.desktop.apps.games.freeciv;
+ configDir = config.nixosConfig.configDir;
+in {
+ options.modules.desktop.apps.games.freeciv = {
+ enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ };
+ };
+
+ config = lib.mkIf (freecivConf.enable) {
+ home.packages = with pkgs; [
+ (callPackage (rootPath + /packages/freeciv/default.nix) {})
+ ];
+ };
+}
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/openttd.nix b/modules/desktop/apps/games/openttd.nix
new file mode 100644
index 0000000..f66ccc0
--- /dev/null
+++ b/modules/desktop/apps/games/openttd.nix
@@ -0,0 +1,28 @@
+{
+ config,
+ options,
+ lib,
+ pkgs,
+ rootPath,
+ ...
+}: let
+ openttdConf = config.modules.desktop.apps.games.openttd;
+ configDir = config.nixosConfig.configDir;
+in {
+ options.modules.desktop.apps.games.openttd = {
+ enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ };
+ };
+
+ config = lib.mkIf (openttdConf.enable) {
+ home.packages = with pkgs; [
+ openttd
+ ];
+
+ fonts.packages = with pkgs; [
+ openttd-ttf
+ ];
+ };
+}
diff --git a/modules/desktop/apps/games/prism.nix b/modules/desktop/apps/games/prism.nix
new file mode 100644
index 0000000..d3ceee7
--- /dev/null
+++ b/modules/desktop/apps/games/prism.nix
@@ -0,0 +1,23 @@
+{
+ config,
+ options,
+ lib,
+ pkgs,
+ ...
+}: let
+ prismConf = config.modules.desktop.apps.games.prism;
+ 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/unciv.nix b/modules/desktop/apps/games/unciv.nix
new file mode 100644
index 0000000..1eec540
--- /dev/null
+++ b/modules/desktop/apps/games/unciv.nix
@@ -0,0 +1,24 @@
+{
+ config,
+ options,
+ lib,
+ pkgs,
+ rootPath,
+ ...
+}: let
+ uncivConf = config.modules.desktop.apps.games.unciv;
+ configDir = config.nixosConfig.configDir;
+in {
+ options.modules.desktop.apps.games.unciv = {
+ enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ };
+ };
+
+ config = lib.mkIf (uncivConf.enable) {
+ home.packages = with pkgs; [
+ (callPackage (rootPath + /packages/unciv/default.nix) {})
+ ];
+ };
+}
diff --git a/modules/desktop/apps/games/vintagestory.nix b/modules/desktop/apps/games/vintagestory.nix
new file mode 100644
index 0000000..a15935a
--- /dev/null
+++ b/modules/desktop/apps/games/vintagestory.nix
@@ -0,0 +1,31 @@
+{
+ config,
+ options,
+ lib,
+ pkgs,
+ rootPath,
+ ...
+}: let
+ vsConf = config.modules.desktop.apps.games.vintagestory;
+ configDir = config.nixosConfig.configDir;
+in {
+ options.modules.desktop.apps.games.vintagestory = {
+ enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ };
+ };
+
+ config = lib.mkIf (vsConf.enable) {
+ home.manager.xdg.mimeApps = {
+ defaultApplications = {
+ "x-scheme-handler/vintagestoryjoin" = [ "Vintagestory_url_connect.desktop" ];
+ "x-scheme-handler/vintagestorymodinstall" = [ "Vintagestory_url_mod.desktop" ];
+ };
+ };
+
+ home.packages = with pkgs; [
+ (callPackage (rootPath + /packages/vintagestory/default.nix) {})
+ ];
+ };
+}
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..da7b779
--- /dev/null
+++ b/modules/desktop/apps/mutt-wizard.nix
@@ -0,0 +1,46 @@
+{
+ 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
+ ];
+
+ systemd.timers."auto-mailsync" = {
+ wantedBy = [ "timers.target" ];
+ timerConfig = {
+ OnBootSec = "10m";
+ OnUnitActiveSec = "10m";
+ Unit = "auto-mailsync.service";
+ };
+ };
+
+ systemd.services."auto-mailsync" = {
+ script = ''
+ set -eu
+ /run/current-system/sw/bin/bash -l -c '${pkgs.mutt-wizard}/bin/mailsync -Y'
+ '';
+ serviceConfig = {
+ Type = "oneshot";
+ User = "jon";
+ };
+ };
+ };
+}
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/apps/vpn.nix b/modules/desktop/apps/vpn.nix
new file mode 100644
index 0000000..8cddb39
--- /dev/null
+++ b/modules/desktop/apps/vpn.nix
@@ -0,0 +1,23 @@
+{
+ config,
+ options,
+ lib,
+ pkgs,
+ ...
+}: let
+ vpnConfig = config.modules.desktop.apps.vpn;
+in
+{
+ options.modules.desktop.apps.vpn = {
+ enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ };
+ };
+
+ config = lib.mkIf (vpnConfig.enable) {
+ home.packages = [
+ pkgs.mullvad-vpn
+ ];
+ };
+}
diff --git a/modules/desktop/greetd.nix b/modules/desktop/greetd.nix
index f9b6f90..0bc5208 100644
--- a/modules/desktop/greetd.nix
+++ b/modules/desktop/greetd.nix
@@ -18,5 +18,6 @@ in {
services.greetd = {
enable = true;
};
+ security.pam.services.greetd.enableGnomeKeyring = true;
};
}
diff --git a/modules/desktop/hyprland.nix b/modules/desktop/hyprland.nix
index 0440453..45ad967 100644
--- a/modules/desktop/hyprland.nix
+++ b/modules/desktop/hyprland.nix
@@ -10,8 +10,6 @@
defaultApps = config.modules.desktop.defaultApplications.apps;
configDir = config.nixosConfig.configDir;
- screenshotarea = "hyprctl keyword animation 'fadeOut,0,0,default'; grimblast --notify copysave area; hyprctl keyword animation 'fadeOut,1,4,default'";
-
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
workspaces = builtins.concatLists (builtins.genList (
x: let
@@ -34,12 +32,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 = {
@@ -85,7 +77,10 @@
"$mod, D, exec, wofi --show drun"
"$mod, Return, exec, ${defaultApps.terminal.cmd}"
"$mod, W, exec, ${defaultApps.browser.cmd}"
- "$mod ALTL, B, exec, killall -SIGUSR2 waybar"
+ "$mod ALT, B, exec, killall -SIGUSR2 waybar"
+
+ #Screenshot
+ "$mod, Print, exec, slurp | grim -g - ~/pic/$(date +%s).png"
]
++ workspaces;
@@ -108,14 +103,16 @@ in {
config = lib.mkIf (hyprlandConf.enable) (lib.mkMerge [
{
- environment.variables.WLR_NO_HARDWARE_CURSORS = "1";
-
home.packages = [
pkgs.killall
pkgs.wl-clipboard
pkgs.wdisplays
pkgs.swaylock
pkgs.swayidle
+ pkgs.slurp
+ pkgs.grim
+ pkgs.mako
+ pkgs.libnotify
pkgs.wofi
pkgs.jq
pkgs.swww
@@ -134,13 +131,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 +172,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 +229,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 = ''