summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2024-10-14 22:15:32 +0200
committerMel <einebeere@gmail.com>2024-10-14 22:15:32 +0200
commit7bca7fb6cac0a3d6479ee8dd8fb5f13fa0261a51 (patch)
treeced025aff19ffe1a9a040f3e8034a48a88285b3a /modules
downloadminerals-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.nix90
-rw-r--r--modules/flatpak.nix12
-rw-r--r--modules/fonts.nix15
-rw-r--r--modules/gnome.nix64
-rw-r--r--modules/libreoffice.nix11
-rw-r--r--modules/locale.nix27
-rw-r--r--modules/nix-ld.nix59
-rw-r--r--modules/user.nix27
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
+ ]);
+ };
+}