diff --git a/nixos/common/desktop/README.md b/nixos/common/desktop/README.md index 48683a6..0db6d20 100644 --- a/nixos/common/desktop/README.md +++ b/nixos/common/desktop/README.md @@ -1 +1,9 @@ -# Common NixOS Config shared between desktop and laptop +# Common Desktop Config +This is where I store the NixOS config that is common between +my laptop and desktop + +## Files +* `./default.nix`: Contains common systemwide configuration + * See also <../modules> +* `./home.nix`: Contains common user-level configuration + * See also <../hm-modules> diff --git a/nixos/common/desktop/home.nix b/nixos/common/desktop/home.nix new file mode 100644 index 0000000..17e74f3 --- /dev/null +++ b/nixos/common/desktop/home.nix @@ -0,0 +1,94 @@ +{ pkgs, inputs, config, ... }: +let + tex = pkgs.texlive.combine { + inherit (pkgs.texlive) scheme-full; + dnd-5e-latex-template = { pkgs = [ pkgs.v.dnd-5e-latex-template ]; }; + }; + my-python-packages = ps: with ps; [ pandas requests numpy ]; +in { + home.packages = with pkgs; [ + btop + calibre + element-desktop + fusee-launcher + gcc + gimp + inputs.comma.packages.${pkgs.system}.default + inputs.webcord.packages.${pkgs.system}.default + jetbrains.clion + jetbrains.idea-ultimate + mullvad-vpn + neofetch + nixfmt + nixpkgs-review + (python3.withPackages my-python-packages) + plex-media-player + rustup + solo2-cli + tex + yt-dlp + ]; + + themes.v.catppuccin.enable = true; + programs.v.nvim.enable = true; + programs.v.vscode.enable = true; + + programs.riff = { + enable = true; + direnv = true; + }; + programs.exa = { + enable = true; + enableAliases = true; + }; + + programs.bat.enable = true; + + programs.git = { + enable = true; + package = pkgs.gitAndTools.gitFull; + userName = "Victor"; + userEmail = "victor@xirion.net"; + lfs.enable = true; + # delta.enable = true; + extraConfig = { + push.autoSetupRemote = true; + init.defaultBranch = "main"; + }; + }; + + programs.tmux = { + enable = true; + shortcut = "b"; + terminal = "screen-256color"; + clock24 = true; + }; + + programs.firefox.enable = true; + + programs.direnv = { + enable = true; + nix-direnv.enable = true; + }; + + programs.zsh = { + enable = true; + sessionVariables = { DIRENV_LOG_FORMAT = ""; }; + }; + + # Syncthing + services.syncthing.enable = true; + xdg.userDirs = let home = config.home.homeDirectory; + in { + enable = true; + createDirectories = true; + desktop = "${home}/.desktop"; + documents = "${home}/cloud/Documents"; + download = "${home}/dl"; + music = "${home}/cloud/Music"; + pictures = "${home}/cloud/Pictures"; + publicShare = "${home}/.publicShare"; + templates = "${home}/.templates"; + videos = "${home}/cloud/Videos"; + }; +} diff --git a/nixos/common/hm-modules/default.nix b/nixos/common/hm-modules/default.nix index 844e7b6..8dabd6c 100644 --- a/nixos/common/hm-modules/default.nix +++ b/nixos/common/hm-modules/default.nix @@ -3,5 +3,6 @@ ./catppuccin.nix ./nvim.nix ./riff.nix + ./vscode.nix ]; } diff --git a/nixos/common/hm-modules/vscode.nix b/nixos/common/hm-modules/vscode.nix new file mode 100644 index 0000000..5a2b95a --- /dev/null +++ b/nixos/common/hm-modules/vscode.nix @@ -0,0 +1,68 @@ +{ config, pkgs, lib, ... }: +with lib; +let cfg = config.programs.v.vscode; +in { + options.programs.v.vscode = { enable = mkEnableOption "vscode"; }; + config = mkIf cfg.enable { + programs.vscode = { + enable = true; + package = pkgs.vscode; + userSettings = { + "ltex.language" = "en-GB"; + "latex-workshop.linting.chktex.enabled" = true; + "latex-workshop.latex.clean.subfolder.enabled" = true; + "latex-workshop.latex.outDir" = "%TMPDIR%/%RELATIVE_DOC%"; + "editor.fontFamily" = + "'DejaVuSansMono Nerd Font', 'monospace', monospace"; + "keyboard.dispatch" = "keyCode"; + "rust-analyzer.server.path" = "${pkgs.rust-analyzer}/bin/rust-analyzer"; + "terminal.integrated.defaultProfile.linux" = "zsh"; + "nix.enableLanguageServer" = true; # Enable LSP. + "nix.serverPath" = "${pkgs.nil}/bin/nil"; + "[nix]" = { "editor.defaultFormatter" = "brettm12345.nixfmt-vscode"; }; + "rust-analyzer.checkOnSave.command" = "clippy"; + "debug.allowBreakpointsEverywhere" = true; + # Don't index unecessary things + "files.exclude" = { + "**/.vscode" = true; + "**/.git" = true; + "**/.svn" = true; + "**/.hg" = true; + "**/.deps" = true; + "**/CVS" = true; + "**/.DS_Store" = true; + "/bin" = true; + "/boot" = true; + "/cdrom" = true; + "/dev" = true; + "/proc" = true; + "/etc" = true; + "/nix" = true; + }; + }; + extensions = with pkgs.vscode-extensions; + with pkgs.v.vscode-extensions; [ + brettm12345.nixfmt-vscode + codezombiech.gitignore + editorconfig.editorconfig + foxundermoon.shell-format + james-yu.latex-workshop + jnoortheen.nix-ide + matklad.rust-analyzer + mkhl.direnv + ms-vscode-remote.remote-ssh + ms-vscode.cpptools + platformio.platformio-ide + redhat.vscode-yaml + tamasfe.even-better-toml + valentjn.vscode-ltex + vscodevim.vim + vadimcn.vscode-lldb + xaver.clang-format + sumneko.lua + ]; + }; + + }; +} + diff --git a/nixos/common/modules/gnome/default.nix b/nixos/common/modules/gnome/default.nix index b4040dc..04d5949 100644 --- a/nixos/common/modules/gnome/default.nix +++ b/nixos/common/modules/gnome/default.nix @@ -11,7 +11,7 @@ in { # Add Home-manager dconf stuff home-manager.sharedModules = [ - ./dconf.nix + ./hm.nix ]; # Configure keymap in X11 diff --git a/nixos/common/modules/gnome/dconf.nix b/nixos/common/modules/gnome/hm.nix similarity index 67% rename from nixos/common/modules/gnome/dconf.nix rename to nixos/common/modules/gnome/hm.nix index 14fa0b9..cba3ba8 100644 --- a/nixos/common/modules/gnome/dconf.nix +++ b/nixos/common/modules/gnome/hm.nix @@ -16,6 +16,40 @@ let "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/${name}") binds; in { + xdg.mimeApps.enable = true; + xdg.mimeApps.defaultApplications = { + "text/html" = "firefox.desktop"; + "text/plain" = "org.gnome.TextEditor.desktop"; + "application/pdf" = "org.gnome.Evince.desktop"; + + # Images + "image/bmp" = "org.gnome.eog.desktop"; + "image/gif" = "org.gnome.eog.desktop"; + "image/jpg" = "org.gnome.eog.desktop"; + "image/pjpeg" = "org.gnome.eog.desktop"; + "image/png" = "org.gnome.eog.desktop"; + "image/tiff" = "org.gnome.eog.desktop"; + "image/webp" = "org.gnome.eog.desktop"; + "image/x-bmp" = "org.gnome.eog.desktop"; + "image/x-gray" = "org.gnome.eog.desktop"; + "image/x-icb" = "org.gnome.eog.desktop"; + "image/x-ico" = "org.gnome.eog.desktop"; + "image/x-png" = "org.gnome.eog.desktop"; + "image/x-portable-anymap" = "org.gnome.eog.desktop"; + "image/x-portable-bitmap" = "org.gnome.eog.desktop"; + "image/x-portable-graymap" = "org.gnome.eog.desktop"; + "image/x-portable-pixmap" = "org.gnome.eog.desktop"; + "image/x-xbitmap" = "org.gnome.eog.desktop"; + "image/x-xpixmap" = "org.gnome.eog.desktop"; + "image/x-pcx" = "org.gnome.eog.desktop"; + "image/svg+xml" = "org.gnome.eog.desktop"; + "image/svg+xml-compressed" = "org.gnome.eog.desktop"; + "image/vnd.wap.wbmp" = "org.gnome.eog.desktop"; + "image/x-icns" = "org.gnome.eog.desktop"; + }; + + + dconf.settings = { "org/gnome/desktop/input-sources" = { sources = [ (mkTuple [ "xkb" "us+altgr-intl" ]) ]; diff --git a/nixos/hosts/thalassa/aoife/home/default.nix b/nixos/hosts/thalassa/aoife/home/default.nix index 14b3411..c84a073 100644 --- a/nixos/hosts/thalassa/aoife/home/default.nix +++ b/nixos/hosts/thalassa/aoife/home/default.nix @@ -1,197 +1,14 @@ -{ lib, config, pkgs, inputs, ... }: -let - tex = pkgs.texlive.combine { - inherit (pkgs.texlive) scheme-full; - dnd-5e-latex-template = { pkgs = [ pkgs.v.dnd-5e-latex-template ]; }; - }; - my-python-packages = ps: with ps; [ pandas requests numpy ]; -in { +{ ... }: { programs.home-manager.enable = true; - imports = []; - home.username = "victor"; home.homeDirectory = "/home/victor"; home.stateVersion = "23.05"; - # Enable catppuccin theme - themes.v.catppuccin.enable = true; + imports = [ ../../../../common/desktop/home.nix ]; # Custom dconf settings - dconf.settings."org/gnome/desktop/input-sources".xkb-options = [ "caps:swapescape"]; - - programs.v.nvim.enable = true; - - home.packages = with pkgs; [ - btop - calibre - element-desktop - fusee-launcher - gcc - gimp - inputs.comma.packages.${pkgs.system}.default - inputs.webcord.packages.${pkgs.system}.default - jetbrains.clion - jetbrains.idea-ultimate - mullvad-vpn - neofetch - nixfmt - nixpkgs-review - (python3.withPackages my-python-packages) - plex-media-player - rustup - solo2-cli - tex - yt-dlp - ]; - - programs.riff = { - enable = true; - direnv = true; + dconf.settings."org/gnome/desktop/input-sources" = { + xkb-options = [ "caps:swapescape" ]; }; - - xdg.mimeApps.enable = true; - xdg.mimeApps.defaultApplications = { - "text/html" = "firefox.desktop"; - "text/plain" = "org.gnome.TextEditor.desktop"; - "application/pdf" = "org.gnome.Evince.desktop"; - - # Images - "image/bmp" = "org.gnome.eog.desktop"; - "image/gif" = "org.gnome.eog.desktop"; - "image/jpg" = "org.gnome.eog.desktop"; - "image/pjpeg" = "org.gnome.eog.desktop"; - "image/png" = "org.gnome.eog.desktop"; - "image/tiff" = "org.gnome.eog.desktop"; - "image/webp" = "org.gnome.eog.desktop"; - "image/x-bmp" = "org.gnome.eog.desktop"; - "image/x-gray" = "org.gnome.eog.desktop"; - "image/x-icb" = "org.gnome.eog.desktop"; - "image/x-ico" = "org.gnome.eog.desktop"; - "image/x-png" = "org.gnome.eog.desktop"; - "image/x-portable-anymap" = "org.gnome.eog.desktop"; - "image/x-portable-bitmap" = "org.gnome.eog.desktop"; - "image/x-portable-graymap" = "org.gnome.eog.desktop"; - "image/x-portable-pixmap" = "org.gnome.eog.desktop"; - "image/x-xbitmap" = "org.gnome.eog.desktop"; - "image/x-xpixmap" = "org.gnome.eog.desktop"; - "image/x-pcx" = "org.gnome.eog.desktop"; - "image/svg+xml" = "org.gnome.eog.desktop"; - "image/svg+xml-compressed" = "org.gnome.eog.desktop"; - "image/vnd.wap.wbmp" = "org.gnome.eog.desktop"; - "image/x-icns" = "org.gnome.eog.desktop"; - }; - - programs.exa = { - enable = true; - enableAliases = true; - }; - - programs.bat.enable = true; - - programs.git = { - enable = true; - package = pkgs.gitAndTools.gitFull; - userName = "Victor"; - userEmail = "victor@xirion.net"; - lfs.enable = true; - # delta.enable = true; - extraConfig = { - push.autoSetupRemote = true; - init.defaultBranch = "main"; - }; - }; - - programs.tmux = { - enable = true; - shortcut = "b"; - terminal = "screen-256color"; - clock24 = true; - }; - - programs.firefox.enable = true; - - programs.vscode = { - enable = true; - package = pkgs.vscode; - userSettings = { - "ltex.language" = "en-GB"; - "latex-workshop.linting.chktex.enabled" = true; - "latex-workshop.latex.clean.subfolder.enabled" = true; - "latex-workshop.latex.outDir" = "%TMPDIR%/%RELATIVE_DOC%"; - "editor.fontFamily" = - "'DejaVuSansMono Nerd Font', 'monospace', monospace"; - "keyboard.dispatch" = "keyCode"; - "rust-analyzer.server.path" = "${pkgs.rust-analyzer}/bin/rust-analyzer"; - "terminal.integrated.defaultProfile.linux" = "zsh"; - "nix.enableLanguageServer" = true; # Enable LSP. - "nix.serverPath" = "${pkgs.nil}/bin/nil"; - "[nix]" = { "editor.defaultFormatter" = "brettm12345.nixfmt-vscode"; }; - "rust-analyzer.checkOnSave.command" = "clippy"; - "debug.allowBreakpointsEverywhere" = true; - # Don't index unecessary things - "files.exclude" = { - "**/.vscode" = true; - "**/.git" = true; - "**/.svn" = true; - "**/.hg" = true; - "**/.deps" = true; - "**/CVS" = true; - "**/.DS_Store" = true; - "/bin" = true; - "/boot" = true; - "/cdrom" = true; - "/dev" = true; - "/proc" = true; - "/etc" = true; - "/nix" = true; - }; - }; - extensions = with pkgs.vscode-extensions; - with pkgs.v.vscode-extensions; [ - brettm12345.nixfmt-vscode - codezombiech.gitignore - editorconfig.editorconfig - foxundermoon.shell-format - james-yu.latex-workshop - jnoortheen.nix-ide - matklad.rust-analyzer - mkhl.direnv - ms-vscode-remote.remote-ssh - ms-vscode.cpptools - platformio.platformio-ide - redhat.vscode-yaml - tamasfe.even-better-toml - valentjn.vscode-ltex - vscodevim.vim - vadimcn.vscode-lldb - xaver.clang-format - sumneko.lua - ]; - }; - - programs.direnv = { - enable = true; - nix-direnv.enable = true; - }; - - programs.zsh = { - enable = true; - sessionVariables = { DIRENV_LOG_FORMAT = ""; }; - }; - - xdg.userDirs = let home = config.home.homeDirectory; - in { - enable = true; - createDirectories = true; - desktop = "${home}/.desktop"; - documents = "${home}/cloud/Documents"; - download = "${home}/dl"; - music = "${home}/cloud/Music"; - pictures = "${home}/cloud/Pictures"; - publicShare = "${home}/.publicShare"; - templates = "${home}/.templates"; - videos = "${home}/cloud/Videos"; - }; - services.syncthing.enable = true; } diff --git a/nixos/hosts/thalassa/eevee/home/default.nix b/nixos/hosts/thalassa/eevee/home/default.nix index 22b8f6d..cbc0a03 100644 --- a/nixos/hosts/thalassa/eevee/home/default.nix +++ b/nixos/hosts/thalassa/eevee/home/default.nix @@ -11,188 +11,9 @@ in { home.homeDirectory = "/home/victor"; home.stateVersion = "23.05"; + imports = [ ../../../../common/desktop/home.nix ]; + dconf.settings."org/gnome/desktop/peripherals/mouse" = { accel-profile = "flat"; }; - - # Enable my neovim config - programs.v.nvim.enable = true; - - # Enable catppuccin theme - themes.v.catppuccin.enable = true; - - home.packages = with pkgs; [ - btop - calibre - element-desktop - fusee-launcher - gcc - gimp - inputs.comma.packages.${pkgs.system}.default - inputs.webcord.packages.${pkgs.system}.default - jetbrains.clion - jetbrains.idea-ultimate - mullvad-vpn - neofetch - nixfmt - nixpkgs-review - python3 - plex-media-player - rustup - solo2-cli - tex - yt-dlp - wootility - ]; - - programs.riff = { - enable = true; - direnv = true; - }; - - xdg.mimeApps.enable = true; - xdg.mimeApps.defaultApplications = { - "text/html" = "firefox.desktop"; - "text/plain" = "org.gnome.TextEditor.desktop"; - "application/pdf" = "org.gnome.Evince.desktop"; - - # Images - "image/bmp" = "org.gnome.eog.desktop"; - "image/gif" = "org.gnome.eog.desktop"; - "image/jpg" = "org.gnome.eog.desktop"; - "image/pjpeg" = "org.gnome.eog.desktop"; - "image/png" = "org.gnome.eog.desktop"; - "image/tiff" = "org.gnome.eog.desktop"; - "image/webp" = "org.gnome.eog.desktop"; - "image/x-bmp" = "org.gnome.eog.desktop"; - "image/x-gray" = "org.gnome.eog.desktop"; - "image/x-icb" = "org.gnome.eog.desktop"; - "image/x-ico" = "org.gnome.eog.desktop"; - "image/x-png" = "org.gnome.eog.desktop"; - "image/x-portable-anymap" = "org.gnome.eog.desktop"; - "image/x-portable-bitmap" = "org.gnome.eog.desktop"; - "image/x-portable-graymap" = "org.gnome.eog.desktop"; - "image/x-portable-pixmap" = "org.gnome.eog.desktop"; - "image/x-xbitmap" = "org.gnome.eog.desktop"; - "image/x-xpixmap" = "org.gnome.eog.desktop"; - "image/x-pcx" = "org.gnome.eog.desktop"; - "image/svg+xml" = "org.gnome.eog.desktop"; - "image/svg+xml-compressed" = "org.gnome.eog.desktop"; - "image/vnd.wap.wbmp" = "org.gnome.eog.desktop"; - "image/x-icns" = "org.gnome.eog.desktop"; - }; - - programs.exa = { - enable = true; - enableAliases = true; - }; - - programs.bat.enable = true; - - programs.git = { - enable = true; - package = pkgs.gitAndTools.gitFull; - userName = "Victor"; - userEmail = "victor@xirion.net"; - lfs.enable = true; - # delta.enable = true; - extraConfig = { - push.autoSetupRemote = true; - init.defaultBranch = "main"; - }; - }; - - programs.tmux = { - enable = true; - shortcut = "b"; - terminal = "screen-256color"; - clock24 = true; - }; - - programs.firefox.enable = true; - - programs.vscode = { - enable = true; - package = pkgs.vscode; - userSettings = { - "ltex.language" = "en-GB"; - "latex-workshop.linting.chktex.enabled" = true; - "latex-workshop.latex.clean.subfolder.enabled" = true; - "latex-workshop.latex.outDir" = "%TMPDIR%/%RELATIVE_DOC%"; - "editor.fontFamily" = - "'DejaVuSansMono Nerd Font', 'monospace', monospace"; - "keyboard.dispatch" = "keyCode"; - "rust-analyzer.server.path" = "${pkgs.rust-analyzer}/bin/rust-analyzer"; - "terminal.integrated.defaultProfile.linux" = "zsh"; - "nix.enableLanguageServer" = true; # Enable LSP. - "nix.serverPath" = "${pkgs.nil}/bin/nil"; - "[nix]" = { "editor.defaultFormatter" = "brettm12345.nixfmt-vscode"; }; - "rust-analyzer.checkOnSave.command" = "clippy"; - "debug.allowBreakpointsEverywhere" = true; - # Don't index unecessary things - "files.exclude" = { - "**/.vscode" = true; - "**/.git" = true; - "**/.svn" = true; - "**/.hg" = true; - "**/.deps" = true; - "**/CVS" = true; - "**/.DS_Store" = true; - "/bin" = true; - "/boot" = true; - "/cdrom" = true; - "/dev" = true; - "/proc" = true; - "/etc" = true; - "/nix" = true; - }; - }; - extensions = with pkgs.vscode-extensions; - with pkgs.v.vscode-extensions; [ - brettm12345.nixfmt-vscode - codezombiech.gitignore - editorconfig.editorconfig - foxundermoon.shell-format - james-yu.latex-workshop - jnoortheen.nix-ide - matklad.rust-analyzer - mkhl.direnv - ms-vscode-remote.remote-ssh - ms-vscode.cpptools - platformio.platformio-ide - redhat.vscode-yaml - tamasfe.even-better-toml - valentjn.vscode-ltex - vscodevim.vim - vadimcn.vscode-lldb - xaver.clang-format - sumneko.lua - ]; - }; - - programs.direnv = { - enable = true; - nix-direnv.enable = true; - }; - - programs.zsh = { - enable = true; - sessionVariables = { DIRENV_LOG_FORMAT = ""; }; - }; - - xdg.userDirs = let home = config.home.homeDirectory; - in { - enable = true; - createDirectories = true; - desktop = "${home}/.desktop"; - documents = "${home}/cloud/Documents"; - download = "${home}/dl"; - music = "${home}/cloud/Music"; - pictures = "${home}/cloud/Pictures"; - publicShare = "${home}/.publicShare"; - templates = "${home}/.templates"; - videos = "${home}/cloud/Videos"; - }; - - services.syncthing.enable = true; }