summary refs log tree commit diff
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
+    ]);
+  };
+}