diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/chromium.nix | 34 | ||||
| -rw-r--r-- | modules/desktop-software.nix | 19 | ||||
| -rw-r--r-- | modules/dvb-dump-nfs-automount.nix | 26 | ||||
| -rw-r--r-- | modules/emacs.nix | 29 | ||||
| -rw-r--r-- | modules/gnome.nix | 116 | ||||
| -rw-r--r-- | modules/gnupg.nix | 18 | ||||
| -rw-r--r-- | modules/hw-accel-intel.nix | 21 | ||||
| -rw-r--r-- | modules/mail/default.nix | 133 | ||||
| -rw-r--r-- | modules/mail/mbsyncrc | 97 | ||||
| -rw-r--r-- | modules/radio.nix | 39 | ||||
| -rw-r--r-- | modules/science.nix | 17 | ||||
| -rw-r--r-- | modules/sway.nix | 166 | ||||
| -rw-r--r-- | modules/tlp.nix | 14 | ||||
| -rw-r--r-- | modules/vscode.nix | 22 |
14 files changed, 751 insertions, 0 deletions
diff --git a/modules/chromium.nix b/modules/chromium.nix new file mode 100644 index 0000000..4a0f453 --- /dev/null +++ b/modules/chromium.nix @@ -0,0 +1,34 @@ +{ config, pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + chromium + ]; + + nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland --force-dark-mode --ignore-gpu-blocklist --enable-gpu-rasterization --enable-zero-copy --enable-native-gpu-memory-buffers --enable-features=VaapiVideoDecoder,VaapiVideoEncoder,CanvasOopRasterization,WebUIDarkMode"; + + programs.chromium = { + enable = true; + extensions = [ + "pkehgijcmpdhfbdbbnkijodmdjhbjlgp" # privacy badger + "ekhagklcjbdpajgpjgmbionohlpdbjgc" # zotero connector + "nngceckbapebfimnlniiiahkandclblb" # bitwarden + "cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock origin + ]; + extraOpts = { + "BrowserSignin" = 0; + "SyncDisabled" = true; + "PasswordManagerEnabled" = false; + "TranslateEnabled" = false; + "AutofillAddressEnabled" = false; + "AutofillCreditCardEnabled" = false; + "AutoplayAllowed" = false; + "DefaultNotificationSetting" = 2; + "BackgroundModeEnabled" = false; + # "DefaultSearchProviderEnabled" = true; + # "DefaultSearchProviderSearchURL" = "https://google.com/search?q={searchTerms}"; + # "DefaultSearchProviderSearchURL" = "https://duckduckgo.com/?q={searchTerms}"; + "SearchSuggestEnable" = false; + }; + }; +} diff --git a/modules/desktop-software.nix b/modules/desktop-software.nix new file mode 100644 index 0000000..669270b --- /dev/null +++ b/modules/desktop-software.nix @@ -0,0 +1,19 @@ +{ pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + blender + dino + ffmpeg-full + firefox-wayland + fluffychat + gimp + inkscape + kicad + signal-desktop + tdesktop + tor-browser-bundle-bin + wl-clipboard + yt-dlp + libreoffice + ]; +} diff --git a/modules/dvb-dump-nfs-automount.nix b/modules/dvb-dump-nfs-automount.nix new file mode 100644 index 0000000..2dce2ea --- /dev/null +++ b/modules/dvb-dump-nfs-automount.nix @@ -0,0 +1,26 @@ +{ pkgs, lib, ... }: +{ + + environment.systemPackages = with pkgs; [ nfs-utils ]; + services.rpcbind.enable = true; + + systemd.mounts = [{ + type = "nfs"; + mountConfig = { + Options = "noatime"; + }; + what = "10.13.37.5:/"; + where = "/mnt/dvb"; + }]; + + systemd.automounts = [{ + wantedBy = [ "multi-user.target" ]; + requires = [ "wg-quick-wg-dvb.service" ]; + automountConfig = { + TimeoutIdleSec = "600"; + }; + where = "/mnt/dvb"; + }]; +} + + diff --git a/modules/emacs.nix b/modules/emacs.nix new file mode 100644 index 0000000..74113dd --- /dev/null +++ b/modules/emacs.nix @@ -0,0 +1,29 @@ +{ pkgs, inputs, lib, ... }: + +{ + environment.systemPackages = with pkgs; [ + direnv + ]; + + nixpkgs.overlays = [ + inputs.emacs-overlay.overlay + ]; + + services.emacs = { + install = true; + enable = false; + package = with pkgs; ((emacsPackagesFor (emacs-pgtk.overrideAttrs (old: { + passthru = old.passthru // { + treeSitter = true; + }; + }))).emacsWithPackages (epkgs: with epkgs; [ + # treesitter bits + treesit-grammars.with-all-grammars + + vterm + pdf-tools + ])); + defaultEditor = lib.mkDefault true; + }; + +} diff --git a/modules/gnome.nix b/modules/gnome.nix new file mode 100644 index 0000000..6af207e --- /dev/null +++ b/modules/gnome.nix @@ -0,0 +1,116 @@ +{ config, pkgs, ... }: { + + imports = [ + ./desktop-software.nix + ]; + environment.systemPackages = with pkgs; [ + amberol + celluloid + gnome-console + gnome-obfuscate + gnome.gnome-boxes + gnome.gnome-tweaks + nextcloud-client + qbittorrent + spotify + ]; + + environment.gnome.excludePackages = with pkgs; [ + gnome.totem + gnome.geary + gnome.gnome-music + gnome-console + ]; + + + services.gnome = { + evolution-data-server.enable = true; + gnome-keyring.enable = true; + gnome-online-accounts.enable = true; + }; + + programs = { + seahorse.enable = true; + gnupg.agent.pinentryFlavor = "gnome3"; + evolution = { + enable = true; + plugins = [ pkgs.evolution-ews ]; + }; + }; + + qt = { + enable = true; + platformTheme = "gnome"; + style = "adwaita-dark"; + }; + + services.xserver = { + enable = true; + desktopManager.gnome.enable = true; + displayManager.gdm = { + enable = true; + wayland = true; + }; + }; + + # Enable sound. + security.rtkit.enable = true; + hardware.pulseaudio = { + enable = false; + zeroconf.discovery.enable = true; + extraClientConf = '' + autospawn=yes + ''; + }; + services.pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + }; + + programs.zsh.vteIntegration = true; + programs.bash.vteIntegration = true; + + fonts.fonts = with pkgs; [ + (nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" ]; }) + monoid + font-awesome + dejavu_fonts + julia-mono + uw-ttyp0 + gohufont + spleen + terminus_font + creep + corefonts + dina-font + fira + fira-mono + hack-font + liberation_ttf + noto-fonts + noto-fonts-cjk + noto-fonts-emoji + noto-fonts-extra + proggyfonts + symbola + open-sans + twemoji-color-font + twitter-color-emoji + iosevka-bin + ]; + + fonts.enableDefaultFonts = true; + fonts.fontconfig = { + enable = true; + allowBitmaps = true; + useEmbeddedBitmaps = true; + defaultFonts.emoji = [ + "Twitter Color Emoji" + "Noto Color Emoji" + ]; + }; + + hardware.bluetooth.enable = true; + +} diff --git a/modules/gnupg.nix b/modules/gnupg.nix new file mode 100644 index 0000000..6d52e66 --- /dev/null +++ b/modules/gnupg.nix @@ -0,0 +1,18 @@ +{ config, pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + gnupg + opensc + + yubikey-personalization-gui + ]; + + # smartcard support + services.pcscd.enable = false; + hardware.gpgSmartcards.enable = true; + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; +} diff --git a/modules/hw-accel-intel.nix b/modules/hw-accel-intel.nix new file mode 100644 index 0000000..a48a93e --- /dev/null +++ b/modules/hw-accel-intel.nix @@ -0,0 +1,21 @@ +# overrides to enable [sometimes] wonky intel acceleration +{ config, pkgs, ... }: + +{ + nixpkgs.config.packageOverrides = pkgs: { + vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; }; + }; + + hardware.opengl = { + enable = true; + extraPackages = with pkgs; [ + vaapiVdpau + vaapiIntel + libvdpau-va-gl + intel-media-driver + ]; + }; + + boot.initrd.kernelModules = [ "i915" ]; + +} diff --git a/modules/mail/default.nix b/modules/mail/default.nix new file mode 100644 index 0000000..5225480 --- /dev/null +++ b/modules/mail/default.nix @@ -0,0 +1,133 @@ +{ config, pkgs, ... }: +let + mbsyncConf = ./mbsyncrc; +in +{ + environment.systemPackages = with pkgs; [ + isync + msmtp + neomutt + notmuch + alot + w3m + links2 + ]; + + environment.shellAliases = { + mutt = "neomutt"; + }; + + sops.secrets = { + "mail/oxapentane.com" = { + owner = config.users.users.grue.name; + }; + "mail/shipunov.xyz" = { + owner = config.users.users.grue.name; + }; + "mail/dvb.solutions" = { + owner = config.users.users.grue.name; + }; + "mail/tlm.solutions" = { + owner = config.users.users.grue.name; + }; + }; + + programs.msmtp = { + enable = true; + setSendmail = true; + extraConfig = '' + account mail@oxapentane.com + host smtp.migadu.com + port 587 + from *@oxapentane.com + user mail@oxapentane.com + passwordeval cat ${config.sops.secrets."mail/oxapentane.com".path} + auth on + tls on + tls_trust_file /etc/ssl/certs/ca-certificates.crt + logfile ~/.msmtp.log + + account grigory@shipunov.xyz + host smtp.migadu.com + port 587 + from *@shipunov.xyz + user grigory@shipunov.xyz + passwordeval cat ${config.sops.secrets."mail/shipunov.xyz".path} + auth on + tls on + tls_trust_file /etc/ssl/certs/ca-certificates.crt + logfile ~/.msmtp.log + + account dump@dvb.solutions + host smtp.migadu.com + port 587 + from dump@dvb.solutions + user dump@dvb.solutions + passwordeval cat ${config.sops.secrets."mail/dvb.solutions".path} + auth on + tls on + tls_trust_file /etc/ssl/certs/ca-certificates.crt + logfile ~/.msmtp.log + + account grigory@tlm.solutions + host smtp.migadu.com + port 587 + from grigory@tlm.solutions + user grigory@tlm.solutions + passwordeval cat ${config.sops.secrets."mail/tlm.solutions".path} + auth on + tls on + tls_trust_file /etc/ssl/certs/ca-certificates.crt + logfile ~/.msmtp.log + ''; + }; + + + systemd.user = { + + # Service and timer to sync imap to local maildir + services.mbsync = { + enable = true; + after = [ "graphical.target" "network-online.target" ]; + script = '' + ${pkgs.isync}/bin/mbsync -q -a --config=${mbsyncConf} + ''; + serviceConfig = { + Type = "oneshot"; + }; + }; + + timers.mbsync = { + enable = true; + wantedBy = [ "timers.target" ]; + timerConfig = { + Unit = "mbsync.service"; + OnBootSec = "5m"; + OnUnitInactiveSec = "11m"; + }; + }; + + # service and timer to flush the msmtp queue + services.flush-msmtpq = { + enable = true; + after = [ "graphical.target" "network-online.target" ]; + script = '' + ${pkgs.msmtp}/bin/msmtp-queue -r + ''; + serviceConfig = { + Type = "oneshot"; + }; + }; + + timers.flush-msmtpq = { + enable = true; + wantedBy = [ "timers.target" ]; + timerConfig = { + Unit = "flush-msmtpq.service"; + OnBootSec = "11m"; + OnUnitInactiveSec = "13m"; + }; + }; + + }; +} diff --git a/modules/mail/mbsyncrc b/modules/mail/mbsyncrc new file mode 100644 index 0000000..f34f390 --- /dev/null +++ b/modules/mail/mbsyncrc @@ -0,0 +1,97 @@ +IMAPStore mail@oxapentane.com-remote +Host imap.migadu.com +Port 993 +User mail@oxapentane.com +PassCmd "cat /run/secrets/mail/oxapentane.com" +AuthMechs LOGIN +SSLType IMAPS + +MaildirStore mail@oxapentane.com-local +Subfolders Verbatim +Path /home/grue/mail/mail@oxapentane.com/ +Inbox /home/grue/mail/mail@oxapentane.com/INBOX + +Channel mail@oxapentane.com +Expunge Both +Master :mail@oxapentane.com-remote: +Slave :mail@oxapentane.com-local: +Create Both +SyncState * +Patterns * +MaxMessages 0 +ExpireUnread no +# End profile + + +IMAPStore grigory@shipunov.xyz-remote +Host imap.migadu.com +Port 993 +User grigory@shipunov.xyz +PassCmd "cat /run/secrets/mail/shipunov.xyz" +AuthMechs LOGIN +SSLType IMAPS + +MaildirStore grigory@shipunov.xyz-local +Subfolders Verbatim +Path /home/grue/mail/grigory@shipunov.xyz/ +Inbox /home/grue/mail/grigory@shipunov.xyz/INBOX + +Channel grigory@shipunov.xyz +Expunge Both +Master :grigory@shipunov.xyz-remote: +Slave :grigory@shipunov.xyz-local: +Create Both +SyncState * +Patterns * +MaxMessages 0 +ExpireUnread no +# End profile + + +IMAPStore dump@dvb.solutions-remote +Host imap.migadu.com +Port 993 +User dump@dvb.solutions +PassCmd "cat /run/secrets/mail/dvb.solutions" +AuthMechs LOGIN +SSLType IMAPS + +MaildirStore dump@dvb.solutions-local +Subfolders Verbatim +Path /home/grue/mail/dump@dvb.solutions/ +Inbox /home/grue/mail/dump@dvb.solutions/INBOX + +Channel dump@dvb.solutions +Expunge Both +Master :dump@dvb.solutions-remote: +Slave :dump@dvb.solutions-local: +Create Both +SyncState * +Patterns * +MaxMessages 0 +ExpireUnread no +# End profile + +IMAPStore grigory@tlm.solutions-remote +Host imap.migadu.com +Port 993 +User grigory@tlm.solutions +PassCmd "cat /run/secrets/mail/tlm.solutions" +AuthMechs LOGIN +SSLType IMAPS + +MaildirStore grigory@tlm.solutions-local +Subfolders Verbatim +Path /home/grue/mail/grigory@tlm.solutions/ +Inbox /home/grue/mail/grigory@tlm.solutions/INBOX + +Channel grigory@tlm.solutions +Expunge Both +Master :grigory@tlm.solutions-remote: +Slave :grigory@tlm.solutions-local: +Create Both +SyncState * +Patterns * +MaxMessages 0 +ExpireUnread no +# End profile diff --git a/modules/radio.nix b/modules/radio.nix new file mode 100644 index 0000000..7df20bf --- /dev/null +++ b/modules/radio.nix @@ -0,0 +1,39 @@ +{ lib, pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + gnuradio + gqrx + cubicsdr + sdrangel + multimon-ng + sox + + libusb1 + rtl-sdr + hackrf + soapyhackrf + + sigdigger + suscan + sigutils + ]; + + hardware = { + rtl-sdr.enable = true; + hackrf.enable = true; + }; + + services.udev.extraRules = '' + # MCH2022 Badge + SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="0f9a", MODE="0666" + + #Flipper Zero serial port + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ATTRS{manufacturer}=="Flipper Devices Inc.", TAG+="uaccess" + #Flipper Zero DFU + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", ATTRS{manufacturer}=="STMicroelectronics", TAG+="uaccess" + #Flipper ESP32s2 BlackMagic + SUBSYSTEMS=="usb", ATTRS{idVendor}=="303a", ATTRS{idProduct}=="40??", ATTRS{manufacturer}=="Flipper Devices Inc.", TAG+="uaccess" + ''; + +} diff --git a/modules/science.nix b/modules/science.nix new file mode 100644 index 0000000..b6ce66b --- /dev/null +++ b/modules/science.nix @@ -0,0 +1,17 @@ +{ config, pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + (rWrapper.override { + packages = with rPackages; [ + ggplot2 + swirl + dplyr + data_table + ]; + }) + gnuplot + zotero + python3Full + paraview + ]; +} diff --git a/modules/sway.nix b/modules/sway.nix new file mode 100644 index 0000000..834b38c --- /dev/null +++ b/modules/sway.nix @@ -0,0 +1,166 @@ +# General Desktop-related config +{ pkgs, ... }: +{ + imports = [ + ./desktop-software.nix + ]; + environment.systemPackages = with pkgs; [ + screen-message + qbittorrent + gajim + imv + swayimg + mpv + evince + brightnessctl + pulsemixer + cmus + termusic + gsettings-desktop-schemas + xdg-utils + nextcloud-client + foot + qt5.qtwayland + bashmount + gnome.nautilus + audacity + ]; + + #on the desktop, we need nice fonts ^^ + fonts.fonts = with pkgs; [ + monoid + font-awesome + dejavu_fonts + julia-mono + uw-ttyp0 + gohufont + spleen + terminus_font + creep + corefonts + dina-font + fira + fira-mono + hack-font + liberation_ttf + noto-fonts + noto-fonts-cjk + noto-fonts-emoji + noto-fonts-extra + proggyfonts + symbola + open-sans + twemoji-color-font + twitter-color-emoji + iosevka + ]; + + fonts.enableDefaultFonts = true; + fonts.fontconfig = { + enable = true; + allowBitmaps = true; + useEmbeddedBitmaps = true; + defaultFonts.emoji = [ + "Noto Color Emoji" + "Twitter Color Emoji" + ]; + }; + + # Enable sound. + security.rtkit.enable = true; + + services.avahi = { + enable = true; + nssmdns = true; + }; + + services.pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + }; + hardware.pulseaudio.zeroconf.discovery.enable = true; + + hardware.bluetooth = { + enable = true; + package = pkgs.bluez; + }; + + programs.zsh.vteIntegration = true; + programs.bash.vteIntegration = true; + services.upower.enable = true; + + services.acpid.enable = true; + programs.light.enable = true; + + services.blueman.enable = true; + + programs.xwayland.enable = true; + programs.sway = { + enable = true; + wrapperFeatures.gtk = true; + extraSessionCommands = '' + export SDL_VIDEODRIVER=wayland + export QT_QPA_PLATFORM=wayland-egl + export QT_WAYLAND_DISABLE_WINDOWDECORATION="1" + export QT_QPA_PLATFORMTHEME="gnome" + export QT_STYLE_OVERRIDE="adwaita-dark" + ''; + extraPackages = with pkgs; [ + alacritty + pamixer + swaylock + graphicsmagick + swayidle + wl-clipboard + mako + foot + rofi-wayland + grim + slurp + gnome.adwaita-icon-theme + i3status-rust + kanshi + wl-mirror + gammastep + ]; + }; + environment.sessionVariables = { GTK_THEME = "Adwaita:dark"; }; + xdg.portal = { + enable = true; + wlr.enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + }; + + services.udisks2.enable = true; + environment.shellAliases = { + # mounting shit + mnt = "udisksctl mount -b"; + umnt = "udisksctl unmount -b"; + unlock = "udisksctl unlock -b"; + lock = "udisksctl lock -b"; + # easier navigation + pwc = "pwd|wl-copy"; + cdp = "cd $(wl-paste)"; + }; + + qt = { + enable = true; + platformTheme = "gnome"; + style = "adwaita-dark"; + }; + + services.gnome.gnome-keyring.enable = true; + security.pam.services.greetd.enableGnomeKeyring = true; + + services.greetd = { + enable = true; + settings = { + default_session = { + command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --greeting \"$(${pkgs.fortune}/bin/fortune -s)\" --cmd ${pkgs.sway}/bin/sway"; + }; + }; + }; + + programs.gnupg.agent.pinentryFlavor = "curses"; +} diff --git a/modules/tlp.nix b/modules/tlp.nix new file mode 100644 index 0000000..b9753a4 --- /dev/null +++ b/modules/tlp.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +{ + powerManagement.cpuFreqGovernor = null; + services.power-profiles-daemon.enable = false; + services.tlp = { + enable = true; + settings = { + USB_BLACKLIST = "1d50:604b 1d50:6089 1d50:cc15 1fc9:000c"; + CPU_SCALING_GOVERNOR_ON_AC = "performance"; + CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + }; + }; +} diff --git a/modules/vscode.nix b/modules/vscode.nix new file mode 100644 index 0000000..0bc26d7 --- /dev/null +++ b/modules/vscode.nix @@ -0,0 +1,22 @@ +{ pkgs, ... }: { +environment.systemPackages = with pkgs; [ + (vscode-with-extensions.override { + vscodeExtensions = with vscode-extensions; [ + bbenoist.nix + ms-python.python + ms-vscode-remote.remote-ssh + rust-lang.rust-analyzer + vscodevim.vim + james-yu.latex-workshop + ms-toolsai.jupyter + ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ + { + name = "remote-ssh-edit"; + publisher = "ms-vscode-remote"; + version = "0.86.0"; + sha256 = "sha256-JsbaoIekUo2nKCu+fNbGlh5d1Tt/QJGUuXUGP04TsDI="; + } + ]; + }) +]; +} |
