Files
configs/nixos/common-configuration.nix

282 lines
5.8 KiB
Nix

# This file contains the config shared across different devices.
{ config, pkgs, ... }:
{
# Set your time zone.
time.timeZone = "Europe/Madrid";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "es_ES.UTF-8";
LC_IDENTIFICATION = "es_ES.UTF-8";
LC_MEASUREMENT = "es_ES.UTF-8";
LC_MONETARY = "es_ES.UTF-8";
LC_NAME = "es_ES.UTF-8";
LC_NUMERIC = "es_ES.UTF-8";
LC_PAPER = "es_ES.UTF-8";
LC_TELEPHONE = "es_ES.UTF-8";
LC_TIME = "en_US.UTF-8";
};
# services.displayManager = {
# defaultSession = "none+i3";
# };
services.xserver = {
xkb = { # Configure keymap in X11
layout = "us";
variant = "";
};
enable=true;
# #displayManager = {
# # defaultSession = "none+i3";
# #};
# windowManager.i3 = {
# enable=true;
# extraPackages = with pkgs; [
# dmenu
# i3status
# i3lock
# ];
# };
};
# --- sway wm config:
services.xserver.displayManager.gdm.enable=true;
#services.displayManager.sessionPackages = [ pkgs.sway ];
#services.xserver.displayManager.gdm.wayland=false;
#services.xserver.displayManager.plasma5.enable=true;
# Enable the gnome-keyring secrets vault.
# Will be exposed through DBus to programs willing to store secrets.
services.gnome.gnome-keyring.enable = true;
# enable sway wm
programs.sway = {
enable = true;
wrapperFeatures.gtk = true;
};
security.polkit.enable = true;
# --- end of sway config.
environment.systemPackages = with pkgs; [
# sway wm utilities
grim # screenshot functionality
slurp # screenshot functionality
wl-clipboard # wl-copy and wl-paste for copy/paste from stdin / stdout
mako # notification system developed by swaywm maintainer
# utilities
wget
tmux
git
delta
tig
mosh
bat
ripgrep
fzf
screenfetch
htop
jq
keynav
unzip
gnutar
xorg.xmodmap # keyboard remapping
xfce.xfce4-screenshooter
pulseaudio
usbutils
time
#impala # nmtui alternative
fastfetch
rpm
pdfgrep # to find strings across pdfs in directories
# code editors
vim
neovim
vimHugeX # to make clipboard work in vim
xclip # to make clipboard work in neovim
# terminals
alacritty
kitty
# pdf
zathura
mate.atril
# file explorers/managers
lf
yazi
xfce.thunar
xfce.xfconf # needed to save preferences of thunar
xfce.ristretto
xfce.tumbler # for thumbnails of imgs
# for detecting usbs:
xfce.thunar-volman
gvfs
polkit_gnome
udiskie
# media
pavucontrol
mpv
vlc
feh
#kolourpaint
gimp
calibre
tauon
libsForQt5.kdenlive
libreoffice-qt6
ffmpeg
# browsers
firefox
qutebrowser
chromium
# languages
#texlive.combined.scheme-medium # includes latexmk
#texlivePackages.minted
pgf-umlsd # latex diagrams
pgf
(pkgs.texlive.combine {
inherit (pkgs.texlive)
scheme-medium # includes latexmk
minted # syntax highligting
pgf
;
})
gnumake
gcc
clang
clang-tools
openssl
openssl.dev
glib # GLib base library
#gio # GIO library
gdk-pixbuf # GDK Pixbuf library
gtk3 # GTK3 including GDK, relevant for gdk-sys
atk # Accessibility Toolkit
cairo # 2D graphics library
pango # Text layout and rendering
pkg-config # Needed for pkg-config to find .pc files
cmake
stdenv
rustup
wabt # wasm binary toolkit
wasmedge # to execute wasm binaries
sage
coq
coqPackages.mathcomp
#coqPackages.coqide
opam # ocaml package manager, for coq packages
go
(python3.withPackages(ps: with ps; [
matplotlib numpy
qmk
meshtastic esptool # meshtastic related
unicodeit
setuptools
]))
pipx
nodejs
pnpm
# other
qmk
vial
via
freecad
orca-slicer
];
environment.variables = {
OPENSSL_DEV = "${pkgs.openssl.dev}";
OPENSSL_LIB_DIR = "${pkgs.openssl.out}/lib";
OPENSSL_INCLUDE_DIR = "${pkgs.openssl.dev}/include";
PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig";
OPENSSL_NO_VENDOR="1";
OPENSSL_STATIC="0";
# for screen sharing in sway
XDG_CURRENT_DESKTOP = "sway";
XDG_SESSION_TYPE="wayland";
WAYLAND_DISPLAY="wayland-1";
XDG_RUNTIME_DIR="/run/user/$(id -u)";
};
fonts.packages = with pkgs; [
dina-font
proggyfonts
terminus_font
fira-code
liberation_ttf
noto-fonts
tamsyn
termsyn
gohufont
];
programs.zsh.enable = true;
users.defaultUserShell = pkgs.zsh;
environment.shells = with pkgs; [zsh];
# set default pdf reader to zathura
xdg.mime.enable=true;
environment.sessionVariables = {
BROWSER = "zathura";
};
xdg.mime.defaultApplications = {
"application/pdf" = "zathura";
};
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-wlr ];
};
# gvfs needed for Thunar to detect external disks
services.gvfs.enable = true;
hardware.graphics.enable = true;
# bluetooth related
hardware.bluetooth.enable = true;
services.blueman.enable = true;
#hardware.pulseaudio.enable = true;
#services.pulseaudio.enable = true;
#services.pipewire.pulse.enable=false;
#services.pipewire.enable=false;
services.pipewire = {
enable = true; # Enable PipeWire service
alsa.enable = true; # Enable ALSA support (audio hardware)
alsa.support32Bit = true; # Support 32-bit apps on 64-bit systems
pulse.enable = true; # Enable PipeWire PulseAudio replacement
wireplumber.enable = true; # Enable WirePlumber session manager (recommended)
jack.enable = true; # Enable JACK support if needed
};
# udev rules (for Vial)
services.udev.extraRules = ''
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="4653", ATTRS{idProduct}=="0001", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
'';
services.udev.packages = with pkgs; [
qmk
qmk-udev-rules
qmk_hid
via
vial
];
nix.settings.extra-experimental-features = [ "nix-command" "flakes" ];
}