diff options
| author | Mel <einebeere@gmail.com> | 2024-10-14 22:15:32 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2024-10-14 22:15:32 +0200 |
| commit | 7bca7fb6cac0a3d6479ee8dd8fb5f13fa0261a51 (patch) | |
| tree | ced025aff19ffe1a9a040f3e8034a48a88285b3a /modules | |
| download | minerals-7bca7fb6cac0a3d6479ee8dd8fb5f13fa0261a51.tar.zst minerals-7bca7fb6cac0a3d6479ee8dd8fb5f13fa0261a51.zip | |
Break up configuration for multiple machines
Signed-off-by: Mel <einebeere@gmail.com>
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/common.nix | 90 | ||||
| -rw-r--r-- | modules/flatpak.nix | 12 | ||||
| -rw-r--r-- | modules/fonts.nix | 15 | ||||
| -rw-r--r-- | modules/gnome.nix | 64 | ||||
| -rw-r--r-- | modules/libreoffice.nix | 11 | ||||
| -rw-r--r-- | modules/locale.nix | 27 | ||||
| -rw-r--r-- | modules/nix-ld.nix | 59 | ||||
| -rw-r--r-- | modules/user.nix | 27 |
8 files changed, 305 insertions, 0 deletions
diff --git a/modules/common.nix b/modules/common.nix new file mode 100644 index 0000000..447e3e9 --- /dev/null +++ b/modules/common.nix @@ -0,0 +1,90 @@ +{ config, pkgs, unstablePkgs, auxiliaryPkgs, ... }: + +{ + imports = [ + ./user.nix + ./locale.nix + ./gnome.nix + ./fonts.nix + ./flatpak.nix + ./libreoffice.nix + ./nix-ld.nix + ]; + + boot.kernelPackages = pkgs.linuxPackages_latest; + + nix.settings.experimental-features = [ "flakes" "nix-command" ]; + + services.envfs.enable = true; + virtualisation.libvirtd.enable = true; + + services = { + acpid.enable = true; + sysprof.enable = true; + tailscale = { + enable = true; + useRoutingFeatures = "both"; + extraUpFlags = [ "--ssh" ]; + }; + + # sometimes needed for gnupg + pcscd.enable = true; + }; + + programs = { + steam = { + enable = true; + remotePlay.openFirewall = true; + }; + virt-manager.enable = true; + vim = { + defaultEditor = true; + package = pkgs.vim_configurable.customize { + vimrcFile = ./configs/.vimrc; + }; + }; + fish.enable = true; + git.enable = true; + tmux.enable = true; + + adb.enable = true; + + gnupg.agent = { + enable = true; + enableSSHSupport = true; + pinentryPackage = pkgs.pinentry-gnome3; + }; + }; + + environment.systemPackages = (with pkgs; [ + file unzip jq dig htop wget gnupg pinentry-gnome3 + inetutils pciutils lshw inxi iw pmutils acpi acpid + sysprof wireshark hardinfo + vlc celluloid foliate calibre + yt-dlp ffmpeg_7-full handbrake subtitlecomposer mpv helvum + gimp krita aseprite blender inkscape obs-studio darktable + audacity musescore reaper bitwig-studio + lagrange + qemu_full virtiofsd + + openvpn openvpn3 update-resolv-conf + + xorg.xeyes wl-clipboard + + ripgrep gnumake gdb gcc clang + go gopls delve go-task + meson cmake + nil direnv + + wineWowPackages.stagingFull winetricks bottles + scrcpy apfs-fuse + + prismlauncher + ]) ++ (with unstablePkgs; [ + davinci-resolve + ]) ++ (with auxiliaryPkgs; [ + ghidra + ]); + + environment.etc.openvpn.source = "${pkgs.update-resolv-conf}/libexec/openvpn"; +} diff --git a/modules/flatpak.nix b/modules/flatpak.nix new file mode 100644 index 0000000..1751fcf --- /dev/null +++ b/modules/flatpak.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: + +{ + # Flatpak is used for some packages that don't work + # nicely on NixOS, like Handbrake. + services.flatpak.enable = true; + + environment.systemPackages = (with pkgs; [ + # Add GUI for Flatpak installation. + gnome.gnome-software + ]); +} diff --git a/modules/fonts.nix b/modules/fonts.nix new file mode 100644 index 0000000..b500b2e --- /dev/null +++ b/modules/fonts.nix @@ -0,0 +1,15 @@ +{ config, pkgs, ... }: + +{ + fonts = { + enableDefaultPackages = true; + + packages = with pkgs; [ + jetbrains-mono + meslo-lg + input-fonts + fira fira-math fira-code + corefonts vistafonts + ]; + }; +} diff --git a/modules/gnome.nix b/modules/gnome.nix new file mode 100644 index 0000000..7fde00d --- /dev/null +++ b/modules/gnome.nix @@ -0,0 +1,64 @@ +{ config, pkgs, ... }: + +{ + services.xserver.enable = true; + + # i dont like how the icon looks :) + services.xserver.excludePackages = [ pkgs.xterm ]; + + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + + environment.gnome.excludePackages = with pkgs; [ + gnome-console + ]; + + environment.systemPackages = (with pkgs.gnome; [ + gnome-terminal gnome-tweaks dconf-editor + ]) ++ (with pkgs.gnomeExtensions; [ + runcat vitals + ]); + + # legacy apps dark mode support + services.xserver.desktopManager.gnome.extraGSettingsOverrides = '' + # set dark theme for legacy applications + [org.gnome.desktop.interface] + gtk-theme="Adwaita" + + # minimize windows when middle-clicking on titlebar + [org.gnome.desktop.wm.preferences] + action-middle-click-titlebar="minimize" + ''; + + environment.etc = { + "xdg/gtk-2.0/gtkrc".text = '' + gtk-application-prefer-dark-theme = 1 + ''; + "xdg/gtk-3.0/settings.ini".text = '' + [Settings] + gtk-application-prefer-dark-theme = 1 + ''; + "xdg/gtk-4.0/settings.ini".text = '' + [Settings] + gtk-application-prefer-dark-theme = 1 + ''; + }; + + # enable triple buffering which makes mutter supposedly feel smoother + nixpkgs.overlays = [ + # GNOME 46: triple-buffering-v4-46 + (final: prev: { + gnome = prev.gnome.overrideScope (gnomeFinal: gnomePrev: { + mutter = gnomePrev.mutter.overrideAttrs (old: { + src = pkgs.fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "vanvugt"; + repo = "mutter"; + rev = "triple-buffering-v4-46"; + hash = "sha256-C2VfW3ThPEZ37YkX7ejlyumLnWa9oij333d5c4yfZxc="; + }; + }); + }); + }) + ]; +} diff --git a/modules/libreoffice.nix b/modules/libreoffice.nix new file mode 100644 index 0000000..8aad8e2 --- /dev/null +++ b/modules/libreoffice.nix @@ -0,0 +1,11 @@ +{ config, pkgs, ... }: + +{ + environment.systemPackages = (with pkgs; [ + libreoffice-fresh + + hunspell + ]) ++ (with pkgs.hunspellDicts; [ + en_US-large en_GB-large de_DE ru_RU + ]); +} diff --git a/modules/locale.nix b/modules/locale.nix new file mode 100644 index 0000000..2a4f45b --- /dev/null +++ b/modules/locale.nix @@ -0,0 +1,27 @@ +{ config, pkgs, ... }: + +{ + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "de_DE.UTF-8"; + LC_IDENTIFICATION = "de_DE.UTF-8"; + LC_MEASUREMENT = "de_DE.UTF-8"; + LC_MONETARY = "de_DE.UTF-8"; + LC_NAME = "de_DE.UTF-8"; + LC_NUMERIC = "de_DE.UTF-8"; + LC_PAPER = "de_DE.UTF-8"; + LC_TELEPHONE = "de_DE.UTF-8"; + LC_TIME = "de_DE.UTF-8"; + }; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; +} diff --git a/modules/nix-ld.nix b/modules/nix-ld.nix new file mode 100644 index 0000000..2ab5df5 --- /dev/null +++ b/modules/nix-ld.nix @@ -0,0 +1,59 @@ +{ config, pkgs, ... }: + +{ + programs.nix-ld.enable = true; + + programs.nix-ld.libraries = with pkgs; [ + alsa-lib + at-spi2-atk + at-spi2-core + atk + cairo + cups + curl + dbus + expat + fontconfig + freetype + fuse3 + gdk-pixbuf + glib + gtk3 + icu + libGL + libappindicator-gtk3 + libdrm + libglvnd + libnotify + libpulseaudio + libunwind + libusb1 + libuuid + libxkbcommon + libxml2 + mesa + nspr + nss + openssl + pango + pipewire + stdenv.cc.cc + systemd + vulkan-loader + xorg.libX11 + xorg.libXScrnSaver + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXrandr + xorg.libXrender + xorg.libXtst + xorg.libxcb + xorg.libxkbfile + xorg.libxshmfence + zlib + ]; +} diff --git a/modules/user.nix b/modules/user.nix new file mode 100644 index 0000000..624756b --- /dev/null +++ b/modules/user.nix @@ -0,0 +1,27 @@ +{ config, pkgs, unstablePkgs, auxiliaryPkgs, ... }: + +{ + users.mutableUsers = false; + users.users.mel = { + isNormalUser = true; + description = "Mel"; + shell = pkgs.fish; + extraGroups = [ "networkmanager" "wheel" ]; + hashedPassword = "$y$j9T$4wGl.YJizIpcfFv0LyvLU0$7LLEkjIFWBOV.XXynReCOczBYNX0EZfMPIDB/bmmhhC"; + + packages = (with pkgs; [ + firefox + thunderbird + tor-browser + transmission_4-gtk + jetbrains-toolbox + ]) ++ (with unstablePkgs; [ + godot_4 + ]) ++ (with auxiliaryPkgs; [ + discord + element-desktop + obsidian + vscode + ]); + }; +} |
