From 386d8894552454cd3531b44e8f99bfe0c79b9de1 Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 22 Jan 2026 00:13:33 +0100 Subject: [PATCH 01/44] refactored system --- flake.nix | 104 +++--------------- home/firefox.nix | 3 +- home/fish.nix | 14 ++- home/gpg.nix | 6 +- home/mail/default.nix | 2 +- home/nvim/autocommands.vim | 6 - home/ssh.nix | 53 +++++++-- hosts/arielle/default.nix | 13 +++ hosts/arielle/hardware.nix | 28 +++++ hosts/homer/default.nix | 16 +++ .../homer.nix => hosts/homer/hardware.nix | 26 ++--- hosts/mila/default.nix | 12 ++ hosts/nova/default.nix | 18 +++ .../nova.nix => hosts/nova/hardware.nix | 12 +- system/alt.nix | 14 --- system/btrbk.nix | 18 --- system/cosmic.nix | 5 - system/default.nix | 37 +++---- system/desktop/btrbk.nix | 16 +++ system/{ => desktop}/cast.nix | 0 system/{desktop.nix => desktop/default.nix} | 11 +- .../{ergodox.nix => desktop/ergodox-udev.nix} | 8 +- system/{ => desktop}/gnome.nix | 8 +- system/{ => desktop}/interception-tools.nix | 0 system/{ => desktop}/media.nix | 0 system/desktop/remote-desktop.nix | 5 + .../{yubikey.nix => desktop/yubikey-pam.nix} | 10 +- system/distrobox.nix | 10 -- system/hardware/arielle.nix | 33 ------ system/hardware/ernst.nix | 33 ------ system/hardware/romulus.nix | 58 ---------- system/hardware/tron.nix | 64 ----------- system/hyprland.nix | 17 --- .../mail => mail-server}/default.nix | 0 .../{web-server/mail => mail-server}/dkim.nix | 0 .../mail => mail-server}/dovecot.nix | 0 .../mail => mail-server}/postfix.nix | 0 .../mail => mail-server}/roundcube.nix | 0 system/plasma.nix | 5 - system/remote-desktop.nix | 5 - system/secrets.nix | 14 --- system/steam.nix | 5 - system/sway.nix | 20 ---- system/web-server/default.nix | 70 ++---------- system/web-server/jenkins.nix | 23 ---- ...{kein-schlussstrich-hessen.org => ksh.nix} | 2 +- system/web-server/letsencrypt.nix | 29 +++++ system/web-server/nginx.nix | 34 ++++++ system/web-server/outline.nix | 1 + system/xfce.nix | 7 -- template.nix | 7 ++ system/ssh/till@nova.pub => till@nova.pub | 0 users/alt.nix | 10 ++ {system => users}/guest.nix | 8 +- users/till.nix | 16 +++ 55 files changed, 336 insertions(+), 580 deletions(-) create mode 100644 hosts/arielle/default.nix create mode 100644 hosts/arielle/hardware.nix create mode 100644 hosts/homer/default.nix rename system/hardware/homer.nix => hosts/homer/hardware.nix (67%) create mode 100644 hosts/mila/default.nix create mode 100644 hosts/nova/default.nix rename system/hardware/nova.nix => hosts/nova/hardware.nix (82%) delete mode 100644 system/alt.nix delete mode 100644 system/btrbk.nix delete mode 100644 system/cosmic.nix create mode 100644 system/desktop/btrbk.nix rename system/{ => desktop}/cast.nix (100%) rename system/{desktop.nix => desktop/default.nix} (85%) rename system/{ergodox.nix => desktop/ergodox-udev.nix} (50%) rename system/{ => desktop}/gnome.nix (81%) rename system/{ => desktop}/interception-tools.nix (100%) rename system/{ => desktop}/media.nix (100%) create mode 100644 system/desktop/remote-desktop.nix rename system/{yubikey.nix => desktop/yubikey-pam.nix} (83%) delete mode 100644 system/distrobox.nix delete mode 100644 system/hardware/arielle.nix delete mode 100644 system/hardware/ernst.nix delete mode 100644 system/hardware/romulus.nix delete mode 100644 system/hardware/tron.nix delete mode 100644 system/hyprland.nix rename system/{web-server/mail => mail-server}/default.nix (100%) rename system/{web-server/mail => mail-server}/dkim.nix (100%) rename system/{web-server/mail => mail-server}/dovecot.nix (100%) rename system/{web-server/mail => mail-server}/postfix.nix (100%) rename system/{web-server/mail => mail-server}/roundcube.nix (100%) delete mode 100644 system/plasma.nix delete mode 100644 system/remote-desktop.nix delete mode 100644 system/secrets.nix delete mode 100644 system/steam.nix delete mode 100644 system/sway.nix delete mode 100644 system/web-server/jenkins.nix rename system/web-server/{kein-schlussstrich-hessen.org => ksh.nix} (98%) create mode 100644 system/web-server/letsencrypt.nix create mode 100644 system/web-server/nginx.nix delete mode 100644 system/xfce.nix create mode 100644 template.nix rename system/ssh/till@nova.pub => till@nova.pub (100%) create mode 100644 users/alt.nix rename {system => users}/guest.nix (58%) create mode 100644 users/till.nix diff --git a/flake.nix b/flake.nix index fbea410..0fe13d8 100644 --- a/flake.nix +++ b/flake.nix @@ -2,112 +2,36 @@ description = "Complete system and home config"; inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; home-manager.url = "github:nix-community/home-manager/release-25.11"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; nur.url = "github:nix-community/nur"; + }; outputs = { self, nixpkgs, home-manager, ... }@inputs: { nixosConfigurations = { - nova = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - modules = [ - { - networking.hostName = "nova"; - } - ./system - ./system/alt.nix - ./system/btrbk.nix - ./system/cast.nix - ./system/desktop.nix - ./system/ergodox.nix - ./system/gnome.nix - ./system/guest.nix - ./system/hardware/nova.nix - ./system/plasma.nix - ./system/steam.nix - ./system/yubikey.nix - # ./system/distrobox.nix - ]; - }; - - tron = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - modules = [ - { - networking.hostName = "tron"; - } - ./system - ./system/desktop.nix - ./system/hardware/tron.nix - ./system/gnome.nix - ./system/btrbk.nix - ./system/yubikey.nix - ]; - }; - - romulus = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - modules = [ - { - networking.hostName = "romulus"; - environment.systemPackages = [ - nixpkgs.wl-clipboard - ]; - programs.sway.enable = true; - security.rtkit.enable = true; - } - ./system - ./system/desktop.nix - ./system/hardware/romulus.nix - ]; - }; - arielle = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; - modules = [ - { - networking.hostName = "arielle"; - networking.domain = "ktiu.net"; - boot.loader.grub.enable = true; - boot.loader.grub.device = "/dev/sda"; - } - ./system/hardware/arielle.nix - ./system - ./system/web-server - - #infrastructure - ./system/web-server/mail - ./system/web-server/radicale.nix - ./system/web-server/outline.nix - ./system/web-server/forgejo.nix - # ./system/web-server/jenkins.nix - - # web hosting - ./system/web-server/oopsidentify.nix - ./system/web-server/fundkorb-button.nix - ./system/web-server/ksh-map.nix - ]; + modules = [ ./hosts/arielle ]; }; homer = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; - modules = [ - { - networking.hostName = "homer"; - } - ./system - ./system/desktop.nix - ./system/hardware/homer.nix - ./system/gnome.nix - ./system/steam.nix - ./system/remote-desktop.nix - ./system/media.nix - ./system/guest.nix - ]; + modules = [ ./hosts/homer ]; + }; + + mila = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + modules = [ ./hosts/mila ]; + }; + + nova = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + modules = [ ./hosts/nova ]; }; }; diff --git a/home/firefox.nix b/home/firefox.nix index 8c7898b..f51e776 100644 --- a/home/firefox.nix +++ b/home/firefox.nix @@ -72,8 +72,7 @@ definedAliases = [ "@no" ]; }; "Home manager options" = { - # urls = [{ template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=release-${osConfig.system.nixos.release}"; }]; - urls = [{ template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=release-25.05"; }]; + urls = [{ template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=release-${osConfig.system.nixos.release}"; }]; icon = "https://mipmip.github.io/home-manager-option-search/images/favicon.png"; updateInterval = 24 * 60 * 60 * 1000; definedAliases = [ "@hm" ]; diff --git a/home/fish.nix b/home/fish.nix index f8c7d2b..3e65ddb 100644 --- a/home/fish.nix +++ b/home/fish.nix @@ -1,7 +1,10 @@ -{ config, pkgs, ... }: +{ config, ... }: + { + home.shellAliases = { - top = "btm --battery"; + top = "btm --battery"; + du = "dust"; ymd = "date +'%Y-%m-%d'"; dmy = "date +'%-d.-%-m.%Y'"; v = "nvim"; @@ -9,12 +12,13 @@ R = "R --no-save --no-restore"; cdg = "cd \$(git rev-parse --show-toplevel)"; }; + programs.fish = { + enable = true; + interactiveShellInit = "fish_add_path ${config.xdg.dataHome}/npm/packages/bin"; - shellAbbrs = { - openconnect = "openconnect --config=/home/till/.config/openconnect/config"; - }; + shellInit = '' set -gx EDITOR "nvim" set -gx VISUAL "nvim" diff --git a/home/gpg.nix b/home/gpg.nix index 9563388..356cf21 100644 --- a/home/gpg.nix +++ b/home/gpg.nix @@ -1,6 +1,11 @@ { config, pkgs, ... }: { + programs.gnupg.agent = { + enable = true; + pinentryPackage = pkgs.pinentry-gnome3; + enableSSHSupport = true; + }; programs.gpg.settings = { no-emit-version = true; @@ -23,5 +28,4 @@ ''; target = "../.gnupg/scdaemon.conf"; }; - } diff --git a/home/mail/default.nix b/home/mail/default.nix index 0285349..db101f8 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -225,7 +225,7 @@ enable = true; extraConfig.from = "kein_schlussstrich_hessen@systemli.org"; }; - passwordCommand = "secret-tool lookup server mail.systemli.org account kein_schlussstrich_hessen@systemli.org"; + passwordCommand = "pass other/ksh_systemli"; }; }; diff --git a/home/nvim/autocommands.vim b/home/nvim/autocommands.vim index 09fee23..354e037 100644 --- a/home/nvim/autocommands.vim +++ b/home/nvim/autocommands.vim @@ -9,9 +9,3 @@ augroup netrw autocmd! autocmd FileType netrw setl bufhidden=wipe augroup end - -augroup repl - autocmd! - autocmd TermOpen * setlocal nonumber norelativenumber - autocmd TermOpen * nmap Q :bdelete! -augroup end diff --git a/home/ssh.nix b/home/ssh.nix index 181ccca..bb4e147 100644 --- a/home/ssh.nix +++ b/home/ssh.nix @@ -1,4 +1,13 @@ -{ config, ... }: +{ config, osConfig, ... }: + +let + + certs = { + uni = "${config.home.homeDirectory}/.ssh/tstraube@${osConfig.networking.hostname}"; + personal = "${config.home.homeDirectory}/.ssh/till@${osConfig.networking.hostname}"; + }; + +in { programs.ssh = { @@ -8,18 +17,48 @@ matchBlocks = { - gu = { + "hrz login.server.uni-frankfurt.de" = { hostname = "login.server.uni-frankfurt.de"; user = "tstraube"; - identityFile = "${config.home.homeDirectory}/.ssh/tstraube"; + identityFile = certs.uni; }; - geocom = { - hostname = "geocom.uni-frankfurt.de"; - user = "till"; - identityFile = "${config.home.homeDirectory}/.ssh/tstraube"; + geocom3 = { + hostname = "141.2.194.220"; + user = "tstraube"; + identityFile = certs.uni; }; + geocom2 = { + hostname = "141.2.194.235"; + user = "till"; + identityFile = certs.uni; + }; + + "gitlab gitlab.rz.uni-frankfurt.de" = { + hostname = "gitlab.rz.uni-frankfurt.de"; + user = "tstraube"; + identityFile = certs.uni; + }; + + "arielle arielle.ktiu.net" = { + hostname = "arielle.ktiu.net"; + user = "till"; + identityFile = certs.personal; + }; + + "homer fernseher" = { + hostname = "homer"; + user = "till"; + identityFile = certs.personal; + }; + + # "mila" = { + # hostname = "mila"; + # user = "till"; + # identityFile = certs.personal; + # }; + }; }; } diff --git a/hosts/arielle/default.nix b/hosts/arielle/default.nix new file mode 100644 index 0000000..1c6bee4 --- /dev/null +++ b/hosts/arielle/default.nix @@ -0,0 +1,13 @@ +{ ... }: + +{ + networking.hostName = "arielle"; + networking.domain = "ktiu.net"; + + imports = [ + ./hardware + ../system + ../system/web-server + ../system/mail-server + ]; +} diff --git a/hosts/arielle/hardware.nix b/hosts/arielle/hardware.nix new file mode 100644 index 0000000..7d2b330 --- /dev/null +++ b/hosts/arielle/hardware.nix @@ -0,0 +1,28 @@ +{ lib, modulesPath, ... }: + +{ + imports = [ + (modulesPath + "/profiles/qemu-guest.nix") + ]; + + boot.loader.grub.enable = true; + boot.loader.grub.device = "/dev/sda"; + + boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/087544b8-4941-436b-be6c-e32bc3787b12"; + fsType = "ext4"; + }; + + swapDevices = [ + { device = "/dev/disk/by-uuid/9408a2ce-646d-406e-8407-c9bafd0a728c"; } + ]; + + networking.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/hosts/homer/default.nix b/hosts/homer/default.nix new file mode 100644 index 0000000..0182d7a --- /dev/null +++ b/hosts/homer/default.nix @@ -0,0 +1,16 @@ +{ ... }: + +{ + networking.hostName = "homer"; + + imports = [ + ./hardware.nix + ../system + ../system/desktop + ../system/desktop/gnome.nix + ../system/desktop/steam.nix + ../system/desktop/remote-desktop.nix + ../system/media-server.nix + ../users/guest.nix + ]; +} diff --git a/system/hardware/homer.nix b/hosts/homer/hardware.nix similarity index 67% rename from system/hardware/homer.nix rename to hosts/homer/hardware.nix index 305cffa..a18ff94 100644 --- a/system/hardware/homer.nix +++ b/hosts/homer/hardware.nix @@ -1,13 +1,13 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: +{ config, lib, modulesPath, ... }: { - imports = - [ (modulesPath + "/hardware/network/broadcom-43xx.nix") - (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ + (modulesPath + "/hardware/network/broadcom-43xx.nix") + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ ]; @@ -53,14 +53,12 @@ ]; }; - swapDevices = [ ]; + swapDevices = [{ + device = "/swapfile"; + size = 8 * 1045; + }]; - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. networking.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; diff --git a/hosts/mila/default.nix b/hosts/mila/default.nix new file mode 100644 index 0000000..4bc882d --- /dev/null +++ b/hosts/mila/default.nix @@ -0,0 +1,12 @@ +{ ... }: + +{ + networking.hostname = "mila"; + + imports = [ + ./hardware.nix + ../system + ../system/desktop + ../system/desktop/gnome.nix + ]; +} diff --git a/hosts/nova/default.nix b/hosts/nova/default.nix new file mode 100644 index 0000000..1e653f3 --- /dev/null +++ b/hosts/nova/default.nix @@ -0,0 +1,18 @@ +{ config, pkgs, ... }: + +{ + networking.hostName = "nova"; + + imports = [ + ./hardware.nix + ../users/alt.nix + ../users/guest.nix + ../system + ../system/desktop + ../system/desktop/gnome.nix + # ../system/desktop/cast.nix + ../system/desktop/ergodox.nix + ../system/desktop/steam.nix + ../system/desktop/yubikey.nix + ]; +} diff --git a/system/hardware/nova.nix b/hosts/nova/hardware.nix similarity index 82% rename from system/hardware/nova.nix rename to hosts/nova/hardware.nix index 7a860bc..a23e271 100644 --- a/system/hardware/nova.nix +++ b/hosts/nova/hardware.nix @@ -10,6 +10,9 @@ in { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" "v4l2loopback" ]; @@ -24,15 +27,6 @@ in options = [ "subvol=root" "compress=zstd" "discard=async" ]; }; - # the following subvolumes are automatically mounted and won't be snapshotted: - # /home/till/.local/share/Steam - # /home/till/.local/share/Trash - # /home/till/.cache - # /home/till/tmp - # /home/till/.mozilla/firefox/till/storage - # /home/till/.config/Mattermost/Cache - # /home/till/.config/Mattermost/Code\ Cache - fileSystems."/nix" = subvolume // { options = [ "subvol=nix" "compress=zstd" "noatime" "discard=async" ]; }; diff --git a/system/alt.nix b/system/alt.nix deleted file mode 100644 index 726c48b..0000000 --- a/system/alt.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, pkgs, ... }: - -{ - users.users.alt = { - home = "/home/alt"; - isSystemUser = true; - group = "users"; - description = "Alt"; - extraGroups = [ - "networkmanager" - ]; - shell = pkgs.fish; - }; -} diff --git a/system/btrbk.nix b/system/btrbk.nix deleted file mode 100644 index 0981e09..0000000 --- a/system/btrbk.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, pkgs, ... }: - -{ - services.btrbk = { - instances.btrbk = { - onCalendar = "hourly"; - settings = { - subvolume = "/home"; - snapshot_preserve = "40d"; - snapshot_preserve_min = "4d"; - snapshot_dir = "/btrbk_snapshots"; - target = "/run/media/till/backup/${config.networking.hostName}"; - target_preserve_min = "no"; - target_preserve = "10d 10w 24m"; - }; - }; - }; -} diff --git a/system/cosmic.nix b/system/cosmic.nix deleted file mode 100644 index e6ffb66..0000000 --- a/system/cosmic.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ config, pkgs, ... }: - -{ - services.desktopManager.cosmic.enable = true; -} diff --git a/system/default.nix b/system/default.nix index 1a3827a..f885e18 100644 --- a/system/default.nix +++ b/system/default.nix @@ -1,6 +1,14 @@ { config, pkgs, ... }: { + imports = [ + ../users/till.nix + ]; + + networking.networkmanager.enable = true; + users.mutableUsers = true; + time.timeZone = "Europe/Berlin"; + programs.fish.enable = true; nix = { settings.experimental-features = [ "nix-command" "flakes" ]; @@ -9,22 +17,6 @@ optimise.automatic = true; }; - time.timeZone = "Europe/Berlin"; - - programs.fish.enable = true; - - users.mutableUsers = true; - - users.users.till = { - isNormalUser = true; - description = "Till"; - extraGroups = [ "wheel" ]; - shell = pkgs.fish; - openssh.authorizedKeys.keyFiles = [ - ./ssh/till${"@"}nova.pub - ]; - }; - environment.systemPackages = with pkgs; [ dig.dnsutils file @@ -32,19 +24,20 @@ htop killall neovim + netutils pwgen tree unzip wget ]; - services = { - ntp.enable = true; - openssh.enable = true; - openssh.settings.PasswordAuthentication = false; - openssh.settings.PermitRootLogin = "no"; + services.ntp.enable = true; + + services.openssh = { + enable = true; + settings.PasswordAuthentication = false; + settings.PermitRootLogin = "no"; }; system.stateVersion = "22.11"; - } diff --git a/system/desktop/btrbk.nix b/system/desktop/btrbk.nix new file mode 100644 index 0000000..22b03b3 --- /dev/null +++ b/system/desktop/btrbk.nix @@ -0,0 +1,16 @@ +{ config, ... }: + +{ + services.btrbk.instances.btrbk = { + onCalendar = "hourly"; + settings = { + subvolume = "/home"; + snapshot_preserve = "40d"; + snapshot_preserve_min = "4d"; + snapshot_dir = "/btrbk_snapshots"; + target = "/run/media/till/backup/${config.networking.hostName}"; + target_preserve_min = "no"; + target_preserve = "10d 10w 24m"; + }; + }; +} diff --git a/system/cast.nix b/system/desktop/cast.nix similarity index 100% rename from system/cast.nix rename to system/desktop/cast.nix diff --git a/system/desktop.nix b/system/desktop/default.nix similarity index 85% rename from system/desktop.nix rename to system/desktop/default.nix index 739ab74..a24f2e8 100644 --- a/system/desktop.nix +++ b/system/desktop/default.nix @@ -3,12 +3,9 @@ { imports = [ ./interception-tools.nix - ./secrets.nix + ./btrbk.nix ]; - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - networking.networkmanager = { enable = true; plugins = with pkgs; [ networkmanager-openvpn ]; @@ -20,12 +17,6 @@ LC_PAPER = "de_DE.UTF-8"; }; - users.users.till = { - extraGroups = [ - "networkmanager" - ]; - }; - services.pulseaudio.enable = false; services.pipewire = { diff --git a/system/ergodox.nix b/system/desktop/ergodox-udev.nix similarity index 50% rename from system/ergodox.nix rename to system/desktop/ergodox-udev.nix index bd4e09d..54a8db9 100644 --- a/system/ergodox.nix +++ b/system/desktop/ergodox-udev.nix @@ -1,9 +1,7 @@ -{ config, pkgs, ... }: +{ ... }: { - services.udev = { - extraRules = '' + services.udev.extraRules = '' KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="wheel" - ''; - }; + ''; } diff --git a/system/gnome.nix b/system/desktop/gnome.nix similarity index 81% rename from system/gnome.nix rename to system/desktop/gnome.nix index 565bdff..e1e463a 100644 --- a/system/gnome.nix +++ b/system/desktop/gnome.nix @@ -9,13 +9,13 @@ defaultSession = "gnome"; }; - environment.gnome.excludePackages = (with pkgs; [ + environment.gnome.excludePackages = with pkgs; [ gnome-tour geary yelp gnome-contacts gnome-initial-setup - ]); + ]; environment.systemPackages = with pkgs; [ gnome-sound-recorder @@ -24,12 +24,10 @@ ]; services.gnome.gnome-browser-connector.enable = true; - - services.gnome.gnome-keyring.enable = lib.mkForce false; + # services.gnome.gnome-keyring.enable = lib.mkForce false; programs.kdeconnect = { enable = true; package = lib.mkForce pkgs.gnomeExtensions.gsconnect; }; - } diff --git a/system/interception-tools.nix b/system/desktop/interception-tools.nix similarity index 100% rename from system/interception-tools.nix rename to system/desktop/interception-tools.nix diff --git a/system/media.nix b/system/desktop/media.nix similarity index 100% rename from system/media.nix rename to system/desktop/media.nix diff --git a/system/desktop/remote-desktop.nix b/system/desktop/remote-desktop.nix new file mode 100644 index 0000000..4feb26c --- /dev/null +++ b/system/desktop/remote-desktop.nix @@ -0,0 +1,5 @@ +{ config, pkgs, ... }: + +{ + services.gnome.gnome-remote-desktop.enable = true; +} diff --git a/system/yubikey.nix b/system/desktop/yubikey-pam.nix similarity index 83% rename from system/yubikey.nix rename to system/desktop/yubikey-pam.nix index cbe1417..b7bc143 100644 --- a/system/yubikey.nix +++ b/system/desktop/yubikey-pam.nix @@ -1,7 +1,6 @@ { config, pkgs, ... }: { - services.pcscd.enable = true; environment.systemPackages = with pkgs; [ @@ -20,9 +19,8 @@ # ''; }; - security.pam.services = { - login.u2fAuth = true; - sudo.u2fAuth = true; - }; - + # security.pam.services = { + # login.u2fAuth = true; + # sudo.u2fAuth = true; + # }; } diff --git a/system/distrobox.nix b/system/distrobox.nix deleted file mode 100644 index 2cc4904..0000000 --- a/system/distrobox.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, pkgs, ... }: - -{ - virtualisation.podman = { - enable = true; - dockerCompat = true; - }; - - environment.systemPackages = [ pkgs.distrobox ]; -} diff --git a/system/hardware/arielle.nix b/system/hardware/arielle.nix deleted file mode 100644 index db82c88..0000000 --- a/system/hardware/arielle.nix +++ /dev/null @@ -1,33 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - -{ - imports = - [ (modulesPath + "/profiles/qemu-guest.nix") - ]; - - boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = - { device = "/dev/disk/by-uuid/087544b8-4941-436b-be6c-e32bc3787b12"; - fsType = "ext4"; - }; - - swapDevices = - [ { device = "/dev/disk/by-uuid/9408a2ce-646d-406e-8407-c9bafd0a728c"; } - ]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp1s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; -} diff --git a/system/hardware/ernst.nix b/system/hardware/ernst.nix deleted file mode 100644 index 42947cd..0000000 --- a/system/hardware/ernst.nix +++ /dev/null @@ -1,33 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - -{ - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot.initrd.availableKernelModules = [ "ehci_pci" "ahci" "xhci_pci" "usb_storage" "ums_realtek" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = - { device = "/dev/disk/by-uuid/35ee7723-47bd-49de-b211-73550c14d765"; - fsType = "ext4"; - }; - - swapDevices = [ ]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp5s0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp9s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} diff --git a/system/hardware/romulus.nix b/system/hardware/romulus.nix deleted file mode 100644 index 8307f61..0000000 --- a/system/hardware/romulus.nix +++ /dev/null @@ -1,58 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - -{ - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "usb_storage" "sd_mod" "sdhci_pci" "rtsx_pci_sdmmc" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = - { device = "/dev/disk/by-uuid/d9731b0f-57a1-42ba-b9bd-92e225df5bc2"; - fsType = "btrfs"; - options = [ "subvol=root" "compress=zstd" ]; - }; - - boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/d1bb3d19-d95f-4486-8350-2f3a5b473881"; - - fileSystems."/swap" = - { device = "/dev/disk/by-uuid/d9731b0f-57a1-42ba-b9bd-92e225df5bc2"; - fsType = "btrfs"; - options = [ "subvol=swap" ]; - }; - - fileSystems."/home" = - { device = "/dev/disk/by-uuid/d9731b0f-57a1-42ba-b9bd-92e225df5bc2"; - fsType = "btrfs"; - options = [ "subvol=home" "compress=zstd" ]; - }; - - fileSystems."/nix" = - { device = "/dev/disk/by-uuid/d9731b0f-57a1-42ba-b9bd-92e225df5bc2"; - fsType = "btrfs"; - options = [ "subvol=nix" "noatime" "compress=zstd" ]; - }; - - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/EB36-69BF"; - fsType = "vfat"; - }; - - swapDevices = [ { device = "/swap/swapfile"; } ]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} diff --git a/system/hardware/tron.nix b/system/hardware/tron.nix deleted file mode 100644 index 3e36c00..0000000 --- a/system/hardware/tron.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ config, lib, pkgs, modulesPath, ... }: - -let - subvolume = { - # device = "/dev/disk/by-uuid/6a0d25d4-0253-4467-85cc-ab3e0ef71f54"; - fsType = "btrfs"; - }; -in - -{ - - hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_470; - - boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ]; - - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" "v4l2loopback" ]; - boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; - - boot.initrd.luks.devices."cryptroot" = { - # device = "/dev/disk/by-uuid/eaad533f-8586-4002-9c53-5aecf8e7abd8"; - allowDiscards = true; - }; - - fileSystems."/" = subvolume // { - options = [ "subvol=root" "compress=zstd" "discard=async" ]; - }; - - # the following subvolumes are automatically mounted and won't be snapshotted: - # /home/till/.local/share/Steam - # /home/till/.local/share/Trash - # /home/till/.cache - # /home/till/tmp - # /home/till/.mozilla/firefox/till/storage - # /home/till/.config/Mattermost/Cache - # /home/till/.config/Mattermost/Code\ Cache - - fileSystems."/nix" = subvolume // { - options = [ "subvol=nix" "compress=zstd" "noatime" "discard=async" ]; - }; - - fileSystems."/home" = subvolume // { - options = [ "subvol=home" "compress=zstd" "discard=async" ]; - }; - - fileSystems."/boot" = { - # device = "/dev/disk/by-uuid/7362-C4C4"; - fsType = "vfat"; - }; - - swapDevices = [{ - device = "/swapfile"; - size = 8 * 1045; - }]; - - networking.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - hardware.trackpoint.enable = true; - boot.kernelParams = [ "psmouse.elantech_smbus=0" ]; - -} diff --git a/system/hyprland.nix b/system/hyprland.nix deleted file mode 100644 index af157b3..0000000 --- a/system/hyprland.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.uwsm.enable = true; - - programs.hyprland = { - enable = true; - withUWSM = true; - }; - - programs.waybar.enable = true; - - environment.systemPackages = with pkgs; [ - swaynotificationcenter - tofi - ]; -} diff --git a/system/web-server/mail/default.nix b/system/mail-server/default.nix similarity index 100% rename from system/web-server/mail/default.nix rename to system/mail-server/default.nix diff --git a/system/web-server/mail/dkim.nix b/system/mail-server/dkim.nix similarity index 100% rename from system/web-server/mail/dkim.nix rename to system/mail-server/dkim.nix diff --git a/system/web-server/mail/dovecot.nix b/system/mail-server/dovecot.nix similarity index 100% rename from system/web-server/mail/dovecot.nix rename to system/mail-server/dovecot.nix diff --git a/system/web-server/mail/postfix.nix b/system/mail-server/postfix.nix similarity index 100% rename from system/web-server/mail/postfix.nix rename to system/mail-server/postfix.nix diff --git a/system/web-server/mail/roundcube.nix b/system/mail-server/roundcube.nix similarity index 100% rename from system/web-server/mail/roundcube.nix rename to system/mail-server/roundcube.nix diff --git a/system/plasma.nix b/system/plasma.nix deleted file mode 100644 index f62e344..0000000 --- a/system/plasma.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ config, pkgs, ... }: - -{ - services.desktopManager.plasma6.enable = true; -} diff --git a/system/remote-desktop.nix b/system/remote-desktop.nix deleted file mode 100644 index 43e66c1..0000000 --- a/system/remote-desktop.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ config, pkgs, ... }: - -{ - services.gnome.gnome-remote-desktop.enable = true -} diff --git a/system/secrets.nix b/system/secrets.nix deleted file mode 100644 index 98d5838..0000000 --- a/system/secrets.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, pkgs, ... }: - -{ - - programs.gnupg.agent = { - enable = true; - pinentryPackage = pkgs.pinentry-gnome3; - enableSSHSupport = true; - settings = { - # disable-scdaemon = ""; - }; - }; - -} diff --git a/system/steam.nix b/system/steam.nix deleted file mode 100644 index 781e12e..0000000 --- a/system/steam.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.steam.enable = true; -} diff --git a/system/sway.nix b/system/sway.nix deleted file mode 100644 index 609c87d..0000000 --- a/system/sway.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.sway = { - enable = true; - wrapperFeatures.gtk = true; - }; - - programs.waybar.enable = true; - - services.gnome.gnome-keyring.enable = true; - - environment.systemPackages = with pkgs; [ - grim - slurp - wl-clipboard - swaynotificationcenter - tofi - ]; -} diff --git a/system/web-server/default.nix b/system/web-server/default.nix index 6081eb1..2138020 100644 --- a/system/web-server/default.nix +++ b/system/web-server/default.nix @@ -1,64 +1,16 @@ -{ config, pkgs, ... }: +{ ... }: { - nixpkgs.config.allowUnfree = true; + imports = [ + ./nginx.nix + ./letsencrypt.nix - networking.firewall.allowedTCPPorts = [ 80 443 ]; - - services.nginx = { - enable = true; - recommendedProxySettings = true; - recommendedTlsSettings = true; - - virtualHosts = { - - "${config.networking.domain}" = { - onlySSL = true; - useACMEHost = config.networking.domain; - locations."/" = { - return = "200 'This domain used for e-mail hosting only.'"; - extraConfig = '' - add_header Content-Type text/plain; - ''; - }; - }; - - "${config.networking.fqdn}-80" = { - serverAliases = [ - "*.ktiu.net" - "*.t9e.me" - ]; - locations."/.well-known/acme-challenge" = { - root = "/var/lib/acme/.challenges"; - }; - locations."/" = { - return = "301 https://$host$request_uri"; - }; - }; - - "${config.networking.fqdn}" = { - onlySSL = true; - useACMEHost = config.networking.domain; - locations."/" = { - return = "404"; - }; - }; - - }; - - }; - - security.acme = { - - acceptTerms = true; - defaults.email = "till@ktiu.net"; - - certs."${config.networking.domain}" = { - domain = config.networking.domain; - webroot = "/var/lib/acme/.challenges"; - group = config.services.nginx.group; - extraDomainNames = [ config.networking.fqdn ]; - }; - }; + ./forgejo.nix + ./outline.nix + ./radicale.nix + # ./ksh.nix + ./ksh-map.nix + ./oopsidenfiy.nix + ]; } diff --git a/system/web-server/jenkins.nix b/system/web-server/jenkins.nix deleted file mode 100644 index e9b5e4d..0000000 --- a/system/web-server/jenkins.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, pkgs, ... }: - -{ - services.jenkins = { - enable = true; - port = 7401; - }; - - security.acme.certs."${config.networking.domain}".extraDomainNames = [ - "jenkins.${config.networking.domain}" - ]; - - services.nginx.virtualHosts = { - "jenkins.${config.networking.domain}" = { - onlySSL = true; - useACMEHost = config.networking.domain; - locations."/" = { - proxyPass = "http://127.0.0.1:${toString config.services.jenkins.port}"; - proxyWebsockets = true; - }; - }; - }; -} diff --git a/system/web-server/kein-schlussstrich-hessen.org b/system/web-server/ksh.nix similarity index 98% rename from system/web-server/kein-schlussstrich-hessen.org rename to system/web-server/ksh.nix index 892afb8..a7c182e 100644 --- a/system/web-server/kein-schlussstrich-hessen.org +++ b/system/web-server/ksh.nix @@ -11,7 +11,7 @@ serverAliases = [ "www.kein-schlussstrich-hessen.de" "www.kein-schlussstrich-hessen.org" - ] + ]; globalRedirect = "kein-schlussstrich-hessen.org"; enableACME = true; }; diff --git a/system/web-server/letsencrypt.nix b/system/web-server/letsencrypt.nix new file mode 100644 index 0000000..7e99212 --- /dev/null +++ b/system/web-server/letsencrypt.nix @@ -0,0 +1,29 @@ +{ config, ... }: + +{ + security.acme = { + acceptTerms = true; + defaults.email = "till@ktiu.net"; + certs."${config.networking.domain}" = { + domain = config.networking.domain; + webroot = "/var/lib/acme/.challenges"; + group = config.services.nginx.group; + extraDomainNames = [ config.networking.fqdn ]; + }; + }; + + services.nginx.virtualHosts = { + "${config.networking.fqdn}-80" = { + serverAliases = [ + "*.ktiu.net" + "*.t9e.me" + ]; + locations."/.well-known/acme-challenge" = { + root = "/var/lib/acme/.challenges"; + }; + locations."/" = { + return = "301 https://$host$request_uri"; + }; + }; + }; +} diff --git a/system/web-server/nginx.nix b/system/web-server/nginx.nix new file mode 100644 index 0000000..d891acf --- /dev/null +++ b/system/web-server/nginx.nix @@ -0,0 +1,34 @@ +{ config, ... }: + +{ + networking.firewall.allowedTCPPorts = [ 80 443 ]; + + services.nginx = { + enable = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + + virtualHosts = { + + "${config.networking.domain}" = { + onlySSL = true; + useACMEHost = config.networking.domain; + locations."/" = { + return = "200 'This domain used for e-mail hosting only.'"; + extraConfig = '' + add_header Content-Type text/plain; + ''; + }; + }; + + "${config.networking.fqdn}" = { + onlySSL = true; + useACMEHost = config.networking.domain; + locations."/" = { + return = "404"; + }; + }; + + }; + }; +} diff --git a/system/web-server/outline.nix b/system/web-server/outline.nix index 5840033..f82fa0c 100644 --- a/system/web-server/outline.nix +++ b/system/web-server/outline.nix @@ -1,6 +1,7 @@ { config, pkgs, ... }: { + # imports = [ ./dex.nix ]; # environment.systemPackages = with pkgs; [ # openssl diff --git a/system/xfce.nix b/system/xfce.nix deleted file mode 100644 index 59f9f76..0000000 --- a/system/xfce.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, pkgs, ... }: - -{ - services.xserver.enable = true; - services.xserver.displayManager.lightdm.enable = true; - services.xserver.desktopManager.xfce.enable = true; -} diff --git a/template.nix b/template.nix new file mode 100644 index 0000000..da77699 --- /dev/null +++ b/template.nix @@ -0,0 +1,7 @@ +{ config, pkgs, lib, ... }: + +{ + imports = [ + ]; + +} diff --git a/system/ssh/till@nova.pub b/till@nova.pub similarity index 100% rename from system/ssh/till@nova.pub rename to till@nova.pub diff --git a/users/alt.nix b/users/alt.nix new file mode 100644 index 0000000..94ce7e8 --- /dev/null +++ b/users/alt.nix @@ -0,0 +1,10 @@ +{ config, pkgs, ... }: + +{ + users.users.alt = { + isNormalUser = true; + description = "Alt"; + extraGroups = [ "networkmanager" ]; + shell = pkgs.fish; + }; +} diff --git a/system/guest.nix b/users/guest.nix similarity index 58% rename from system/guest.nix rename to users/guest.nix index 4d4e88a..a3485b6 100644 --- a/system/guest.nix +++ b/users/guest.nix @@ -2,16 +2,12 @@ { users.users.guest = { - home = "/home/guest"; isNormalUser = true; - group = "users"; description = "Guest"; - extraGroups = [ - "networkmanager" - ]; + extraGroups = [ "networkmanager" ]; shell = pkgs.fish; openssh.authorizedKeys.keyFiles = [ - ./ssh/till${"@"}nova.pub + ../../till${"@"}nova.pub ]; }; } diff --git a/users/till.nix b/users/till.nix new file mode 100644 index 0000000..7f94dad --- /dev/null +++ b/users/till.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: + +{ + users.users.till = { + isNormalUser = true; + description = "Till"; + extraGroups = [ + "wheel" + "networkmanager" + ]; + shell = pkgs.fish; + openssh.authorizedKeys.keyFiles = [ + ../../till${"@"}nova.pub + ]; + }; +} From 50d6a79e31d8c58fca77d0711c43110b993ed5fc Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 22 Jan 2026 16:44:45 +0100 Subject: [PATCH 02/44] it works! --- flake.lock | 64 +++-------- flake.nix | 104 +++++++++++------- home/cli-office/default.nix | 48 ++++++++ home/{nvim => cli-office}/khard-dump.nix | 0 home/firefox.nix | 11 +- home/gpg.nix | 6 +- home/nvim/default.nix | 14 --- home/r.nix | 133 ++++++++--------------- home/slim-desktop.nix | 47 +------- home/ssh.nix | 4 +- hosts/nova/default.nix | 18 +-- system/default.nix | 2 +- system/desktop/steam.nix | 5 + users/guest.nix | 2 +- users/till.nix | 2 +- 15 files changed, 204 insertions(+), 256 deletions(-) create mode 100644 home/cli-office/default.nix rename home/{nvim => cli-office}/khard-dump.nix (100%) create mode 100644 system/desktop/steam.nix diff --git a/flake.lock b/flake.lock index c213931..97c4a34 100644 --- a/flake.lock +++ b/flake.lock @@ -1,24 +1,25 @@ { "nodes": { - "flake-parts": { + "firefox-addons": { "inputs": { - "nixpkgs-lib": [ - "nur", + "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", - "type": "github" + "dir": "pkgs/firefox-addons", + "lastModified": 1769054619, + "narHash": "sha256-LCc0gbSgjehdy41Gi1H5WNxEuW9PtRHFVaPXoFzslQU=", + "owner": "rycee", + "repo": "nur-expressions", + "rev": "6509620630f68dc02ac3e99f15a67760778444ff", + "type": "gitlab" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" + "dir": "pkgs/firefox-addons", + "owner": "rycee", + "repo": "nur-expressions", + "type": "gitlab" } }, "home-manager": { @@ -58,46 +59,11 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1768127708, - "narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nur": { - "inputs": { - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_2" - }, - "locked": { - "lastModified": 1768226540, - "narHash": "sha256-7ITnaEIsloaaOpqxIEYjUvodWz3VcT0ERi0NiZx7U/g=", - "owner": "nix-community", - "repo": "nur", - "rev": "b87f89e9dc56296f29fb3caa93f7fb6058f8c5f3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nur", - "type": "github" - } - }, "root": { "inputs": { + "firefox-addons": "firefox-addons", "home-manager": "home-manager", - "nixpkgs": "nixpkgs", - "nur": "nur" + "nixpkgs": "nixpkgs" } } }, diff --git a/flake.nix b/flake.nix index 0fe13d8..c0cba96 100644 --- a/flake.nix +++ b/flake.nix @@ -4,9 +4,16 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; - home-manager.url = "github:nix-community/home-manager/release-25.11"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; - nur.url = "github:nix-community/nur"; + + home-manager = { + url = "github:nix-community/home-manager/release-25.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + firefox-addons = { + url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; @@ -16,7 +23,9 @@ arielle = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; - modules = [ ./hosts/arielle ]; + modules = [ + ./hosts/arielle + ]; }; homer = nixpkgs.lib.nixosSystem { @@ -31,47 +40,58 @@ nova = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; - modules = [ ./hosts/nova ]; + modules = [ ./hosts/nova + home-manager.nixosModules.home-manager { + home-manager.extraSpecialArgs = { inherit inputs; }; + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.till = { + imports = [ + ./home + ]; + }; + } + ]; }; }; - homeConfigurations = { - till = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default; - extraSpecialArgs = { inherit inputs; }; - modules = [ - ./home - ]; - }; - "till@romulus" = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default; - extraSpecialArgs = { inherit inputs; }; - modules = [ - ./home/slim-desktop.nix - ]; - }; - "till@arielle" = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux; - extraSpecialArgs = { inherit inputs; }; - modules = [ - ./home/on-server.nix - ]; - }; - alt = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default; - extraSpecialArgs = { inherit inputs; }; - modules = [ - ./home/alt.nix - ]; - }; - guest = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default; - extraSpecialArgs = { inherit inputs; }; - modules = [ - ./home/guest.nix - ]; - }; - }; + # homeConfigurations = { + # till = home-manager.lib.homeManagerConfiguration { + # pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default; + # extraSpecialArgs = { inherit inputs; }; + # modules = [ + # ./home + # ]; + # }; + # "till@romulus" = home-manager.lib.homeManagerConfiguration { + # pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default; + # extraSpecialArgs = { inherit inputs; }; + # modules = [ + # ./home/slim-desktop.nix + # ]; + # }; + # "till@arielle" = home-manager.lib.homeManagerConfiguration { + # pkgs = nixpkgs.legacyPackages.x86_64-linux; + # extraSpecialArgs = { inherit inputs; }; + # modules = [ + # ./home/on-server.nix + # ]; + # }; + # alt = home-manager.lib.homeManagerConfiguration { + # pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default; + # extraSpecialArgs = { inherit inputs; }; + # modules = [ + # ./home/alt.nix + # ]; + # }; + # guest = home-manager.lib.homeManagerConfiguration { + # pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default; + # extraSpecialArgs = { inherit inputs; }; + # modules = [ + # ./home/guest.nix + # ]; + # }; + # }; }; } diff --git a/home/cli-office/default.nix b/home/cli-office/default.nix new file mode 100644 index 0000000..d2ce206 --- /dev/null +++ b/home/cli-office/default.nix @@ -0,0 +1,48 @@ +{ config, pkgs, lib, ... }: + +{ + imports = [ + ./khard-dump.nix + ]; + + home.packages = with pkgs; [ + castget + drawing + feh + ghostscript + ghostscript + hunspell + hunspellDicts.de_DE + hunspellDicts.en_US + hunspellDicts.th_TH + hyphen + hyphenDicts.de_DE + hyphenDicts.en_US + imagemagick + imagemagick + khal + khard + msmtp + notmuch + openssl + pandoc + pdftk + ripmime + taskopen + urlscan + w3m + zathura + ]; + + programs.neovim.plugins = with pkgs.vimPlugins; [ lazy-nvim ]; + + xdg.configFile."nvim/lua/woof-vim.lua".text = '' + return { + "woof-vim", + name = "woof-vim", + dev = { + path = "~/devel" + } + } + ''; +} diff --git a/home/nvim/khard-dump.nix b/home/cli-office/khard-dump.nix similarity index 100% rename from home/nvim/khard-dump.nix rename to home/cli-office/khard-dump.nix diff --git a/home/firefox.nix b/home/firefox.nix index f51e776..cd8962e 100644 --- a/home/firefox.nix +++ b/home/firefox.nix @@ -1,6 +1,7 @@ -{ config, pkgs, osConfig, ... }: +{ config, pkgs, inputs, osConfig, ... }: { + programs.firefox = { enable = true; policies = { @@ -33,14 +34,12 @@ ${config.home.username} = { name = config.home.username; isDefault = true; - extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ - adaptive-tab-bar-colour + extensions.packages = with inputs.firefox-addons.packages.${pkgs.system}; [ auto-tab-discard keepassxc-browser passff - tampermonkey + # tampermonkey ublock-origin - vimium web-archives zotero-connector ]; @@ -66,7 +65,7 @@ definedAliases = [ "@nw" ]; }; "NixOS Options" = { - urls = [{ template = "https://search.nixos.org/options?query={searchTerms}"; }]; + urls = [{ template = "https://search.nixos.org/options?channel=${osConfig.system.nixos.release}&query={searchTerms}"; }]; icon = "https://nixos.org/favicon.png"; updateInterval = 24 * 60 * 60 * 1000; definedAliases = [ "@no" ]; diff --git a/home/gpg.nix b/home/gpg.nix index 356cf21..fc8c0a4 100644 --- a/home/gpg.nix +++ b/home/gpg.nix @@ -1,10 +1,10 @@ { config, pkgs, ... }: { - programs.gnupg.agent = { + services.gpg-agent = { enable = true; - pinentryPackage = pkgs.pinentry-gnome3; - enableSSHSupport = true; + pinentry.package = pkgs.pinentry-gnome3; + enableSshSupport = true; }; programs.gpg.settings = { diff --git a/home/nvim/default.nix b/home/nvim/default.nix index 7421dd5..18dba09 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -1,8 +1,6 @@ { config, pkgs, ... }: { - imports = [ ./khard-dump.nix ]; - home.packages = with pkgs; [ astro-language-server marksman @@ -18,19 +16,7 @@ extraConfig = builtins.readFile ./config.vim; plugins = with pkgs.vimPlugins; - let - woof = pkgs.vimUtils.buildVimPlugin { - name = "woof.vim"; - src = builtins.fetchGit { - url = "ssh://git@shorbut.ktiu.net/home/git/woof.vim/"; - ref = "main"; - rev = "c29eb50e30ed75cf9ecdcfff198454fcc2c16922"; - }; - }; - in [ - woof - cmp-nvim-lsp cmp-buffer cmp-emoji diff --git a/home/r.nix b/home/r.nix index 91de769..7eb64f1 100644 --- a/home/r.nix +++ b/home/r.nix @@ -1,91 +1,54 @@ { pkgs, ... }: +let + customPackages = with pkgs.rPackages; [ + catmaply + clipr + DAAG + devtools + dplyr + eurostat + extrafont + ggplot2 + ggridges + jsonlite + kableExtra + knitr + languageserver + magrittr + mapproj + openxlsx + osmdata + plotly + progress + purrr + qrcode + RColorBrewer + readODS + revealjs + rlist + rmarkdown + rnaturalearth + rnaturalearthdata + roxygen2 + rvest + sf + stringr + testthat + tidyr + tidyverse + tmap + xlsx + yaml + ]; + + R-packed = pkgs.rWrapper.override { packages = customPackages; }; + RStudio-packed = pkgs.rstudioWrapper.override { packages = customPackages; }; + +in + { - home.packages = with pkgs; - let - customPackages = with rPackages; let - lectuR = pkgs.rPackages.buildRPackage { - name = "lectuR"; - src = builtins.fetchGit { - url = "ssh://git@shorbut.ktiu.net/home/git/lectuR/"; - ref = "main"; - rev = "0aafe4eb057a7ec12b8d6ac40ce0bfc8dab80c2b"; - }; - propagatedBuildInputs = [ purrr magrittr knitr kableExtra tidyr stringr yaml ]; - nativeBuildInputs = [ purrr magrittr knitr kableExtra tidyr stringr yaml ]; - }; - publishR = pkgs.rPackages.buildRPackage { - name = "publishR"; - src = builtins.fetchGit { - url = "ssh://git@shorbut.ktiu.net/home/git/publishR/"; - ref = "main"; - rev = "ee137a66ca3b713205ac44e5165292e7ad6388b6"; - }; - propagatedBuildInputs = []; - nativeBuildInputs = []; - }; - goethR = pkgs.rPackages.buildRPackage { - name = "goethR"; - src = builtins.fetchGit { - url = "ssh://git@arielle.ktiu.net/home/git/goethR/"; - ref = "main"; - rev = "e3dbfd319f01adfa4a1a1a8abc274014e6498aae"; - }; - propagatedBuildInputs = []; - nativeBuildInputs = []; - }; - in [ - bookdown - catmaply - clipr - DAAG - devtools - dplyr - eurostat - extrafont - ggplot2 - ggridges - jsonlite - kableExtra - knitr - languageserver - magrittr - mapproj - # networkD3 - openxlsx - osmdata - plotly - progress - purrr - qrcode - RColorBrewer - readODS - revealjs - # restatis - rlist - rmarkdown - rnaturalearth - rnaturalearthdata - # roxygen2 - # RSQLite - rvest - sf - stringr - # swirl - # testthat - tidyr - tidyverse - tmap - xlsx - yaml - lectuR - publishR - # goethR - # ggtree - ]; - R-packed = rWrapper.override { packages = customPackages; }; - RStudio-packed = rstudioWrapper.override { packages = customPackages; }; - in [ + home.packages = with pkgs; [ R-packed RStudio-packed ]; diff --git a/home/slim-desktop.nix b/home/slim-desktop.nix index f1cacda..d24866c 100644 --- a/home/slim-desktop.nix +++ b/home/slim-desktop.nix @@ -12,50 +12,11 @@ home.packages = with pkgs; [ aichat - usbutils - wl-clipboard - - # email - msmtp - notmuch - w3m - openssl - # gnupg - urlscan - ripmime - - # office - khal - khard - taskopen - zathura - pdftk - imagemagick - feh - ghostscript - drawing - castget - - # publishing - hunspell - hunspellDicts.de_DE - hunspellDicts.en_US - hunspellDicts.th_TH - hyphen - hyphenDicts.de_DE - hyphenDicts.en_US - pandoc - imagemagick - ghostscript - - # media - rhythmbox - vlc appimage-run - - # secrets - # libsecret keepassxc + usbutils + vlc + wl-clipboard yubioath-flutter ]; @@ -66,7 +27,7 @@ ./calendars.nix ./foot.nix ./mail - # ./openconnect.nix + ./cli-office ]; programs.taskwarrior = { diff --git a/home/ssh.nix b/home/ssh.nix index bb4e147..6e5a1cf 100644 --- a/home/ssh.nix +++ b/home/ssh.nix @@ -3,8 +3,8 @@ let certs = { - uni = "${config.home.homeDirectory}/.ssh/tstraube@${osConfig.networking.hostname}"; - personal = "${config.home.homeDirectory}/.ssh/till@${osConfig.networking.hostname}"; + uni = "${config.home.homeDirectory}/.ssh/tstraube@${osConfig.networking.hostName}"; + personal = "${config.home.homeDirectory}/.ssh/till@${osConfig.networking.hostName}"; }; in diff --git a/hosts/nova/default.nix b/hosts/nova/default.nix index 1e653f3..0641e06 100644 --- a/hosts/nova/default.nix +++ b/hosts/nova/default.nix @@ -5,14 +5,14 @@ imports = [ ./hardware.nix - ../users/alt.nix - ../users/guest.nix - ../system - ../system/desktop - ../system/desktop/gnome.nix - # ../system/desktop/cast.nix - ../system/desktop/ergodox.nix - ../system/desktop/steam.nix - ../system/desktop/yubikey.nix + ../../users/alt.nix + ../../users/guest.nix + ../../system + ../../system/desktop + ../../system/desktop/gnome.nix + # ../../system/desktop/cast.nix + ../../system/desktop/ergodox-udev.nix + ../../system/desktop/steam.nix + ../../system/desktop/yubikey-pam.nix ]; } diff --git a/system/default.nix b/system/default.nix index f885e18..820d30f 100644 --- a/system/default.nix +++ b/system/default.nix @@ -24,7 +24,7 @@ htop killall neovim - netutils + nettools pwgen tree unzip diff --git a/system/desktop/steam.nix b/system/desktop/steam.nix new file mode 100644 index 0000000..781e12e --- /dev/null +++ b/system/desktop/steam.nix @@ -0,0 +1,5 @@ +{ config, pkgs, ... }: + +{ + programs.steam.enable = true; +} diff --git a/users/guest.nix b/users/guest.nix index a3485b6..04f070e 100644 --- a/users/guest.nix +++ b/users/guest.nix @@ -7,7 +7,7 @@ extraGroups = [ "networkmanager" ]; shell = pkgs.fish; openssh.authorizedKeys.keyFiles = [ - ../../till${"@"}nova.pub + ../till${"@"}nova.pub ]; }; } diff --git a/users/till.nix b/users/till.nix index 7f94dad..d32fcd9 100644 --- a/users/till.nix +++ b/users/till.nix @@ -10,7 +10,7 @@ ]; shell = pkgs.fish; openssh.authorizedKeys.keyFiles = [ - ../../till${"@"}nova.pub + ../till${"@"}nova.pub ]; }; } From a1e9bb892abc191707026737530a13336c32799c Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 22 Jan 2026 17:00:18 +0100 Subject: [PATCH 03/44] no warnings --- flake.nix | 11 ++++++++--- home/minimal.nix | 12 ++++++------ system/desktop/default.nix | 2 +- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/flake.nix b/flake.nix index c0cba96..34076bd 100644 --- a/flake.nix +++ b/flake.nix @@ -38,13 +38,18 @@ modules = [ ./hosts/mila ]; }; - nova = nixpkgs.lib.nixosSystem { + nova = + nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; - modules = [ ./hosts/nova + modules = [ + ./hosts/nova + { + nixpkgs.config.allowUnfree = true; + } home-manager.nixosModules.home-manager { home-manager.extraSpecialArgs = { inherit inputs; }; home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; + # home-manager.useUserPackages = true; home-manager.users.till = { imports = [ ./home diff --git a/home/minimal.nix b/home/minimal.nix index 5f12b1c..926ef50 100644 --- a/home/minimal.nix +++ b/home/minimal.nix @@ -5,12 +5,12 @@ home.homeDirectory = "/home/till"; home.stateVersion = "22.11"; - nixpkgs = { - config = { - allowUnfree = true; - allowUnfreePredicate = (_: true); - }; - }; + # nixpkgs = { + # config = { + # allowUnfree = true; + # allowUnfreePredicate = (_: true); + # }; + # }; programs.home-manager.enable = true; diff --git a/system/desktop/default.nix b/system/desktop/default.nix index a24f2e8..ba5d089 100644 --- a/system/desktop/default.nix +++ b/system/desktop/default.nix @@ -26,7 +26,7 @@ pulse.enable = true; }; - nixpkgs.config.allowUnfree = true; + # nixpkgs.config.allowUnfree = true; environment.sessionVariables = { XDG_CONFIG_HOME = "$HOME/.config"; From 8d34db82c8d0c7080d52a1979b321ca618c98c73 Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 22 Jan 2026 17:07:22 +0100 Subject: [PATCH 04/44] looking good --- flake.nix | 21 +++++++++++---------- home/default.nix | 21 ++++++++++----------- home/firefox.nix | 2 +- home/gnome/default.nix | 1 - 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/flake.nix b/flake.nix index 34076bd..e9c7519 100644 --- a/flake.nix +++ b/flake.nix @@ -35,11 +35,12 @@ mila = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; - modules = [ ./hosts/mila ]; + modules = [ + ./hosts/mila + ]; }; - nova = - nixpkgs.lib.nixosSystem { + nova = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ ./hosts/nova @@ -47,13 +48,13 @@ nixpkgs.config.allowUnfree = true; } home-manager.nixosModules.home-manager { - home-manager.extraSpecialArgs = { inherit inputs; }; - home-manager.useGlobalPkgs = true; - # home-manager.useUserPackages = true; - home-manager.users.till = { - imports = [ - ./home - ]; + home-manager = { + extraSpecialArgs = { inherit inputs; }; + useGlobalPkgs = true; + useUserPackages = true; + users.till = { + imports = [ ./home ]; + }; }; } ]; diff --git a/home/default.nix b/home/default.nix index 324a039..855c90a 100644 --- a/home/default.nix +++ b/home/default.nix @@ -2,6 +2,16 @@ { + imports = [ + ./slim-desktop.nix + ./gnome + ./firefox.nix + ./librewolf.nix + ./tex.nix + ./fonts.nix + ./r.nix + ]; + home.packages = with pkgs; [ # messenger @@ -42,17 +52,6 @@ ]; - imports = [ - ./slim-desktop.nix - ./gnome - ./firefox.nix - ./librewolf.nix - ./tex.nix - ./fonts.nix - ./r.nix - ]; - programs.obs-studio.enable = true; - # programs.freetube.enable = true; } diff --git a/home/firefox.nix b/home/firefox.nix index cd8962e..9d79fe2 100644 --- a/home/firefox.nix +++ b/home/firefox.nix @@ -34,7 +34,7 @@ ${config.home.username} = { name = config.home.username; isDefault = true; - extensions.packages = with inputs.firefox-addons.packages.${pkgs.system}; [ + extensions.packages = with inputs.firefox-addons.packages.${pkgs.stdenv.hostPlatform.system}; [ auto-tab-discard keepassxc-browser passff diff --git a/home/gnome/default.nix b/home/gnome/default.nix index 8336e51..e1f5fef 100644 --- a/home/gnome/default.nix +++ b/home/gnome/default.nix @@ -12,7 +12,6 @@ home.packages = with pkgs.gnomeExtensions; [ run-or-raise removable-drive-menu - # system-monitor ]; dconf.settings = { From 120d26b0e4da43f931606091625376d7d12463d2 Mon Sep 17 00:00:00 2001 From: Till Date: Fri, 23 Jan 2026 01:31:43 +0100 Subject: [PATCH 05/44] preserving hardware-configuration --- flake.nix | 68 ++++++++++----------------- home/alt.nix | 19 +------- home/cli-office/default.nix | 21 +-------- home/cli-office/tasks.nix | 22 +++++++++ home/default.nix | 13 ++--- home/devel.nix | 4 ++ home/mail/default.nix | 11 +++++ home/minimal.nix | 25 +--------- home/on-server.nix | 7 +-- home/slim-desktop.nix | 56 ++++++++++------------ hosts/nova/default.nix | 40 +++++++++++++++- hosts/nova/hardware-configuration.nix | 46 ++++++++++++++++++ hosts/nova/hardware.nix | 56 ---------------------- 13 files changed, 181 insertions(+), 207 deletions(-) create mode 100644 home/cli-office/tasks.nix create mode 100644 hosts/nova/hardware-configuration.nix delete mode 100644 hosts/nova/hardware.nix diff --git a/flake.nix b/flake.nix index e9c7519..22a9c7d 100644 --- a/flake.nix +++ b/flake.nix @@ -43,61 +43,41 @@ nova = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ + ./hosts/nova - { - nixpkgs.config.allowUnfree = true; - } + home-manager.nixosModules.home-manager { home-manager = { extraSpecialArgs = { inherit inputs; }; useGlobalPkgs = true; useUserPackages = true; - users.till = { - imports = [ ./home ]; + users = { + + till = { + imports = [ + ./home + ./users/till-home.nix + ]; + }; + + alt = { imports = [ ./home/alt.nix ]; }; + guest = { imports = [ ./home/guest.nix ]; }; }; }; } + + { + nixpkgs.config.allowUnfreePredicate = pkg: + builtins.elem (nixpkgs.lib.getName pkg) [ + "corefonts" + "textfonts" + "keymapp" + "steam" + "steam-unwrapped" + ]; + } ]; }; - }; - - # homeConfigurations = { - # till = home-manager.lib.homeManagerConfiguration { - # pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default; - # extraSpecialArgs = { inherit inputs; }; - # modules = [ - # ./home - # ]; - # }; - # "till@romulus" = home-manager.lib.homeManagerConfiguration { - # pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default; - # extraSpecialArgs = { inherit inputs; }; - # modules = [ - # ./home/slim-desktop.nix - # ]; - # }; - # "till@arielle" = home-manager.lib.homeManagerConfiguration { - # pkgs = nixpkgs.legacyPackages.x86_64-linux; - # extraSpecialArgs = { inherit inputs; }; - # modules = [ - # ./home/on-server.nix - # ]; - # }; - # alt = home-manager.lib.homeManagerConfiguration { - # pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default; - # extraSpecialArgs = { inherit inputs; }; - # modules = [ - # ./home/alt.nix - # ]; - # }; - # guest = home-manager.lib.homeManagerConfiguration { - # pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default; - # extraSpecialArgs = { inherit inputs; }; - # modules = [ - # ./home/guest.nix - # ]; - # }; - # }; }; } diff --git a/home/alt.nix b/home/alt.nix index f0179e4..0225f44 100644 --- a/home/alt.nix +++ b/home/alt.nix @@ -1,19 +1,6 @@ { config, pkgs, inputs, lib, ... }: { - home.username = "alt"; - home.homeDirectory = "/home/alt"; - home.stateVersion = "22.11"; - - nixpkgs = { - config = { - allowUnfree = true; - allowUnfreePredicate = (_: true); - }; - }; - - programs.home-manager.enable = true; - xdg.userDirs = { enable = true; createDirectories = true; @@ -25,10 +12,6 @@ templates = "${config.xdg.dataHome}/templates"; }; - home.file.".npmrc".text = '' - prefix = ${config.xdg.dataHome}/npm/packages - ''; - home.packages = with pkgs; [ fzf silver-searcher @@ -37,7 +20,6 @@ wl-clipboard qbittorrent vlc - # mullvad-vpn ffmpeg libnotify ]; @@ -50,6 +32,7 @@ ./vifm ./tmux ./nvim + ./minimal.nix ]; programs.nix-index = { diff --git a/home/cli-office/default.nix b/home/cli-office/default.nix index d2ce206..9100fe2 100644 --- a/home/cli-office/default.nix +++ b/home/cli-office/default.nix @@ -1,15 +1,13 @@ -{ config, pkgs, lib, ... }: +{ pkgs, ... }: { imports = [ ./khard-dump.nix + ./tasks.nix ]; home.packages = with pkgs; [ castget - drawing - feh - ghostscript ghostscript hunspell hunspellDicts.de_DE @@ -19,7 +17,6 @@ hyphenDicts.de_DE hyphenDicts.en_US imagemagick - imagemagick khal khard msmtp @@ -28,21 +25,7 @@ pandoc pdftk ripmime - taskopen urlscan w3m - zathura ]; - - programs.neovim.plugins = with pkgs.vimPlugins; [ lazy-nvim ]; - - xdg.configFile."nvim/lua/woof-vim.lua".text = '' - return { - "woof-vim", - name = "woof-vim", - dev = { - path = "~/devel" - } - } - ''; } diff --git a/home/cli-office/tasks.nix b/home/cli-office/tasks.nix new file mode 100644 index 0000000..76189c3 --- /dev/null +++ b/home/cli-office/tasks.nix @@ -0,0 +1,22 @@ +{ config, pkgs, lib, ... }: + +{ + home.packages = with pkgs; [ + taskopen + ]; + + programs.taskwarrior = { + enable = true; + package = pkgs.taskwarrior3; + dataLocation = "${config.xdg.dataHome}/taskwarrior/tasks"; + colorTheme = "light-256"; + config = { + report.list.columns = ["id" "depends.indicator" "priority" "project" "recur.indicator" "scheduled.countdown" "due" "until.age" "status.short" "description.count" "tags"]; + report.list.labels= ["ID" "D" "Prio" "Proj" "R" "Scheduled" "Due" "Until" "S" "Description" "Tags"]; + }; + extraConfig = " + hooks.location=${config.xdg.dataHome}/taskwarrior/hooks + verbose=affected,context,edit,label,header,new-id,project,special,sync,recur + "; + }; +} diff --git a/home/default.nix b/home/default.nix index 855c90a..3d1df82 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,15 +1,17 @@ -{ config, pkgs, inputs, lib, ... }: +{ pkgs, ... }: { + home.username = "till"; + home.homeDirectory = "/home/till"; + imports = [ ./slim-desktop.nix - ./gnome - ./firefox.nix - ./librewolf.nix - ./tex.nix + ./fonts.nix + ./gnome ./r.nix + ./tex.nix ]; home.packages = with pkgs; [ @@ -53,5 +55,4 @@ ]; programs.obs-studio.enable = true; - } diff --git a/home/devel.nix b/home/devel.nix index 658d388..ba0cdca 100644 --- a/home/devel.nix +++ b/home/devel.nix @@ -1,6 +1,10 @@ { config, pkgs, inputs, lib, ... }: { + home.file.".npmrc".text = '' + prefix = ${config.xdg.dataHome}/npm/packages + ''; + home.packages = with pkgs; [ bundler bundix diff --git a/home/mail/default.nix b/home/mail/default.nix index db101f8..0335383 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -228,6 +228,17 @@ passwordCommand = "pass other/ksh_systemli"; }; + programs.neovim.plugins = with pkgs.vimPlugins; [ lazy-nvim ]; + + xdg.configFile."nvim/lua/woof-vim.lua".text = '' + return { + "woof-vim", + name = "woof-vim", + dev = { + path = "~/devel" + } + } + ''; }; }; } diff --git a/home/minimal.nix b/home/minimal.nix index 926ef50..b23d755 100644 --- a/home/minimal.nix +++ b/home/minimal.nix @@ -1,32 +1,8 @@ { config, pkgs, inputs, lib, ... }: { - home.username = "till"; - home.homeDirectory = "/home/till"; - home.stateVersion = "22.11"; - - # nixpkgs = { - # config = { - # allowUnfree = true; - # allowUnfreePredicate = (_: true); - # }; - # }; - programs.home-manager.enable = true; - xdg.userDirs = { - enable = true; - - desktop = "${config.home.homeDirectory}/desktop"; - documents = "${config.home.homeDirectory}/misc"; - download = "${config.home.homeDirectory}/tmp"; - music = "${config.home.homeDirectory}/media/music"; - pictures = "${config.home.homeDirectory}/media/img"; - publicShare = "${config.home.homeDirectory}/box"; - templates = "${config.xdg.dataHome}/templates"; - videos = "${config.home.homeDirectory}/media/vid"; - }; - home.packages = with pkgs; [ dust fzf @@ -75,4 +51,5 @@ settings.styles.theme = "default-light"; }; + home.stateVersion = "22.11"; } diff --git a/home/on-server.nix b/home/on-server.nix index a951b8a..68c51f6 100644 --- a/home/on-server.nix +++ b/home/on-server.nix @@ -1,13 +1,8 @@ -{ config, pkgs, inputs, lib, ... }: +{ ... }: { - home.file.".npmrc".text = '' - prefix = ${config.xdg.dataHome}/npm/packages - ''; - imports = [ ./minimal.nix ./devel.nix ]; - } diff --git a/home/slim-desktop.nix b/home/slim-desktop.nix index d24866c..1da6a7b 100644 --- a/home/slim-desktop.nix +++ b/home/slim-desktop.nix @@ -1,53 +1,45 @@ { config, pkgs, inputs, lib, ... }: { - xdg.userDirs.createDirectories = true; + imports = [ + ./minimal.nix - home.file.".npmrc".text = '' - prefix = ${config.xdg.dataHome}/npm/packages - ''; - - xdg.configFile."castget/castget.conf".source = ./castget/castget.conf; + ./calendars.nix + ./cli-office + ./devel.nix + ./firefox.nix + ./foot.nix + ./mail + ]; home.packages = with pkgs; [ - aichat appimage-run + drawing + feh keepassxc usbutils vlc wl-clipboard yubioath-flutter - + zathura ]; - imports = [ - ./minimal.nix - ./devel.nix - ./calendars.nix - ./foot.nix - ./mail - ./cli-office - ]; - - programs.taskwarrior = { - + xdg.userDirs = { enable = true; - package = pkgs.taskwarrior3; - - dataLocation = "${config.xdg.dataHome}/taskwarrior/tasks"; - - colorTheme = "light-256"; - config = { - report.list.columns = ["id" "depends.indicator" "priority" "project" "recur.indicator" "scheduled.countdown" "due" "until.age" "status.short" "description.count" "tags"]; - report.list.labels= ["ID" "D" "Prio" "Proj" "R" "Scheduled" "Due" "Until" "S" "Description" "Tags"]; - }; - extraConfig = " - hooks.location=${config.xdg.dataHome}/taskwarrior/hooks - verbose=affected,context,edit,label,header,new-id,project,special,sync,recur - "; + createDirectories = true; + desktop = "${config.home.homeDirectory}/desktop"; + documents = "${config.home.homeDirectory}/misc"; + download = "${config.home.homeDirectory}/tmp"; + music = "${config.home.homeDirectory}/media/music"; + pictures = "${config.home.homeDirectory}/media/img"; + publicShare = "${config.home.homeDirectory}/box"; + templates = "${config.xdg.dataHome}/templates"; + videos = "${config.home.homeDirectory}/media/vid"; }; + xdg.configFile."castget/castget.conf".source = ./castget/castget.conf; + services.syncthing.enable = true; } diff --git a/hosts/nova/default.nix b/hosts/nova/default.nix index 0641e06..9757a76 100644 --- a/hosts/nova/default.nix +++ b/hosts/nova/default.nix @@ -1,10 +1,10 @@ -{ config, pkgs, ... }: +{ config, lib, ... }: { networking.hostName = "nova"; imports = [ - ./hardware.nix + ./hardware-configuration.nix ../../users/alt.nix ../../users/guest.nix ../../system @@ -15,4 +15,40 @@ ../../system/desktop/steam.nix ../../system/desktop/yubikey-pam.nix ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.kernelModules = [ "v4l2loopback" ]; + boot.kernelParams = [ "psmouse.elantech_smbus=0" ]; + boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; + + boot.initrd.luks.devices."cryptroot".allowDiscards = true; + + fileSystems."/".options = [ + "compress=zstd" + "discard=async" + ]; + + fileSystems."/nix".options = [ + "compress=zstd" + "noatime" + "discard=async" + ]; + + fileSystems."/home".options = [ + "compress=zstd" + "discard=async" + ]; + + swapDevices = [ + { + device = "/swapfile"; + size = 8 * 1045; + } + ]; + + networking.useDHCP = lib.mkDefault true; + powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand"; + hardware.trackpoint.enable = true; + } diff --git a/hosts/nova/hardware-configuration.nix b/hosts/nova/hardware-configuration.nix new file mode 100644 index 0000000..d79482f --- /dev/null +++ b/hosts/nova/hardware-configuration.nix @@ -0,0 +1,46 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/mapper/cryptroot"; + fsType = "btrfs"; + options = [ "subvol=root" ]; + }; + + boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/eaad533f-8586-4002-9c53-5aecf8e7abd8"; + + fileSystems."/nix" = + { device = "/dev/mapper/cryptroot"; + fsType = "btrfs"; + options = [ "subvol=nix" ]; + }; + + fileSystems."/home" = + { device = "/dev/mapper/cryptroot"; + fsType = "btrfs"; + options = [ "subvol=home" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/7362-C4C4"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + swapDevices = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/nova/hardware.nix b/hosts/nova/hardware.nix deleted file mode 100644 index a23e271..0000000 --- a/hosts/nova/hardware.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ config, lib, pkgs, modulesPath, ... }: - -let - subvolume = { - device = "/dev/disk/by-uuid/6a0d25d4-0253-4467-85cc-ab3e0ef71f54"; - fsType = "btrfs"; - }; -in - -{ - imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - - boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" "v4l2loopback" ]; - boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; - - boot.initrd.luks.devices."cryptroot" = { - device = "/dev/disk/by-uuid/eaad533f-8586-4002-9c53-5aecf8e7abd8"; - allowDiscards = true; - }; - - fileSystems."/" = subvolume // { - options = [ "subvol=root" "compress=zstd" "discard=async" ]; - }; - - fileSystems."/nix" = subvolume // { - options = [ "subvol=nix" "compress=zstd" "noatime" "discard=async" ]; - }; - - fileSystems."/home" = subvolume // { - options = [ "subvol=home" "compress=zstd" "discard=async" ]; - }; - - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/7362-C4C4"; - fsType = "vfat"; - }; - - swapDevices = [{ - device = "/swapfile"; - size = 8 * 1045; - }]; - - networking.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - hardware.trackpoint.enable = true; - boot.kernelParams = [ "psmouse.elantech_smbus=0" ]; - -} From 415e3c1caf77a4d7b6e74307dd1c106f049bd0ff Mon Sep 17 00:00:00 2001 From: Till Date: Fri, 23 Jan 2026 01:32:06 +0100 Subject: [PATCH 06/44] risky business --- flake.nix | 5 +- home/default.nix | 1 - home/gnome/default.nix | 2 - home/gpg.nix | 35 ++++++------ home/guest.nix | 53 ++++++------------- home/mail/default.nix | 25 ++++----- home/password-store.nix | 8 +++ home/ssh.nix | 2 +- hosts/homer/default.nix | 15 +++--- .../desktop/{media.nix => media-server.nix} | 1 + 10 files changed, 62 insertions(+), 85 deletions(-) rename system/desktop/{media.nix => media-server.nix} (99%) diff --git a/flake.nix b/flake.nix index 22a9c7d..f7d214e 100644 --- a/flake.nix +++ b/flake.nix @@ -54,10 +54,7 @@ users = { till = { - imports = [ - ./home - ./users/till-home.nix - ]; + imports = [ ./home ]; }; alt = { imports = [ ./home/alt.nix ]; }; diff --git a/home/default.nix b/home/default.nix index 3d1df82..5ab1e4f 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,7 +1,6 @@ { pkgs, ... }: { - home.username = "till"; home.homeDirectory = "/home/till"; diff --git a/home/gnome/default.nix b/home/gnome/default.nix index e1f5fef..4103a84 100644 --- a/home/gnome/default.nix +++ b/home/gnome/default.nix @@ -7,8 +7,6 @@ size = 32; }; - services.gnome-keyring.enable = false; - home.packages = with pkgs.gnomeExtensions; [ run-or-raise removable-drive-menu diff --git a/home/gpg.nix b/home/gpg.nix index fc8c0a4..330bd85 100644 --- a/home/gpg.nix +++ b/home/gpg.nix @@ -7,25 +7,20 @@ enableSshSupport = true; }; - programs.gpg.settings = { - no-emit-version = true; - no-comments = true; - keyserver = "hkps://keys.openpgp.org/"; - keyserver-options = [ - "no-honor-keyserver-url" - "include-revoked" - ]; - personal-cipher-preferences = "AES256 AES192 AES CAST5"; - personal-digest-preferences = "SHA512 SHA384 SHA256 SHA224"; - cert-digest-algo = "SHA512"; - default-preference-list = "SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed"; - }; - - xdg.configFile."scdaemon" = { - text = '' - disable-ccid - pcsc-shared - ''; - target = "../.gnupg/scdaemon.conf"; + programs.gpg = { + homedir = "${config.xdg.dataHome}/gnupg"; + settings = { + no-emit-version = true; + no-comments = true; + keyserver = "hkps://keys.openpgp.org/"; + keyserver-options = [ + "no-honor-keyserver-url" + "include-revoked" + ]; + personal-cipher-preferences = "AES256 AES192 AES CAST5"; + personal-digest-preferences = "SHA512 SHA384 SHA256 SHA224"; + cert-digest-algo = "SHA512"; + default-preference-list = "SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed"; + }; }; } diff --git a/home/guest.nix b/home/guest.nix index bd0d8f1..429f738 100644 --- a/home/guest.nix +++ b/home/guest.nix @@ -3,55 +3,32 @@ { home.username = "guest"; home.homeDirectory = "/home/guest"; - home.stateVersion = "22.11"; - nixpkgs = { - config = { - allowUnfree = true; - allowUnfreePredicate = (_: true); - }; - }; + imports = [ + ./minimal.nix - programs.home-manager.enable = true; - - xdg.userDirs = { - enable = true; - createDirectories = true; - download = "${config.home.homeDirectory}/tmp"; - music = "${config.home.homeDirectory}/media/music"; - pictures = "${config.home.homeDirectory}/media/img"; - videos = "${config.home.homeDirectory}/media/vid"; - documents = "${config.home.homeDirectory}/misc"; - templates = "${config.xdg.dataHome}/templates"; - }; + ./firefox.nix + ./fish.nix + ./fonts.nix + ./foot.nix + ./gnome + ./nvim + ./tmux + ./user-dirs.nix + ]; home.packages = with pkgs; [ - fzf - silver-searcher - tmux - nodejs - wl-clipboard + ffmpeg + keepassxc + mpv qbittorrent vlc - mpv - ffmpeg + wl-clipboard yt-dlp - libnotify - keepassxc ]; services.syncthing.enable = true; - imports = [ - ./gnome - ./firefox.nix - ./foot.nix - ./fish.nix - ./tmux - ./nvim - ./fonts.nix - ]; - programs.nix-index = { enable = true; enableFishIntegration = true; diff --git a/home/mail/default.nix b/home/mail/default.nix index 0335383..a623ced 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -227,18 +227,19 @@ }; passwordCommand = "pass other/ksh_systemli"; }; - - programs.neovim.plugins = with pkgs.vimPlugins; [ lazy-nvim ]; - - xdg.configFile."nvim/lua/woof-vim.lua".text = '' - return { - "woof-vim", - name = "woof-vim", - dev = { - path = "~/devel" - } - } - ''; }; }; + + programs.neovim.plugins = with pkgs.vimPlugins; [ lazy-nvim ]; + + xdg.configFile."nvim/lua/woof-vim.lua".text = '' + return { + "woof-vim", + name = "woof-vim", + dev = { + path = "~/devel" + } + } + ''; + } diff --git a/home/password-store.nix b/home/password-store.nix index d9ba727..8839f20 100644 --- a/home/password-store.nix +++ b/home/password-store.nix @@ -1,6 +1,7 @@ { config, pkgs, ... }: { + services.gnome-keyring.enable = false; programs.password-store = { enable = true; @@ -21,4 +22,11 @@ pinentry-all ]; + xdg.configFile."scdaemon" = { + text = '' + disable-ccid + pcsc-shared + ''; + target = "../.gnupg/scdaemon.conf"; + }; } diff --git a/home/ssh.nix b/home/ssh.nix index 6e5a1cf..bb71569 100644 --- a/home/ssh.nix +++ b/home/ssh.nix @@ -47,7 +47,7 @@ in identityFile = certs.personal; }; - "homer fernseher" = { + "homer homer.fritz.box" = { hostname = "homer"; user = "till"; identityFile = certs.personal; diff --git a/hosts/homer/default.nix b/hosts/homer/default.nix index 0182d7a..1f81a32 100644 --- a/hosts/homer/default.nix +++ b/hosts/homer/default.nix @@ -5,12 +5,13 @@ imports = [ ./hardware.nix - ../system - ../system/desktop - ../system/desktop/gnome.nix - ../system/desktop/steam.nix - ../system/desktop/remote-desktop.nix - ../system/media-server.nix - ../users/guest.nix + ../../system + ../../system/desktop + ../../system/desktop/gnome.nix + ../../system/desktop/steam.nix + ../../system/desktop/remote-desktop.nix + ../../system/desktop/media-server.nix + ../../users/till.nix + ../../users/guest.nix ]; } diff --git a/system/desktop/media.nix b/system/desktop/media-server.nix similarity index 99% rename from system/desktop/media.nix rename to system/desktop/media-server.nix index cdd99db..63023b5 100644 --- a/system/desktop/media.nix +++ b/system/desktop/media-server.nix @@ -5,6 +5,7 @@ enable = true; group = "media"; }; + services.radarr = { enable = true; group = "media"; From 7f9c0961232d6673f27db5c6ecc64db570abcbdd Mon Sep 17 00:00:00 2001 From: Till Date: Fri, 23 Jan 2026 11:09:06 +0100 Subject: [PATCH 07/44] working --- home/alt.nix | 15 +++------------ home/cli-office/default.nix | 2 ++ home/foot.nix | 2 +- home/gpg.nix | 11 +++++++++-- home/mail/default.nix | 31 ++++++++++++++++--------------- home/nvim/config.vim | 1 - home/nvim/ftplugin/nix.vim | 1 + home/slim-desktop.nix | 14 +------------- home/user-dirs.nix | 17 +++++++++++++++++ system/default.nix | 6 ++++++ system/desktop/default.nix | 8 -------- 11 files changed, 56 insertions(+), 52 deletions(-) create mode 100644 home/nvim/ftplugin/nix.vim create mode 100644 home/user-dirs.nix diff --git a/home/alt.nix b/home/alt.nix index 0225f44..01bd239 100644 --- a/home/alt.nix +++ b/home/alt.nix @@ -1,17 +1,6 @@ { config, pkgs, inputs, lib, ... }: { - xdg.userDirs = { - enable = true; - createDirectories = true; - download = "${config.home.homeDirectory}/tmp"; - music = "${config.home.homeDirectory}/media/music"; - pictures = "${config.home.homeDirectory}/media/img"; - videos = "${config.home.homeDirectory}/media/vid"; - documents = "${config.home.homeDirectory}/misc"; - templates = "${config.xdg.dataHome}/templates"; - }; - home.packages = with pkgs; [ fzf silver-searcher @@ -25,6 +14,8 @@ ]; imports = [ + ./minimal.nix + ./gnome ./firefox.nix ./foot.nix @@ -32,7 +23,7 @@ ./vifm ./tmux ./nvim - ./minimal.nix + ./user-dirs.nix ]; programs.nix-index = { diff --git a/home/cli-office/default.nix b/home/cli-office/default.nix index 9100fe2..b3bdd2d 100644 --- a/home/cli-office/default.nix +++ b/home/cli-office/default.nix @@ -7,8 +7,10 @@ ]; home.packages = with pkgs; [ + bat castget ghostscript + glow hunspell hunspellDicts.de_DE hunspellDicts.en_US diff --git a/home/foot.nix b/home/foot.nix index d8fc8ef..a0fadb4 100644 --- a/home/foot.nix +++ b/home/foot.nix @@ -14,7 +14,7 @@ font-italic = "Adwaita Mono:size=17:slant=italic"; font-bold-italic = "Adwaita Mono:size=17:weight=boldslant=italic"; initial-window-mode = "maximized"; - # line-height = "20"; + initial-color-theme = "dark"; }; mouse.hide-when-typing = "yes"; diff --git a/home/gpg.nix b/home/gpg.nix index 330bd85..15fdc98 100644 --- a/home/gpg.nix +++ b/home/gpg.nix @@ -1,14 +1,21 @@ { config, pkgs, ... }: { + + home.packages = with pkgs; [ + pinentry-all + ]; + services.gpg-agent = { enable = true; - pinentry.package = pkgs.pinentry-gnome3; + # pinentry.package = pkgs.pinentry-gnome3; + pinentry.program = "pinentry-gnome3"; enableSshSupport = true; }; programs.gpg = { - homedir = "${config.xdg.dataHome}/gnupg"; + enable = true; + # homedir = "${config.xdg.dataHome}/gnupg"; settings = { no-emit-version = true; no-comments = true; diff --git a/home/mail/default.nix b/home/mail/default.nix index a623ced..462f7df 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }: { programs.msmtp = { @@ -50,7 +50,7 @@ msmtp.enable = true; neomutt = { enable = true; - sendMailCommand = "/home/till/.nix-profile/bin/msmtp"; + sendMailCommand = lib.getExe pkgs.msmtp; extraConfig = '' set mbox='+Archive' set my_junk='+Spamverdacht' @@ -104,7 +104,7 @@ }; neomutt = { enable = true; - sendMailCommand = "/home/till/.nix-profile/bin/msmtp"; + sendMailCommand = lib.getExe pkgs.msmtp; extraConfig = '' set my_mbsync_acct='t9e' set mbox='+Archive' @@ -153,7 +153,7 @@ }; neomutt = { enable = true; - sendMailCommand = "/home/till/.nix-profile/bin/msmtp"; + sendMailCommand = lib.getExe pkgs.msmtp; extraConfig = '' set my_mbsync_acct='ktiu' @@ -198,7 +198,8 @@ signature.showSignature = "append"; neomutt = { enable = true; - sendMailCommand = "/home/till/.nix-profile/bin/msmtp"; + # sendMailCommand = "/home/till/.nix-profile/bin/msmtp"; + sendMailCommand = lib.getExe pkgs.msmtp; extraConfig = '' set my_mbsync_acct='ksh' set mbox='+Erledigt' @@ -230,16 +231,16 @@ }; }; - programs.neovim.plugins = with pkgs.vimPlugins; [ lazy-nvim ]; + programs.neovim.plugins = with pkgs.vimPlugins; [ + { + plugin = vim-pathogen; + config = "execute pathogen#infect()"; + } + ]; - xdg.configFile."nvim/lua/woof-vim.lua".text = '' - return { - "woof-vim", - name = "woof-vim", - dev = { - path = "~/devel" - } - } - ''; + xdg.configFile."nvim/bundle/woof-vim" = { + source = config.lib.file.mkOutOfStoreSymlink "/home/till/devel/woof-vim"; + recursive = true; + }; } diff --git a/home/nvim/config.vim b/home/nvim/config.vim index e1dbf9c..3d93a6e 100644 --- a/home/nvim/config.vim +++ b/home/nvim/config.vim @@ -41,7 +41,6 @@ nnoremap l nnoremap :hide nnoremap m :make -nnoremap M :!home-manager switch tnoremap diff --git a/home/nvim/ftplugin/nix.vim b/home/nvim/ftplugin/nix.vim new file mode 100644 index 0000000..3d77fc5 --- /dev/null +++ b/home/nvim/ftplugin/nix.vim @@ -0,0 +1 @@ +setlocal makeprg=sudo\ nixos-rebuild\ switch diff --git a/home/slim-desktop.nix b/home/slim-desktop.nix index 1da6a7b..e4299fa 100644 --- a/home/slim-desktop.nix +++ b/home/slim-desktop.nix @@ -10,6 +10,7 @@ ./firefox.nix ./foot.nix ./mail + ./user-dirs.nix ]; home.packages = with pkgs; [ @@ -25,19 +26,6 @@ zathura ]; - xdg.userDirs = { - enable = true; - createDirectories = true; - desktop = "${config.home.homeDirectory}/desktop"; - documents = "${config.home.homeDirectory}/misc"; - download = "${config.home.homeDirectory}/tmp"; - music = "${config.home.homeDirectory}/media/music"; - pictures = "${config.home.homeDirectory}/media/img"; - publicShare = "${config.home.homeDirectory}/box"; - templates = "${config.xdg.dataHome}/templates"; - videos = "${config.home.homeDirectory}/media/vid"; - }; - xdg.configFile."castget/castget.conf".source = ./castget/castget.conf; services.syncthing.enable = true; diff --git a/home/user-dirs.nix b/home/user-dirs.nix new file mode 100644 index 0000000..4a04c28 --- /dev/null +++ b/home/user-dirs.nix @@ -0,0 +1,17 @@ +{ config, ... }: + +{ + xdg.userDirs = { + enable = true; + createDirectories = true; + desktop = "${config.home.homeDirectory}/desktop"; + documents = "${config.home.homeDirectory}/misc"; + download = "${config.home.homeDirectory}/tmp"; + music = "${config.home.homeDirectory}/media/music"; + pictures = "${config.home.homeDirectory}/media/img"; + publicShare = "${config.home.homeDirectory}/box"; + templates = "${config.xdg.dataHome}/templates"; + videos = "${config.home.homeDirectory}/media/vid"; + }; + +} diff --git a/system/default.nix b/system/default.nix index 820d30f..688001f 100644 --- a/system/default.nix +++ b/system/default.nix @@ -17,6 +17,12 @@ optimise.automatic = true; }; + environment.sessionVariables = { + XDG_CONFIG_HOME = "$HOME/.config"; + XDG_CACHE_HOME = "$HOME/.cache"; + XDG_DATA_HOME = "$HOME/.local/share"; + }; + environment.systemPackages = with pkgs; [ dig.dnsutils file diff --git a/system/desktop/default.nix b/system/desktop/default.nix index ba5d089..26f54a5 100644 --- a/system/desktop/default.nix +++ b/system/desktop/default.nix @@ -26,14 +26,6 @@ pulse.enable = true; }; - # nixpkgs.config.allowUnfree = true; - - environment.sessionVariables = { - XDG_CONFIG_HOME = "$HOME/.config"; - XDG_CACHE_HOME = "$HOME/.cache"; - XDG_DATA_HOME = "$HOME/.local/share"; - }; - environment.systemPackages = with pkgs; [ firefox libreoffice From 26ed81dbeef29ea80ec2820f2c9182cc12fad1e0 Mon Sep 17 00:00:00 2001 From: Till Date: Wed, 28 Jan 2026 14:00:40 +0100 Subject: [PATCH 08/44] refactor --- flake.nix | 20 ++++++- home/aichat.nix | 8 +++ home/alt.nix | 47 --------------- home/default.nix | 57 ------------------- home/desktop-full.nix | 15 +++++ home/{slim-desktop.nix => desktop-slim.nix} | 11 ++-- home/fish.nix | 1 - home/gpg.nix | 2 +- home/guest.nix | 37 ------------ home/{cli-office => }/khard-dump.nix | 0 home/librewolf.nix | 5 -- home/mail/default.nix | 6 +- home/media.nix | 16 ++++++ home/messaging.nix | 9 +++ home/minimal.nix | 16 ++---- home/nvim/default.nix | 51 +++++++++-------- .../after/ftplugin/markdown.vim | 0 home/nvim/{ => dotfiles}/autocommands.vim | 0 .../nvim/{ => dotfiles}/ftplugin/markdown.vim | 0 home/nvim/dotfiles/ftplugin/nix.vim | 1 + home/nvim/{ => dotfiles}/ftplugin/r.vim | 0 home/nvim/{ => dotfiles}/ftplugin/rmd.vim | 0 home/nvim/{ => dotfiles}/ftplugin/tex.vim | 0 .../{ => dotfiles}/ftplugin/typescript.vim | 0 home/nvim/{ => dotfiles}/syntax/rmd.vim | 0 home/nvim/ftplugin/nix.vim | 1 - .../default.nix => office-cli.nix} | 2 +- home/office-gui.nix | 21 +++++++ home/openconnect.nix | 10 ---- home/ssh.nix | 6 ++ home/{cli-office => }/tasks.nix | 0 home/users/alt.nix | 9 +++ home/users/guest.nix | 5 ++ home/users/till.nix | 9 +++ system/desktop/ergodox-udev.nix | 6 +- system/desktop/yubikey-pam.nix | 1 + 36 files changed, 165 insertions(+), 207 deletions(-) create mode 100644 home/aichat.nix delete mode 100644 home/alt.nix delete mode 100644 home/default.nix create mode 100644 home/desktop-full.nix rename home/{slim-desktop.nix => desktop-slim.nix} (84%) delete mode 100644 home/guest.nix rename home/{cli-office => }/khard-dump.nix (100%) delete mode 100644 home/librewolf.nix create mode 100644 home/media.nix create mode 100644 home/messaging.nix rename home/nvim/{ => dotfiles}/after/ftplugin/markdown.vim (100%) rename home/nvim/{ => dotfiles}/autocommands.vim (100%) rename home/nvim/{ => dotfiles}/ftplugin/markdown.vim (100%) create mode 100644 home/nvim/dotfiles/ftplugin/nix.vim rename home/nvim/{ => dotfiles}/ftplugin/r.vim (100%) rename home/nvim/{ => dotfiles}/ftplugin/rmd.vim (100%) rename home/nvim/{ => dotfiles}/ftplugin/tex.vim (100%) rename home/nvim/{ => dotfiles}/ftplugin/typescript.vim (100%) rename home/nvim/{ => dotfiles}/syntax/rmd.vim (100%) delete mode 100644 home/nvim/ftplugin/nix.vim rename home/{cli-office/default.nix => office-cli.nix} (95%) create mode 100644 home/office-gui.nix delete mode 100644 home/openconnect.nix rename home/{cli-office => }/tasks.nix (100%) create mode 100644 home/users/alt.nix create mode 100644 home/users/guest.nix create mode 100644 home/users/till.nix diff --git a/flake.nix b/flake.nix index f7d214e..caf2beb 100644 --- a/flake.nix +++ b/flake.nix @@ -54,11 +54,25 @@ users = { till = { - imports = [ ./home ]; + imports = [ + ./home/desktop-full.nix + ./home/users/till.nix + ]; }; - alt = { imports = [ ./home/alt.nix ]; }; - guest = { imports = [ ./home/guest.nix ]; }; + alt = { + imports = [ + ./home/desktop-slim.nix + ./home/users/alt.nix + ]; + }; + + guest = { + imports = [ + ./home/desktop-slim.nix + ./home/users/guest.nix + ]; + }; }; }; } diff --git a/home/aichat.nix b/home/aichat.nix new file mode 100644 index 0000000..e2a927a --- /dev/null +++ b/home/aichat.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: + +{ + home.packages = with pkgs; [ + aichat + glow + ]; +} diff --git a/home/alt.nix b/home/alt.nix deleted file mode 100644 index 01bd239..0000000 --- a/home/alt.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ config, pkgs, inputs, lib, ... }: - -{ - home.packages = with pkgs; [ - fzf - silver-searcher - tmux - nodejs - wl-clipboard - qbittorrent - vlc - ffmpeg - libnotify - ]; - - imports = [ - ./minimal.nix - - ./gnome - ./firefox.nix - ./foot.nix - ./fish.nix - ./vifm - ./tmux - ./nvim - ./user-dirs.nix - ]; - - programs.nix-index = { - enable = true; - enableFishIntegration = true; - }; - - programs.git = { - enable = true; - userName = "Till"; - userEmail = "till@ktiu.net"; - lfs = { - enable = true; - }; - extraConfig = { - init = { - defaultBranch = "main"; - }; - }; - }; -} diff --git a/home/default.nix b/home/default.nix deleted file mode 100644 index 5ab1e4f..0000000 --- a/home/default.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ pkgs, ... }: - -{ - home.username = "till"; - home.homeDirectory = "/home/till"; - - imports = [ - ./slim-desktop.nix - - ./fonts.nix - ./gnome - ./r.nix - ./tex.nix - ]; - - home.packages = with pkgs; [ - - # messenger - signal-desktop - telegram-desktop - - # office - xournalpp - pdfpc - - # text publishing - libreoffice - jdk - poppler-utils - zotero - lorem - typst - - # graphics - gimp - inkscape - - # web - chromium - nyxt - - # media - anki-bin - qbittorrent - nicotine-plus - - # other - quickemu - keymapp - gnome-solanum - eduvpn-client - yt-dlp - - ]; - - programs.obs-studio.enable = true; -} diff --git a/home/desktop-full.nix b/home/desktop-full.nix new file mode 100644 index 0000000..ea29f46 --- /dev/null +++ b/home/desktop-full.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: + +{ + imports = [ + ./desktop-slim.nix + + ./messaging.nix + ./r.nix + ./tex.nix + ./mail + ./office-gui.nix + ./office-cli.nix + ./aichat.nix + ]; +} diff --git a/home/slim-desktop.nix b/home/desktop-slim.nix similarity index 84% rename from home/slim-desktop.nix rename to home/desktop-slim.nix index e4299fa..9add985 100644 --- a/home/slim-desktop.nix +++ b/home/desktop-slim.nix @@ -4,23 +4,22 @@ imports = [ ./minimal.nix - ./calendars.nix - ./cli-office ./devel.nix ./firefox.nix + ./fonts.nix ./foot.nix - ./mail + ./gnome + ./media.nix ./user-dirs.nix ]; home.packages = with pkgs; [ - aichat + anki-bin appimage-run drawing - feh keepassxc + libnotify usbutils - vlc wl-clipboard yubioath-flutter zathura diff --git a/home/fish.nix b/home/fish.nix index 3e65ddb..6570f73 100644 --- a/home/fish.nix +++ b/home/fish.nix @@ -7,7 +7,6 @@ du = "dust"; ymd = "date +'%Y-%m-%d'"; dmy = "date +'%-d.-%-m.%Y'"; - v = "nvim"; r = "R --no-save --no-restore"; R = "R --no-save --no-restore"; cdg = "cd \$(git rev-parse --show-toplevel)"; diff --git a/home/gpg.nix b/home/gpg.nix index 15fdc98..554398a 100644 --- a/home/gpg.nix +++ b/home/gpg.nix @@ -8,7 +8,7 @@ services.gpg-agent = { enable = true; - # pinentry.package = pkgs.pinentry-gnome3; + pinentry.package = pkgs.pinentry-gnome3; pinentry.program = "pinentry-gnome3"; enableSshSupport = true; }; diff --git a/home/guest.nix b/home/guest.nix deleted file mode 100644 index 429f738..0000000 --- a/home/guest.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ config, pkgs, inputs, lib, ... }: - -{ - home.username = "guest"; - home.homeDirectory = "/home/guest"; - - imports = [ - ./minimal.nix - - ./firefox.nix - ./fish.nix - ./fonts.nix - ./foot.nix - ./gnome - ./nvim - ./tmux - ./user-dirs.nix - ]; - - home.packages = with pkgs; [ - ffmpeg - keepassxc - mpv - qbittorrent - vlc - wl-clipboard - yt-dlp - ]; - - services.syncthing.enable = true; - - programs.nix-index = { - enable = true; - enableFishIntegration = true; - }; - -} diff --git a/home/cli-office/khard-dump.nix b/home/khard-dump.nix similarity index 100% rename from home/cli-office/khard-dump.nix rename to home/khard-dump.nix diff --git a/home/librewolf.nix b/home/librewolf.nix deleted file mode 100644 index 3991dc1..0000000 --- a/home/librewolf.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.librewolf.enable = true; -} diff --git a/home/mail/default.nix b/home/mail/default.nix index 462f7df..fb014b2 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -129,7 +129,7 @@ mbsync.create = "maildir"; msmtp = { enable = true; - extraConfig.from = "*@t9e.me"; + extraConfig.from = "*@(ktiu.net|t9e.me)"; }; passwordCommand = "pass mail/arielle.ktiu.net"; }; @@ -177,8 +177,8 @@ mbsync.enable = true; mbsync.create = "maildir"; msmtp = { - enable = true; - extraConfig.from = "*@ktiu.net"; + enable = false; + # extraConfig.from = "*@ktiu.net"; }; passwordCommand = "secret-tool lookup server shorbut.ktiu.net account till"; }; diff --git a/home/media.nix b/home/media.nix new file mode 100644 index 0000000..46e02e6 --- /dev/null +++ b/home/media.nix @@ -0,0 +1,16 @@ +{ config, pkgs, inputs, lib, ... }: + +{ + home.packages = with pkgs; [ + castget + feh + ffmpeg + nicotine-plus + qbittorrent + vlc + yt-dlp + zathura + ]; + + xdg.configFile."castget/castget.conf".source = ./castget/castget.conf; +} diff --git a/home/messaging.nix b/home/messaging.nix new file mode 100644 index 0000000..e33d6b4 --- /dev/null +++ b/home/messaging.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + home.packages = with pkgs; [ + signal-desktop + telegram-desktop + simplex-chat-desktop + ]; +} diff --git a/home/minimal.nix b/home/minimal.nix index b23d755..eeb7f44 100644 --- a/home/minimal.nix +++ b/home/minimal.nix @@ -3,10 +3,14 @@ { programs.home-manager.enable = true; + home.homeDirectory = "/home/${config.home.username}"; + home.packages = with pkgs; [ dust + fastfetch fzf jq + nix-search progress rename silver-searcher @@ -32,18 +36,10 @@ programs.git = { enable = true; settings = { - user.name = "Till"; - user.email = "till@ktiu.net"; pull.rebase = true; - extraConfig = { - init = { - defaultBranch = "main"; - }; - }; - }; - lfs = { - enable = true; + extraConfig.init.defaultBranch = "main"; }; + lfs.enable = true; }; programs.bottom = { diff --git a/home/nvim/default.nix b/home/nvim/default.nix index 18dba09..41e068d 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ pkgs, ... }: { home.packages = with pkgs; [ @@ -12,6 +12,8 @@ enable = true; defaultEditor = true; + viAlias = true; + vimAlias = true; extraConfig = builtins.readFile ./config.vim; @@ -33,19 +35,22 @@ { plugin = fzf-vim; + type = "lua"; config = '' - nnoremap :Buffers - imap (fzf-complete-path) - nnoremap o :Files - nnoremap O :Files ~/ - nnoremap r :Read - nnoremap R :Read ~/ - nnoremap a :Ag - nnoremap b :Buffers - nnoremap . :Files ~/devel/omniflake/ - command! -nargs=? -complete=dir Read call fzf#run( - \fzf#wrap({'sink': 'read', 'dir': }) - \) + vim.api.nvim_set_keymap('n', '', ':Buffers', { noremap = true, silent = true }) + vim.api.nvim_set_keymap('i', '', '(fzf-complete-path)', { silent = true }) + vim.api.nvim_set_keymap('n', 'o', ':Files', { noremap = true, silent = true }) + vim.api.nvim_set_keymap('n', 'O', ':Files ~/', { noremap = true, silent = true }) + vim.api.nvim_set_keymap('n', 'r', ':Read', { noremap = true, silent = true }) + vim.api.nvim_set_keymap('n', 'R', ':Read ~/', { noremap = true, silent = true }) + vim.api.nvim_set_keymap('n', 'a', ':Ag', { noremap = true, silent = true }) + vim.api.nvim_set_keymap('n', 'A', ':Ag ~/', { noremap = true, silent = true }) + vim.api.nvim_set_keymap('n', '.', ':Files ~/devel/omniflake/', { noremap = true, silent = true }) + vim.api.nvim_create_user_command( + 'Read', + 'call fzf#run(fzf#wrap({\'sink\': \'read\', \'dir\': }))', + { nargs = '?', complete = 'dir' } + ) ''; } { @@ -80,8 +85,9 @@ typescript-vim { plugin = ultisnips; + type = "lua"; config = '' - nnoremap se :UltiSnipsEdit! + vim.api.nvim_set_keymap('n', 'se', ':UltiSnipsEdit!', { noremap = true, silent = true }) ''; } vifm-vim @@ -113,8 +119,6 @@ nmap s SlimeMotionSend nmap ss SlimeLineSend nnoremap s: :SlimeSend1 - " let g:slime_target = "neovim" - " autocmd TermOpen * let g:slime_default_config = {"jobid": &channel} ''; } vim-snippets @@ -123,12 +127,11 @@ vim-unimpaired ]; }; - xdg.configFile."nvim/autocommmands.vim".source = ./autocommands.vim; - xdg.configFile."nvim/ftplugin/markdown.vim".source = ./ftplugin/markdown.vim; - xdg.configFile."nvim/after/ftplugin/markdown.vim".source = ./after/ftplugin/markdown.vim; - xdg.configFile."nvim/ftplugin/r.vim".source = ./ftplugin/r.vim; - xdg.configFile."nvim/ftplugin/rmd.vim".source = ./ftplugin/rmd.vim; - xdg.configFile."nvim/ftplugin/tex.vim".source = ./ftplugin/tex.vim; - xdg.configFile."nvim/ftplugin/typescript.vim".source = ./ftplugin/typescript.vim; - xdg.configFile."nvim/syntax/rmd.vim".source = ./syntax/rmd.vim; + + xdg.configFile."nvim" = { + source = ./dotfiles; + recursive = true; + }; + + home.shellAliases.v = "nvim"; } diff --git a/home/nvim/after/ftplugin/markdown.vim b/home/nvim/dotfiles/after/ftplugin/markdown.vim similarity index 100% rename from home/nvim/after/ftplugin/markdown.vim rename to home/nvim/dotfiles/after/ftplugin/markdown.vim diff --git a/home/nvim/autocommands.vim b/home/nvim/dotfiles/autocommands.vim similarity index 100% rename from home/nvim/autocommands.vim rename to home/nvim/dotfiles/autocommands.vim diff --git a/home/nvim/ftplugin/markdown.vim b/home/nvim/dotfiles/ftplugin/markdown.vim similarity index 100% rename from home/nvim/ftplugin/markdown.vim rename to home/nvim/dotfiles/ftplugin/markdown.vim diff --git a/home/nvim/dotfiles/ftplugin/nix.vim b/home/nvim/dotfiles/ftplugin/nix.vim new file mode 100644 index 0000000..4f0eba3 --- /dev/null +++ b/home/nvim/dotfiles/ftplugin/nix.vim @@ -0,0 +1 @@ +setlocal makeprg=nixos-rebuild\ dry-build diff --git a/home/nvim/ftplugin/r.vim b/home/nvim/dotfiles/ftplugin/r.vim similarity index 100% rename from home/nvim/ftplugin/r.vim rename to home/nvim/dotfiles/ftplugin/r.vim diff --git a/home/nvim/ftplugin/rmd.vim b/home/nvim/dotfiles/ftplugin/rmd.vim similarity index 100% rename from home/nvim/ftplugin/rmd.vim rename to home/nvim/dotfiles/ftplugin/rmd.vim diff --git a/home/nvim/ftplugin/tex.vim b/home/nvim/dotfiles/ftplugin/tex.vim similarity index 100% rename from home/nvim/ftplugin/tex.vim rename to home/nvim/dotfiles/ftplugin/tex.vim diff --git a/home/nvim/ftplugin/typescript.vim b/home/nvim/dotfiles/ftplugin/typescript.vim similarity index 100% rename from home/nvim/ftplugin/typescript.vim rename to home/nvim/dotfiles/ftplugin/typescript.vim diff --git a/home/nvim/syntax/rmd.vim b/home/nvim/dotfiles/syntax/rmd.vim similarity index 100% rename from home/nvim/syntax/rmd.vim rename to home/nvim/dotfiles/syntax/rmd.vim diff --git a/home/nvim/ftplugin/nix.vim b/home/nvim/ftplugin/nix.vim deleted file mode 100644 index 3d77fc5..0000000 --- a/home/nvim/ftplugin/nix.vim +++ /dev/null @@ -1 +0,0 @@ -setlocal makeprg=sudo\ nixos-rebuild\ switch diff --git a/home/cli-office/default.nix b/home/office-cli.nix similarity index 95% rename from home/cli-office/default.nix rename to home/office-cli.nix index b3bdd2d..5baf102 100644 --- a/home/cli-office/default.nix +++ b/home/office-cli.nix @@ -4,13 +4,13 @@ imports = [ ./khard-dump.nix ./tasks.nix + ./calendars.nix ]; home.packages = with pkgs; [ bat castget ghostscript - glow hunspell hunspellDicts.de_DE hunspellDicts.en_US diff --git a/home/office-gui.nix b/home/office-gui.nix new file mode 100644 index 0000000..c40ec7c --- /dev/null +++ b/home/office-gui.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: + +{ + home.packages = with pkgs; [ + chromium + eduvpn-client + gimp + gnome-solanum + inkscape + libreoffice + lorem + nyxt + pdfpc + poppler-utils + typst + xournalpp + zotero + ]; + + programs.obs-studio.enable = true; +} diff --git a/home/openconnect.nix b/home/openconnect.nix deleted file mode 100644 index 0fd5b5a..0000000 --- a/home/openconnect.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, pkgs, ... }: - -{ - home.packages = [ pkgs.openconnect ]; - xdg.configFile."openconnect/config".text = '' - server=vpn-einwahl.uni-frankfurt.de - user=tstraube - protocol=anyconnect - ''; -} diff --git a/home/ssh.nix b/home/ssh.nix index bb71569..735cd81 100644 --- a/home/ssh.nix +++ b/home/ssh.nix @@ -53,6 +53,12 @@ in identityFile = certs.personal; }; + "codeberg codeberg.org" = { + hostname = "codeberg.org"; + user = "git"; + identityFile = certs.personal; + }; + # "mila" = { # hostname = "mila"; # user = "till"; diff --git a/home/cli-office/tasks.nix b/home/tasks.nix similarity index 100% rename from home/cli-office/tasks.nix rename to home/tasks.nix diff --git a/home/users/alt.nix b/home/users/alt.nix new file mode 100644 index 0000000..4023137 --- /dev/null +++ b/home/users/alt.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + home.username = "alt"; + programs.git.settings.user = { + name = "Till"; + email = "till@ktiu.net"; + }; +} diff --git a/home/users/guest.nix b/home/users/guest.nix new file mode 100644 index 0000000..51ce1ed --- /dev/null +++ b/home/users/guest.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + home.username = "guest"; +} diff --git a/home/users/till.nix b/home/users/till.nix new file mode 100644 index 0000000..b14b24c --- /dev/null +++ b/home/users/till.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + home.username = "till"; + programs.git.settings.user = { + name = "Till"; + email = "till@ktiu.net"; + }; +} diff --git a/system/desktop/ergodox-udev.nix b/system/desktop/ergodox-udev.nix index 54a8db9..9d13662 100644 --- a/system/desktop/ergodox-udev.nix +++ b/system/desktop/ergodox-udev.nix @@ -1,6 +1,10 @@ -{ ... }: +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + keymapp + ]; + services.udev.extraRules = '' KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="wheel" ''; diff --git a/system/desktop/yubikey-pam.nix b/system/desktop/yubikey-pam.nix index b7bc143..8ef8248 100644 --- a/system/desktop/yubikey-pam.nix +++ b/system/desktop/yubikey-pam.nix @@ -5,6 +5,7 @@ environment.systemPackages = with pkgs; [ yubikey-personalization + keymapp ]; services.udev = { From 92cfae9488144521a876ed15e248810e2c5f78ca Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 29 Jan 2026 16:13:21 +0100 Subject: [PATCH 09/44] mail, ssh --- home/gnome/run-or-raise.conf | 17 +---------------- home/mail/default.nix | 31 ++++++++++++++++++++++--------- home/nvim/default.nix | 2 +- home/ssh.nix | 6 ++++++ 4 files changed, 30 insertions(+), 26 deletions(-) diff --git a/home/gnome/run-or-raise.conf b/home/gnome/run-or-raise.conf index 783e5a5..b4bc39d 100644 --- a/home/gnome/run-or-raise.conf +++ b/home/gnome/run-or-raise.conf @@ -1,21 +1,6 @@ -# Here you list all the shortcuts. -# -# The shortcuts may be defined in two ways: -# -# 1. Run-or-raise form: shortcut,launch-command,[wm_class],[title] -# * wm_class and title are optional and case sensitive -# * if none is set, lowercased launch-command is compared with lowercased windows wm_classes and titles -# -# 2. Run only form: shortcut,calculate -# -# ================= -# Run or raise form -# ================= -# -# This line cycles any open gnome-terminal (matched by wm_class = Gnome-terminal on Ubuntu 17.10) OR if not found, launches new one. -# If you're using Arch, you may want to match by wm_class = gnome-terminal-server , just check yourself by Alt+F2/lg/Windows b,firefox,, f,nautilus,, +g:always-run,tmux new-window -n vifm vifm ~/desktop,foot, return,foot,, p,keepassxc,,, diff --git a/home/mail/default.nix b/home/mail/default.nix index fb014b2..cb69326 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -11,6 +11,7 @@ }; programs.mbsync.enable = true; + programs.neomutt = { enable = true; vimKeys = true; @@ -45,8 +46,11 @@ ''; showSignature = "append"; }; - mbsync.enable = true; - mbsync.create = "maildir"; + mbsync = { + enable = true; + create = "maildir"; + expunge = "both"; + }; msmtp.enable = true; neomutt = { enable = true; @@ -125,8 +129,11 @@ color status green default ''; }; - mbsync.enable = true; - mbsync.create = "maildir"; + mbsync = { + enable = true; + create = "maildir"; + expunge = "both"; + }; msmtp = { enable = true; extraConfig.from = "*@(ktiu.net|t9e.me)"; @@ -174,8 +181,11 @@ color status green default ''; }; - mbsync.enable = true; - mbsync.create = "maildir"; + mbsync = { + enable = true; + create = "maildir"; + expunge = "both"; + }; msmtp = { enable = false; # extraConfig.from = "*@ktiu.net"; @@ -220,8 +230,11 @@ color status cyan default ''; }; - mbsync.enable = true; - mbsync.create = "maildir"; + mbsync = { + enable = true; + create = "maildir"; + expunge = "both"; + }; msmtp = { enable = true; extraConfig.from = "kein_schlussstrich_hessen@systemli.org"; @@ -232,7 +245,7 @@ }; programs.neovim.plugins = with pkgs.vimPlugins; [ - { + { plugin = vim-pathogen; config = "execute pathogen#infect()"; } diff --git a/home/nvim/default.nix b/home/nvim/default.nix index 41e068d..7fcad69 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -40,7 +40,7 @@ vim.api.nvim_set_keymap('n', '', ':Buffers', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', '(fzf-complete-path)', { silent = true }) vim.api.nvim_set_keymap('n', 'o', ':Files', { noremap = true, silent = true }) - vim.api.nvim_set_keymap('n', 'O', ':Files ~/', { noremap = true, silent = true }) + vim.api.nvim_set_keymap('n', 'O', ':Files ~/', { noremap = true }) vim.api.nvim_set_keymap('n', 'r', ':Read', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', 'R', ':Read ~/', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', 'a', ':Ag', { noremap = true, silent = true }) diff --git a/home/ssh.nix b/home/ssh.nix index 735cd81..7836029 100644 --- a/home/ssh.nix +++ b/home/ssh.nix @@ -59,6 +59,12 @@ in identityFile = certs.personal; }; + "github github.com" = { + hostname = "github.com"; + user = "git"; + identityFile = certs.personal; + }; + # "mila" = { # hostname = "mila"; # user = "till"; From 648602c92e133e68213c908d89d47b23afd0a0dc Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 29 Jan 2026 17:22:27 +0100 Subject: [PATCH 10/44] refactor --- flake.nix | 6 +++--- hosts/nova/default.nix | 4 ++-- system/default.nix | 11 ++++++----- template.nix | 7 ------- home/users/alt.nix => users/alt/home.nix | 0 users/{alt.nix => alt/system.nix} | 0 home/users/guest.nix => users/guest/home.nix | 0 users/{guest.nix => guest/system.nix} | 2 +- home/users/till.nix => users/till/home.nix | 0 till@nova.pub => users/till/ssh/till@nova.pub | 0 users/{till.nix => till/system.nix} | 2 +- 11 files changed, 13 insertions(+), 19 deletions(-) delete mode 100644 template.nix rename home/users/alt.nix => users/alt/home.nix (100%) rename users/{alt.nix => alt/system.nix} (100%) rename home/users/guest.nix => users/guest/home.nix (100%) rename users/{guest.nix => guest/system.nix} (85%) rename home/users/till.nix => users/till/home.nix (100%) rename till@nova.pub => users/till/ssh/till@nova.pub (100%) rename users/{till.nix => till/system.nix} (88%) diff --git a/flake.nix b/flake.nix index caf2beb..5170f3d 100644 --- a/flake.nix +++ b/flake.nix @@ -56,21 +56,21 @@ till = { imports = [ ./home/desktop-full.nix - ./home/users/till.nix + ./users/till/home.nix ]; }; alt = { imports = [ ./home/desktop-slim.nix - ./home/users/alt.nix + ./users/alt/home.nix ]; }; guest = { imports = [ ./home/desktop-slim.nix - ./home/users/guest.nix + ./users/guest/home.nix ]; }; }; diff --git a/hosts/nova/default.nix b/hosts/nova/default.nix index 9757a76..969a3e5 100644 --- a/hosts/nova/default.nix +++ b/hosts/nova/default.nix @@ -5,8 +5,8 @@ imports = [ ./hardware-configuration.nix - ../../users/alt.nix - ../../users/guest.nix + ../../users/alt/system.nix + ../../users/guest/system.nix ../../system ../../system/desktop ../../system/desktop/gnome.nix diff --git a/system/default.nix b/system/default.nix index 688001f..830d769 100644 --- a/system/default.nix +++ b/system/default.nix @@ -1,14 +1,14 @@ -{ config, pkgs, ... }: +{ lib, pkgs, ... }: { imports = [ - ../users/till.nix + ../users/till/system.nix ]; - networking.networkmanager.enable = true; - users.mutableUsers = true; - time.timeZone = "Europe/Berlin"; + users.mutableUsers = lib.mkDefault true; programs.fish.enable = true; + time.timeZone = lib.mkDefault "Europe/Berlin"; + networking.networkmanager.enable = true; nix = { settings.experimental-features = [ "nix-command" "flakes" ]; @@ -45,5 +45,6 @@ settings.PermitRootLogin = "no"; }; + # Do NOT change this value system.stateVersion = "22.11"; } diff --git a/template.nix b/template.nix deleted file mode 100644 index da77699..0000000 --- a/template.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, pkgs, lib, ... }: - -{ - imports = [ - ]; - -} diff --git a/home/users/alt.nix b/users/alt/home.nix similarity index 100% rename from home/users/alt.nix rename to users/alt/home.nix diff --git a/users/alt.nix b/users/alt/system.nix similarity index 100% rename from users/alt.nix rename to users/alt/system.nix diff --git a/home/users/guest.nix b/users/guest/home.nix similarity index 100% rename from home/users/guest.nix rename to users/guest/home.nix diff --git a/users/guest.nix b/users/guest/system.nix similarity index 85% rename from users/guest.nix rename to users/guest/system.nix index 04f070e..ddfbf5e 100644 --- a/users/guest.nix +++ b/users/guest/system.nix @@ -7,7 +7,7 @@ extraGroups = [ "networkmanager" ]; shell = pkgs.fish; openssh.authorizedKeys.keyFiles = [ - ../till${"@"}nova.pub + ../till/ssh/till${"@"}nova.pub ]; }; } diff --git a/home/users/till.nix b/users/till/home.nix similarity index 100% rename from home/users/till.nix rename to users/till/home.nix diff --git a/till@nova.pub b/users/till/ssh/till@nova.pub similarity index 100% rename from till@nova.pub rename to users/till/ssh/till@nova.pub diff --git a/users/till.nix b/users/till/system.nix similarity index 88% rename from users/till.nix rename to users/till/system.nix index d32fcd9..fd25636 100644 --- a/users/till.nix +++ b/users/till/system.nix @@ -10,7 +10,7 @@ ]; shell = pkgs.fish; openssh.authorizedKeys.keyFiles = [ - ../till${"@"}nova.pub + ./ssh/till${"@"}nova.pub ]; }; } From fb5a44b5f03754a4606049f75e2e99f3b4d9d80c Mon Sep 17 00:00:00 2001 From: Till Date: Fri, 30 Jan 2026 12:35:40 +0100 Subject: [PATCH 11/44] nim --- home/nvim/default.nix | 54 +++++++++++++++++++++++-------- home/nvim/nvim-cmp.lua | 72 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+), 13 deletions(-) create mode 100644 home/nvim/nvim-cmp.lua diff --git a/home/nvim/default.nix b/home/nvim/default.nix index 7fcad69..bc43bef 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -18,20 +18,14 @@ extraConfig = builtins.readFile ./config.vim; plugins = with pkgs.vimPlugins; - [ - cmp-nvim-lsp - cmp-buffer - cmp-emoji - cmp-path - cmp-cmdline - cmp-nvim-ultisnips - nvim-cmp - { - plugin = nvim-lspconfig; - type = "lua"; - config = builtins.readFile ./lsp.lua; - } + [ + cmp-buffer + cmp-cmdline + cmp-emoji + cmp-nvim-lsp + cmp-nvim-ultisnips + cmp-path { plugin = fzf-vim; @@ -71,10 +65,34 @@ nnoremap ]of :Limelight! ''; } + + nabla-nvim + neogit + + { + plugin = nvim-cmp; + type = "lua"; + config = builtins.readFile ./nvim-cmp.lua; + } + { plugin = nvim-colorizer-lua; config = "lua require 'colorizer'.setup()"; } + + { + plugin = nvim-lspconfig; + type = "lua"; + config = '' + vim.lsp.enable('astro') + vim.lsp.enable('marksman') + vim.lsp.enable('nil_ls') + vim.lsp.enable('r_language_server') + vim.lsp.enable('texlab') + vim.lsp.enable('ts_ls') + ''; + } + { plugin = papercolor-theme; config = '' @@ -82,7 +100,9 @@ colorscheme PaperColor ''; } + typescript-vim + { plugin = ultisnips; type = "lua"; @@ -90,14 +110,18 @@ vim.api.nvim_set_keymap('n', 'se', ':UltiSnipsEdit!', { noremap = true, silent = true }) ''; } + vifm-vim + { plugin = vim-astro; config = '' let g:astro_typescript = 'enable' ''; } + vim-commentary + { plugin = vim-easy-align; config = '' @@ -105,9 +129,11 @@ nmap ga (EasyAlign) ''; } + vim-fish vim-nix vim-repeat + { plugin = vim-slime; config = '' @@ -121,10 +147,12 @@ nnoremap s: :SlimeSend1 ''; } + vim-snippets vim-speeddating vim-surround vim-unimpaired + vimwiki ]; }; diff --git a/home/nvim/nvim-cmp.lua b/home/nvim/nvim-cmp.lua new file mode 100644 index 0000000..9beae67 --- /dev/null +++ b/home/nvim/nvim-cmp.lua @@ -0,0 +1,72 @@ +local cmp = require'cmp' + +cmp.setup({ + + snippet = { + expand = function(args) + vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users. + end, + }, + + window = { + -- completion = cmp.config.window.bordered(), + -- documentation = cmp.config.window.bordered(), + }, + + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + }), + + sources = cmp.config.sources({ + { name = 'cmp_pandoc' }, + { name = 'emoji' }, + { name = 'nvim_lsp' }, + { name = 'path' }, + { name = 'ultisnips' }, + }, { + { name = 'buffer' }, + }) + +}) + +-- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below +-- Set configuration for specific filetype. +--[[ cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'git' }, + }, { + { name = 'buffer' }, + }) +}) +require("cmp_git").setup() ]]-- + +-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline({ '/', '?' }, { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer' } + } +}) + +-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }), + matching = { disallow_symbol_nonprefix_matching = false } +}) + +-- Set up lspconfig. +local capabilities = require('cmp_nvim_lsp').default_capabilities() +-- Replace with each lsp server you've enabled. +vim.lsp.config('', { + capabilities = capabilities +}) +vim.lsp.enable('') From f511922568bc0608927892455f5eb2d2c66f4f60 Mon Sep 17 00:00:00 2001 From: Till Date: Wed, 4 Feb 2026 09:53:52 +0100 Subject: [PATCH 12/44] btrbk, git --- home/nvim/default.nix | 36 +++++++++++++++++++++++++++++++++--- home/nvim/nvim-cmp.lua | 3 ++- system/desktop/btrbk.nix | 2 +- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/home/nvim/default.nix b/home/nvim/default.nix index bc43bef..c6903ad 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -23,16 +23,31 @@ cmp-buffer cmp-cmdline cmp-emoji + cmp-fish cmp-nvim-lsp cmp-nvim-ultisnips cmp-path + { + plugin = fugitive; + config = '' + nnoremap g :Git + ''; + } + { plugin = fzf-vim; type = "lua"; config = '' - vim.api.nvim_set_keymap('n', '', ':Buffers', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', '(fzf-complete-path)', { silent = true }) + vim.api.nvim_set_keymap('i', '', '(fzf-complete-word)', { silent = true }) + vim.api.nvim_set_keymap('i', '', '(fzf-complete-line)', { silent = true }) + + vim.api.nvim_set_keymap('n', '', '(fzf-maps-n)', { silent = true }) + vim.api.nvim_set_keymap('x', '', '(fzf-maps-x)', { silent = true }) + vim.api.nvim_set_keymap('o', '', '(fzf-maps-o)', { silent = true }) + + vim.api.nvim_set_keymap('n', 'b', ':Buffers', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', 'o', ':Files', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', 'O', ':Files ~/', { noremap = true }) vim.api.nvim_set_keymap('n', 'r', ':Read', { noremap = true, silent = true }) @@ -40,6 +55,7 @@ vim.api.nvim_set_keymap('n', 'a', ':Ag', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', 'A', ':Ag ~/', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '.', ':Files ~/devel/omniflake/', { noremap = true, silent = true }) + vim.api.nvim_create_user_command( 'Read', 'call fzf#run(fzf#wrap({\'sink\': \'read\', \'dir\': }))', @@ -47,6 +63,7 @@ ) ''; } + { plugin = goyo; config = '' @@ -60,6 +77,7 @@ config = '' set termguicolors let g:limelight_conceal_ctermfg = 'darkgray' + nnoremap yof :Limelight!! nnoremap [of :Limelight nnoremap ]of :Limelight! @@ -67,7 +85,6 @@ } nabla-nvim - neogit { plugin = nvim-cmp; @@ -90,6 +107,8 @@ vim.lsp.enable('r_language_server') vim.lsp.enable('texlab') vim.lsp.enable('ts_ls') + + vim.api.nvim_del_keymap('i', '') ''; } @@ -152,7 +171,18 @@ vim-speeddating vim-surround vim-unimpaired - vimwiki + { + plugin = vimwiki; + config = '' + let g:vimwiki_list = [ + { + 'path': '~/notes/', + 'syntax': 'markdown', + 'ext': '.md' + } + ] + ''; + } ]; }; diff --git a/home/nvim/nvim-cmp.lua b/home/nvim/nvim-cmp.lua index 9beae67..d6768a5 100644 --- a/home/nvim/nvim-cmp.lua +++ b/home/nvim/nvim-cmp.lua @@ -18,12 +18,13 @@ cmp.setup({ [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + [''] = cmp.mapping.confirm({ select = true }), }), sources = cmp.config.sources({ { name = 'cmp_pandoc' }, { name = 'emoji' }, + { name = 'fish' }, { name = 'nvim_lsp' }, { name = 'path' }, { name = 'ultisnips' }, diff --git a/system/desktop/btrbk.nix b/system/desktop/btrbk.nix index 22b03b3..04f893a 100644 --- a/system/desktop/btrbk.nix +++ b/system/desktop/btrbk.nix @@ -10,7 +10,7 @@ snapshot_dir = "/btrbk_snapshots"; target = "/run/media/till/backup/${config.networking.hostName}"; target_preserve_min = "no"; - target_preserve = "10d 10w 24m"; + target_preserve = "7d 4w 24m"; }; }; } From d4474ef5ce341308996067bd523f271dc23c0fb0 Mon Sep 17 00:00:00 2001 From: Till Date: Wed, 4 Feb 2026 13:38:28 +0100 Subject: [PATCH 13/44] vimwiki and vim-pandoc --- home/nvim/config.vim | 4 ---- home/nvim/default.nix | 38 +++++++++++++++++++++++++++----------- home/nvim/nvim-cmp.lua | 8 ++++---- 3 files changed, 31 insertions(+), 19 deletions(-) diff --git a/home/nvim/config.vim b/home/nvim/config.vim index 3d93a6e..2b3d0e5 100644 --- a/home/nvim/config.vim +++ b/home/nvim/config.vim @@ -34,10 +34,6 @@ nnoremap gx :! xdg-open nnoremap :bnext nnoremap :bnext nnoremap Q :bdelete -nnoremap h -nnoremap j -nnoremap k -nnoremap l nnoremap :hide nnoremap m :make diff --git a/home/nvim/default.nix b/home/nvim/default.nix index c6903ad..1cec2fb 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -67,9 +67,9 @@ { plugin = goyo; config = '' - nnoremap yog :Goyo - nnoremap [og :Goyo 80 - nnoremap ]og :Goyo! + nnoremap yog :Goyo + nnoremap [og :Goyo 80 + nnoremap ]og :Goyo! ''; } { @@ -151,6 +151,14 @@ vim-fish vim-nix + + { + plugin = vim-pandoc; + config = '' + let g:pandoc#modules#disabled = ["completion", "command", "menu", "completion"] + ''; + } + vim-repeat { @@ -170,17 +178,25 @@ vim-snippets vim-speeddating vim-surround - vim-unimpaired + + { + plugin = vim-unimpaired; + config = '' + nnoremap =p + nnoremap =P + nnoremap =s + ''; + } + { plugin = vimwiki; config = '' - let g:vimwiki_list = [ - { - 'path': '~/notes/', - 'syntax': 'markdown', - 'ext': '.md' - } - ] + let g:vimwiki_list = [ { 'path': '~/notes/', 'syntax': 'markdown', 'ext': '.md' } ] + nnoremap wt + nnoremap wt + nmap VimwikiNextLink + nmap VimwikiPrevLink + let g:vimwiki_key_mappings = { 'headers': 0, 'text_objs': 0, 'lists': 0, 'lists_return': 0, 'html': 0 } ''; } ]; diff --git a/home/nvim/nvim-cmp.lua b/home/nvim/nvim-cmp.lua index d6768a5..9d64ae5 100644 --- a/home/nvim/nvim-cmp.lua +++ b/home/nvim/nvim-cmp.lua @@ -67,7 +67,7 @@ cmp.setup.cmdline(':', { -- Set up lspconfig. local capabilities = require('cmp_nvim_lsp').default_capabilities() -- Replace with each lsp server you've enabled. -vim.lsp.config('', { - capabilities = capabilities -}) -vim.lsp.enable('') +-- vim.lsp.config('', { +-- capabilities = capabilities +-- }) +-- vim.lsp.enable('') From 40539ae163c966e19ff218d335141b382ac4d6f0 Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 5 Feb 2026 00:25:04 +0100 Subject: [PATCH 14/44] prep roundcube, from ktiu.net, nvim stuff --- home/fish.nix | 4 ++++ home/mail/default.nix | 7 +++++-- home/nvim/config.vim | 20 ++++++++++++++++---- home/nvim/default.nix | 18 ++++++++++++------ system/mail-server/roundcube.nix | 21 +++++++++++++++++++-- 5 files changed, 56 insertions(+), 14 deletions(-) diff --git a/home/fish.nix b/home/fish.nix index 6570f73..b8fd587 100644 --- a/home/fish.nix +++ b/home/fish.nix @@ -53,6 +53,10 @@ end end + function diary --description 'Create or edit today\'s diary entry' + nvim -c "call Diary()" + end + set -U fish_prompt_pwd_dir_length 0 function fish_prompt --description "Write out the prompt" diff --git a/home/mail/default.nix b/home/mail/default.nix index cb69326..1eebf52 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -3,10 +3,13 @@ { programs.msmtp = { enable = true; - configContent = '' + configContent = lib.mkOrder 1200 '' defaults logfile ${config.xdg.stateHome}/msmtp/msmtp.log port 587 + + account ktiu : t9e + from *@ktiu.net ''; }; @@ -136,7 +139,7 @@ }; msmtp = { enable = true; - extraConfig.from = "*@(ktiu.net|t9e.me)"; + extraConfig.from = "*@t9e.me"; }; passwordCommand = "pass mail/arielle.ktiu.net"; }; diff --git a/home/nvim/config.vim b/home/nvim/config.vim index 2b3d0e5..5213e5f 100644 --- a/home/nvim/config.vim +++ b/home/nvim/config.vim @@ -23,6 +23,9 @@ set splitright set tabstop=2 set updatetime=300 +" set foldmethod=expr +" set foldexpr=nvim_treesitter#foldexpr() + let g:netrw_liststyle = 3 let g:netrw_fastbrowse = 0 @@ -48,8 +51,17 @@ xnoremap i% GoggV onoremap i% :normal vi% function CreateNote(title) - execute "file ~/notes/" . strftime("%Y-%m-%d") . "_" . join(split(tolower(a:title)), "_") . ".md" - execute "set ft=markdown" - execute "normal! i" . a:title - execute "normal V\yaml_note\" + execute "VimwikiIndex" + execute "VimwikiGoto " . a:title endfunction + +function Diary() + execute "VimwikiMakeDiaryNote" +endfunction + +" function CreateNote(title) +" execute "file ~/notes/" . strftime("%Y-%m-%d") . "_" . join(split(tolower(a:title)), "_") . ".md" +" execute "set ft=markdown" +" execute "normal! i" . a:title +" execute "normal V\yaml_note\" +" endfunction diff --git a/home/nvim/default.nix b/home/nvim/default.nix index 1cec2fb..c83d287 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ lib, pkgs, ... }: { home.packages = with pkgs; [ @@ -6,6 +6,7 @@ marksman nil typescript-language-server + vim-language-server ]; programs.neovim = { @@ -30,8 +31,9 @@ { plugin = fugitive; + type = "lua"; config = '' - nnoremap g :Git + vim.api.nvim_set_keymap("n", "g", ":Git", { noremap = true, silent = true }) ''; } @@ -43,9 +45,9 @@ vim.api.nvim_set_keymap('i', '', '(fzf-complete-word)', { silent = true }) vim.api.nvim_set_keymap('i', '', '(fzf-complete-line)', { silent = true }) - vim.api.nvim_set_keymap('n', '', '(fzf-maps-n)', { silent = true }) - vim.api.nvim_set_keymap('x', '', '(fzf-maps-x)', { silent = true }) - vim.api.nvim_set_keymap('o', '', '(fzf-maps-o)', { silent = true }) + vim.api.nvim_set_keymap('n', '', '(fzf-maps-n)', { silent = true }) + vim.api.nvim_set_keymap('x', '', '(fzf-maps-x)', { silent = true }) + vim.api.nvim_set_keymap('o', '', '(fzf-maps-o)', { silent = true }) vim.api.nvim_set_keymap('n', 'b', ':Buffers', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', 'o', ':Files', { noremap = true, silent = true }) @@ -107,11 +109,14 @@ vim.lsp.enable('r_language_server') vim.lsp.enable('texlab') vim.lsp.enable('ts_ls') + vim.lsp.enable('vimls') vim.api.nvim_del_keymap('i', '') ''; } + (nvim-treesitter.withPlugins (p: [ p.nix p.lua p.r p.typescript ])) + { plugin = papercolor-theme; config = '' @@ -155,10 +160,11 @@ { plugin = vim-pandoc; config = '' - let g:pandoc#modules#disabled = ["completion", "command", "menu", "completion"] + let g:pandoc#modules#disabled = ["completion", "command", "menu"] ''; } + vim-pandoc-syntax vim-repeat { diff --git a/system/mail-server/roundcube.nix b/system/mail-server/roundcube.nix index a8e704d..9379620 100644 --- a/system/mail-server/roundcube.nix +++ b/system/mail-server/roundcube.nix @@ -1,9 +1,15 @@ -{ config, pkgs, ... }: +{ config, lib, ... }: + +let + + webmailHostName = "webmail.${config.networking.domain}"; + +in { services.roundcube = { enable = true; - hostName = "webmail.ktiu.net"; + hostName = webmailHostName; extraConfig = '' $config['smtp_host'] = 'tls://%h'; $config['smtp_conn_options'] = [ @@ -14,4 +20,15 @@ ]; ''; }; + + # not sure why this is currently working w/o the following + # + # services.nginx.virtualHosts."${webmailHostName}" = { + # enableACME = lib.mkForce false; + # useACMEHost = config.networking.domain; + # }; + # security.acme.certs."${config.networking.domain}".extraDomainNames = [ + # webmailHostName + # ]; + } From 9fdeb99a6179d2aca1cc3546282a79f7f936b06d Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 12 Feb 2026 15:28:48 +0100 Subject: [PATCH 15/44] diesdas --- home/aichat.nix | 6 ++ home/calendars.nix | 4 +- home/mail/bindings.neomuttrc | 82 ++++++++----------- home/mail/config.neomuttrc | 41 ++-------- home/mail/default.nix | 143 +++++++++------------------------ home/mail/smime.neomuttrc | 24 ------ home/nvim/config.vim | 4 +- home/nvim/default.nix | 27 ++++++- home/nvim/nvim-cmp.lua | 37 +++------ system/desktop/yubikey-pam.nix | 3 +- system/web-server/dex.nix | 2 +- 11 files changed, 122 insertions(+), 251 deletions(-) delete mode 100644 home/mail/smime.neomuttrc diff --git a/home/aichat.nix b/home/aichat.nix index e2a927a..cdbc120 100644 --- a/home/aichat.nix +++ b/home/aichat.nix @@ -5,4 +5,10 @@ aichat glow ]; + + programs.fish.shellAliases = { + vibe = "aichat -c"; + clank = "aichat -e"; + slop = "aichat"; + }; } diff --git a/home/calendars.nix b/home/calendars.nix index e645f50..da4c27e 100644 --- a/home/calendars.nix +++ b/home/calendars.nix @@ -3,7 +3,7 @@ let myRemote = slug: { - passwordCommand = [ "pass" "ktiu/radicale" ]; + passwordCommand = [ "pass" "accounts/ktiu-radicale" ]; userName = "ktiu"; type = "caldav"; url = "https://kalender.ktiu.net/ktiu/${slug}"; @@ -127,7 +127,7 @@ in remote = { type = "caldav"; url = "https://cloud.gridisnotajournal.de/remote.php/dav/calendars/till/grid/"; - passwordCommand = [ "pass" "grid/nextcloud" ]; + passwordCommand = [ "pass" "uni/grid-caldav-nextcloud" ]; userName = "till"; }; }; diff --git a/home/mail/bindings.neomuttrc b/home/mail/bindings.neomuttrc index 92a2f00..be89bbd 100644 --- a/home/mail/bindings.neomuttrc +++ b/home/mail/bindings.neomuttrc @@ -1,25 +1,18 @@ # Navigation bind pager k previous-entry bind pager j next-entry -# bind index,pager \Cu half-up -# bind index,pager \Cd half-down -# bind pager gg top -# bind index gg first-entry -# bind pager G bottom -# bind index G last-entry -# bind index,pager N search-opposite bind index display-message bind index collapse-thread bind index,pager gf change-folder # Read HTML bind index,pager V noop -macro index,pager V "html" +macro index,pager V "html" "View as HTML" # compose bind compose p postpone-message bind compose P pgp-menu -# macro compose I "`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > "$tmpfile" && echo "$tmpfile"`" "attach image from clipboard" +macro compose I "\`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > \"$tmpfile\" && echo \"$tmpfile\"\`" "attach image from clipboard" bind editor complete-query bind editor ^T complete @@ -28,58 +21,47 @@ bind index,pager m noop macro index,pager mar "newn*" "Mark all read" # compose with signature management -macro index,pager @ "set signature=$my_signature" "Compose to sender" macro index,pager c "set signature=$my_signature" "Compose new message" -macro index,pager r "unset signature" "Reply to message" -macro index,pager a "unset signature" "Reply all" -macro index,pager f "unset signature" "Forward message" +macro index,pager r "unset signature" "Reply to message" +macro index,pager a "unset signature" "Reply all" +macro index,pager f "unset signature" "Forward message" # moving messages -macro index,pager J ":set resolve=no\nn:set resolve=yes\n$my_junk" \ - "Move to junk folder" -macro index,pager y ":set resolve=no\nn:set resolve=yes\n$mbox" \ - "Move message to the archive" -macro index,pager I "$spoolfile" "Move message to the inbox" +macro index,pager J ":set resolve=no\nn:set resolve=yes\n$my_junk" "Move to junk" +macro index,pager y ":set resolve=no\nn:set resolve=yes\n$mbox" "Move to archive" +macro index,pager I "$spoolfile" "Move to inbox" # switch folders -macro index,pager g! "$spoolfile" "Go to inbox" -macro index,pager gd "$postponed" "Go to drafts" -macro index,pager g< "$record" "Go to sent" -macro index,pager ga "$mbox" "Go to archive" -macro index,pager g> "$mbox" "Go to archive" -macro index,pager gt "$trash" "Go to trash" -macro index,pager gj "$my_junk" "Go to junk" +macro index,pager g! "$spoolfile" "Go to inbox" +macro index,pager gd "$postponed" "Go to drafts" +macro index,pager g< "$record" "Go to sent" +macro index,pager g> "$mbox" "Go to archive" +macro index,pager gt "$trash" "Go to trash" +macro index,pager gj "$my_junk" "Go to junk" # accounts -macro index,pager gu "~/.local/share/mail/gu/Inbox" "Go to GU" -# macro index,pager gp "+systemli/IMAP/Inbox" "Go to Systemli" -macro index,pager gm "~/.local/share/mail/t9e/Inbox" "Go to t9e" -# macro index,pager gm "+gmail/IMAP/Inbox" "Go to Gmail" -macro index,pager gk "~/.local/share/mail/ksh/Inbox" "Go to KSH" -macro index,pager gi "~/.local/share/mail/ktiu/Inbox" "Go to ktiu" -# macro index,pager gf "~/.local/share/mail/dkg/Inbox" "Go to DKG" +macro index,pager gu "~/.local/share/mail/gu/Inbox" "Go to gu" +macro index,pager gm "~/.local/share/mail/t9e/Inbox" "Go to t9e" +macro index,pager gk "~/.local/share/mail/ksh/Inbox" "Go to ksh" +macro index,pager gi "~/.local/share/mail/ktiu/Inbox" "Go to ktiu" macro index,pager L "all\n" "Show all messages (undo limit)" -# macro index,pager go "mbsync -c ~/.config/mbsync/mbsyncrc $my_mbsync_acct && notmuch new &" \ -# "Run mbsync to sync mail for this account" +macro index,pager go "mbsync $my_account && notmuch new" "Sync this account" +macro index,pager gO "mbsync -a && notmuch new" "Sync all accounts" -macro index,pager go "mbsync $my_mbsync_acct && notmuch new" \ +bind index,pager / noop +macro index,pager // "folder:/$my_account/" "Find in account" +macro index,pager g/ "" "Find in all accounts" +macro index,pager /! "folder:+$my_account/$my_nm_spoolfile" "Find in inbox" +macro index,pager /< "folder:+$my_account/$my_nm_record" "Find in sent" +macro index,pager /> "folder:+$my_account/$my_nm_mbox" "Find in archive" +macro index,pager /d "folder:+$my_account/$my_nm_postponed" "Find in drafts" +macro index,pager /t "folder:+$my_account/$my_nm_trash" "Find in trash" +macro index,pager /j "folder:+$my_account/$my_nm_junk" "Find in junk" -macro index,pager g/ "" "find in nm" +macro index,pager A "khard add-email --vcard-version=4.0" "Add sender to khard" -macro index,pager A \ - "khard add-email --vcard-version=4.0" \ - "add the sender email address to khard" +macro index,pager S " ripmime -i - -d ~/tmp && rm ~/tmp/textfile*" "Save all attachments" -macro index,pager S \ - " ripmime -i - -d ~/tmp && rm ~/tmp/textfile*" \ - "save all non-text attachments using ripmime" - -macro index,pager gb \ - " urlscan" \ - "extract URLs out of a message" - -macro index,pager gO \ - "mbsync -a && notmuch new" \ - "run mbsync to sync all mail" +macro index,pager gb " urlscan" "Extract URLs" diff --git a/home/mail/config.neomuttrc b/home/mail/config.neomuttrc index 870ebec..a41cf1a 100644 --- a/home/mail/config.neomuttrc +++ b/home/mail/config.neomuttrc @@ -3,10 +3,10 @@ source $alias_file set mailcap_path = ~/.config/neomutt/mailcap -# source ./smime.neomuttrc - set my_download_folder = ~/tmp +set shell = /bin/sh + # Caching and tmp set header_cache = $XDG_CACHE_HOME/neomutt/headers set message_cachedir = $XDG_CACHE_HOME/neomutt/bodies @@ -16,42 +16,24 @@ set tmpdir = $XDG_CACHE_HOME/neomutt/tmp # Basic options unset wait_key set mbox_type = Maildir -# set delete set mail_check_stats unset confirm_append unset beep unset mark_old set sleep_time = 0 -# set shell = /bin/bash # Sending set use_envelope_from -unset reverse_realname +unset reverse_real_name # Searching set nm_default_url = "notmuch:///home/till/.local/share/mail/" +set my_nm_spoolfile = 'Inbox' +set my_nm_postponed = 'Drafts' +set my_nm_record = 'Sent' +set my_nm_trash = 'Trash' -# Multi-account setup -# source ~/.config/neomutt/accounts/dkg.neomuttrc -# source ~/.config/neomutt/accounts/gu.neomuttrc -# bind index,pager g noop - -# folder-hook $folder/gu/ source ~/.config/neomutt/accounts/gu.neomuttrc -# folder-hook $folder/systemli/ source ~/.config/neomutt/accounts/systemli.neomuttrc -# folder-hook $folder/ks/ source ~/.config/neomutt/accounts/ks.neomuttrc -# folder-hook $folder/gmail/ source ~/.config/neomutt/accounts/gmail.neomuttrc -# folder-hook $folder/ktiu/ source ~/.config/neomutt/accounts/ktiu.neomuttrc -# folder-hook $folder/dkg/ source ~/.config/neomutt/accounts/dkg.neomuttrc -# folder-hook $folder/papa/ source ~/.config/neomutt/accounts/papa.neomuttrc - -folder-hook . source ~/.config/neomutt/bindings.neomuttrc - -# # Source config -# source ~/.config/neomutt/views.neomuttrc -# source ~/.config/neomutt/sidebar.neomuttrc -# source ~/.config/neomutt/colors.neomuttrc -# source ~/.config/neomutt/smime.neomuttrc -# source ~/.config/neomutt/pgp.neomuttrc +folder-hook . source ~/.config/neomutt/bindings.neomuttrc # Compose set editor = "nvim -c 'call woof#init#Init()'" @@ -118,13 +100,6 @@ color header brightgreen default "^(Subject)" color header yellow default "^(From|To|CC|BCC)" color header blue default "^Date" -## Status -# color status yellow default '\[ ↻ \]' -# color status green default '\[ ✔ \]' -# color status magenta default '\[ ٪ \]' -# color status black default '\[ [0-9]+ new \]' -# color status red default '\[ [0-9]+ to delete \]' - ## Mutt color message cyan default color error red default diff --git a/home/mail/default.nix b/home/mail/default.nix index 1eebf52..b00c1b9 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -1,37 +1,26 @@ { config, pkgs, lib, ... }: { - programs.msmtp = { - enable = true; - configContent = lib.mkOrder 1200 '' - defaults - logfile ${config.xdg.stateHome}/msmtp/msmtp.log - port 587 - - account ktiu : t9e - from *@ktiu.net - ''; - }; + programs.msmtp.enable = true; programs.mbsync.enable = true; + programs.notmuch.enable = true; + programs.neomutt = { enable = true; vimKeys = true; extraConfig = builtins.readFile ./config.neomuttrc; }; - programs.notmuch.enable = true; - xdg.configFile."neomutt/bindings.neomuttrc".source = ./bindings.neomuttrc; - xdg.configFile."neomutt/smime.neomuttrc".source = ./smime.neomuttrc; xdg.configFile."neomutt/mailcap".source = ./neomutt_mailcap; accounts.email = { maildirBasePath = "${config.xdg.dataHome}/mail"; accounts = { - gu = { + gu = { name, ... }: { primary = true; address = "straube@geo.uni-frankfurt.de"; realName = "Till Straube"; @@ -39,7 +28,6 @@ smtp.host = "smtpauth.rz.uni-frankfurt.de"; smtp.tls.useStartTls = true; userName = "tstraube"; - notmuch.enable = true; passwordCommand = "pass uni/hrz"; signature = { text = '' @@ -49,6 +37,7 @@ ''; showSignature = "append"; }; + notmuch.enable = true; mbsync = { enable = true; create = "maildir"; @@ -57,11 +46,15 @@ msmtp.enable = true; neomutt = { enable = true; - sendMailCommand = lib.getExe pkgs.msmtp; + sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ name }"; extraConfig = '' + set my_account='${ name }' + set mbox='+Archive' + set my_nm_mbox='Archive' + set my_junk='+Spamverdacht' - set my_mbsync_acct='gu' + set my_nm_junk='Spamverdacht' set crypt_auto_smime unset crypt_auto_pgp @@ -71,10 +64,8 @@ set crypt_replysign set crypt_replysignencrypted set crypt_verify_sig - # set smime_default_key = "f1355556.0" set smime_sign_as = "f1355556.0" set pgp_default_key = "" - # unset crypt_use_gpgme unalternates * alternates ^straube@em.uni-frankfurt.de$ \ @@ -82,40 +73,37 @@ ^tstraube@rz.uni-frankfurt.de$ \ ^tstraube@uni-frankfurt.de$ unset reverse_name - set my_signature = ${ - pkgs.writeText - "signature.txt" - config.accounts.email.accounts.gu.signature.text - } + + set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.gu.signature.text } color status blue default ''; }; }; - t9e = { + t9e = { name, ... }: { address = "till.straube@t9e.me"; realName = "Till Straube"; imap.host = "arielle.ktiu.net"; smtp.host = "arielle.ktiu.net"; smtp.tls.useStartTls = true; - notmuch.enable = true; userName = "till.straube@t9e.me"; signature.text = '' Till Straube (he/him) PGP key: https://keys.openpgp.org/search?q=till.straube@t9e.me ''; - signature.showSignature = "append"; - gpg = { - key = "5FA6782F543D12ED07110780BA1B73F10BABF8E3"; - signByDefault = true; - }; + gpg.signByDefault = true; + notmuch.enable = true; neomutt = { enable = true; - sendMailCommand = lib.getExe pkgs.msmtp; + sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ name }"; extraConfig = '' - set my_mbsync_acct='t9e' + set my_mbsync_account='${ name }' + set mbox='+Archive' + set my_nm_mbox='Archive' + set my_junk='+Junk' + set my_nm_junk='Junk' set crypt_auto_pgp unset crypt_auto_smime @@ -124,11 +112,7 @@ alternates @t9e.me$ @ktiu.net$ set reverse_name - set my_signature = ${ - pkgs.writeText - "signature.txt" - config.accounts.email.accounts.t9e.signature.text - } + set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.t9e.signature.text } color status green default ''; }; @@ -139,87 +123,37 @@ }; msmtp = { enable = true; - extraConfig.from = "*@t9e.me"; + extraConfig.port = "587"; }; - passwordCommand = "pass mail/arielle.ktiu.net"; + passwordCommand = "pass accounts/ktiu-imap"; }; - ktiu = { - address = "till@ktiu.net"; - realName = "Till Straube"; - imap.host = "shorbut.ktiu.net"; - smtp.host = "shorbut.ktiu.net"; - smtp.tls.useStartTls = true; - notmuch.enable = true; - userName = "till"; - signature.text = '' - Till Straube (he/him) - PGP key: https://keys.openpgp.org/search?q=till@ktiu.net - ''; - signature.showSignature = "append"; - gpg = { - key = "5FA6782F543D12ED07110780BA1B73F10BABF8E3"; - signByDefault = true; - }; - neomutt = { - enable = true; - sendMailCommand = lib.getExe pkgs.msmtp; - extraConfig = '' - set my_mbsync_acct='ktiu' - - set mbox='+Archive' - set my_junk='+Junk' - - set crypt_auto_pgp - unset crypt_auto_smime - - unalternates * - alternates @ktiu.net$ - set reverse_name - set my_signature = ${ - pkgs.writeText - "signature.txt" - config.accounts.email.accounts.ktiu.signature.text - } - color status green default - ''; - }; - mbsync = { - enable = true; - create = "maildir"; - expunge = "both"; - }; - msmtp = { - enable = false; - # extraConfig.from = "*@ktiu.net"; - }; - passwordCommand = "secret-tool lookup server shorbut.ktiu.net account till"; - }; - - ksh = { + ksh = { name, ...}: { address = "kein_schlussstrich_hessen@systemli.org"; realName = "Kein Schlussstrich Hessen"; imap.host = "mail.systemli.org"; smtp.host = "mail.systemli.org"; smtp.tls.useStartTls = true; - notmuch.enable = true; userName = "kein_schlussstrich_hessen@systemli.org"; signature.text = '' Kein Schlussstrich Hessen PGP Key: https://keys.openpgp.org/search?q=kein_schlussstrich_hessen@systemli.org ''; signature.showSignature = "append"; + gpg.signByDefault = true; + notmuch.enable = true; neomutt = { enable = true; - # sendMailCommand = "/home/till/.nix-profile/bin/msmtp"; - sendMailCommand = lib.getExe pkgs.msmtp; + sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ name }"; extraConfig = '' - set my_mbsync_acct='ksh' + set my_mbsync_account='${ name }' + set mbox='+Erledigt' + set my_nm_mbox='Erledigt' + set my_junk='+Junk' - set postponed='+Drafts' - set record='+Sent' - set trash='+Trash' + set my_nm_junk='Junk' + set crypt_auto_pgp unset crypt_auto_smime @@ -238,11 +172,8 @@ create = "maildir"; expunge = "both"; }; - msmtp = { - enable = true; - extraConfig.from = "kein_schlussstrich_hessen@systemli.org"; - }; - passwordCommand = "pass other/ksh_systemli"; + msmtp.enable = true; + passwordCommand = "pass ksh/systemli"; }; }; }; diff --git a/home/mail/smime.neomuttrc b/home/mail/smime.neomuttrc deleted file mode 100644 index 60f57e5..0000000 --- a/home/mail/smime.neomuttrc +++ /dev/null @@ -1,24 +0,0 @@ -# Locations -# set smime_ca_location="~/.keys/neomutt/smime/ca" -# set smime_certificates="~/.keys/neomutt/smime/public" -# set smime_keys="~/.keys/neomutt/smime/private" - -# Commands (smime_keys) -set smime_pk7out_command="openssl smime -verify -in %f -noverify -pk7out" -set smime_get_cert_command="openssl pkcs7 -print_certs -in %f" -set smime_get_signer_cert_command="openssl smime -verify -in %f -noverify -signer %c -out /dev/null" -set smime_get_cert_email_command="openssl x509 -in %f -noout -email" -set smime_import_cert_command="smime_keys add_cert %f" - -# Outgoing -set smime_encrypt_with="aes256" -set smime_encrypt_command="openssl smime -encrypt -%a -outform DER -in %f %c" -set smime_sign_digest_alg="sha256" -set smime_sign_command="openssl smime -sign -md %d -signer %c -inkey %k -passin stdin -in %f -certfile %i -outform DER" - -# Incoming -set smime_decrypt_command="openssl smime -decrypt -passin stdin -inform DER -in %f -inkey %k -recip %c" -set smime_verify_command="openssl smime -verify -inform DER -in %s %C -content %f" -set smime_verify_opaque_command="\ -openssl smime -verify -inform DER -in %s %C || \ -openssl smime -verify -inform DER -in %s -noverify 2>/dev/null" diff --git a/home/nvim/config.vim b/home/nvim/config.vim index 5213e5f..b4cda0b 100644 --- a/home/nvim/config.vim +++ b/home/nvim/config.vim @@ -23,8 +23,8 @@ set splitright set tabstop=2 set updatetime=300 -" set foldmethod=expr -" set foldexpr=nvim_treesitter#foldexpr() +set foldmethod=expr +set foldexpr=nvim_treesitter#foldexpr() let g:netrw_liststyle = 3 let g:netrw_fastbrowse = 0 diff --git a/home/nvim/default.nix b/home/nvim/default.nix index c83d287..7d3e0ff 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -1,4 +1,4 @@ -{ lib, pkgs, ... }: +{ pkgs, lib, ... }: { home.packages = with pkgs; [ @@ -73,7 +73,7 @@ nnoremap [og :Goyo 80 nnoremap ]og :Goyo! ''; - } + } { plugin = limelight-vim; config = '' @@ -115,7 +115,23 @@ ''; } - (nvim-treesitter.withPlugins (p: [ p.nix p.lua p.r p.typescript ])) + { + plugin = (nvim-treesitter.withPlugins (p: [ p.nix p.lua p.r p.typescript ])); + type = "lua"; + config = '' + vim.api.nvim_create_autocmd('FileType', { + pattern = { 'nix', 'markdown', 'lua', 'r' }, + callback = function() + -- Enable Tree-sitter-based folding + vim.o.foldexpr = 'v:lua.vim.treesitter.foldexpr()' + vim.o.foldmethod = 'expr' + -- Optional: configure fold behavior + vim.o.foldlevel = 99 + vim.o.foldlevelstart = 99 + end, + }) + ''; + } { plugin = papercolor-theme; @@ -154,7 +170,10 @@ ''; } - vim-fish + { + plugin = vim-fish; + } + vim-nix { diff --git a/home/nvim/nvim-cmp.lua b/home/nvim/nvim-cmp.lua index 9d64ae5..7ac7e74 100644 --- a/home/nvim/nvim-cmp.lua +++ b/home/nvim/nvim-cmp.lua @@ -8,18 +8,15 @@ cmp.setup({ end, }, - window = { - -- completion = cmp.config.window.bordered(), - -- documentation = cmp.config.window.bordered(), - }, - - mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), - }), + mapping = cmp.mapping.preset.insert( + { + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = false }), + } + ), sources = cmp.config.sources({ { name = 'cmp_pandoc' }, @@ -34,17 +31,6 @@ cmp.setup({ }) --- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below --- Set configuration for specific filetype. ---[[ cmp.setup.filetype('gitcommit', { - sources = cmp.config.sources({ - { name = 'git' }, - }, { - { name = 'buffer' }, - }) -}) -require("cmp_git").setup() ]]-- - -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), @@ -66,8 +52,3 @@ cmp.setup.cmdline(':', { -- Set up lspconfig. local capabilities = require('cmp_nvim_lsp').default_capabilities() --- Replace with each lsp server you've enabled. --- vim.lsp.config('', { --- capabilities = capabilities --- }) --- vim.lsp.enable('') diff --git a/system/desktop/yubikey-pam.nix b/system/desktop/yubikey-pam.nix index 8ef8248..3544d2d 100644 --- a/system/desktop/yubikey-pam.nix +++ b/system/desktop/yubikey-pam.nix @@ -4,8 +4,9 @@ services.pcscd.enable = true; environment.systemPackages = with pkgs; [ - yubikey-personalization keymapp + yubikey-personalization + yubikey-manager ]; services.udev = { diff --git a/system/web-server/dex.nix b/system/web-server/dex.nix index 1708e36..d9ad4cc 100644 --- a/system/web-server/dex.nix +++ b/system/web-server/dex.nix @@ -19,7 +19,7 @@ in { { id = "outline"; name = "Outline Client"; - redirectURIs = [ "https://${outline.hostname}/auth/oidc.callback" ]; + redirectURIs = [ "https://${config.services.outline.hostname}/auth/oidc.callback" ]; secretFile = "/var/custom-access/outline-oidc-secret.txt"; } ]; From 438cf6da97046357ec68f9628f9c383f96ede8d8 Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 12 Feb 2026 15:33:40 +0100 Subject: [PATCH 16/44] list reply --- home/mail/bindings.neomuttrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/mail/bindings.neomuttrc b/home/mail/bindings.neomuttrc index be89bbd..541ae3b 100644 --- a/home/mail/bindings.neomuttrc +++ b/home/mail/bindings.neomuttrc @@ -25,6 +25,8 @@ macro index,pager c "set signature=$my_signature" "C macro index,pager r "unset signature" "Reply to message" macro index,pager a "unset signature" "Reply all" macro index,pager f "unset signature" "Forward message" +# macro index,pager l "unset signature" "Forward message" +macro index,pager l "" "Reply to list" # moving messages macro index,pager J ":set resolve=no\nn:set resolve=yes\n$my_junk" "Move to junk" From f7fd3a7fe91c10e44cd2713f5dbfb6cab1dddca8 Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 12 Feb 2026 15:36:56 +0100 Subject: [PATCH 17/44] no sig on list reply --- home/mail/bindings.neomuttrc | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/home/mail/bindings.neomuttrc b/home/mail/bindings.neomuttrc index 541ae3b..bcffc0e 100644 --- a/home/mail/bindings.neomuttrc +++ b/home/mail/bindings.neomuttrc @@ -1,9 +1,9 @@ # Navigation -bind pager k previous-entry -bind pager j next-entry -bind index display-message -bind index collapse-thread -bind index,pager gf change-folder +bind pager k previous-entry +bind pager j next-entry +bind index display-message +bind index collapse-thread +bind index,pager gf change-folder # Read HTML bind index,pager V noop @@ -25,8 +25,7 @@ macro index,pager c "set signature=$my_signature" "C macro index,pager r "unset signature" "Reply to message" macro index,pager a "unset signature" "Reply all" macro index,pager f "unset signature" "Forward message" -# macro index,pager l "unset signature" "Forward message" -macro index,pager l "" "Reply to list" +macro index,pager l "unset signature" "List reply" # moving messages macro index,pager J ":set resolve=no\nn:set resolve=yes\n$my_junk" "Move to junk" From 8099faa9ae4d2a2648440bc45db7002f6dc0cd30 Mon Sep 17 00:00:00 2001 From: Till Date: Mon, 16 Feb 2026 01:41:59 +0100 Subject: [PATCH 18/44] mail by index --- home/mail/bindings.neomuttrc | 52 ------- home/mail/config.neomuttrc | 73 ++------- home/mail/default.nix | 292 +++++++++++++++++++++-------------- 3 files changed, 186 insertions(+), 231 deletions(-) diff --git a/home/mail/bindings.neomuttrc b/home/mail/bindings.neomuttrc index bcffc0e..833af0d 100644 --- a/home/mail/bindings.neomuttrc +++ b/home/mail/bindings.neomuttrc @@ -1,52 +1,5 @@ -# Navigation -bind pager k previous-entry -bind pager j next-entry -bind index display-message -bind index collapse-thread -bind index,pager gf change-folder - -# Read HTML -bind index,pager V noop -macro index,pager V "html" "View as HTML" # compose -bind compose p postpone-message -bind compose P pgp-menu -macro compose I "\`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > \"$tmpfile\" && echo \"$tmpfile\"\`" "attach image from clipboard" - -bind editor complete-query -bind editor ^T complete -bind index,pager a group-reply -bind index,pager m noop -macro index,pager mar "newn*" "Mark all read" - -# compose with signature management -macro index,pager c "set signature=$my_signature" "Compose new message" -macro index,pager r "unset signature" "Reply to message" -macro index,pager a "unset signature" "Reply all" -macro index,pager f "unset signature" "Forward message" -macro index,pager l "unset signature" "List reply" - -# moving messages -macro index,pager J ":set resolve=no\nn:set resolve=yes\n$my_junk" "Move to junk" -macro index,pager y ":set resolve=no\nn:set resolve=yes\n$mbox" "Move to archive" -macro index,pager I "$spoolfile" "Move to inbox" - -# switch folders -macro index,pager g! "$spoolfile" "Go to inbox" -macro index,pager gd "$postponed" "Go to drafts" -macro index,pager g< "$record" "Go to sent" -macro index,pager g> "$mbox" "Go to archive" -macro index,pager gt "$trash" "Go to trash" -macro index,pager gj "$my_junk" "Go to junk" - -# accounts -macro index,pager gu "~/.local/share/mail/gu/Inbox" "Go to gu" -macro index,pager gm "~/.local/share/mail/t9e/Inbox" "Go to t9e" -macro index,pager gk "~/.local/share/mail/ksh/Inbox" "Go to ksh" -macro index,pager gi "~/.local/share/mail/ktiu/Inbox" "Go to ktiu" - -macro index,pager L "all\n" "Show all messages (undo limit)" macro index,pager go "mbsync $my_account && notmuch new" "Sync this account" macro index,pager gO "mbsync -a && notmuch new" "Sync all accounts" @@ -61,8 +14,3 @@ macro index,pager /d "folder:+$my_account/$my_nm_po macro index,pager /t "folder:+$my_account/$my_nm_trash" "Find in trash" macro index,pager /j "folder:+$my_account/$my_nm_junk" "Find in junk" -macro index,pager A "khard add-email --vcard-version=4.0" "Add sender to khard" - -macro index,pager S " ripmime -i - -d ~/tmp && rm ~/tmp/textfile*" "Save all attachments" - -macro index,pager gb " urlscan" "Extract URLs" diff --git a/home/mail/config.neomuttrc b/home/mail/config.neomuttrc index a41cf1a..da13972 100644 --- a/home/mail/config.neomuttrc +++ b/home/mail/config.neomuttrc @@ -1,71 +1,26 @@ +# Alias + set alias_file = ~/.local/share/neomutt/aliases.neomuttrc source $alias_file -set mailcap_path = ~/.config/neomutt/mailcap +# External set my_download_folder = ~/tmp -set shell = /bin/sh - -# Caching and tmp -set header_cache = $XDG_CACHE_HOME/neomutt/headers -set message_cachedir = $XDG_CACHE_HOME/neomutt/bodies -set header_cache_backend = "lmdb" -set tmpdir = $XDG_CACHE_HOME/neomutt/tmp - -# Basic options -unset wait_key -set mbox_type = Maildir -set mail_check_stats -unset confirm_append -unset beep -unset mark_old -set sleep_time = 0 - -# Sending -set use_envelope_from -unset reverse_real_name - -# Searching -set nm_default_url = "notmuch:///home/till/.local/share/mail/" -set my_nm_spoolfile = 'Inbox' -set my_nm_postponed = 'Drafts' -set my_nm_record = 'Sent' -set my_nm_trash = 'Trash' - -folder-hook . source ~/.config/neomutt/bindings.neomuttrc - -# Compose -set editor = "nvim -c 'call woof#init#Init()'" -set edit_headers -set forward_format = "Fwd: %s" -set forward_attachments -set fast_reply -set include -set forward_quote -unset recall -set resume_draft_files -set abort_noattach_regex = "(attach|enclosed|anbei|anhängen|angehängt|anhang|anhänge|hängt an)" -set abort_noattach = ask-yes -set mime_type_query_command = "file -b --mime-type %s" -set query_command= "khard email --parsable '%s'" - # Status bar + set status_chars = "✔↻٪A" -set status_format = "— [ %r ] %f (%lB) %>— %m messages%?n? [ %n new ]?%?d? [ %d to delete ]?%?t? [ %t tagged ]? —" unset help # Index + set index_format = "%-25.25F %<[y?%<[7d?%<[d?%[ %H:%M]&%[%a %H:%M]>&%[%d.%m. %Hh]>&%[%d.%m.%Y]> %Z %?X?▼ &?%s" set strict_threads set send_charset = "utf-8:iso-8859-1:us-ascii" set charset = "utf-8" -# sorting -set sort = threads -set sort_aux = reverse-last-date-received - # Pager view + set pager_index_lines = 10 set pager_context = 3 set pager_stop @@ -81,31 +36,23 @@ alternative_order text/plain text/enriched text/html auto_view text/html # Attachments + set rfc2047_parameters set attach_save_dir = $my_download_folder -## Indicator -color indicator brightwhite brightblack +# Colors -## Index +color indicator brightwhite brightblack color index_flags brightmagenta default '.*' color index_date cyan default - -## New mail color index brightblack default '~N' - -## Header colors color header brightblack default ".*" color header brightgreen default "^(Subject)" color header yellow default "^(From|To|CC|BCC)" color header blue default "^Date" - -## Mutt color message cyan default color error red default color tilde black default - -## Pager color normal default default color attachment brightblack default color search black yellow @@ -117,8 +64,6 @@ color quoted4 red default color quoted5 brightred default color signature cyan default color underline black default - -## Email color body blue default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses color body blue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL color body red default "(BAD signature)" diff --git a/home/mail/default.nix b/home/mail/default.nix index b00c1b9..5133ecc 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -1,32 +1,63 @@ { config, pkgs, lib, ... }: -{ - programs.msmtp.enable = true; +let - programs.mbsync.enable = true; + makeConfig = accountName: + '' + unset reverse_name + unset crypt_auto_pgp + unset crypt_auto_smime + set my_account='${ accountName }' + macro index,pager / "tag:${ accountName } " + unalternates * + set nm_record_tags = "+sent -inbox -unread +${ accountName }"; + set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.${accountName}.signature.text } + set status_format = "— [ %r ] $my_account %f (%lB) %>— %m messages%?n? [ %n new ]?%?d? [ %d to delete ]?%?t? [ %t tagged ]? —" + ''; - programs.notmuch.enable = true; + makeAccount = accountName: { + signature.showSignature = "append"; + smtp.tls.useStartTls = true; + msmtp.enable = true; - programs.neomutt = { - enable = true; - vimKeys = true; - extraConfig = builtins.readFile ./config.neomuttrc; + mbsync = { + enable = true; + create = "maildir"; + expunge = "both"; + }; + + neomutt = { + enable = true; + sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ accountName }"; + }; + + notmuch = { + enable = true; + neomutt = { + virtualMailboxes = [ + { name = "Inbox"; query = "tag:${ accountName } and tag:inbox"; } + { name = "Archive"; query = "tag:${ accountName } and not tag:sent and not tag:draft"; } + { name = "Sent"; query = "tag:${ accountName } and tag:sent"; } + { name = "Drafts"; query = "tag:${ accountName } and tag:draft"; } + { name = "Spam"; query = "tag:${ accountName } and tag:spam"; } + { name = "Trash"; query = "tag:${ accountName } and tag:trash"; } + ]; + }; + }; }; - xdg.configFile."neomutt/bindings.neomuttrc".source = ./bindings.neomuttrc; - xdg.configFile."neomutt/mailcap".source = ./neomutt_mailcap; +in +{ accounts.email = { maildirBasePath = "${config.xdg.dataHome}/mail"; accounts = { - - gu = { name, ... }: { + gu = { name, ... }: lib.attrsets.recursiveUpdate (makeAccount name) { primary = true; address = "straube@geo.uni-frankfurt.de"; realName = "Till Straube"; imap.host = "imap.server.uni-frankfurt.de"; smtp.host = "smtpauth.rz.uni-frankfurt.de"; - smtp.tls.useStartTls = true; userName = "tstraube"; passwordCommand = "pass uni/hrz"; signature = { @@ -35,149 +66,180 @@ Dept. of Human Geography Goethe University Frankfurt ''; - showSignature = "append"; }; - notmuch.enable = true; - mbsync = { - enable = true; - create = "maildir"; - expunge = "both"; - }; - msmtp.enable = true; neomutt = { - enable = true; - sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ name }"; - extraConfig = '' - set my_account='${ name }' - - set mbox='+Archive' - set my_nm_mbox='Archive' - - set my_junk='+Spamverdacht' - set my_nm_junk='Spamverdacht' - - set crypt_auto_smime - unset crypt_auto_pgp - - set crypt_autosign - set crypt_replyencrypt - set crypt_replysign - set crypt_replysignencrypted - set crypt_verify_sig - set smime_sign_as = "f1355556.0" - set pgp_default_key = "" - - unalternates * - alternates ^straube@em.uni-frankfurt.de$ \ - ^tstraube@em.uni-frankfurt.de$ \ - ^tstraube@rz.uni-frankfurt.de$ \ - ^tstraube@uni-frankfurt.de$ - unset reverse_name - - set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.gu.signature.text } + extraConfig = makeConfig name + '' color status blue default + alternates ^tstraube@(em|rz)?.uni-frankfurt.de$ + set crypt_auto_smime ''; }; }; - t9e = { name, ... }: { + t9e = { name, ... }: lib.attrsets.recursiveUpdate (makeAccount name) { address = "till.straube@t9e.me"; realName = "Till Straube"; imap.host = "arielle.ktiu.net"; smtp.host = "arielle.ktiu.net"; - smtp.tls.useStartTls = true; userName = "till.straube@t9e.me"; signature.text = '' Till Straube (he/him) PGP key: https://keys.openpgp.org/search?q=till.straube@t9e.me ''; - gpg.signByDefault = true; - notmuch.enable = true; neomutt = { - enable = true; - sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ name }"; - extraConfig = '' - set my_mbsync_account='${ name }' - - set mbox='+Archive' - set my_nm_mbox='Archive' - - set my_junk='+Junk' - set my_nm_junk='Junk' - - set crypt_auto_pgp - unset crypt_auto_smime - - unalternates * - alternates @t9e.me$ @ktiu.net$ - set reverse_name - - set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.t9e.signature.text } + extraConfig = makeConfig name + '' color status green default + alternates @t9e.me$ @ktiu.net$ ^(tillkowski|till.straube)@gmail.com$ + set reverse_name + set crypt_auto_pgp ''; }; - mbsync = { - enable = true; - create = "maildir"; - expunge = "both"; - }; - msmtp = { - enable = true; - extraConfig.port = "587"; - }; + msmtp.extraConfig.port = "587"; passwordCommand = "pass accounts/ktiu-imap"; }; - ksh = { name, ...}: { + ksh = { name, ... }: lib.attrsets.recursiveUpdate (makeAccount name) { address = "kein_schlussstrich_hessen@systemli.org"; realName = "Kein Schlussstrich Hessen"; imap.host = "mail.systemli.org"; smtp.host = "mail.systemli.org"; - smtp.tls.useStartTls = true; userName = "kein_schlussstrich_hessen@systemli.org"; signature.text = '' Kein Schlussstrich Hessen PGP Key: https://keys.openpgp.org/search?q=kein_schlussstrich_hessen@systemli.org ''; - signature.showSignature = "append"; - gpg.signByDefault = true; - notmuch.enable = true; neomutt = { - enable = true; - sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ name }"; - extraConfig = '' - set my_mbsync_account='${ name }' - - set mbox='+Erledigt' - set my_nm_mbox='Erledigt' - - set my_junk='+Junk' - set my_nm_junk='Junk' - + extraConfig = makeConfig name + '' + color status red default set crypt_auto_pgp - unset crypt_auto_smime - - unalternates * - set reverse_name - set my_signature = ${ - pkgs.writeText - "signature.txt" - config.accounts.email.accounts.ksh.signature.text - } - color status cyan default ''; }; - mbsync = { - enable = true; - create = "maildir"; - expunge = "both"; - }; - msmtp.enable = true; passwordCommand = "pass ksh/systemli"; }; }; }; + programs.msmtp.enable = true; + + programs.mbsync.enable = true; + + programs.notmuch = { + enable = true; + search.excludeTags = [ "trash" "spam" ]; + new.tags = [ "new" "unread" ]; + hooks = { + preNew = '' + notmuch tag +draft -- folder:/\/Drafts\// not tag:draft + mbsync --all + ''; + postNew = '' + notmuch tag +gu -- tag:new path:gu/** + notmuch tag +t9e -- tag:new path:t9e/** + notmuch tag +ksh -- tag:new path:ksh/** + notmuch tag +inbox -- tag:new 'folder:"/\/Inbox$/"' + notmuch tag +sent -unread -- tag:new 'folder:"/\/Sent$/"' + notmuch tag +trash -unread -- tag:new 'folder:"/\/Trash$/"' + notmuch tag +draft -unread -- tag:new 'folder:"/\/Drafts$/"' + notmuch tag +spam -- tag:new 'folder:"/\/Spam$/"' + notmuch tag +spam -- tag:new 'folder:"/\/Junk$/"' + notmuch tag -new -- tag:new + ''; + }; + }; + + programs.neomutt = { + enable = true; + + vimKeys = true; + changeFolderWhenSourcingAccount = true; + editor = "nvim -c 'call woof#init#Init()'"; + sort = "reverse-date-received"; + unmailboxes = true; + + settings = { + abort_noattach = "ask-yes"; + abort_noattach_regex = "\"(attach|enclosed|anbei|anhängen|angehängt|anhang|anhänge|hängt an)\""; + # auto_edit = "yes"; + beep = "no"; + confirm_append = "no"; + crypt_auto_sign = "yes"; + crypt_replyencrypt = "yes"; + crypt_replysign = "yes"; + crypt_replysignencrypted = "yes"; + crypt_verify_sig = "yes"; + edit_headers = "yes"; + forward_attachments = "yes"; + forward_format = "\"Fwd: %s\""; + forward_quote = "yes"; + include = "yes"; + mail_check_stats = "yes"; + mailcap_path = builtins.path { path = ./neomutt_mailcap; }; + mark_old = "no"; + mbox_type = "Maildir"; + mime_type_query_command = "\"file -b --mime-type %s\""; + nm_record = "yes"; + query_command= "\"khard email --parsable '%s'\""; + recall = "no"; + resume_draft_files = "yes"; + reverse_real_name = "no"; + shell = "/bin/sh"; + sleep_time = "0"; + use_envelope_from = "yes"; + virtual_spool_file = "yes"; + wait_key = "no"; + }; + + binds = [ + { key = "k"; map = "pager"; action = "previous-entry"; } + { key = "j"; map = "pager"; action = "next-entry"; } + { key = ""; map = "index"; action = "display-message"; } + { key = ""; map = "index"; action = "collapse-thread"; } + { key = "gf"; map = [ "index" "pager" ]; action = "change-folder"; } + { key = "P"; map = "compose"; action = "pgp-menu"; } + { key = ""; map = "editor"; action = "complete-query"; } + { key = "a"; map = [ "index" "pager" ]; action = "group-reply"; } + { key = "m"; map = [ "index" "pager" ]; action = "noop"; } + ]; + + macros = [ + { key = "gu"; map = [ "index" "pager" ]; action = "tag:dummy:source ${config.xdg.configHome}/neomutt/gug!"; } + { key = "gm"; map = [ "index" "pager" ]; action = "tag:dummy:source ${config.xdg.configHome}/neomutt/t9eg!"; } + { key = "gk"; map = [ "index" "pager" ]; action = "tag:dummy:source ${config.xdg.configHome}/neomutt/kshg!"; } + + { key = "Y"; map = [ "index" "pager" ]; action = ""; } + { key = "y"; map = [ "index" "pager" ]; action = "-inbox -unread -spam -trash"; } + { key = "J"; map = [ "index" "pager" ]; action = "+spam -inbox -unread -trash"; } + { key = "I"; map = [ "index" "pager" ]; action = "+inbox -old -spam -trash"; } + { key = "Y"; map = [ "index" "pager" ]; action = ""; } + { key = "dd"; map = [ "index" "pager" ]; action = "+trash -inbox -unread -spam"; } + + { key = "g!"; map = [ "index" "pager" ]; action = "Inbox"; } + { key = "g<"; map = [ "index" "pager" ]; action = "Sent"; } + { key = "g>"; map = [ "index" "pager" ]; action = "Archive"; } + { key = "gj"; map = [ "index" "pager" ]; action = "Spam"; } + { key = "gd"; map = [ "index" "pager" ]; action = "Drafts"; } + { key = "gt"; map = [ "index" "pager" ]; action = "Trash"; } + + { key = "go"; map = [ "index" "pager" ]; action = "notmuch new"; } + { key = "V"; map = ["index" "pager"]; action = "html"; } + { key = "mar"; map = [ "index" "pager" ]; action = "newn*"; } + { key = "A"; map = [ "index" "pager" ]; action = "khard add-email --vcard-version=4.0"; } + { key = "S"; map = [ "index" "pager" ]; action = "ripmime -i - -d ~/tmp && rm ~/tmp/textfile*"; } + { key = "gb"; map = [ "index" "pager" ]; action = "urlscan"; } + { key = "I"; map = [ "compose" ]; action = "`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > \"$tmpfile\" && echo \"$tmpfile\"`"; } + + { key = "c"; map = [ "index" "pager" ]; action = "set signature=$my_signature"; } + { key = "r"; map = [ "index" "pager" ]; action = "unset signature"; } + { key = "a"; map = [ "index" "pager" ]; action = "unset signature"; } + { key = "f"; map = [ "index" "pager" ]; action = "unset signature"; } + { key = "l"; map = [ "index" "pager" ]; action = "unset signature"; } + ]; + + extraConfig = builtins.readFile ./config.neomuttrc; + }; + + xdg.configFile."neomutt/bindings.neomuttrc".source = ./bindings.neomuttrc; + programs.neovim.plugins = with pkgs.vimPlugins; [ { plugin = vim-pathogen; From 312d6d63efe87eee1a858782854af9937a883b23 Mon Sep 17 00:00:00 2001 From: Till Date: Fri, 27 Feb 2026 21:41:24 +0100 Subject: [PATCH 19/44] diesdas --- flake.nix | 21 +++- home/castget/castget.conf | 53 ---------- home/desktop-full.nix | 2 +- home/desktop-slim.nix | 7 +- home/devel.nix | 3 +- home/{gnome/default.nix => gnome.nix} | 12 ++- home/gnome/run-or-raise.conf | 25 ----- home/gnome/wallpaper_nix_paper_gray.svg | 128 ------------------------ home/gpg.nix | 3 +- home/mail/default.nix | 40 ++++++-- home/mail/neomutt_mailcap | 11 -- home/media.nix | 4 +- home/minimal.nix | 9 +- home/office-cli.nix | 1 - home/{tmux/default.nix => tmux.nix} | 22 ++-- home/tmux/jekyll.conf | 6 -- home/tmux/rloft.conf | 2 - home/tmux/vifm.conf | 1 - home/vifm.nix | 30 ++++++ home/vifm/default.nix | 13 --- home/vifm/light.vifm | 20 ---- system/mail-server/roundcube.nix | 4 +- system/web-server/letsencrypt.nix | 2 +- 23 files changed, 122 insertions(+), 297 deletions(-) delete mode 100644 home/castget/castget.conf rename home/{gnome/default.nix => gnome.nix} (92%) delete mode 100644 home/gnome/run-or-raise.conf delete mode 100644 home/gnome/wallpaper_nix_paper_gray.svg delete mode 100644 home/mail/neomutt_mailcap rename home/{tmux/default.nix => tmux.nix} (71%) delete mode 100644 home/tmux/jekyll.conf delete mode 100644 home/tmux/rloft.conf delete mode 100644 home/tmux/vifm.conf create mode 100644 home/vifm.nix delete mode 100644 home/vifm/default.nix delete mode 100644 home/vifm/light.vifm diff --git a/flake.nix b/flake.nix index 5170f3d..31617a5 100644 --- a/flake.nix +++ b/flake.nix @@ -25,12 +25,31 @@ specialArgs = { inherit inputs; }; modules = [ ./hosts/arielle + home-manager.nixosModules.home-manager { + home-manager = { + extraSpecialArgs = { inherit inputs; }; + useGlobalPkgs = true; + useUserPackages = true; + users = { + + till = { + imports = [ + ./home/on-server.nix + ./users/till/home.nix + ]; + }; + + }; + }; + } ]; }; homer = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; - modules = [ ./hosts/homer ]; + modules = [ + ./hosts/homer + ]; }; mila = nixpkgs.lib.nixosSystem { diff --git a/home/castget/castget.conf b/home/castget/castget.conf deleted file mode 100644 index cd4f148..0000000 --- a/home/castget/castget.conf +++ /dev/null @@ -1,53 +0,0 @@ -# vim: set ft=conf - -[2.5admins] -url=https://2.5admins.com/feed/podcast - -[50plus2] -url=https://50plus2.podigee.io/feed/mp3 -album_tag=50+2 - -[drei90] -url=http://feeds.feedburner.com/Drei90 -album_tag=drei90 - -[efpodcast] -url=https://www.eintracht-podcast.de/feed/mp3 - -[latenightlinux] -url=https://latenightlinux.com/feed/mp3 - -[linuxafterdark] -url=https://linuxafterdark.net/feed/podcast - -[linuxdevtime] -url=https://latenightlinux.com/feed/extra - -[linuxmatters] -url=https://linuxmatters.sh/episode/index.xml - -[logbuchnetzpolitik] -url=https://feeds.metaebene.me/lnp/mp3 -album_tag=Logbuch Netzpolitik - -[schlusskonferenz] -url=https://schlusskonferenz.podigee.io/feed/mp3 - -[tribünengespräch] -url=https://tribuenengespraech.podigee.io/feed/mp3 - -[wettbrötchen] -url=https://www.wett-broetchen.de/feed/mp3 -album_tag=Wettbrötchen - -[edeltalk] -url=https://cdn.julephosting.de/podcasts/573-edeltalk-mit-dominik-kevin/feed.rss -album_tag=Edeltalk - -[youredeadtome] -url=https://podcasts.files.bbci.co.uk/p07mdbhg.rss - -[*] -genre_tag=Podcast -spool=/home/till/.local/share/podcasts -filename=%(channel_title)_%(date)_%(title).mp3 diff --git a/home/desktop-full.nix b/home/desktop-full.nix index ea29f46..3ff2da1 100644 --- a/home/desktop-full.nix +++ b/home/desktop-full.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ ... }: { imports = [ diff --git a/home/desktop-slim.nix b/home/desktop-slim.nix index 9add985..dca19a8 100644 --- a/home/desktop-slim.nix +++ b/home/desktop-slim.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, lib, ... }: +{ pkgs, ... }: { imports = [ @@ -8,7 +8,7 @@ ./firefox.nix ./fonts.nix ./foot.nix - ./gnome + ./gnome.nix ./media.nix ./user-dirs.nix ]; @@ -25,8 +25,5 @@ zathura ]; - xdg.configFile."castget/castget.conf".source = ./castget/castget.conf; - services.syncthing.enable = true; - } diff --git a/home/devel.nix b/home/devel.nix index ba0cdca..0ff875b 100644 --- a/home/devel.nix +++ b/home/devel.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, lib, ... }: +{ config, pkgs, ... }: { home.file.".npmrc".text = '' @@ -10,6 +10,7 @@ bundix nodejs yarn-berry + yq duckdb tippecanoe pmtiles diff --git a/home/gnome/default.nix b/home/gnome.nix similarity index 92% rename from home/gnome/default.nix rename to home/gnome.nix index 4103a84..b7b8c4b 100644 --- a/home/gnome/default.nix +++ b/home/gnome.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ pkgs, ... }: { home.pointerCursor = { @@ -35,7 +35,6 @@ gtk-theme = "Adwaita"; }; "org/gnome/desktop/background" = { - picture-uri = "file://" + ./wallpaper_nix_paper_gray.svg; picture-options = "zoom"; }; "org/gnome/desktop/wm/keybindings" = { @@ -104,5 +103,12 @@ sleep-inactive-battery-timeout = 1200; }; }; - xdg.configFile."run-or-raise/shortcuts.conf".source = ./run-or-raise.conf; + + xdg.configFile."run-or-raise/shortcuts.conf".text = '' + b,firefox,, + f,nautilus,, + g:always-run,tmux new-window -n vifm vifm ~/desktop,foot, + return,foot,, + p,keepassxc,,, + ''; } diff --git a/home/gnome/run-or-raise.conf b/home/gnome/run-or-raise.conf deleted file mode 100644 index b4bc39d..0000000 --- a/home/gnome/run-or-raise.conf +++ /dev/null @@ -1,25 +0,0 @@ -b,firefox,, -f,nautilus,, -g:always-run,tmux new-window -n vifm vifm ~/desktop,foot, -return,foot,, -p,keepassxc,,, - -# You may use regular expression in title or wm_class. -# Just put the regular expression between slashes. -# E.g. to jump to pidgin conversation window you may use this line -# (that means any windows of wm_class Pidgin, not containing the title Buddy List)" -# KP_1,pidgin,Pidgin,/^((?!Buddy List).)*$/ - -# Have the mail always at numpad-click. -# KP_2,chromium-browser --app=https://mail.google.com/mail/u/0/#inbox - -# ============= -# Run only form -# ============= -# -# This line will launch notify-send command. -# h,notify-send Hello world - -# Blank lines are allowed. Line starting with "#" means a comment. -# Now delete these shortcuts and put here yours. -# How to know wm_class? Alt+f2, lg, "windows" tab (at least on Ubuntu 17.10) diff --git a/home/gnome/wallpaper_nix_paper_gray.svg b/home/gnome/wallpaper_nix_paper_gray.svg deleted file mode 100644 index f729f2d..0000000 --- a/home/gnome/wallpaper_nix_paper_gray.svg +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - diff --git a/home/gpg.nix b/home/gpg.nix index 554398a..8a54d51 100644 --- a/home/gpg.nix +++ b/home/gpg.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ pkgs, ... }: { @@ -15,7 +15,6 @@ programs.gpg = { enable = true; - # homedir = "${config.xdg.dataHome}/gnupg"; settings = { no-emit-version = true; no-comments = true; diff --git a/home/mail/default.nix b/home/mail/default.nix index 5133ecc..b9a709a 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -46,9 +46,25 @@ let }; }; + mailcap_path = pkgs.writeText "neomutt_mailcap" '' + application/pdf; zathura %s + multipart; xdg-open %s + text/html; firefox %s; description=HTML Text; nametemplate=%s.html; needsterminal + text/html; w3m -v -F -T text/html -dump %s; copiousoutput + text; neomutt %s + application; xdg-open %s + image; xdg-open %s + video; xdg-open %s + audio; xdg-open %s + message; xdg-open %s + model; xdg-open %s + ''; + in { + programs.mu.enable = true; + accounts.email = { maildirBasePath = "${config.xdg.dataHome}/mail"; accounts = { @@ -129,7 +145,7 @@ in new.tags = [ "new" "unread" ]; hooks = { preNew = '' - notmuch tag +draft -- folder:/\/Drafts\// not tag:draft + notmuch tag +draft -- 'folder:"/\/Drafts$/"' mbsync --all ''; postNew = '' @@ -159,7 +175,7 @@ in settings = { abort_noattach = "ask-yes"; abort_noattach_regex = "\"(attach|enclosed|anbei|anhängen|angehängt|anhang|anhänge|hängt an)\""; - # auto_edit = "yes"; + auto_edit = "yes"; beep = "no"; confirm_append = "no"; crypt_auto_sign = "yes"; @@ -171,34 +187,43 @@ in forward_attachments = "yes"; forward_format = "\"Fwd: %s\""; forward_quote = "yes"; + help = "no"; include = "yes"; mail_check_stats = "yes"; - mailcap_path = builtins.path { path = ./neomutt_mailcap; }; + mailcap_path = "${ mailcap_path }"; mark_old = "no"; + markers = "no"; mbox_type = "Maildir"; + menu_scroll = "yes"; mime_type_query_command = "\"file -b --mime-type %s\""; nm_record = "yes"; + pager_context = "3"; + pager_index_lines = "5"; + pager_stop = "yes"; query_command= "\"khard email --parsable '%s'\""; recall = "no"; resume_draft_files = "yes"; reverse_real_name = "no"; shell = "/bin/sh"; sleep_time = "0"; + smart_wrap = "yes"; + status_chars = "✔↻٪A"; + tilde = "yes"; use_envelope_from = "yes"; virtual_spool_file = "yes"; wait_key = "no"; }; binds = [ + { key = "m"; map = [ "index" "pager" ]; action = "noop"; } { key = "k"; map = "pager"; action = "previous-entry"; } { key = "j"; map = "pager"; action = "next-entry"; } { key = ""; map = "index"; action = "display-message"; } - { key = ""; map = "index"; action = "collapse-thread"; } + { key = ""; map = "index"; action = "entire-thread"; } { key = "gf"; map = [ "index" "pager" ]; action = "change-folder"; } - { key = "P"; map = "compose"; action = "pgp-menu"; } { key = ""; map = "editor"; action = "complete-query"; } - { key = "a"; map = [ "index" "pager" ]; action = "group-reply"; } - { key = "m"; map = [ "index" "pager" ]; action = "noop"; } + { key = "P"; map = "compose"; action = "pgp-menu"; } + { key = "p"; map = [ "compose" ]; action = "postpone-message"; } ]; macros = [ @@ -227,6 +252,7 @@ in { key = "S"; map = [ "index" "pager" ]; action = "ripmime -i - -d ~/tmp && rm ~/tmp/textfile*"; } { key = "gb"; map = [ "index" "pager" ]; action = "urlscan"; } { key = "I"; map = [ "compose" ]; action = "`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > \"$tmpfile\" && echo \"$tmpfile\"`"; } + { key = "p"; map = [ "compose" ]; action = ""; } { key = "c"; map = [ "index" "pager" ]; action = "set signature=$my_signature"; } { key = "r"; map = [ "index" "pager" ]; action = "unset signature"; } diff --git a/home/mail/neomutt_mailcap b/home/mail/neomutt_mailcap deleted file mode 100644 index 1718345..0000000 --- a/home/mail/neomutt_mailcap +++ /dev/null @@ -1,11 +0,0 @@ -application/pdf; zathura %s -multipart; xdg-open %s -text/html; firefox %s; description=HTML Text; nametemplate=%s.html; needsterminal -text/html; w3m -v -F -T text/html -dump %s; copiousoutput -text; neomutt %s -application; xdg-open %s -image; xdg-open %s -video; xdg-open %s -audio; xdg-open %s -message; xdg-open %s -model; xdg-open %s diff --git a/home/media.nix b/home/media.nix index 46e02e6..5c5e14c 100644 --- a/home/media.nix +++ b/home/media.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, lib, ... }: +{ pkgs, ... }: { home.packages = with pkgs; [ @@ -11,6 +11,4 @@ yt-dlp zathura ]; - - xdg.configFile."castget/castget.conf".source = ./castget/castget.conf; } diff --git a/home/minimal.nix b/home/minimal.nix index eeb7f44..a33684c 100644 --- a/home/minimal.nix +++ b/home/minimal.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, lib, ... }: +{ config, pkgs, ... }: { programs.home-manager.enable = true; @@ -20,12 +20,13 @@ imports = [ ./fish.nix - ./tmux - ./password-store.nix - ./vifm + ./vifm.nix ./nvim + + ./tmux.nix ./gpg.nix ./ssh.nix + ./password-store.nix ]; programs.nix-index = { diff --git a/home/office-cli.nix b/home/office-cli.nix index 5baf102..cf86068 100644 --- a/home/office-cli.nix +++ b/home/office-cli.nix @@ -9,7 +9,6 @@ home.packages = with pkgs; [ bat - castget ghostscript hunspell hunspellDicts.de_DE diff --git a/home/tmux/default.nix b/home/tmux.nix similarity index 71% rename from home/tmux/default.nix rename to home/tmux.nix index 7ce808d..5c54bc3 100644 --- a/home/tmux/default.nix +++ b/home/tmux.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ pkgs, ... }: { programs.tmux = { @@ -22,13 +22,19 @@ bind j select-pane -D bind k select-pane -U bind l select-pane -R + bind -r H resize-pane -L 5 + bind -r J resize-pane -D 5 + bind -r K resize-pane -U 5 + bind -r L resize-pane -R 5 bind c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'" bind C-c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'" # Layouts - bind f source-file ~/.config/tmux/vifm.conf - bind R source-file ~/.config/tmux/rloft.conf - bind J source-file ~/.config/tmux/jekyll.conf + bind f new-window -c '#{pane_current_path}' vifm + bind R source ${ pkgs.writeText "tmux-rloft" '' + split-window -c '#{pane_current_path}' -h R -q --no-save --no-restore; + select-pane -l + ''} # Unbind unbind p @@ -36,7 +42,6 @@ unbind % # Eye candy - # set-option -g status-position top set-option -g status-right "" set-option -g status-left "" set-option -g status-justify "centre" @@ -47,9 +52,10 @@ # Some more specifics set-option -g focus-events on + set -g base-index 1 + setw -g pane-base-index 1 + set -g default-terminal "tmux-256color" + set -as terminal-features ",xterm-256color:RGB" ''; }; - xdg.configFile."tmux/vifm.conf".source = ./vifm.conf; - xdg.configFile."tmux/rloft.conf".source = ./rloft.conf; - xdg.configFile."tmux/jekyll.conf".source = ./jekyll.conf; } diff --git a/home/tmux/jekyll.conf b/home/tmux/jekyll.conf deleted file mode 100644 index 8ecb9ee..0000000 --- a/home/tmux/jekyll.conf +++ /dev/null @@ -1,6 +0,0 @@ -split-window -c '#{pane_current_path}' -h nix-shell -send-keys "jekyll serve" Enter -resize-pane -x 40% -split-pane -c '#{pane_current_path}' "git status; fish" -select-pane -L -rename-window "jekyll" diff --git a/home/tmux/rloft.conf b/home/tmux/rloft.conf deleted file mode 100644 index 400c102..0000000 --- a/home/tmux/rloft.conf +++ /dev/null @@ -1,2 +0,0 @@ -split-window -c '#{pane_current_path}' -h R -q --no-save --no-restore -select-pane -l diff --git a/home/tmux/vifm.conf b/home/tmux/vifm.conf deleted file mode 100644 index 45fd508..0000000 --- a/home/tmux/vifm.conf +++ /dev/null @@ -1 +0,0 @@ -new-window -c '#{pane_current_path}' vifm diff --git a/home/vifm.nix b/home/vifm.nix new file mode 100644 index 0000000..d68ebbd --- /dev/null +++ b/home/vifm.nix @@ -0,0 +1,30 @@ +{ config, pkgs, ... }: + +{ + programs.vifm = { + enable = true; + extraConfig = " + colorscheme light + set vicmd=nvim + filetype * xdg-open + "; + }; + xdg.configFile."vifm/colors/light.vifm".text = '' + highlight clear + highlight Win cterm=none ctermfg=black ctermbg=default + highlight Directory cterm=none ctermfg=cyan ctermbg=default + highlight Link cterm=none ctermfg=yellow ctermbg=default + highlight BrokenLink cterm=none ctermfg=white ctermbg=red + highlight Socket cterm=none ctermfg=red ctermbg=default + highlight Device cterm=none ctermfg=red ctermbg=default + highlight Fifo cterm=none ctermfg=black ctermbg=cyan + highlight Executable cterm=none ctermfg=green ctermbg=default + highlight Selected cterm=bold ctermfg=magenta ctermbg=default + highlight CurrLine cterm=bold ctermfg=white ctermbg=magenta + highlight TopLine cterm=bold ctermfg=magenta ctermbg=default + highlight TopLineSel cterm=bold ctermfg=magenta ctermbg=white + highlight StatusLine cterm=bold ctermfg=magenta ctermbg=white + highlight CmdLine cterm=bold ctermfg=magenta ctermbg=default + highlight Border cterm=none ctermfg=default ctermbg=default + ''; +} diff --git a/home/vifm/default.nix b/home/vifm/default.nix deleted file mode 100644 index 4845d34..0000000 --- a/home/vifm/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.vifm = { - enable = true; - extraConfig = " - colorscheme light - set vicmd=nvim - filetype * xdg-open - "; - }; - xdg.configFile."vifm/colors/light.vifm".source = ./light.vifm; -} diff --git a/home/vifm/light.vifm b/home/vifm/light.vifm deleted file mode 100644 index f770398..0000000 --- a/home/vifm/light.vifm +++ /dev/null @@ -1,20 +0,0 @@ -highlight clear - -highlight Win cterm=none ctermfg=black ctermbg=default -highlight Directory cterm=none ctermfg=cyan ctermbg=default -highlight Link cterm=none ctermfg=yellow ctermbg=default -highlight BrokenLink cterm=none ctermfg=white ctermbg=red -highlight Socket cterm=none ctermfg=red ctermbg=default -highlight Device cterm=none ctermfg=red ctermbg=default -highlight Fifo cterm=none ctermfg=black ctermbg=cyan -highlight Executable cterm=none ctermfg=green ctermbg=default -highlight Selected cterm=bold ctermfg=magenta ctermbg=default -highlight CurrLine cterm=bold ctermfg=white ctermbg=magenta -highlight TopLine cterm=bold ctermfg=magenta ctermbg=default -highlight TopLineSel cterm=bold ctermfg=magenta ctermbg=white -highlight StatusLine cterm=bold ctermfg=magenta ctermbg=white -"highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black -highlight CmdLine cterm=bold ctermfg=magenta ctermbg=default -"highlight ErrorMsg cterm=none ctermfg=red ctermbg=black -highlight Border cterm=none ctermfg=default ctermbg=default -"highlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white diff --git a/system/mail-server/roundcube.nix b/system/mail-server/roundcube.nix index 9379620..5c48fc1 100644 --- a/system/mail-server/roundcube.nix +++ b/system/mail-server/roundcube.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, ... }: let @@ -24,6 +24,8 @@ in # not sure why this is currently working w/o the following # # services.nginx.virtualHosts."${webmailHostName}" = { + # onlySSL = true; + # forceSSL = lib.mkForce false; # enableACME = lib.mkForce false; # useACMEHost = config.networking.domain; # }; diff --git a/system/web-server/letsencrypt.nix b/system/web-server/letsencrypt.nix index 7e99212..9b462f9 100644 --- a/system/web-server/letsencrypt.nix +++ b/system/web-server/letsencrypt.nix @@ -5,7 +5,7 @@ acceptTerms = true; defaults.email = "till@ktiu.net"; certs."${config.networking.domain}" = { - domain = config.networking.domain; + # domain = config.networking.domain; webroot = "/var/lib/acme/.challenges"; group = config.services.nginx.group; extraDomainNames = [ config.networking.fqdn ]; From 96e5924fb00b63509d2ee344d4280c27faf95844 Mon Sep 17 00:00:00 2001 From: Till Date: Wed, 4 Mar 2026 19:50:45 +0100 Subject: [PATCH 20/44] nh --- flake.lock | 18 +++++++++--------- home/desktop-slim.nix | 2 +- home/firefox.nix | 2 +- home/foot.nix | 14 +++++++------- home/gpg.nix | 14 ++++++++------ home/hyprland.nix | 7 +++++++ home/mail/default.nix | 11 ++++++----- home/nvim/config.vim | 2 ++ home/nvim/default.nix | 4 ++-- home/password-store.nix | 9 +++------ home/plasma.nix | 5 +++++ hosts/nova/default.nix | 7 +++++-- system/desktop/cosmic.nix | 14 ++++++++++++++ system/desktop/default.nix | 5 +++++ system/desktop/gnome.nix | 8 ++++---- system/desktop/hyprland.nix | 29 +++++++++++++++++++++++++++++ system/desktop/plasma.nix | 18 ++++++++++++++++++ 17 files changed, 126 insertions(+), 43 deletions(-) create mode 100644 home/hyprland.nix create mode 100644 home/plasma.nix create mode 100644 system/desktop/cosmic.nix create mode 100644 system/desktop/hyprland.nix create mode 100644 system/desktop/plasma.nix diff --git a/flake.lock b/flake.lock index 97c4a34..4354c7b 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1769054619, - "narHash": "sha256-LCc0gbSgjehdy41Gi1H5WNxEuW9PtRHFVaPXoFzslQU=", + "lastModified": 1772596991, + "narHash": "sha256-awJJ4ATy9t8Svrx2z0zAftgXnUaGCFb2Ty0u036CnCQ=", "owner": "rycee", "repo": "nur-expressions", - "rev": "6509620630f68dc02ac3e99f15a67760778444ff", + "rev": "cd2d0893966c0a5c27345a9a72d0418b42b7e36d", "type": "gitlab" }, "original": { @@ -29,11 +29,11 @@ ] }, "locked": { - "lastModified": 1767910483, - "narHash": "sha256-MOU5YdVu4DVwuT5ztXgQpPuRRBjSjUGIdUzOQr9iQOY=", + "lastModified": 1772633058, + "narHash": "sha256-SO7JapRy2HPhgmqiLbfnW1kMx5rakPMKZ9z3wtRLQjI=", "owner": "nix-community", "repo": "home-manager", - "rev": "82fb7dedaad83e5e279127a38ef410bcfac6d77c", + "rev": "080657a04188aca25f8a6c70a0fb2ea7e37f1865", "type": "github" }, "original": { @@ -45,11 +45,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1768028080, - "narHash": "sha256-50aDK+8eLvsLK39TzQhKNq50/HcXyP4hyxOYoPoVxjo=", + "lastModified": 1772598333, + "narHash": "sha256-YaHht/C35INEX3DeJQNWjNaTcPjYmBwwjFJ2jdtr+5U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d03088749a110d52a4739348f39a63f84bb0be14", + "rev": "fabb8c9deee281e50b1065002c9828f2cf7b2239", "type": "github" }, "original": { diff --git a/home/desktop-slim.nix b/home/desktop-slim.nix index dca19a8..66f0da4 100644 --- a/home/desktop-slim.nix +++ b/home/desktop-slim.nix @@ -8,8 +8,8 @@ ./firefox.nix ./fonts.nix ./foot.nix - ./gnome.nix ./media.nix + # ./plasma.nix ./user-dirs.nix ]; diff --git a/home/firefox.nix b/home/firefox.nix index 9d79fe2..43418ef 100644 --- a/home/firefox.nix +++ b/home/firefox.nix @@ -1,7 +1,6 @@ { config, pkgs, inputs, osConfig, ... }: { - programs.firefox = { enable = true; policies = { @@ -149,6 +148,7 @@ user_pref("signon.rememberSignons", false); user_pref("toolkit.telemetry.enabled", false); user_pref("toolkit.telemetry.server", ""); + user_pref("widget.gtk.libadwaita-colors.enabled", false); ''; }; }; diff --git a/home/foot.nix b/home/foot.nix index a0fadb4..10dc8aa 100644 --- a/home/foot.nix +++ b/home/foot.nix @@ -8,13 +8,13 @@ main = { shell = "${pkgs.fish}/bin/fish -c 'tmux attach'"; pad = "34x34"; - # font = "JetBrains Mono:size=16"; - font = "Adwaita Mono:size=17"; - font-bold = "Adwaita Mono:size=17:weight=bold"; - font-italic = "Adwaita Mono:size=17:slant=italic"; - font-bold-italic = "Adwaita Mono:size=17:weight=boldslant=italic"; - initial-window-mode = "maximized"; - initial-color-theme = "dark"; + font = "JetBrains Mono:size=14"; + # font = "Adwaita Mono:size=17"; + # font-bold = "Adwaita Mono:size=17:weight=bold"; + # font-italic = "Adwaita Mono:size=17:slant=italic"; + # font-bold-italic = "Adwaita Mono:size=17:weight=boldslant=italic"; + # initial-window-mode = "maximized"; + # initial-color-theme = "dark"; }; mouse.hide-when-typing = "yes"; diff --git a/home/gpg.nix b/home/gpg.nix index 8a54d51..43886ae 100644 --- a/home/gpg.nix +++ b/home/gpg.nix @@ -6,12 +6,14 @@ pinentry-all ]; - services.gpg-agent = { - enable = true; - pinentry.package = pkgs.pinentry-gnome3; - pinentry.program = "pinentry-gnome3"; - enableSshSupport = true; - }; +# moved to system + +# services.gpg-agent = { +# enable = true; +# pinentry.package = pkgs.pinentry-all; +# pinentry.program = "pinentry"; +# # enableSshSupport = true; +# }; programs.gpg = { enable = true; diff --git a/home/hyprland.nix b/home/hyprland.nix new file mode 100644 index 0000000..005d6a6 --- /dev/null +++ b/home/hyprland.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + wayland.windowManager.hyprland = { + systemd.enable = false; + }; +} diff --git a/home/mail/default.nix b/home/mail/default.nix index b9a709a..f6dba07 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -51,6 +51,7 @@ let multipart; xdg-open %s text/html; firefox %s; description=HTML Text; nametemplate=%s.html; needsterminal text/html; w3m -v -F -T text/html -dump %s; copiousoutput + text/calendar; khal import %s text; neomutt %s application; xdg-open %s image; xdg-open %s @@ -216,13 +217,13 @@ in binds = [ { key = "m"; map = [ "index" "pager" ]; action = "noop"; } - { key = "k"; map = "pager"; action = "previous-entry"; } - { key = "j"; map = "pager"; action = "next-entry"; } - { key = ""; map = "index"; action = "display-message"; } + { key = "k"; map = [ "pager" ]; action = "previous-entry"; } + { key = "j"; map = [ "pager" ]; action = "next-entry"; } + { key = ""; map = [ "index" ]; action = "display-message"; } { key = ""; map = "index"; action = "entire-thread"; } { key = "gf"; map = [ "index" "pager" ]; action = "change-folder"; } - { key = ""; map = "editor"; action = "complete-query"; } - { key = "P"; map = "compose"; action = "pgp-menu"; } + { key = ""; map = [ "editor" ]; action = "complete-query"; } + { key = "P"; map = [ "compose" ]; action = "pgp-menu"; } { key = "p"; map = [ "compose" ]; action = "postpone-message"; } ]; diff --git a/home/nvim/config.vim b/home/nvim/config.vim index b4cda0b..166132d 100644 --- a/home/nvim/config.vim +++ b/home/nvim/config.vim @@ -50,6 +50,8 @@ onoremap al :normal val xnoremap i% GoggV onoremap i% :normal vi% +" highlight Normal guibg=NONE + function CreateNote(title) execute "VimwikiIndex" execute "VimwikiGoto " . a:title diff --git a/home/nvim/default.nix b/home/nvim/default.nix index 7d3e0ff..f7e9cfc 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -136,7 +136,7 @@ { plugin = papercolor-theme; config = '' - set background=light + " set background=light colorscheme PaperColor ''; } @@ -203,7 +203,7 @@ vim-snippets vim-speeddating vim-surround - + { plugin = vim-unimpaired; config = '' diff --git a/home/password-store.nix b/home/password-store.nix index 8839f20..af8f9e3 100644 --- a/home/password-store.nix +++ b/home/password-store.nix @@ -1,8 +1,6 @@ { config, pkgs, ... }: { - services.gnome-keyring.enable = false; - programs.password-store = { enable = true; settings = { @@ -14,14 +12,12 @@ pkgs.passff-host ]; + services.gnome-keyring.enable = false; + services.pass-secret-service = { enable = true; }; - home.packages = with pkgs; [ - pinentry-all - ]; - xdg.configFile."scdaemon" = { text = '' disable-ccid @@ -29,4 +25,5 @@ ''; target = "../.gnupg/scdaemon.conf"; }; + } diff --git a/home/plasma.nix b/home/plasma.nix new file mode 100644 index 0000000..426fa8e --- /dev/null +++ b/home/plasma.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + services.kdeconnect.enable = true; +} diff --git a/hosts/nova/default.nix b/hosts/nova/default.nix index 969a3e5..1ffb75e 100644 --- a/hosts/nova/default.nix +++ b/hosts/nova/default.nix @@ -9,9 +9,12 @@ ../../users/guest/system.nix ../../system ../../system/desktop - ../../system/desktop/gnome.nix - # ../../system/desktop/cast.nix ../../system/desktop/ergodox-udev.nix + # ../../system/desktop/gnome.nix + # ../../system/desktop/hyprland.nix + # ../../system/desktop/cast.nix + # ../../system/desktop/plasma.nix + ../../system/desktop/cosmic.nix ../../system/desktop/steam.nix ../../system/desktop/yubikey-pam.nix ]; diff --git a/system/desktop/cosmic.nix b/system/desktop/cosmic.nix new file mode 100644 index 0000000..a90680b --- /dev/null +++ b/system/desktop/cosmic.nix @@ -0,0 +1,14 @@ +{ lib, ... }: + +{ + services.desktopManager.cosmic.enable = true; + services.displayManager.cosmic-greeter.enable = true; + + services.system76-scheduler.enable = true; + + services.gnome.gnome-keyring.enable = lib.mkForce false; + + programs.firefox.preferences = { + "widget.gtk.libadwaita-colors.enabled" = false; + }; +} diff --git a/system/desktop/default.nix b/system/desktop/default.nix index 26f54a5..b4c988b 100644 --- a/system/desktop/default.nix +++ b/system/desktop/default.nix @@ -51,4 +51,9 @@ programs.virt-manager.enable = true; programs.dconf.enable = true; + programs.gnupg.agent = { + enable = true; + pinentryPackage = pkgs.pinentry-all; + # pinentry.program = "pinentry"; + }; } diff --git a/system/desktop/gnome.nix b/system/desktop/gnome.nix index e1e463a..b31365b 100644 --- a/system/desktop/gnome.nix +++ b/system/desktop/gnome.nix @@ -4,10 +4,10 @@ { services.desktopManager.gnome.enable = true; - services.displayManager = { - gdm.enable = true; - defaultSession = "gnome"; - }; + # services.displayManager = { + # gdm.enable = true; + # defaultSession = "gnome"; + # }; environment.gnome.excludePackages = with pkgs; [ gnome-tour diff --git a/system/desktop/hyprland.nix b/system/desktop/hyprland.nix new file mode 100644 index 0000000..ab3624d --- /dev/null +++ b/system/desktop/hyprland.nix @@ -0,0 +1,29 @@ +{ pkgs, ... }: + +{ + + programs.hyprland = { + enable = true; + withUWSM = true; + # xwayland.enable = true; + }; + + # programs.regreet = { + # enable = true; + # # For this example you'd need to have a version of Adwaita and the font Cantarell installed + # theme.name = "Adwaita"; + # font = { + # name = "Cantarell"; + # size = 16; + # }; + # cursorTheme.name = "Adwaita"; + # }; + + environment.systemPackages = with pkgs; [ + ashell + kitty + mako + tofi + ]; + +} diff --git a/system/desktop/plasma.nix b/system/desktop/plasma.nix new file mode 100644 index 0000000..d3f86a6 --- /dev/null +++ b/system/desktop/plasma.nix @@ -0,0 +1,18 @@ +{ ... }: + +{ + services.desktopManager.plasma6.enable = true; + + programs.kdeconnect.enable = true; + + networking.firewall = rec { + allowedTCPPortRanges = [ { from = 1714; to = 1764; } ]; + allowedUDPPortRanges = allowedTCPPortRanges; + }; + + services.displayManager.sddm = { + enable = true; + wayland.enable = true; + settings.General.DisplayServer = "wayland"; + }; +} From 82115af2528ce1b1cfc9c26998766a6fa19a9e47 Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 5 Mar 2026 09:11:17 +0100 Subject: [PATCH 21/44] prep arielle --- flake.nix | 4 +--- home/desktop-full.nix | 15 --------------- home/devel.nix | 9 ++------- home/fish.nix | 2 -- home/nvim/config.vim | 7 ------- home/nvim/default.nix | 2 +- home/profiles/desktop-full.nix | 15 +++++++++++++++ home/{ => profiles}/desktop-slim.nix | 15 ++++++++------- home/{ => profiles}/minimal.nix | 15 +++++++-------- home/{ => profiles}/on-server.nix | 0 hosts/arielle/default.nix | 2 +- .../{hardware.nix => hardware-configuration.nix} | 0 hosts/nova/default.nix | 3 --- 13 files changed, 35 insertions(+), 54 deletions(-) delete mode 100644 home/desktop-full.nix create mode 100644 home/profiles/desktop-full.nix rename home/{ => profiles}/desktop-slim.nix (64%) rename home/{ => profiles}/minimal.nix (85%) rename home/{ => profiles}/on-server.nix (100%) rename hosts/arielle/{hardware.nix => hardware-configuration.nix} (100%) diff --git a/flake.nix b/flake.nix index 31617a5..2c06763 100644 --- a/flake.nix +++ b/flake.nix @@ -34,7 +34,7 @@ till = { imports = [ - ./home/on-server.nix + ./home/minimal.nix ./users/till/home.nix ]; }; @@ -62,9 +62,7 @@ nova = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ - ./hosts/nova - home-manager.nixosModules.home-manager { home-manager = { extraSpecialArgs = { inherit inputs; }; diff --git a/home/desktop-full.nix b/home/desktop-full.nix deleted file mode 100644 index 3ff2da1..0000000 --- a/home/desktop-full.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ ... }: - -{ - imports = [ - ./desktop-slim.nix - - ./messaging.nix - ./r.nix - ./tex.nix - ./mail - ./office-gui.nix - ./office-cli.nix - ./aichat.nix - ]; -} diff --git a/home/devel.nix b/home/devel.nix index 0ff875b..27817b2 100644 --- a/home/devel.nix +++ b/home/devel.nix @@ -6,13 +6,8 @@ ''; home.packages = with pkgs; [ - bundler - bundix nodejs - yarn-berry - yq - duckdb - tippecanoe - pmtiles ]; + + programs.direnv.enable = true; } diff --git a/home/fish.nix b/home/fish.nix index b8fd587..16997a5 100644 --- a/home/fish.nix +++ b/home/fish.nix @@ -1,7 +1,6 @@ { config, ... }: { - home.shellAliases = { top = "btm --battery"; du = "dust"; @@ -13,7 +12,6 @@ }; programs.fish = { - enable = true; interactiveShellInit = "fish_add_path ${config.xdg.dataHome}/npm/packages/bin"; diff --git a/home/nvim/config.vim b/home/nvim/config.vim index 166132d..94efc9a 100644 --- a/home/nvim/config.vim +++ b/home/nvim/config.vim @@ -60,10 +60,3 @@ endfunction function Diary() execute "VimwikiMakeDiaryNote" endfunction - -" function CreateNote(title) -" execute "file ~/notes/" . strftime("%Y-%m-%d") . "_" . join(split(tolower(a:title)), "_") . ".md" -" execute "set ft=markdown" -" execute "normal! i" . a:title -" execute "normal V\yaml_note\" -" endfunction diff --git a/home/nvim/default.nix b/home/nvim/default.nix index f7e9cfc..e982334 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -136,7 +136,7 @@ { plugin = papercolor-theme; config = '' - " set background=light + set background=light colorscheme PaperColor ''; } diff --git a/home/profiles/desktop-full.nix b/home/profiles/desktop-full.nix new file mode 100644 index 0000000..c786f38 --- /dev/null +++ b/home/profiles/desktop-full.nix @@ -0,0 +1,15 @@ +{ ... }: + +{ + imports = [ + ./desktop-slim.nix + + ../messaging.nix + ../r.nix + ../tex.nix + ../mail + ../office-gui.nix + ../office-cli.nix + ../aichat.nix + ]; +} diff --git a/home/desktop-slim.nix b/home/profiles/desktop-slim.nix similarity index 64% rename from home/desktop-slim.nix rename to home/profiles/desktop-slim.nix index 66f0da4..15dac09 100644 --- a/home/desktop-slim.nix +++ b/home/profiles/desktop-slim.nix @@ -4,13 +4,14 @@ imports = [ ./minimal.nix - ./devel.nix - ./firefox.nix - ./fonts.nix - ./foot.nix - ./media.nix - # ./plasma.nix - ./user-dirs.nix + ../devel.nix + ../firefox.nix + ../fonts.nix + ../foot.nix + ../media.nix + ../user-dirs.nix + ../gpg.nix + ../password-store.nix ]; home.packages = with pkgs; [ diff --git a/home/minimal.nix b/home/profiles/minimal.nix similarity index 85% rename from home/minimal.nix rename to home/profiles/minimal.nix index a33684c..6fbf2a8 100644 --- a/home/minimal.nix +++ b/home/profiles/minimal.nix @@ -10,23 +10,22 @@ fastfetch fzf jq + nh nix-search progress rename silver-searcher tldr tmux + yq ]; imports = [ - ./fish.nix - ./vifm.nix - ./nvim - - ./tmux.nix - ./gpg.nix - ./ssh.nix - ./password-store.nix + ../fish.nix + ../vifm.nix + ../nvim + ../tmux.nix + ../ssh.nix ]; programs.nix-index = { diff --git a/home/on-server.nix b/home/profiles/on-server.nix similarity index 100% rename from home/on-server.nix rename to home/profiles/on-server.nix diff --git a/hosts/arielle/default.nix b/hosts/arielle/default.nix index 1c6bee4..0503bda 100644 --- a/hosts/arielle/default.nix +++ b/hosts/arielle/default.nix @@ -5,7 +5,7 @@ networking.domain = "ktiu.net"; imports = [ - ./hardware + ./hardware-configuration.nix ../system ../system/web-server ../system/mail-server diff --git a/hosts/arielle/hardware.nix b/hosts/arielle/hardware-configuration.nix similarity index 100% rename from hosts/arielle/hardware.nix rename to hosts/arielle/hardware-configuration.nix diff --git a/hosts/nova/default.nix b/hosts/nova/default.nix index 1ffb75e..482b1bf 100644 --- a/hosts/nova/default.nix +++ b/hosts/nova/default.nix @@ -11,9 +11,6 @@ ../../system/desktop ../../system/desktop/ergodox-udev.nix # ../../system/desktop/gnome.nix - # ../../system/desktop/hyprland.nix - # ../../system/desktop/cast.nix - # ../../system/desktop/plasma.nix ../../system/desktop/cosmic.nix ../../system/desktop/steam.nix ../../system/desktop/yubikey-pam.nix From accc04e2146e1d408387c364dddecd2c59d053da Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 5 Mar 2026 09:59:10 +0100 Subject: [PATCH 22/44] refactor, prep --- flake.nix | 14 ++++++++++---- home/profiles/desktop-slim.nix | 2 +- home/profiles/minimal.nix | 1 - users/guest/system.nix | 2 +- users/till/home.nix | 5 +++++ users/till/{ssh => pubkeys}/till@nova.pub | 0 {home => users/till}/ssh.nix | 12 ++++++------ users/till/system.nix | 2 +- 8 files changed, 24 insertions(+), 14 deletions(-) rename users/till/{ssh => pubkeys}/till@nova.pub (100%) rename {home => users/till}/ssh.nix (89%) diff --git a/flake.nix b/flake.nix index 2c06763..581d289 100644 --- a/flake.nix +++ b/flake.nix @@ -72,29 +72,34 @@ till = { imports = [ - ./home/desktop-full.nix + ./home/profiles/desktop-full.nix ./users/till/home.nix ]; }; alt = { imports = [ - ./home/desktop-slim.nix + ./home/profiles/desktop-slim.nix ./users/alt/home.nix ]; }; guest = { imports = [ - ./home/desktop-slim.nix + ./home/profiles/desktop-slim.nix ./users/guest/home.nix ]; }; }; }; } - { + + # firefox-addons.config.allowUnfreePredicate = pkg: + # builtins.elem (nixpkgs.lib.getName pkg) [ + # "tampermonkey" + # ]; + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (nixpkgs.lib.getName pkg) [ "corefonts" @@ -102,6 +107,7 @@ "keymapp" "steam" "steam-unwrapped" + # "tampermonkey" ]; } ]; diff --git a/home/profiles/desktop-slim.nix b/home/profiles/desktop-slim.nix index 15dac09..c2936c4 100644 --- a/home/profiles/desktop-slim.nix +++ b/home/profiles/desktop-slim.nix @@ -7,7 +7,7 @@ ../devel.nix ../firefox.nix ../fonts.nix - ../foot.nix + # ../foot.nix ../media.nix ../user-dirs.nix ../gpg.nix diff --git a/home/profiles/minimal.nix b/home/profiles/minimal.nix index 6fbf2a8..e4e5828 100644 --- a/home/profiles/minimal.nix +++ b/home/profiles/minimal.nix @@ -25,7 +25,6 @@ ../vifm.nix ../nvim ../tmux.nix - ../ssh.nix ]; programs.nix-index = { diff --git a/users/guest/system.nix b/users/guest/system.nix index ddfbf5e..610bce2 100644 --- a/users/guest/system.nix +++ b/users/guest/system.nix @@ -7,7 +7,7 @@ extraGroups = [ "networkmanager" ]; shell = pkgs.fish; openssh.authorizedKeys.keyFiles = [ - ../till/ssh/till${"@"}nova.pub + ../till/pubkeys/till${"@"}nova.pub ]; }; } diff --git a/users/till/home.nix b/users/till/home.nix index b14b24c..ab32419 100644 --- a/users/till/home.nix +++ b/users/till/home.nix @@ -6,4 +6,9 @@ name = "Till"; email = "till@ktiu.net"; }; + + imports = [ + ./ssh.nix + ]; + } diff --git a/users/till/ssh/till@nova.pub b/users/till/pubkeys/till@nova.pub similarity index 100% rename from users/till/ssh/till@nova.pub rename to users/till/pubkeys/till@nova.pub diff --git a/home/ssh.nix b/users/till/ssh.nix similarity index 89% rename from home/ssh.nix rename to users/till/ssh.nix index 7836029..a04ca2d 100644 --- a/home/ssh.nix +++ b/users/till/ssh.nix @@ -41,7 +41,7 @@ in identityFile = certs.uni; }; - "arielle arielle.ktiu.net" = { + "arielle (arielle|git).ktiu.net" = { hostname = "arielle.ktiu.net"; user = "till"; identityFile = certs.personal; @@ -65,11 +65,11 @@ in identityFile = certs.personal; }; - # "mila" = { - # hostname = "mila"; - # user = "till"; - # identityFile = certs.personal; - # }; + "mila" = { + hostname = "mila"; + user = "tstraube"; + identityFile = certs.uni; + }; }; }; diff --git a/users/till/system.nix b/users/till/system.nix index fd25636..e4c413e 100644 --- a/users/till/system.nix +++ b/users/till/system.nix @@ -10,7 +10,7 @@ ]; shell = pkgs.fish; openssh.authorizedKeys.keyFiles = [ - ./ssh/till${"@"}nova.pub + ./pubkeys/till${"@"}nova.pub ]; }; } From 6f30269e1e500019204361e60b2c8454bf698f1e Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 5 Mar 2026 10:22:10 +0100 Subject: [PATCH 23/44] git ssh don't force user --- users/till/ssh.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/users/till/ssh.nix b/users/till/ssh.nix index a04ca2d..7dbbba7 100644 --- a/users/till/ssh.nix +++ b/users/till/ssh.nix @@ -41,6 +41,10 @@ in identityFile = certs.uni; }; + "git.ktiu.net" = { + identityFile = certs.personal; + }; + "arielle (arielle|git).ktiu.net" = { hostname = "arielle.ktiu.net"; user = "till"; From 2159780eced07016d3e0ed688561ca3840b32fbf Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 5 Mar 2026 22:01:29 +0100 Subject: [PATCH 24/44] fixes --- flake.nix | 14 +++++++++++++- hosts/arielle/default.nix | 6 +++--- system/mail-server/dkim.nix | 2 +- system/web-server/default.nix | 1 - system/web-server/oopsidentify.nix | 9 --------- 5 files changed, 17 insertions(+), 15 deletions(-) delete mode 100644 system/web-server/oopsidentify.nix diff --git a/flake.nix b/flake.nix index 581d289..7c361d2 100644 --- a/flake.nix +++ b/flake.nix @@ -34,7 +34,7 @@ till = { imports = [ - ./home/minimal.nix + ./home/profiles/minimal.nix ./users/till/home.nix ]; }; @@ -42,6 +42,18 @@ }; }; } + { + + # firefox-addons.config.allowUnfreePredicate = pkg: + # builtins.elem (nixpkgs.lib.getName pkg) [ + # "tampermonkey" + # ]; + + nixpkgs.config.allowUnfreePredicate = pkg: + builtins.elem (nixpkgs.lib.getName pkg) [ + "outline" + ]; + } ]; }; diff --git a/hosts/arielle/default.nix b/hosts/arielle/default.nix index 0503bda..390e4e3 100644 --- a/hosts/arielle/default.nix +++ b/hosts/arielle/default.nix @@ -6,8 +6,8 @@ imports = [ ./hardware-configuration.nix - ../system - ../system/web-server - ../system/mail-server + ../../system + ../../system/web-server + ../../system/mail-server ]; } diff --git a/system/mail-server/dkim.nix b/system/mail-server/dkim.nix index 32394a9..9f4bf19 100644 --- a/system/mail-server/dkim.nix +++ b/system/mail-server/dkim.nix @@ -10,5 +10,5 @@ users.users.postfix.extraGroups = [ "opendkim" ]; - services.postfix.config.smtpd_milters = [ "unix:/run/opendkim/opendkim.sock" ]; + services.postfix.settings.main.smtpd_milters = [ "unix:/run/opendkim/opendkim.sock" ]; } diff --git a/system/web-server/default.nix b/system/web-server/default.nix index 2138020..e1f836e 100644 --- a/system/web-server/default.nix +++ b/system/web-server/default.nix @@ -11,6 +11,5 @@ # ./ksh.nix ./ksh-map.nix - ./oopsidenfiy.nix ]; } diff --git a/system/web-server/oopsidentify.nix b/system/web-server/oopsidentify.nix deleted file mode 100644 index adfff42..0000000 --- a/system/web-server/oopsidentify.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ config, pkgs, ... }: - -{ - services.nginx.virtualHosts."oops.t9e.me" = { - forceSSL = true; - enableACME = true; - root = "/var/www/oopsidentify/dist"; - }; -} From 49e588d569a37b730192e5d38437d58e59119d0c Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 5 Mar 2026 22:03:10 +0100 Subject: [PATCH 25/44] nginx recomended settings, matrix --- system/matrix-server/default.nix | 66 ++++++++++++++++++++++++++++++++ system/web-server/nginx.nix | 4 ++ 2 files changed, 70 insertions(+) create mode 100644 system/matrix-server/default.nix diff --git a/system/matrix-server/default.nix b/system/matrix-server/default.nix new file mode 100644 index 0000000..e190140 --- /dev/null +++ b/system/matrix-server/default.nix @@ -0,0 +1,66 @@ +{ ... }: + +let + domain = "jeppers.app"; + fqdn = "matrix.${domain}"; + baseUrl = "https://${fqdn}"; + clientConfig."m.homeserver".base_url = baseUrl; + serverConfig."m.server" = "${fqdn}:443"; + mkWellKnown = data: '' + default_type application/json; + add_header Access-Control-Allow-Origin *; + return 200 '${builtins.toJSON data}'; + ''; + +in + +{ + services.matrix-synapse = { + enable = true; + settings = { + server_name = domain; + public_baseurl = baseUrl; + listeners = [ + { + port = 8008; + bind_addresses = [ "::1" ]; + type = "http"; + tls = false; + x_forwarded = true; + resources = [ + { + names = [ + "client" + "federation" + ]; + compress = true; + } + ]; + } + ]; + }; + }; + + services.nginx.virtualHosts = { + + "${domain}" = { + enableACME = true; + forceSSL = true; + locations."= /.well-known/matrix/server".extraConfig = mkWellKnown serverConfig; + locations."= /.well-known/matrix/client".extraConfig = mkWellKnown clientConfig; + }; + + "${fqdn}" = { + enableACME = true; + forceSSL = true; + locations."/".extraConfig = '' + return 404; + ''; + locations."/_matrix".proxyPass = "http://[::1]:8008"; + locations."/_synapse/client".proxyPass = "http://[::1]:8008"; + }; + }; + + services.postgresql.enable = true; + +} diff --git a/system/web-server/nginx.nix b/system/web-server/nginx.nix index d891acf..74f5c2e 100644 --- a/system/web-server/nginx.nix +++ b/system/web-server/nginx.nix @@ -4,9 +4,13 @@ networking.firewall.allowedTCPPorts = [ 80 443 ]; services.nginx = { + enable = true; + recommendedProxySettings = true; recommendedTlsSettings = true; + recommendedOptimisation = true; + recommendedGzipSettings = true; virtualHosts = { From 809e20f981bb8273f2a5aeab70139c95cd4f70a9 Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 5 Mar 2026 22:55:08 +0100 Subject: [PATCH 26/44] matrix --- hosts/arielle/default.nix | 1 + system/matrix-server/default.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/hosts/arielle/default.nix b/hosts/arielle/default.nix index 390e4e3..0a84aa7 100644 --- a/hosts/arielle/default.nix +++ b/hosts/arielle/default.nix @@ -9,5 +9,6 @@ ../../system ../../system/web-server ../../system/mail-server + ../../system/matrix-server ]; } diff --git a/system/matrix-server/default.nix b/system/matrix-server/default.nix index e190140..183392e 100644 --- a/system/matrix-server/default.nix +++ b/system/matrix-server/default.nix @@ -38,6 +38,7 @@ in ]; } ]; + extraConfigFiles = "/var/custom-access/matrix-shared-secret"; }; }; From 09014f7af5e4e948547e1174fce7d1b7e61f2636 Mon Sep 17 00:00:00 2001 From: Till Date: Fri, 6 Mar 2026 23:14:39 +0100 Subject: [PATCH 27/44] uploadsize --- system/matrix-server/default.nix | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/system/matrix-server/default.nix b/system/matrix-server/default.nix index 183392e..d2a9efe 100644 --- a/system/matrix-server/default.nix +++ b/system/matrix-server/default.nix @@ -1,6 +1,7 @@ { ... }: let + domain = "jeppers.app"; fqdn = "matrix.${domain}"; baseUrl = "https://${fqdn}"; @@ -11,15 +12,18 @@ let add_header Access-Control-Allow-Origin *; return 200 '${builtins.toJSON data}'; ''; + maxUploadSize = "20M"; in { + services.matrix-synapse = { enable = true; settings = { server_name = domain; public_baseurl = baseUrl; + max_upload_size = maxUploadSize; listeners = [ { port = 8008; @@ -38,22 +42,25 @@ in ]; } ]; - extraConfigFiles = "/var/custom-access/matrix-shared-secret"; }; + extraConfigFiles = [ "/var/custom-access/matrix-shared-secret" ]; }; services.nginx.virtualHosts = { "${domain}" = { enableACME = true; - forceSSL = true; + onlySSL = true; locations."= /.well-known/matrix/server".extraConfig = mkWellKnown serverConfig; locations."= /.well-known/matrix/client".extraConfig = mkWellKnown clientConfig; }; "${fqdn}" = { enableACME = true; - forceSSL = true; + onlySSL = true; + extraConfig = '' + client_max_body_size ${maxUploadSize}; + ''; locations."/".extraConfig = '' return 404; ''; @@ -62,6 +69,6 @@ in }; }; - services.postgresql.enable = true; + services.postgresql.enable = true; } From 193686d59feb84b31ee7d91bb6feadc3a43ce1a1 Mon Sep 17 00:00:00 2001 From: Till Date: Fri, 6 Mar 2026 23:15:10 +0100 Subject: [PATCH 28/44] calendars, static ip --- home/calendars.nix | 9 ++++++--- hosts/arielle/default.nix | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/home/calendars.nix b/home/calendars.nix index da4c27e..5585970 100644 --- a/home/calendars.nix +++ b/home/calendars.nix @@ -126,9 +126,12 @@ in khal.color = "light green"; remote = { type = "caldav"; - url = "https://cloud.gridisnotajournal.de/remote.php/dav/calendars/till/grid/"; - passwordCommand = [ "pass" "uni/grid-caldav-nextcloud" ]; - userName = "till"; + # url = "https://cloud.gridisnotajournal.de/remote.php/dav/calendars/till/grid/"; + # passwordCommand = [ "pass" "uni/grid-caldav-nextcloud" ]; + # userName = "till"; + url = "https://kalender.humangeographie.de/grid/96dedda9-cc91-c2fe-3bd8-020296904489/"; + userName = "grid"; + passwordCommand = [ "pass" "uni/grid-kalender-radicale" ]; }; }; }; diff --git a/hosts/arielle/default.nix b/hosts/arielle/default.nix index 0a84aa7..a83a0bb 100644 --- a/hosts/arielle/default.nix +++ b/hosts/arielle/default.nix @@ -1,8 +1,36 @@ { ... }: { - networking.hostName = "arielle"; - networking.domain = "ktiu.net"; + networking = { + + hostName = "arielle"; + domain = "ktiu.net"; + + interfaces.enp1s0.ipv4.addresses = [{ + address = "116.203.85.135"; + prefixLength = 32; + }]; + + interfaces.enp1s0.ipv6.addresses = [{ + address = "2a01:4f8:1c1c:42d8::1"; + prefixLength = 64; + }]; + + nameservers = [ + "185.12.64.1" + "185.12.64.2" + ]; + + defaultGateway = { + address = "172.31.1.1"; + interface = "enp1s0"; + }; + + defaultGateway6 = { + address = "fe80::1"; + interface = "enp1s0"; + }; + }; imports = [ ./hardware-configuration.nix From 8d0b87495837a48a31e5f582256ee44e36b7349c Mon Sep 17 00:00:00 2001 From: Till Date: Sat, 7 Mar 2026 10:28:02 +0100 Subject: [PATCH 29/44] include fundkorb --- system/web-server/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/system/web-server/default.nix b/system/web-server/default.nix index e1f836e..6596bb6 100644 --- a/system/web-server/default.nix +++ b/system/web-server/default.nix @@ -11,5 +11,6 @@ # ./ksh.nix ./ksh-map.nix + ./fundkorb-button.nix ]; } From 5b344eacc5b879b6ae8f0cec636f6466a1414f02 Mon Sep 17 00:00:00 2001 From: Till Date: Sat, 7 Mar 2026 10:54:40 +0100 Subject: [PATCH 30/44] aliases, eza --- home/fish.nix | 10 ---------- home/profiles/minimal.nix | 11 +++++++++++ home/r.nix | 5 +++++ 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/home/fish.nix b/home/fish.nix index 16997a5..ac50aeb 100644 --- a/home/fish.nix +++ b/home/fish.nix @@ -1,16 +1,6 @@ { config, ... }: { - home.shellAliases = { - top = "btm --battery"; - du = "dust"; - ymd = "date +'%Y-%m-%d'"; - dmy = "date +'%-d.-%-m.%Y'"; - r = "R --no-save --no-restore"; - R = "R --no-save --no-restore"; - cdg = "cd \$(git rev-parse --show-toplevel)"; - }; - programs.fish = { enable = true; diff --git a/home/profiles/minimal.nix b/home/profiles/minimal.nix index e4e5828..e3963f5 100644 --- a/home/profiles/minimal.nix +++ b/home/profiles/minimal.nix @@ -6,7 +6,9 @@ home.homeDirectory = "/home/${config.home.username}"; home.packages = with pkgs; [ + btm dust + eza fastfetch fzf jq @@ -20,6 +22,15 @@ yq ]; + home.shellAliases = { + cdg = "cd \$(git rev-parse --show-toplevel)"; + dmy = "date +'%-d.-%-m.%Y'"; + du = "dust"; + ls = "eza"; + top = "btm --battery"; + ymd = "date +'%Y-%m-%d'"; + }; + imports = [ ../fish.nix ../vifm.nix diff --git a/home/r.nix b/home/r.nix index 7eb64f1..ea23218 100644 --- a/home/r.nix +++ b/home/r.nix @@ -52,4 +52,9 @@ in R-packed RStudio-packed ]; + + home.shellAliases = { + r = "R --no-save --no-restore"; + R = "R --no-save --no-restore"; + }; } From 3dab1d7d12845b94fc3a6caf3cf6dd34badfe9bd Mon Sep 17 00:00:00 2001 From: Till Date: Sat, 7 Mar 2026 11:00:27 +0100 Subject: [PATCH 31/44] tree --- home/profiles/minimal.nix | 2 +- system/desktop/default.nix | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/home/profiles/minimal.nix b/home/profiles/minimal.nix index e3963f5..d04876e 100644 --- a/home/profiles/minimal.nix +++ b/home/profiles/minimal.nix @@ -6,7 +6,6 @@ home.homeDirectory = "/home/${config.home.username}"; home.packages = with pkgs; [ - btm dust eza fastfetch @@ -27,6 +26,7 @@ dmy = "date +'%-d.-%-m.%Y'"; du = "dust"; ls = "eza"; + tree = "eza --tree"; top = "btm --battery"; ymd = "date +'%Y-%m-%d'"; }; diff --git a/system/desktop/default.nix b/system/desktop/default.nix index b4c988b..b88c446 100644 --- a/system/desktop/default.nix +++ b/system/desktop/default.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ pkgs, ... }: { imports = [ @@ -31,7 +31,6 @@ libreoffice foot pciutils - tree virtiofsd ]; From bc44678dacb84d39c0687ce321018f607731ef22 Mon Sep 17 00:00:00 2001 From: Till Date: Sat, 7 Mar 2026 16:47:03 +0100 Subject: [PATCH 32/44] telegram? --- system/matrix-server/default.nix | 3 +++ system/matrix-server/mautrix.nix | 7 +++++++ 2 files changed, 10 insertions(+) create mode 100644 system/matrix-server/mautrix.nix diff --git a/system/matrix-server/default.nix b/system/matrix-server/default.nix index d2a9efe..6398a28 100644 --- a/system/matrix-server/default.nix +++ b/system/matrix-server/default.nix @@ -17,6 +17,9 @@ let in { + imports = [ + ./mautrix.nix + ]; services.matrix-synapse = { enable = true; diff --git a/system/matrix-server/mautrix.nix b/system/matrix-server/mautrix.nix new file mode 100644 index 0000000..017649c --- /dev/null +++ b/system/matrix-server/mautrix.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + services.mautrix-telegram = { + enable = true; + }; +} From 91b542184865e39ab17bd544c51dbd25b02ebf8e Mon Sep 17 00:00:00 2001 From: Till Date: Tue, 10 Mar 2026 14:34:01 +0100 Subject: [PATCH 33/44] reorganization --- home/desktop-full.nix | 15 +++++++++++ home/{profiles => }/desktop-slim.nix | 15 +++++------ home/{profiles => }/minimal.nix | 26 +++++++------------ home/{ => modules}/aichat.nix | 0 home/{ => modules}/calendars.nix | 0 home/{ => modules}/devel.nix | 0 home/{ => modules}/firefox.nix | 0 home/{ => modules}/fish.nix | 0 home/{ => modules}/fonts.nix | 2 +- home/{ => modules}/foot.nix | 0 home/modules/git.nix | 12 +++++++++ home/{ => modules}/gnome.nix | 0 home/{ => modules}/gpg.nix | 0 home/{ => modules}/hyprland.nix | 0 home/{ => modules}/khard-dump.nix | 0 home/{ => modules}/mail/bindings.neomuttrc | 0 home/{ => modules}/mail/config.neomuttrc | 0 home/{ => modules}/mail/default.nix | 0 home/{ => modules}/media.nix | 0 home/{ => modules}/messaging.nix | 2 +- home/{ => modules}/nvim/config.vim | 0 home/{ => modules}/nvim/default.nix | 2 ++ .../nvim/dotfiles/after/ftplugin/markdown.vim | 0 .../nvim/dotfiles/autocommands.vim | 0 .../nvim/dotfiles/ftplugin/markdown.vim | 0 .../nvim/dotfiles/ftplugin/nix.vim | 0 .../nvim/dotfiles/ftplugin/r.vim | 0 .../nvim/dotfiles/ftplugin/rmd.vim | 0 .../nvim/dotfiles/ftplugin/tex.vim | 0 .../nvim/dotfiles/ftplugin/typescript.vim | 0 .../nvim/dotfiles/syntax/rmd.vim | 0 home/{ => modules}/nvim/lsp.lua | 0 home/{ => modules}/nvim/nvim-cmp.lua | 0 home/{ => modules}/office-cli.nix | 0 home/{ => modules}/office-gui.nix | 0 home/{ => modules}/password-store.nix | 0 home/{ => modules}/plasma.nix | 0 home/{ => modules}/r.nix | 0 home/{ => modules}/tasks.nix | 0 home/{ => modules}/tex.nix | 0 home/{ => modules}/tmux.nix | 0 home/{ => modules}/user-dirs.nix | 0 home/{ => modules}/vifm.nix | 0 home/npm.conf | 1 - home/profiles/desktop-full.nix | 15 ----------- home/profiles/on-server.nix | 8 ------ 46 files changed, 47 insertions(+), 51 deletions(-) create mode 100644 home/desktop-full.nix rename home/{profiles => }/desktop-slim.nix (59%) rename home/{profiles => }/minimal.nix (72%) rename home/{ => modules}/aichat.nix (100%) rename home/{ => modules}/calendars.nix (100%) rename home/{ => modules}/devel.nix (100%) rename home/{ => modules}/firefox.nix (100%) rename home/{ => modules}/fish.nix (100%) rename home/{ => modules}/fonts.nix (95%) rename home/{ => modules}/foot.nix (100%) create mode 100644 home/modules/git.nix rename home/{ => modules}/gnome.nix (100%) rename home/{ => modules}/gpg.nix (100%) rename home/{ => modules}/hyprland.nix (100%) rename home/{ => modules}/khard-dump.nix (100%) rename home/{ => modules}/mail/bindings.neomuttrc (100%) rename home/{ => modules}/mail/config.neomuttrc (100%) rename home/{ => modules}/mail/default.nix (100%) rename home/{ => modules}/media.nix (100%) rename home/{ => modules}/messaging.nix (81%) rename home/{ => modules}/nvim/config.vim (100%) rename home/{ => modules}/nvim/default.nix (99%) rename home/{ => modules}/nvim/dotfiles/after/ftplugin/markdown.vim (100%) rename home/{ => modules}/nvim/dotfiles/autocommands.vim (100%) rename home/{ => modules}/nvim/dotfiles/ftplugin/markdown.vim (100%) rename home/{ => modules}/nvim/dotfiles/ftplugin/nix.vim (100%) rename home/{ => modules}/nvim/dotfiles/ftplugin/r.vim (100%) rename home/{ => modules}/nvim/dotfiles/ftplugin/rmd.vim (100%) rename home/{ => modules}/nvim/dotfiles/ftplugin/tex.vim (100%) rename home/{ => modules}/nvim/dotfiles/ftplugin/typescript.vim (100%) rename home/{ => modules}/nvim/dotfiles/syntax/rmd.vim (100%) rename home/{ => modules}/nvim/lsp.lua (100%) rename home/{ => modules}/nvim/nvim-cmp.lua (100%) rename home/{ => modules}/office-cli.nix (100%) rename home/{ => modules}/office-gui.nix (100%) rename home/{ => modules}/password-store.nix (100%) rename home/{ => modules}/plasma.nix (100%) rename home/{ => modules}/r.nix (100%) rename home/{ => modules}/tasks.nix (100%) rename home/{ => modules}/tex.nix (100%) rename home/{ => modules}/tmux.nix (100%) rename home/{ => modules}/user-dirs.nix (100%) rename home/{ => modules}/vifm.nix (100%) delete mode 100644 home/npm.conf delete mode 100644 home/profiles/desktop-full.nix delete mode 100644 home/profiles/on-server.nix diff --git a/home/desktop-full.nix b/home/desktop-full.nix new file mode 100644 index 0000000..dfdf6bb --- /dev/null +++ b/home/desktop-full.nix @@ -0,0 +1,15 @@ +{ ... }: + +{ + imports = [ + ./desktop-slim.nix + + ./modules/messaging.nix + ./modules/r.nix + ./modules/tex.nix + ./modules/mail + ./modules/office-gui.nix + ./modules/office-cli.nix + ./modules/aichat.nix + ]; +} diff --git a/home/profiles/desktop-slim.nix b/home/desktop-slim.nix similarity index 59% rename from home/profiles/desktop-slim.nix rename to home/desktop-slim.nix index c2936c4..9979ab9 100644 --- a/home/profiles/desktop-slim.nix +++ b/home/desktop-slim.nix @@ -4,14 +4,13 @@ imports = [ ./minimal.nix - ../devel.nix - ../firefox.nix - ../fonts.nix - # ../foot.nix - ../media.nix - ../user-dirs.nix - ../gpg.nix - ../password-store.nix + ./modules/devel.nix + ./modules/firefox.nix + ./modules/fonts.nix + ./modules/media.nix + ./modules/user-dirs.nix + ./modules/gpg.nix + ./modules/password-store.nix ]; home.packages = with pkgs; [ diff --git a/home/profiles/minimal.nix b/home/minimal.nix similarity index 72% rename from home/profiles/minimal.nix rename to home/minimal.nix index d04876e..0f9547a 100644 --- a/home/profiles/minimal.nix +++ b/home/minimal.nix @@ -5,6 +5,14 @@ home.homeDirectory = "/home/${config.home.username}"; + imports = [ + ./modules/fish.nix + ./modules/vifm.nix + ./modules/nvim + ./modules/tmux.nix + ./modules/git.nix + ]; + home.packages = with pkgs; [ dust eza @@ -31,30 +39,14 @@ ymd = "date +'%Y-%m-%d'"; }; - imports = [ - ../fish.nix - ../vifm.nix - ../nvim - ../tmux.nix - ]; - programs.nix-index = { enable = true; enableFishIntegration = true; }; - programs.git = { - enable = true; - settings = { - pull.rebase = true; - extraConfig.init.defaultBranch = "main"; - }; - lfs.enable = true; - }; - programs.bottom = { enable = true; - settings.styles.theme = "default-light"; + # settings.styles.theme = "default-light"; }; home.stateVersion = "22.11"; diff --git a/home/aichat.nix b/home/modules/aichat.nix similarity index 100% rename from home/aichat.nix rename to home/modules/aichat.nix diff --git a/home/calendars.nix b/home/modules/calendars.nix similarity index 100% rename from home/calendars.nix rename to home/modules/calendars.nix diff --git a/home/devel.nix b/home/modules/devel.nix similarity index 100% rename from home/devel.nix rename to home/modules/devel.nix diff --git a/home/firefox.nix b/home/modules/firefox.nix similarity index 100% rename from home/firefox.nix rename to home/modules/firefox.nix diff --git a/home/fish.nix b/home/modules/fish.nix similarity index 100% rename from home/fish.nix rename to home/modules/fish.nix diff --git a/home/fonts.nix b/home/modules/fonts.nix similarity index 95% rename from home/fonts.nix rename to home/modules/fonts.nix index d8db3b7..23d9e4a 100644 --- a/home/fonts.nix +++ b/home/modules/fonts.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ pkgs, ... }: { home.packages = with pkgs; [ diff --git a/home/foot.nix b/home/modules/foot.nix similarity index 100% rename from home/foot.nix rename to home/modules/foot.nix diff --git a/home/modules/git.nix b/home/modules/git.nix new file mode 100644 index 0000000..4119ab0 --- /dev/null +++ b/home/modules/git.nix @@ -0,0 +1,12 @@ +{...}: + +{ + programs.git = { + enable = true; + settings = { + pull.rebase = true; + extraConfig.init.defaultBranch = "main"; + }; + lfs.enable = true; + }; +} diff --git a/home/gnome.nix b/home/modules/gnome.nix similarity index 100% rename from home/gnome.nix rename to home/modules/gnome.nix diff --git a/home/gpg.nix b/home/modules/gpg.nix similarity index 100% rename from home/gpg.nix rename to home/modules/gpg.nix diff --git a/home/hyprland.nix b/home/modules/hyprland.nix similarity index 100% rename from home/hyprland.nix rename to home/modules/hyprland.nix diff --git a/home/khard-dump.nix b/home/modules/khard-dump.nix similarity index 100% rename from home/khard-dump.nix rename to home/modules/khard-dump.nix diff --git a/home/mail/bindings.neomuttrc b/home/modules/mail/bindings.neomuttrc similarity index 100% rename from home/mail/bindings.neomuttrc rename to home/modules/mail/bindings.neomuttrc diff --git a/home/mail/config.neomuttrc b/home/modules/mail/config.neomuttrc similarity index 100% rename from home/mail/config.neomuttrc rename to home/modules/mail/config.neomuttrc diff --git a/home/mail/default.nix b/home/modules/mail/default.nix similarity index 100% rename from home/mail/default.nix rename to home/modules/mail/default.nix diff --git a/home/media.nix b/home/modules/media.nix similarity index 100% rename from home/media.nix rename to home/modules/media.nix diff --git a/home/messaging.nix b/home/modules/messaging.nix similarity index 81% rename from home/messaging.nix rename to home/modules/messaging.nix index e33d6b4..8c8f0dd 100644 --- a/home/messaging.nix +++ b/home/modules/messaging.nix @@ -3,7 +3,7 @@ { home.packages = with pkgs; [ signal-desktop - telegram-desktop + # telegram-desktop simplex-chat-desktop ]; } diff --git a/home/nvim/config.vim b/home/modules/nvim/config.vim similarity index 100% rename from home/nvim/config.vim rename to home/modules/nvim/config.vim diff --git a/home/nvim/default.nix b/home/modules/nvim/default.nix similarity index 99% rename from home/nvim/default.nix rename to home/modules/nvim/default.nix index e982334..a9c3a26 100644 --- a/home/nvim/default.nix +++ b/home/modules/nvim/default.nix @@ -5,6 +5,7 @@ astro-language-server marksman nil + tree-sitter typescript-language-server vim-language-server ]; @@ -107,6 +108,7 @@ vim.lsp.enable('marksman') vim.lsp.enable('nil_ls') vim.lsp.enable('r_language_server') + vim.lsp.enable('rust-analyzer') vim.lsp.enable('texlab') vim.lsp.enable('ts_ls') vim.lsp.enable('vimls') diff --git a/home/nvim/dotfiles/after/ftplugin/markdown.vim b/home/modules/nvim/dotfiles/after/ftplugin/markdown.vim similarity index 100% rename from home/nvim/dotfiles/after/ftplugin/markdown.vim rename to home/modules/nvim/dotfiles/after/ftplugin/markdown.vim diff --git a/home/nvim/dotfiles/autocommands.vim b/home/modules/nvim/dotfiles/autocommands.vim similarity index 100% rename from home/nvim/dotfiles/autocommands.vim rename to home/modules/nvim/dotfiles/autocommands.vim diff --git a/home/nvim/dotfiles/ftplugin/markdown.vim b/home/modules/nvim/dotfiles/ftplugin/markdown.vim similarity index 100% rename from home/nvim/dotfiles/ftplugin/markdown.vim rename to home/modules/nvim/dotfiles/ftplugin/markdown.vim diff --git a/home/nvim/dotfiles/ftplugin/nix.vim b/home/modules/nvim/dotfiles/ftplugin/nix.vim similarity index 100% rename from home/nvim/dotfiles/ftplugin/nix.vim rename to home/modules/nvim/dotfiles/ftplugin/nix.vim diff --git a/home/nvim/dotfiles/ftplugin/r.vim b/home/modules/nvim/dotfiles/ftplugin/r.vim similarity index 100% rename from home/nvim/dotfiles/ftplugin/r.vim rename to home/modules/nvim/dotfiles/ftplugin/r.vim diff --git a/home/nvim/dotfiles/ftplugin/rmd.vim b/home/modules/nvim/dotfiles/ftplugin/rmd.vim similarity index 100% rename from home/nvim/dotfiles/ftplugin/rmd.vim rename to home/modules/nvim/dotfiles/ftplugin/rmd.vim diff --git a/home/nvim/dotfiles/ftplugin/tex.vim b/home/modules/nvim/dotfiles/ftplugin/tex.vim similarity index 100% rename from home/nvim/dotfiles/ftplugin/tex.vim rename to home/modules/nvim/dotfiles/ftplugin/tex.vim diff --git a/home/nvim/dotfiles/ftplugin/typescript.vim b/home/modules/nvim/dotfiles/ftplugin/typescript.vim similarity index 100% rename from home/nvim/dotfiles/ftplugin/typescript.vim rename to home/modules/nvim/dotfiles/ftplugin/typescript.vim diff --git a/home/nvim/dotfiles/syntax/rmd.vim b/home/modules/nvim/dotfiles/syntax/rmd.vim similarity index 100% rename from home/nvim/dotfiles/syntax/rmd.vim rename to home/modules/nvim/dotfiles/syntax/rmd.vim diff --git a/home/nvim/lsp.lua b/home/modules/nvim/lsp.lua similarity index 100% rename from home/nvim/lsp.lua rename to home/modules/nvim/lsp.lua diff --git a/home/nvim/nvim-cmp.lua b/home/modules/nvim/nvim-cmp.lua similarity index 100% rename from home/nvim/nvim-cmp.lua rename to home/modules/nvim/nvim-cmp.lua diff --git a/home/office-cli.nix b/home/modules/office-cli.nix similarity index 100% rename from home/office-cli.nix rename to home/modules/office-cli.nix diff --git a/home/office-gui.nix b/home/modules/office-gui.nix similarity index 100% rename from home/office-gui.nix rename to home/modules/office-gui.nix diff --git a/home/password-store.nix b/home/modules/password-store.nix similarity index 100% rename from home/password-store.nix rename to home/modules/password-store.nix diff --git a/home/plasma.nix b/home/modules/plasma.nix similarity index 100% rename from home/plasma.nix rename to home/modules/plasma.nix diff --git a/home/r.nix b/home/modules/r.nix similarity index 100% rename from home/r.nix rename to home/modules/r.nix diff --git a/home/tasks.nix b/home/modules/tasks.nix similarity index 100% rename from home/tasks.nix rename to home/modules/tasks.nix diff --git a/home/tex.nix b/home/modules/tex.nix similarity index 100% rename from home/tex.nix rename to home/modules/tex.nix diff --git a/home/tmux.nix b/home/modules/tmux.nix similarity index 100% rename from home/tmux.nix rename to home/modules/tmux.nix diff --git a/home/user-dirs.nix b/home/modules/user-dirs.nix similarity index 100% rename from home/user-dirs.nix rename to home/modules/user-dirs.nix diff --git a/home/vifm.nix b/home/modules/vifm.nix similarity index 100% rename from home/vifm.nix rename to home/modules/vifm.nix diff --git a/home/npm.conf b/home/npm.conf deleted file mode 100644 index dc3f6fb..0000000 --- a/home/npm.conf +++ /dev/null @@ -1 +0,0 @@ -prefix = ${HOME}/.npm-packages diff --git a/home/profiles/desktop-full.nix b/home/profiles/desktop-full.nix deleted file mode 100644 index c786f38..0000000 --- a/home/profiles/desktop-full.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ ... }: - -{ - imports = [ - ./desktop-slim.nix - - ../messaging.nix - ../r.nix - ../tex.nix - ../mail - ../office-gui.nix - ../office-cli.nix - ../aichat.nix - ]; -} diff --git a/home/profiles/on-server.nix b/home/profiles/on-server.nix deleted file mode 100644 index 68c51f6..0000000 --- a/home/profiles/on-server.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ ... }: - -{ - imports = [ - ./minimal.nix - ./devel.nix - ]; -} From d8ed4fea1cf1c8cbb35210f8e380c3733ceae87c Mon Sep 17 00:00:00 2001 From: Till Date: Tue, 10 Mar 2026 14:34:13 +0100 Subject: [PATCH 34/44] encrypt, no auto_edit --- home/modules/mail/default.nix | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/home/modules/mail/default.nix b/home/modules/mail/default.nix index f6dba07..3f73a72 100644 --- a/home/modules/mail/default.nix +++ b/home/modules/mail/default.nix @@ -5,8 +5,7 @@ let makeConfig = accountName: '' unset reverse_name - unset crypt_auto_pgp - unset crypt_auto_smime + unset smime_is_default set my_account='${ accountName }' macro index,pager / "tag:${ accountName } " unalternates * @@ -88,7 +87,7 @@ in extraConfig = makeConfig name + '' color status blue default alternates ^tstraube@(em|rz)?.uni-frankfurt.de$ - set crypt_auto_smime + set smime_is_default ''; }; }; @@ -108,7 +107,6 @@ in color status green default alternates @t9e.me$ @ktiu.net$ ^(tillkowski|till.straube)@gmail.com$ set reverse_name - set crypt_auto_pgp ''; }; msmtp.extraConfig.port = "587"; @@ -128,7 +126,6 @@ in neomutt = { extraConfig = makeConfig name + '' color status red default - set crypt_auto_pgp ''; }; passwordCommand = "pass ksh/systemli"; @@ -176,7 +173,7 @@ in settings = { abort_noattach = "ask-yes"; abort_noattach_regex = "\"(attach|enclosed|anbei|anhängen|angehängt|anhang|anhänge|hängt an)\""; - auto_edit = "yes"; + auto_edit = "no"; beep = "no"; confirm_append = "no"; crypt_auto_sign = "yes"; @@ -220,7 +217,7 @@ in { key = "k"; map = [ "pager" ]; action = "previous-entry"; } { key = "j"; map = [ "pager" ]; action = "next-entry"; } { key = ""; map = [ "index" ]; action = "display-message"; } - { key = ""; map = "index"; action = "entire-thread"; } + { key = ""; map = [ "index" ]; action = "entire-thread"; } { key = "gf"; map = [ "index" "pager" ]; action = "change-folder"; } { key = ""; map = [ "editor" ]; action = "complete-query"; } { key = "P"; map = [ "compose" ]; action = "pgp-menu"; } From bbe8684a57ef4e860d8e7a34a5d4333495a053a8 Mon Sep 17 00:00:00 2001 From: Till Date: Tue, 17 Mar 2026 13:13:00 +0100 Subject: [PATCH 35/44] block linkedin address --- system/mail-server/postfix.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/system/mail-server/postfix.nix b/system/mail-server/postfix.nix index 2fe5080..4b6d1e8 100644 --- a/system/mail-server/postfix.nix +++ b/system/mail-server/postfix.nix @@ -40,6 +40,7 @@ in { 123rf@ktiu.net REJECT jcb-co.jp-ktiu@ktiu.net REJECT info@ktiu.net REJECT + linkedin@ktiu.net REJECT ''; From fdd7e1c5834ba71a8d1771860fd28cd912e27b8b Mon Sep 17 00:00:00 2001 From: Till Date: Tue, 17 Mar 2026 13:14:41 +0100 Subject: [PATCH 36/44] updates --- flake.lock | 18 +++++++++--------- flake.nix | 8 ++++---- home/modules/nvim/default.nix | 4 ++-- home/modules/r.nix | 2 ++ home/modules/tasks.nix | 2 +- system/desktop/cosmic.nix | 1 + 6 files changed, 19 insertions(+), 16 deletions(-) diff --git a/flake.lock b/flake.lock index 4354c7b..206b93f 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1772596991, - "narHash": "sha256-awJJ4ATy9t8Svrx2z0zAftgXnUaGCFb2Ty0u036CnCQ=", + "lastModified": 1773115390, + "narHash": "sha256-nl1kcyM1locj//JnzC43hZIjY4z5opcTPqv1RnMZqPU=", "owner": "rycee", "repo": "nur-expressions", - "rev": "cd2d0893966c0a5c27345a9a72d0418b42b7e36d", + "rev": "aecb1fc3e18c3cdcbdd96485b392ffa4584467e8", "type": "gitlab" }, "original": { @@ -29,11 +29,11 @@ ] }, "locked": { - "lastModified": 1772633058, - "narHash": "sha256-SO7JapRy2HPhgmqiLbfnW1kMx5rakPMKZ9z3wtRLQjI=", + "lastModified": 1772985280, + "narHash": "sha256-FdrNykOoY9VStevU4zjSUdvsL9SzJTcXt4omdEDZDLk=", "owner": "nix-community", "repo": "home-manager", - "rev": "080657a04188aca25f8a6c70a0fb2ea7e37f1865", + "rev": "8f736f007139d7f70752657dff6a401a585d6cbc", "type": "github" }, "original": { @@ -45,11 +45,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1772598333, - "narHash": "sha256-YaHht/C35INEX3DeJQNWjNaTcPjYmBwwjFJ2jdtr+5U=", + "lastModified": 1772822230, + "narHash": "sha256-yf3iYLGbGVlIthlQIk5/4/EQDZNNEmuqKZkQssMljuw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fabb8c9deee281e50b1065002c9828f2cf7b2239", + "rev": "71caefce12ba78d84fe618cf61644dce01cf3a96", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 7c361d2..4db8565 100644 --- a/flake.nix +++ b/flake.nix @@ -34,7 +34,7 @@ till = { imports = [ - ./home/profiles/minimal.nix + ./home/minimal.nix ./users/till/home.nix ]; }; @@ -84,21 +84,21 @@ till = { imports = [ - ./home/profiles/desktop-full.nix + ./home/desktop-full.nix ./users/till/home.nix ]; }; alt = { imports = [ - ./home/profiles/desktop-slim.nix + ./home/desktop-slim.nix ./users/alt/home.nix ]; }; guest = { imports = [ - ./home/profiles/desktop-slim.nix + ./home/desktop-slim.nix ./users/guest/home.nix ]; }; diff --git a/home/modules/nvim/default.nix b/home/modules/nvim/default.nix index a9c3a26..c417c93 100644 --- a/home/modules/nvim/default.nix +++ b/home/modules/nvim/default.nix @@ -108,7 +108,7 @@ vim.lsp.enable('marksman') vim.lsp.enable('nil_ls') vim.lsp.enable('r_language_server') - vim.lsp.enable('rust-analyzer') + vim.lsp.enable('rust_analyzer') vim.lsp.enable('texlab') vim.lsp.enable('ts_ls') vim.lsp.enable('vimls') @@ -192,7 +192,7 @@ plugin = vim-slime; config = '' let g:slime_target = "tmux" - let g:slime_default_config = {"socket_name": get(split($TMUX, ","), 0), "target_pane": ":.1"} + let g:slime_default_config = {"socket_name": get(split($TMUX, ","), 0), "target_pane": ":.2"} let g:slime_no_mappings = 1 let g:slime_dont_ask_default = 1 xmap s SlimeRegionSend diff --git a/home/modules/r.nix b/home/modules/r.nix index ea23218..8b1b3ed 100644 --- a/home/modules/r.nix +++ b/home/modules/r.nix @@ -2,6 +2,7 @@ let customPackages = with pkgs.rPackages; [ + bookdown catmaply clipr DAAG @@ -38,6 +39,7 @@ let tidyr tidyverse tmap + tufte xlsx yaml ]; diff --git a/home/modules/tasks.nix b/home/modules/tasks.nix index 76189c3..3f6cd0c 100644 --- a/home/modules/tasks.nix +++ b/home/modules/tasks.nix @@ -9,7 +9,7 @@ enable = true; package = pkgs.taskwarrior3; dataLocation = "${config.xdg.dataHome}/taskwarrior/tasks"; - colorTheme = "light-256"; + # colorTheme = "light-256"; config = { report.list.columns = ["id" "depends.indicator" "priority" "project" "recur.indicator" "scheduled.countdown" "due" "until.age" "status.short" "description.count" "tags"]; report.list.labels= ["ID" "D" "Prio" "Proj" "R" "Scheduled" "Due" "Until" "S" "Description" "Tags"]; diff --git a/system/desktop/cosmic.nix b/system/desktop/cosmic.nix index a90680b..e46e6f0 100644 --- a/system/desktop/cosmic.nix +++ b/system/desktop/cosmic.nix @@ -2,6 +2,7 @@ { services.desktopManager.cosmic.enable = true; + services.displayManager.cosmic-greeter.enable = true; services.system76-scheduler.enable = true; From 686d6071553de7da640089f0570a826d56674378 Mon Sep 17 00:00:00 2001 From: Till Date: Sat, 21 Mar 2026 12:02:45 +0100 Subject: [PATCH 37/44] unstable --- flake.lock | 60 ++++++++++++++++++++++++++++------- flake.nix | 14 +++++--- home/modules/fonts.nix | 2 +- home/modules/niri.nix | 5 +++ home/modules/nvim/default.nix | 7 ++-- home/modules/office-cli.nix | 2 ++ home/modules/r.nix | 1 + hosts/nova/default.nix | 1 + system/desktop/niri.nix | 11 +++++++ 9 files changed, 84 insertions(+), 19 deletions(-) create mode 100644 home/modules/niri.nix create mode 100644 system/desktop/niri.nix diff --git a/flake.lock b/flake.lock index 206b93f..7f41e2f 100644 --- a/flake.lock +++ b/flake.lock @@ -3,16 +3,16 @@ "firefox-addons": { "inputs": { "nixpkgs": [ - "nixpkgs" + "nixpkgs-unstable" ] }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1773115390, - "narHash": "sha256-nl1kcyM1locj//JnzC43hZIjY4z5opcTPqv1RnMZqPU=", + "lastModified": 1774065775, + "narHash": "sha256-anJXbdfZMhXWjHSfB5v6e8+yv1ASTHM4TwikH8tloMI=", "owner": "rycee", "repo": "nur-expressions", - "rev": "aecb1fc3e18c3cdcbdd96485b392ffa4584467e8", + "rev": "4b3bbb9dc3c80d1b62228c9a2ca0bef74a24a192", "type": "gitlab" }, "original": { @@ -29,11 +29,11 @@ ] }, "locked": { - "lastModified": 1772985280, - "narHash": "sha256-FdrNykOoY9VStevU4zjSUdvsL9SzJTcXt4omdEDZDLk=", + "lastModified": 1773963144, + "narHash": "sha256-WzBOBfSay3GYilUfKaUa1Mbf8/jtuAiJIedx7fWuIX4=", "owner": "nix-community", "repo": "home-manager", - "rev": "8f736f007139d7f70752657dff6a401a585d6cbc", + "rev": "a91b3ea73a765614d90360580b689c48102d1d33", "type": "github" }, "original": { @@ -43,13 +43,33 @@ "type": "github" } }, + "home-manager-unstable": { + "inputs": { + "nixpkgs": [ + "nixpkgs-unstable" + ] + }, + "locked": { + "lastModified": 1774007980, + "narHash": "sha256-FOnZjElEI8pqqCvB6K/1JRHTE8o4rer8driivTpq2uo=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "9670de2921812bc4e0452f6e3efd8c859696c183", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1772822230, - "narHash": "sha256-yf3iYLGbGVlIthlQIk5/4/EQDZNNEmuqKZkQssMljuw=", + "lastModified": 1773814637, + "narHash": "sha256-GNU+ooRmrHLfjlMsKdn0prEKVa0faVanm0jrgu1J/gY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "71caefce12ba78d84fe618cf61644dce01cf3a96", + "rev": "fea3b367d61c1a6592bc47c72f40a9f3e6a53e96", "type": "github" }, "original": { @@ -59,11 +79,29 @@ "type": "github" } }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1773821835, + "narHash": "sha256-TJ3lSQtW0E2JrznGVm8hOQGVpXjJyXY2guAxku2O9A4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "firefox-addons": "firefox-addons", "home-manager": "home-manager", - "nixpkgs": "nixpkgs" + "home-manager-unstable": "home-manager-unstable", + "nixpkgs": "nixpkgs", + "nixpkgs-unstable": "nixpkgs-unstable" } } }, diff --git a/flake.nix b/flake.nix index 4db8565..b07dcd1 100644 --- a/flake.nix +++ b/flake.nix @@ -4,20 +4,26 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; + home-manager-unstable = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; + }; + firefox-addons = { url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; }; }; - outputs = { self, nixpkgs, home-manager, ... }@inputs: { + outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, home-manager-unstable, ... }@inputs: { nixosConfigurations = { @@ -71,11 +77,11 @@ ]; }; - nova = nixpkgs.lib.nixosSystem { + nova = nixpkgs-unstable.lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ ./hosts/nova - home-manager.nixosModules.home-manager { + home-manager-unstable.nixosModules.home-manager { home-manager = { extraSpecialArgs = { inherit inputs; }; useGlobalPkgs = true; diff --git a/home/modules/fonts.nix b/home/modules/fonts.nix index 23d9e4a..fa3eb6c 100644 --- a/home/modules/fonts.nix +++ b/home/modules/fonts.nix @@ -5,7 +5,7 @@ anonymousPro cantarell-fonts cascadia-code - charis-sil + charis cm_unicode corefonts dejavu_fonts diff --git a/home/modules/niri.nix b/home/modules/niri.nix new file mode 100644 index 0000000..40d48d8 --- /dev/null +++ b/home/modules/niri.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + # services.niri.enable = true; +} diff --git a/home/modules/nvim/default.nix b/home/modules/nvim/default.nix index c417c93..1847781 100644 --- a/home/modules/nvim/default.nix +++ b/home/modules/nvim/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, ... }: +{ pkgs, ... }: { home.packages = with pkgs; [ @@ -100,7 +100,7 @@ config = "lua require 'colorizer'.setup()"; } - { + { plugin = nvim-lspconfig; type = "lua"; config = '' @@ -112,8 +112,8 @@ vim.lsp.enable('texlab') vim.lsp.enable('ts_ls') vim.lsp.enable('vimls') - vim.api.nvim_del_keymap('i', '') + vim.keymap.set({ 'i' }, "", vim.lsp.buf.signature_help, { desc = "Show signature help" }) ''; } @@ -143,6 +143,7 @@ ''; } + quarto-nvim typescript-vim { diff --git a/home/modules/office-cli.nix b/home/modules/office-cli.nix index cf86068..90331aa 100644 --- a/home/modules/office-cli.nix +++ b/home/modules/office-cli.nix @@ -25,8 +25,10 @@ openssl pandoc pdftk + quarto ripmime urlscan + visidata w3m ]; } diff --git a/home/modules/r.nix b/home/modules/r.nix index 8b1b3ed..e284118 100644 --- a/home/modules/r.nix +++ b/home/modules/r.nix @@ -24,6 +24,7 @@ let progress purrr qrcode + quarto RColorBrewer readODS revealjs diff --git a/hosts/nova/default.nix b/hosts/nova/default.nix index 482b1bf..8afaee2 100644 --- a/hosts/nova/default.nix +++ b/hosts/nova/default.nix @@ -12,6 +12,7 @@ ../../system/desktop/ergodox-udev.nix # ../../system/desktop/gnome.nix ../../system/desktop/cosmic.nix + ../../system/desktop/niri.nix ../../system/desktop/steam.nix ../../system/desktop/yubikey-pam.nix ]; diff --git a/system/desktop/niri.nix b/system/desktop/niri.nix new file mode 100644 index 0000000..d55d052 --- /dev/null +++ b/system/desktop/niri.nix @@ -0,0 +1,11 @@ +{ lib, ... }: + +{ + programs.niri.enable = true; + + services.gnome.gnome-keyring.enable = lib.mkForce false; + + programs.firefox.preferences = { + "widget.gtk.libadwaita-colors.enabled" = false; + }; +} From 48f66e6227dea36ed10ff21937955c4e8c4f56d0 Mon Sep 17 00:00:00 2001 From: Till Date: Sat, 21 Mar 2026 12:45:36 +0100 Subject: [PATCH 38/44] niri --- home/desktop-slim.nix | 5 +++-- home/modules/niri.nix | 11 ++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/home/desktop-slim.nix b/home/desktop-slim.nix index 9979ab9..0ddcb83 100644 --- a/home/desktop-slim.nix +++ b/home/desktop-slim.nix @@ -7,10 +7,11 @@ ./modules/devel.nix ./modules/firefox.nix ./modules/fonts.nix - ./modules/media.nix - ./modules/user-dirs.nix ./modules/gpg.nix + ./modules/media.nix + ./modules/niri.nix ./modules/password-store.nix + ./modules/user-dirs.nix ]; home.packages = with pkgs; [ diff --git a/home/modules/niri.nix b/home/modules/niri.nix index 40d48d8..e29b384 100644 --- a/home/modules/niri.nix +++ b/home/modules/niri.nix @@ -1,5 +1,14 @@ { ... }: { - # services.niri.enable = true; + programs.alacritty.enable = true; # Super+T in the default setting (terminal) + programs.fuzzel.enable = true; # Super+D in the default setting (app launcher) + programs.swaylock.enable = true; # Super+Alt+L in the default setting (screen locker) + programs.waybar.enable = true; # launch on startup in the default setting (bar) + services.mako.enable = true; # notification daemon + services.swayidle.enable = true; # idle management daemon + services.polkit-gnome.enable = true; # polkit + home.packages = with pkgs; [ + swaybg # wallpaper + ]; } From 030e4595401765032e04ebd93e66793052f112fa Mon Sep 17 00:00:00 2001 From: Till Date: Mon, 23 Mar 2026 01:12:56 +0100 Subject: [PATCH 39/44] changes --- home/desktop-slim.nix | 1 + home/dotfiles/foot/foot.ini | 39 +++++ home/dotfiles/polybar/config.ini | 186 ++++++++++++++++++++++++ home/dotfiles/waybar/config.jsonc | 219 +++++++++++++++++++++++++++++ home/modules/foot.nix | 54 +------ home/modules/mail/config.neomuttrc | 4 +- home/modules/niri.nix | 15 +- home/modules/nvim/default.nix | 17 ++- system/desktop/niri.nix | 2 + 9 files changed, 467 insertions(+), 70 deletions(-) create mode 100644 home/dotfiles/foot/foot.ini create mode 100644 home/dotfiles/polybar/config.ini create mode 100644 home/dotfiles/waybar/config.jsonc diff --git a/home/desktop-slim.nix b/home/desktop-slim.nix index 0ddcb83..1382321 100644 --- a/home/desktop-slim.nix +++ b/home/desktop-slim.nix @@ -7,6 +7,7 @@ ./modules/devel.nix ./modules/firefox.nix ./modules/fonts.nix + ./modules/foot.nix ./modules/gpg.nix ./modules/media.nix ./modules/niri.nix diff --git a/home/dotfiles/foot/foot.ini b/home/dotfiles/foot/foot.ini new file mode 100644 index 0000000..3524125 --- /dev/null +++ b/home/dotfiles/foot/foot.ini @@ -0,0 +1,39 @@ +[colors-light] +alpha=1.0 +background=eeeeee +bright0=585858 +bright1=d70000 +bright2=5faf5f +bright3=ffaf00 +bright4=0087af +bright5=ff5faf +bright6=00afaf +bright7=bcbcbc +cursor=eeeeee 1c1c1c +foreground=1c1c1c +regular0=1c1c1c +regular1=af0000 +regular2=008700 +regular3=d75f00 +regular4=005faf +regular5=d70087 +regular6=005f87 +regular7=ffffff + +[csd] +size=0 + +[cursor] +blink=true +style=beam + +[key-bindings] +show-urls-copy=Control+Shift+y +show-urls-launch=Control+Shift+g + +[main] +font=JetBrains Mono:size=12 +pad=15x15 + +[mouse] +hide-when-typing=yes diff --git a/home/dotfiles/polybar/config.ini b/home/dotfiles/polybar/config.ini new file mode 100644 index 0000000..0c89cda --- /dev/null +++ b/home/dotfiles/polybar/config.ini @@ -0,0 +1,186 @@ +;========================================================== +; +; +; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ +; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ +; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ +; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ +; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ +; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ +; +; +; To learn more about how to configure Polybar +; go to https://github.com/polybar/polybar +; +; The README contains a lot of information +; +;========================================================== + +[colors] +background = #282A2E +background-alt = #373B41 +foreground = #C5C8C6 +primary = #F0C674 +secondary = #8ABEB7 +alert = #A54242 +disabled = #707880 + +[bar/example] +width = 100% +height = 35pt +radius = 0 + +offset-x = 0 + +; dpi = 96 + +background = ${colors.background} +foreground = ${colors.foreground} + +line-size = 3pt + +border-size = 4pt +border-color = #00000000 + +padding-left = 0 +padding-right = 1 + +module-margin = 1 + +separator = | +separator-foreground = ${colors.disabled} + +font-0 = monospace;2 + +modules-left = xworkspaces xwindow +modules-right = filesystem pulseaudio xkeyboard memory cpu wlan eth date + +cursor-click = pointer +cursor-scroll = ns-resize + +enable-ipc = true + +; wm-restack = generic +; wm-restack = bspwm +; wm-restack = i3 + +override-redirect = false + +; This module is not active by default (to enable it, add it to one of the +; modules-* list above). +; Please note that only a single tray can exist at any time. If you launch +; multiple bars with this module, only a single one will show it, the others +; will produce a warning. Which bar gets the module is timing dependent and can +; be quite random. +; For more information, see the documentation page for this module: +; https://polybar.readthedocs.io/en/stable/user/modules/tray.html +[module/systray] +type = internal/tray + +format-margin = 8pt +tray-spacing = 16pt + +[module/xworkspaces] +type = internal/xworkspaces + +label-active = %name% +label-active-background = ${colors.background-alt} +label-active-underline= ${colors.primary} +label-active-padding = 1 + +label-occupied = %name% +label-occupied-padding = 1 + +label-urgent = %name% +label-urgent-background = ${colors.alert} +label-urgent-padding = 1 + +label-empty = %name% +label-empty-foreground = ${colors.disabled} +label-empty-padding = 1 + +[module/xwindow] +type = internal/xwindow +label = %title:0:60:...% + +[module/filesystem] +type = internal/fs +interval = 25 + +mount-0 = / + +label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%% + +label-unmounted = %mountpoint% not mounted +label-unmounted-foreground = ${colors.disabled} + +[module/pulseaudio] +type = internal/pulseaudio + +format-volume-prefix = "VOL " +format-volume-prefix-foreground = ${colors.primary} +format-volume = + +label-volume = %percentage%% + +label-muted = muted +label-muted-foreground = ${colors.disabled} + +[module/xkeyboard] +type = internal/xkeyboard +blacklist-0 = num lock + +label-layout = %layout% +label-layout-foreground = ${colors.primary} + +label-indicator-padding = 2 +label-indicator-margin = 1 +label-indicator-foreground = ${colors.background} +label-indicator-background = ${colors.secondary} + +[module/memory] +type = internal/memory +interval = 2 +format-prefix = "RAM " +format-prefix-foreground = ${colors.primary} +label = %percentage_used:2%% + +[module/cpu] +type = internal/cpu +interval = 2 +format-prefix = "CPU " +format-prefix-foreground = ${colors.primary} +label = %percentage:2%% + +[network-base] +type = internal/network +interval = 5 +format-connected = +format-disconnected = +label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected + +[module/wlan] +inherit = network-base +interface-type = wireless +label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip% + +[module/eth] +inherit = network-base +interface-type = wired +label-connected = %{F#F0C674}%ifname%%{F-} %local_ip% + +[module/date] +type = internal/date +interval = 1 + +date = %H:%M +date-alt = %Y-%m-%d %H:%M:%S + +label = %date% +label-foreground = ${colors.primary} + +[settings] +screenchange-reload = true +pseudo-transparency = true + +; vim:ft=dosini diff --git a/home/dotfiles/waybar/config.jsonc b/home/dotfiles/waybar/config.jsonc new file mode 100644 index 0000000..a330204 --- /dev/null +++ b/home/dotfiles/waybar/config.jsonc @@ -0,0 +1,219 @@ +// -*- mode: jsonc -*- +{ + // "layer": "top", // Waybar at top layer + // "position": "bottom", // Waybar position (top|bottom|left|right) + "height": 20, // Waybar height (to be removed for auto height) + // "width": 1280, // Waybar width + "spacing": 2, // Gaps between modules (4px) + // Choose the order of the modules + "modules-left": [ + "sway/workspaces", + "sway/mode", + "sway/scratchpad", + "custom/media" + ], + "modules-center": [ + "sway/window" + ], + "modules-right": [ + "mpd", + "idle_inhibitor", + "pulseaudio", + "network", + "power-profiles-daemon", + "cpu", + "memory", + "temperature", + "backlight", + "keyboard-state", + "sway/language", + "battery", + "battery#bat2", + "clock", + "tray", + "custom/power" + ], + // Modules configuration + // "sway/workspaces": { + // "disable-scroll": true, + // "all-outputs": true, + // "warp-on-scroll": false, + // "format": "{name}: {icon}", + // "format-icons": { + // "1": "", + // "2": "", + // "3": "", + // "4": "", + // "5": "", + // "urgent": "", + // "focused": "", + // "default": "" + // } + // }, + "keyboard-state": { + "numlock": true, + "capslock": true, + "format": "{name} {icon}", + "format-icons": { + "locked": "", + "unlocked": "" + } + }, + "sway/mode": { + "format": "{}" + }, + "sway/scratchpad": { + "format": "{icon} {count}", + "show-empty": false, + "format-icons": ["", ""], + "tooltip": true, + "tooltip-format": "{app}: {title}" + }, + "mpd": { + "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", + "format-disconnected": "Disconnected ", + "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", + "unknown-tag": "N/A", + "interval": 5, + "consume-icons": { + "on": " " + }, + "random-icons": { + "off": " ", + "on": " " + }, + "repeat-icons": { + "on": " " + }, + "single-icons": { + "on": "1 " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "tray": { + // "icon-size": 21, + "spacing": 10, + // "icons": { + // "blueman": "bluetooth", + // "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png" + // } + }, + "clock": { + // "timezone": "America/New_York", + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%Y-%m-%d}" + }, + "cpu": { + "format": "{usage}% ", + "tooltip": false + }, + "memory": { + "format": "{}% " + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": "{temperatureC}°C {icon}", + "format-icons": ["󰉬", "", "󰉪"] + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}% {icon}", + "format-icons": ["", "", "", "", "", "", "", "", ""] + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-full": "{capacity}% {icon}", + "format-charging": "{capacity}% 󰃨", + "format-plugged": "{capacity}% ", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "power-profiles-daemon": { + "format": "{icon}", + "tooltip-format": "Power profile: {profile}\nDriver: {driver}", + "tooltip": true, + "format-icons": { + "default": "", + "performance": "", + "balanced": "", + "power-saver": "" + } + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": "{essid} ({signalStrength}%) ", + "format-ethernet": "{ipaddr}/{cidr} 󰊗", + "tooltip-format": "{ifname} via {gwaddr} 󰊗", + "format-linked": "{ifname} (No IP) 󰊗", + "format-disconnected": "Disconnected ⚠", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{volume}% {icon} {format_source}", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": "󰅶 {icon} {format_source}", + "format-muted": "󰅶 {format_source}", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "󰂑", + "headset": "󰂑", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "custom/media": { + "format": "{icon} {text}", + "return-type": "json", + "max-length": 40, + "format-icons": { + "spotify": "", + "default": "🎜" + }, + "escape": true, + "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder + // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name + }, + "custom/power": { + "format" : "⏻ ", + "tooltip": false, + "menu": "on-click", + "menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder + "menu-actions": { + "shutdown": "shutdown", + "reboot": "reboot", + "suspend": "systemctl suspend", + "hibernate": "systemctl hibernate" + } + } +} diff --git a/home/modules/foot.nix b/home/modules/foot.nix index 10dc8aa..4e54a1f 100644 --- a/home/modules/foot.nix +++ b/home/modules/foot.nix @@ -1,58 +1,8 @@ -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }: { programs.foot = { enable = true; - settings = { - - main = { - shell = "${pkgs.fish}/bin/fish -c 'tmux attach'"; - pad = "34x34"; - font = "JetBrains Mono:size=14"; - # font = "Adwaita Mono:size=17"; - # font-bold = "Adwaita Mono:size=17:weight=bold"; - # font-italic = "Adwaita Mono:size=17:slant=italic"; - # font-bold-italic = "Adwaita Mono:size=17:weight=boldslant=italic"; - # initial-window-mode = "maximized"; - # initial-color-theme = "dark"; - }; - - mouse.hide-when-typing = "yes"; - cursor = { - style = "beam"; - blink = true; - }; - - csd.size = "0"; - - colors = { - cursor = "eeeeee 1c1c1c"; - alpha = "1.0"; - background = "eeeeee"; - foreground = "1c1c1c"; - regular0 = "1c1c1c"; # black - bright0 = "585858"; # bright black - regular1 = "af0000"; # red - bright1 = "d70000"; # bright red - regular2 = "008700"; # green - bright2 = "5faf5f"; # bright green - regular3 = "d75f00"; # yellow - bright3 = "ffaf00"; # bright yellow - regular4 = "005faf"; # blue - bright4 = "0087af"; # bright blue - regular5 = "d70087"; # magenta - bright5 = "ff5faf"; # bright magenta - regular6 = "005f87"; # cyan - bright6 = "00afaf"; # bright cyan - regular7 = "ffffff"; # white - bright7 = "bcbcbc"; # bright white - }; - - key-bindings = { - show-urls-launch = "Control+Shift+g"; - show-urls-copy = "Control+Shift+y"; - }; - - }; }; + xdg.configFile."foot/foot.ini".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/dotfiles/foot/foot.ini"; } diff --git a/home/modules/mail/config.neomuttrc b/home/modules/mail/config.neomuttrc index da13972..392c634 100644 --- a/home/modules/mail/config.neomuttrc +++ b/home/modules/mail/config.neomuttrc @@ -42,10 +42,10 @@ set attach_save_dir = $my_download_folder # Colors -color indicator brightwhite brightblack +color indicator white brightblack color index_flags brightmagenta default '.*' color index_date cyan default -color index brightblack default '~N' +color index brightgreen default '~N' color header brightblack default ".*" color header brightgreen default "^(Subject)" color header yellow default "^(From|To|CC|BCC)" diff --git a/home/modules/niri.nix b/home/modules/niri.nix index e29b384..9cc652e 100644 --- a/home/modules/niri.nix +++ b/home/modules/niri.nix @@ -1,14 +1,15 @@ -{ ... }: +{ pkgs, config, ... }: { - programs.alacritty.enable = true; # Super+T in the default setting (terminal) - programs.fuzzel.enable = true; # Super+D in the default setting (app launcher) - programs.swaylock.enable = true; # Super+Alt+L in the default setting (screen locker) - programs.waybar.enable = true; # launch on startup in the default setting (bar) - services.mako.enable = true; # notification daemon services.swayidle.enable = true; # idle management daemon services.polkit-gnome.enable = true; # polkit + home.packages = with pkgs; [ - swaybg # wallpaper + wl-mirror + xwayland-satellite ]; + + programs.ghostty.enable = true; + + # xdg.configFile."polybar/config.ini".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/dotfiles/polybar/config.ini"; } diff --git a/home/modules/nvim/default.nix b/home/modules/nvim/default.nix index 1847781..cdb8211 100644 --- a/home/modules/nvim/default.nix +++ b/home/modules/nvim/default.nix @@ -31,7 +31,7 @@ cmp-path { - plugin = fugitive; + plugin = vim-fugitive; type = "lua"; config = '' vim.api.nvim_set_keymap("n", "g", ":Git", { noremap = true, silent = true }) @@ -68,7 +68,7 @@ } { - plugin = goyo; + plugin = goyo-vim; config = '' nnoremap yog :Goyo nnoremap [og :Goyo 80 @@ -135,13 +135,12 @@ ''; } - { - plugin = papercolor-theme; - config = '' - set background=light - colorscheme PaperColor - ''; - } + # { + # plugin = papercolor-theme; + # config = '' + # colorscheme PaperColor + # ''; + # } quarto-nvim typescript-vim diff --git a/system/desktop/niri.nix b/system/desktop/niri.nix index d55d052..025a474 100644 --- a/system/desktop/niri.nix +++ b/system/desktop/niri.nix @@ -3,6 +3,8 @@ { programs.niri.enable = true; + programs.dms-shell.enable = true; + services.gnome.gnome-keyring.enable = lib.mkForce false; programs.firefox.preferences = { From c62c8e46f3b03d3b96729dfa2b13b8a0ca641255 Mon Sep 17 00:00:00 2001 From: Till Date: Mon, 23 Mar 2026 14:31:58 +0100 Subject: [PATCH 40/44] getting there --- home/desktop-full.nix | 2 +- .../neomutt}/bindings.neomuttrc | 0 .../neomutt/colors.neomuttrc} | 44 +------------------ home/dotfiles/neomutt/config.neomuttrc | 43 ++++++++++++++++++ home/modules/{mail/default.nix => mail.nix} | 6 +-- home/modules/nvim/default.nix | 7 +++ 6 files changed, 55 insertions(+), 47 deletions(-) rename home/{modules/mail => dotfiles/neomutt}/bindings.neomuttrc (100%) rename home/{modules/mail/config.neomuttrc => dotfiles/neomutt/colors.neomuttrc} (56%) create mode 100644 home/dotfiles/neomutt/config.neomuttrc rename home/modules/{mail/default.nix => mail.nix} (96%) diff --git a/home/desktop-full.nix b/home/desktop-full.nix index dfdf6bb..0ee5bda 100644 --- a/home/desktop-full.nix +++ b/home/desktop-full.nix @@ -7,7 +7,7 @@ ./modules/messaging.nix ./modules/r.nix ./modules/tex.nix - ./modules/mail + ./modules/mail.nix ./modules/office-gui.nix ./modules/office-cli.nix ./modules/aichat.nix diff --git a/home/modules/mail/bindings.neomuttrc b/home/dotfiles/neomutt/bindings.neomuttrc similarity index 100% rename from home/modules/mail/bindings.neomuttrc rename to home/dotfiles/neomutt/bindings.neomuttrc diff --git a/home/modules/mail/config.neomuttrc b/home/dotfiles/neomutt/colors.neomuttrc similarity index 56% rename from home/modules/mail/config.neomuttrc rename to home/dotfiles/neomutt/colors.neomuttrc index 392c634..363f28f 100644 --- a/home/modules/mail/config.neomuttrc +++ b/home/dotfiles/neomutt/colors.neomuttrc @@ -1,48 +1,6 @@ -# Alias - -set alias_file = ~/.local/share/neomutt/aliases.neomuttrc -source $alias_file - -# External - -set my_download_folder = ~/tmp - -# Status bar - -set status_chars = "✔↻٪A" -unset help - -# Index - -set index_format = "%-25.25F %<[y?%<[7d?%<[d?%[ %H:%M]&%[%a %H:%M]>&%[%d.%m. %Hh]>&%[%d.%m.%Y]> %Z %?X?▼ &?%s" -set strict_threads -set send_charset = "utf-8:iso-8859-1:us-ascii" -set charset = "utf-8" - -# Pager view - -set pager_index_lines = 10 -set pager_context = 3 -set pager_stop -set smart_wrap -set menu_scroll -set tilde -unset markers -ignore * -unignore from: to: cc: bcc: date: subject: -unhdr_order * -hdr_order from: to: cc: bcc: date: subject: -alternative_order text/plain text/enriched text/html -auto_view text/html - -# Attachments - -set rfc2047_parameters -set attach_save_dir = $my_download_folder - # Colors -color indicator white brightblack +color indicator default brightblack color index_flags brightmagenta default '.*' color index_date cyan default color index brightgreen default '~N' diff --git a/home/dotfiles/neomutt/config.neomuttrc b/home/dotfiles/neomutt/config.neomuttrc new file mode 100644 index 0000000..f7408be --- /dev/null +++ b/home/dotfiles/neomutt/config.neomuttrc @@ -0,0 +1,43 @@ +# External + +set my_download_folder = ~/tmp + +# Status bar + +set status_chars = "✔↻٪A" +unset help + +# Index + +set index_format = "%-25.25F %<[y?%<[7d?%<[d?%[ %H:%M]&%[%a %H:%M]>&%[%d.%m. %Hh]>&%[%d.%m.%Y]> %Z %?X?▼ &?%s" +set strict_threads +set send_charset = "utf-8:iso-8859-1:us-ascii" +set charset = "utf-8" + +# Pager view + +set pager_index_lines = 10 +set pager_context = 3 +set pager_stop +set smart_wrap +set menu_scroll +set tilde +unset markers +ignore * +unignore from: to: cc: bcc: date: subject: +unhdr_order * +hdr_order from: to: cc: bcc: date: subject: +alternative_order text/plain text/enriched text/html +auto_view text/html + +# Attachments + +set rfc2047_parameters +set attach_save_dir = $my_download_folder + +# Alias + +set alias_file = ~/.local/share/neomutt/aliases.neomuttrc +source $alias_file + +source colors.neomuttrc diff --git a/home/modules/mail/default.nix b/home/modules/mail.nix similarity index 96% rename from home/modules/mail/default.nix rename to home/modules/mail.nix index 3f73a72..6a5d423 100644 --- a/home/modules/mail/default.nix +++ b/home/modules/mail.nix @@ -259,11 +259,11 @@ in { key = "l"; map = [ "index" "pager" ]; action = "unset signature"; } ]; - extraConfig = builtins.readFile ./config.neomuttrc; + extraConfig = builtins.readFile ../dotfiles/neomutt/config.neomuttrc; }; - xdg.configFile."neomutt/bindings.neomuttrc".source = ./bindings.neomuttrc; - + xdg.configFile."neomutt/colors.neomuttrc".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/dotfiles/neomutt/colors.neomuttrc"; + xdg.configFile."neomutt/bindings.neomuttrc".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/dotfiles/neomutt/bindings.neomuttrc"; programs.neovim.plugins = with pkgs.vimPlugins; [ { plugin = vim-pathogen; diff --git a/home/modules/nvim/default.nix b/home/modules/nvim/default.nix index cdb8211..9dbeba5 100644 --- a/home/modules/nvim/default.nix +++ b/home/modules/nvim/default.nix @@ -135,6 +135,13 @@ ''; } + { + plugin = catppuccin-nvim; + config = '' + colorscheme catppuccin-nvim + ''; + } + # { # plugin = papercolor-theme; # config = '' From d8032cc35d232ac0a275bb1c97d41f84ceefe83f Mon Sep 17 00:00:00 2001 From: Till Date: Mon, 23 Mar 2026 14:32:09 +0100 Subject: [PATCH 41/44] system stuff even --- home/dotfiles/neomutt/colors.neomuttrc | 6 ++++-- home/modules/mail.nix | 9 ++++++--- system/desktop/niri.nix | 9 ++++----- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/home/dotfiles/neomutt/colors.neomuttrc b/home/dotfiles/neomutt/colors.neomuttrc index 363f28f..afb98b1 100644 --- a/home/dotfiles/neomutt/colors.neomuttrc +++ b/home/dotfiles/neomutt/colors.neomuttrc @@ -1,9 +1,11 @@ # Colors -color indicator default brightblack +color status $my_primary_color default +color index $my_primary_color default '~N' + +# color indicator default foreground color index_flags brightmagenta default '.*' color index_date cyan default -color index brightgreen default '~N' color header brightblack default ".*" color header brightgreen default "^(Subject)" color header yellow default "^(From|To|CC|BCC)" diff --git a/home/modules/mail.nix b/home/modules/mail.nix index 6a5d423..ae349b3 100644 --- a/home/modules/mail.nix +++ b/home/modules/mail.nix @@ -12,6 +12,7 @@ let set nm_record_tags = "+sent -inbox -unread +${ accountName }"; set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.${accountName}.signature.text } set status_format = "— [ %r ] $my_account %f (%lB) %>— %m messages%?n? [ %n new ]?%?d? [ %d to delete ]?%?t? [ %t tagged ]? —" + source colors.neomuttrc ''; makeAccount = accountName: { @@ -84,11 +85,11 @@ in ''; }; neomutt = { - extraConfig = makeConfig name + '' - color status blue default + extraConfig = '' + set my_primary_color=blue alternates ^tstraube@(em|rz)?.uni-frankfurt.de$ set smime_is_default - ''; + '' + makeConfig name; }; }; @@ -105,6 +106,7 @@ in neomutt = { extraConfig = makeConfig name + '' color status green default + set my_primary_color=green alternates @t9e.me$ @ktiu.net$ ^(tillkowski|till.straube)@gmail.com$ set reverse_name ''; @@ -126,6 +128,7 @@ in neomutt = { extraConfig = makeConfig name + '' color status red default + set my_primary_color=red ''; }; passwordCommand = "pass ksh/systemli"; diff --git a/system/desktop/niri.nix b/system/desktop/niri.nix index 025a474..f2e6623 100644 --- a/system/desktop/niri.nix +++ b/system/desktop/niri.nix @@ -2,12 +2,11 @@ { programs.niri.enable = true; - programs.dms-shell.enable = true; - services.gnome.gnome-keyring.enable = lib.mkForce false; + programs.nm-applet.enable = false; - programs.firefox.preferences = { - "widget.gtk.libadwaita-colors.enabled" = false; - }; + # programs.firefox.preferences = { + # "widget.gtk.libadwaita-colors.enabled" = false; + # }; } From e945735fa109503167a4e35eb185e55f8f4062e9 Mon Sep 17 00:00:00 2001 From: Till Date: Sun, 29 Mar 2026 14:23:01 +0200 Subject: [PATCH 42/44] laptop --- flake.lock | 23 +- flake.nix | 13 +- home/desktop-full.nix | 15 -- home/{modules => desktop-full}/aichat.nix | 0 home/{modules => desktop-full}/calendars.nix | 0 .../default.nix} | 12 +- home/{modules => desktop-full}/khard-dump.nix | 0 home/{modules => desktop-full}/mail.nix | 7 +- home/{modules => desktop-full}/messaging.nix | 0 home/desktop-full/office-cli.nix | 4 + home/{modules => desktop-full}/office-gui.nix | 1 - home/{modules => desktop-full}/r.nix | 0 home/{modules => desktop-full}/tasks.nix | 2 +- home/{modules => desktop-full}/tex.nix | 0 .../default.nix} | 20 +- home/{modules => desktop-slim}/devel.nix | 0 home/{modules => desktop-slim}/firefox.nix | 0 home/{modules => desktop-slim}/fonts.nix | 0 home/desktop-slim/foot.nix | 11 + home/{modules => desktop-slim}/gpg.nix | 0 home/{modules => desktop-slim}/media.nix | 0 home/desktop-slim/niri.nix | 22 ++ .../password-store.nix | 0 home/{modules => desktop-slim}/user-dirs.nix | 0 home/dotfiles/foot/catppuccin-frappe.ini | 34 +++ home/dotfiles/foot/catppuccin-latte.ini | 34 +++ home/dotfiles/foot/catppuccin-macchiato.ini | 34 +++ home/dotfiles/foot/catppuccin-mocha.ini | 34 +++ home/dotfiles/foot/dank-colors.ini | 25 ++ home/dotfiles/foot/foot.ini | 32 +-- home/dotfiles/neomutt/colors.neomuttrc | 10 +- home/dotfiles/polybar/config.ini | 186 --------------- home/dotfiles/waybar/config.jsonc | 219 ------------------ home/{minimal.nix => minimal/default.nix} | 25 +- home/{modules => minimal}/fish.nix | 0 home/{modules => minimal}/git.nix | 0 home/{modules => minimal}/nvim/config.vim | 3 + home/{modules => minimal}/nvim/default.nix | 0 .../nvim/dotfiles/after/ftplugin/markdown.vim | 0 .../nvim/dotfiles/autocommands.vim | 0 .../nvim/dotfiles/ftplugin/markdown.vim | 0 .../nvim/dotfiles/ftplugin/nix.vim | 0 .../nvim/dotfiles/ftplugin/r.vim | 0 .../nvim/dotfiles/ftplugin/rmd.vim | 0 .../nvim/dotfiles/ftplugin/tex.vim | 0 .../nvim/dotfiles/ftplugin/typescript.vim | 0 .../nvim/dotfiles/syntax/rmd.vim | 0 home/{modules => minimal}/nvim/lsp.lua | 0 home/{modules => minimal}/nvim/nvim-cmp.lua | 0 home/{modules => minimal}/tmux.nix | 0 home/minimal/vifm.nix | 12 + home/modules/foot.nix | 8 - home/modules/niri.nix | 15 -- home/modules/vifm.nix | 30 --- home/{modules => unused}/gnome.nix | 0 home/{modules => unused}/hyprland.nix | 0 home/{modules => unused}/plasma.nix | 0 hosts/nova/default.nix | 3 +- system/desktop/default.nix | 2 + system/desktop/laptop.nix | 22 ++ system/desktop/niri.nix | 36 ++- 61 files changed, 344 insertions(+), 550 deletions(-) delete mode 100644 home/desktop-full.nix rename home/{modules => desktop-full}/aichat.nix (100%) rename home/{modules => desktop-full}/calendars.nix (100%) rename home/{modules/office-cli.nix => desktop-full/default.nix} (78%) rename home/{modules => desktop-full}/khard-dump.nix (100%) rename home/{modules => desktop-full}/mail.nix (98%) rename home/{modules => desktop-full}/messaging.nix (100%) create mode 100644 home/desktop-full/office-cli.nix rename home/{modules => desktop-full}/office-gui.nix (96%) rename home/{modules => desktop-full}/r.nix (100%) rename home/{modules => desktop-full}/tasks.nix (95%) rename home/{modules => desktop-full}/tex.nix (100%) rename home/{desktop-slim.nix => desktop-slim/default.nix} (50%) rename home/{modules => desktop-slim}/devel.nix (100%) rename home/{modules => desktop-slim}/firefox.nix (100%) rename home/{modules => desktop-slim}/fonts.nix (100%) create mode 100644 home/desktop-slim/foot.nix rename home/{modules => desktop-slim}/gpg.nix (100%) rename home/{modules => desktop-slim}/media.nix (100%) create mode 100644 home/desktop-slim/niri.nix rename home/{modules => desktop-slim}/password-store.nix (100%) rename home/{modules => desktop-slim}/user-dirs.nix (100%) create mode 100644 home/dotfiles/foot/catppuccin-frappe.ini create mode 100644 home/dotfiles/foot/catppuccin-latte.ini create mode 100644 home/dotfiles/foot/catppuccin-macchiato.ini create mode 100644 home/dotfiles/foot/catppuccin-mocha.ini create mode 100644 home/dotfiles/foot/dank-colors.ini delete mode 100644 home/dotfiles/polybar/config.ini delete mode 100644 home/dotfiles/waybar/config.jsonc rename home/{minimal.nix => minimal/default.nix} (58%) rename home/{modules => minimal}/fish.nix (100%) rename home/{modules => minimal}/git.nix (100%) rename home/{modules => minimal}/nvim/config.vim (93%) rename home/{modules => minimal}/nvim/default.nix (100%) rename home/{modules => minimal}/nvim/dotfiles/after/ftplugin/markdown.vim (100%) rename home/{modules => minimal}/nvim/dotfiles/autocommands.vim (100%) rename home/{modules => minimal}/nvim/dotfiles/ftplugin/markdown.vim (100%) rename home/{modules => minimal}/nvim/dotfiles/ftplugin/nix.vim (100%) rename home/{modules => minimal}/nvim/dotfiles/ftplugin/r.vim (100%) rename home/{modules => minimal}/nvim/dotfiles/ftplugin/rmd.vim (100%) rename home/{modules => minimal}/nvim/dotfiles/ftplugin/tex.vim (100%) rename home/{modules => minimal}/nvim/dotfiles/ftplugin/typescript.vim (100%) rename home/{modules => minimal}/nvim/dotfiles/syntax/rmd.vim (100%) rename home/{modules => minimal}/nvim/lsp.lua (100%) rename home/{modules => minimal}/nvim/nvim-cmp.lua (100%) rename home/{modules => minimal}/tmux.nix (100%) create mode 100644 home/minimal/vifm.nix delete mode 100644 home/modules/foot.nix delete mode 100644 home/modules/niri.nix delete mode 100644 home/modules/vifm.nix rename home/{modules => unused}/gnome.nix (100%) rename home/{modules => unused}/hyprland.nix (100%) rename home/{modules => unused}/plasma.nix (100%) create mode 100644 system/desktop/laptop.nix diff --git a/flake.lock b/flake.lock index 7f41e2f..bae8605 100644 --- a/flake.lock +++ b/flake.lock @@ -95,13 +95,34 @@ "type": "github" } }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "nixpkgs-unstable" + ] + }, + "locked": { + "lastModified": 1774764457, + "narHash": "sha256-i0mv2GYp8yIZT++NAQL+zQ+QaKK4Po1a4jXI7VJLzTU=", + "ref": "refs/heads/master", + "rev": "9bf752ac33b2181356d33251c3b1b4dedde0bbc6", + "revCount": 779, + "type": "git", + "url": "https://git.outfoxxed.me/quickshell/quickshell" + }, + "original": { + "type": "git", + "url": "https://git.outfoxxed.me/quickshell/quickshell" + } + }, "root": { "inputs": { "firefox-addons": "firefox-addons", "home-manager": "home-manager", "home-manager-unstable": "home-manager-unstable", "nixpkgs": "nixpkgs", - "nixpkgs-unstable": "nixpkgs-unstable" + "nixpkgs-unstable": "nixpkgs-unstable", + "quickshell": "quickshell" } } }, diff --git a/flake.nix b/flake.nix index b07dcd1..5724930 100644 --- a/flake.nix +++ b/flake.nix @@ -21,6 +21,11 @@ inputs.nixpkgs.follows = "nixpkgs-unstable"; }; + quickshell = { + url = "git+https://git.outfoxxed.me/quickshell/quickshell"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; + }; + }; outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, home-manager-unstable, ... }@inputs: { @@ -40,7 +45,7 @@ till = { imports = [ - ./home/minimal.nix + ./home/minimal ./users/till/home.nix ]; }; @@ -90,21 +95,21 @@ till = { imports = [ - ./home/desktop-full.nix + ./home/desktop-full ./users/till/home.nix ]; }; alt = { imports = [ - ./home/desktop-slim.nix + ./home/desktop-slim ./users/alt/home.nix ]; }; guest = { imports = [ - ./home/desktop-slim.nix + ./home/desktop-slim ./users/guest/home.nix ]; }; diff --git a/home/desktop-full.nix b/home/desktop-full.nix deleted file mode 100644 index 0ee5bda..0000000 --- a/home/desktop-full.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ ... }: - -{ - imports = [ - ./desktop-slim.nix - - ./modules/messaging.nix - ./modules/r.nix - ./modules/tex.nix - ./modules/mail.nix - ./modules/office-gui.nix - ./modules/office-cli.nix - ./modules/aichat.nix - ]; -} diff --git a/home/modules/aichat.nix b/home/desktop-full/aichat.nix similarity index 100% rename from home/modules/aichat.nix rename to home/desktop-full/aichat.nix diff --git a/home/modules/calendars.nix b/home/desktop-full/calendars.nix similarity index 100% rename from home/modules/calendars.nix rename to home/desktop-full/calendars.nix diff --git a/home/modules/office-cli.nix b/home/desktop-full/default.nix similarity index 78% rename from home/modules/office-cli.nix rename to home/desktop-full/default.nix index 90331aa..f7cbeac 100644 --- a/home/modules/office-cli.nix +++ b/home/desktop-full/default.nix @@ -2,9 +2,17 @@ { imports = [ - ./khard-dump.nix - ./tasks.nix + ../desktop-slim + + ./aichat.nix ./calendars.nix + ./khard-dump.nix + ./mail.nix + ./messaging.nix + ./office-gui.nix + ./r.nix + ./tasks.nix + ./tex.nix ]; home.packages = with pkgs; [ diff --git a/home/modules/khard-dump.nix b/home/desktop-full/khard-dump.nix similarity index 100% rename from home/modules/khard-dump.nix rename to home/desktop-full/khard-dump.nix diff --git a/home/modules/mail.nix b/home/desktop-full/mail.nix similarity index 98% rename from home/modules/mail.nix rename to home/desktop-full/mail.nix index ae349b3..50ba98c 100644 --- a/home/modules/mail.nix +++ b/home/desktop-full/mail.nix @@ -86,7 +86,8 @@ in }; neomutt = { extraConfig = '' - set my_primary_color=blue + color status blue default + color index blue default '~N' alternates ^tstraube@(em|rz)?.uni-frankfurt.de$ set smime_is_default '' + makeConfig name; @@ -106,7 +107,7 @@ in neomutt = { extraConfig = makeConfig name + '' color status green default - set my_primary_color=green + color index green default '~N' alternates @t9e.me$ @ktiu.net$ ^(tillkowski|till.straube)@gmail.com$ set reverse_name ''; @@ -128,7 +129,7 @@ in neomutt = { extraConfig = makeConfig name + '' color status red default - set my_primary_color=red + color index red default '~N' ''; }; passwordCommand = "pass ksh/systemli"; diff --git a/home/modules/messaging.nix b/home/desktop-full/messaging.nix similarity index 100% rename from home/modules/messaging.nix rename to home/desktop-full/messaging.nix diff --git a/home/desktop-full/office-cli.nix b/home/desktop-full/office-cli.nix new file mode 100644 index 0000000..a67ca90 --- /dev/null +++ b/home/desktop-full/office-cli.nix @@ -0,0 +1,4 @@ +{ pkgs, ... }: + +{ +} diff --git a/home/modules/office-gui.nix b/home/desktop-full/office-gui.nix similarity index 96% rename from home/modules/office-gui.nix rename to home/desktop-full/office-gui.nix index c40ec7c..1452405 100644 --- a/home/modules/office-gui.nix +++ b/home/desktop-full/office-gui.nix @@ -9,7 +9,6 @@ inkscape libreoffice lorem - nyxt pdfpc poppler-utils typst diff --git a/home/modules/r.nix b/home/desktop-full/r.nix similarity index 100% rename from home/modules/r.nix rename to home/desktop-full/r.nix diff --git a/home/modules/tasks.nix b/home/desktop-full/tasks.nix similarity index 95% rename from home/modules/tasks.nix rename to home/desktop-full/tasks.nix index 3f6cd0c..e5b6711 100644 --- a/home/modules/tasks.nix +++ b/home/desktop-full/tasks.nix @@ -9,7 +9,7 @@ enable = true; package = pkgs.taskwarrior3; dataLocation = "${config.xdg.dataHome}/taskwarrior/tasks"; - # colorTheme = "light-256"; + colorTheme = "no-color"; config = { report.list.columns = ["id" "depends.indicator" "priority" "project" "recur.indicator" "scheduled.countdown" "due" "until.age" "status.short" "description.count" "tags"]; report.list.labels= ["ID" "D" "Prio" "Proj" "R" "Scheduled" "Due" "Until" "S" "Description" "Tags"]; diff --git a/home/modules/tex.nix b/home/desktop-full/tex.nix similarity index 100% rename from home/modules/tex.nix rename to home/desktop-full/tex.nix diff --git a/home/desktop-slim.nix b/home/desktop-slim/default.nix similarity index 50% rename from home/desktop-slim.nix rename to home/desktop-slim/default.nix index 1382321..d1333f4 100644 --- a/home/desktop-slim.nix +++ b/home/desktop-slim/default.nix @@ -2,17 +2,17 @@ { imports = [ - ./minimal.nix + ../minimal - ./modules/devel.nix - ./modules/firefox.nix - ./modules/fonts.nix - ./modules/foot.nix - ./modules/gpg.nix - ./modules/media.nix - ./modules/niri.nix - ./modules/password-store.nix - ./modules/user-dirs.nix + ./devel.nix + ./firefox.nix + ./fonts.nix + ./gpg.nix + ./media.nix + ./niri.nix + ./foot.nix + ./password-store.nix + ./user-dirs.nix ]; home.packages = with pkgs; [ diff --git a/home/modules/devel.nix b/home/desktop-slim/devel.nix similarity index 100% rename from home/modules/devel.nix rename to home/desktop-slim/devel.nix diff --git a/home/modules/firefox.nix b/home/desktop-slim/firefox.nix similarity index 100% rename from home/modules/firefox.nix rename to home/desktop-slim/firefox.nix diff --git a/home/modules/fonts.nix b/home/desktop-slim/fonts.nix similarity index 100% rename from home/modules/fonts.nix rename to home/desktop-slim/fonts.nix diff --git a/home/desktop-slim/foot.nix b/home/desktop-slim/foot.nix new file mode 100644 index 0000000..9cdea88 --- /dev/null +++ b/home/desktop-slim/foot.nix @@ -0,0 +1,11 @@ +{ config, ... }: + +{ + programs.foot = { + enable = true; + }; + xdg.configFile."foot" = { + recursive = true; + source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/dotfiles/foot"; + }; +} diff --git a/home/modules/gpg.nix b/home/desktop-slim/gpg.nix similarity index 100% rename from home/modules/gpg.nix rename to home/desktop-slim/gpg.nix diff --git a/home/modules/media.nix b/home/desktop-slim/media.nix similarity index 100% rename from home/modules/media.nix rename to home/desktop-slim/media.nix diff --git a/home/desktop-slim/niri.nix b/home/desktop-slim/niri.nix new file mode 100644 index 0000000..4355279 --- /dev/null +++ b/home/desktop-slim/niri.nix @@ -0,0 +1,22 @@ +{ pkgs, config, ... }: + +{ + services.swayidle.enable = true; + services.polkit-gnome.enable = true; + + home.packages = with pkgs; [ + dsearch + wl-mirror + xwayland-satellite + ]; + + programs.foot.server.enable = true; + + # programs.ghostty.enable = true; + + # programs.firefox.preferences = { + # "widget.gtk.libadwaita-colors.enabled" = true; + # }; + + # xdg.configFile."polybar/config.ini".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/dotfiles/polybar/config.ini"; +} diff --git a/home/modules/password-store.nix b/home/desktop-slim/password-store.nix similarity index 100% rename from home/modules/password-store.nix rename to home/desktop-slim/password-store.nix diff --git a/home/modules/user-dirs.nix b/home/desktop-slim/user-dirs.nix similarity index 100% rename from home/modules/user-dirs.nix rename to home/desktop-slim/user-dirs.nix diff --git a/home/dotfiles/foot/catppuccin-frappe.ini b/home/dotfiles/foot/catppuccin-frappe.ini new file mode 100644 index 0000000..6bb7093 --- /dev/null +++ b/home/dotfiles/foot/catppuccin-frappe.ini @@ -0,0 +1,34 @@ +[colors] +cursor=232634 f2d5cf +foreground=c6d0f5 +background=303446 + +regular0=51576d +regular1=e78284 +regular2=a6d189 +regular3=e5c890 +regular4=8caaee +regular5=f4b8e4 +regular6=81c8be +regular7=b5bfe2 + +bright0=626880 +bright1=e78284 +bright2=a6d189 +bright3=e5c890 +bright4=8caaee +bright5=f4b8e4 +bright6=81c8be +bright7=a5adce + +16=ef9f76 +17=f2d5cf + +selection-foreground=c6d0f5 +selection-background=4f5369 + +search-box-no-match=232634 e78284 +search-box-match=c6d0f5 414559 + +jump-labels=232634 ef9f76 +urls=8caaee diff --git a/home/dotfiles/foot/catppuccin-latte.ini b/home/dotfiles/foot/catppuccin-latte.ini new file mode 100644 index 0000000..f5e1051 --- /dev/null +++ b/home/dotfiles/foot/catppuccin-latte.ini @@ -0,0 +1,34 @@ +[colors-light] +cursor=eff1f5 dc8a78 +foreground=4c4f69 +background=eff1f5 + +regular0=5c5f77 +regular1=d20f39 +regular2=40a02b +regular3=df8e1d +regular4=1e66f5 +regular5=ea76cb +regular6=179299 +regular7=acb0be + +bright0=6c6f85 +bright1=d20f39 +bright2=40a02b +bright3=df8e1d +bright4=1e66f5 +bright5=ea76cb +bright6=179299 +bright7=bcc0cc + +16=fe640b +17=dc8a78 + +selection-foreground=4c4f69 +selection-background=ccced7 + +search-box-no-match=dce0e8 d20f39 +search-box-match=4c4f69 ccd0da + +jump-labels=dce0e8 fe640b +urls=1e66f5 diff --git a/home/dotfiles/foot/catppuccin-macchiato.ini b/home/dotfiles/foot/catppuccin-macchiato.ini new file mode 100644 index 0000000..0a4a718 --- /dev/null +++ b/home/dotfiles/foot/catppuccin-macchiato.ini @@ -0,0 +1,34 @@ +[colors] +cursor=181926 f4dbd6 +foreground=cad3f5 +background=24273a + +regular0=494d64 +regular1=ed8796 +regular2=a6da95 +regular3=eed49f +regular4=8aadf4 +regular5=f5bde6 +regular6=8bd5ca +regular7=b8c0e0 + +bright0=5b6078 +bright1=ed8796 +bright2=a6da95 +bright3=eed49f +bright4=8aadf4 +bright5=f5bde6 +bright6=8bd5ca +bright7=a5adcb + +16=f5a97f +17=f4dbd6 + +selection-foreground=cad3f5 +selection-background=454a5f + +search-box-no-match=181926 ed8796 +search-box-match=cad3f5 363a4f + +jump-labels=181926 f5a97f +urls=8aadf4 diff --git a/home/dotfiles/foot/catppuccin-mocha.ini b/home/dotfiles/foot/catppuccin-mocha.ini new file mode 100644 index 0000000..201f91c --- /dev/null +++ b/home/dotfiles/foot/catppuccin-mocha.ini @@ -0,0 +1,34 @@ +[colors-dark] +cursor=11111b f5e0dc +foreground=cdd6f4 +background=1e1e2e + +regular0=45475a +regular1=f38ba8 +regular2=a6e3a1 +regular3=f9e2af +regular4=89b4fa +regular5=f5c2e7 +regular6=94e2d5 +regular7=bac2de + +bright0=585b70 +bright1=f38ba8 +bright2=a6e3a1 +bright3=f9e2af +bright4=89b4fa +bright5=f5c2e7 +bright6=94e2d5 +bright7=a6adc8 + +16=fab387 +17=f5e0dc + +selection-foreground=cdd6f4 +selection-background=414356 + +search-box-no-match=11111b f38ba8 +search-box-match=cdd6f4 313244 + +jump-labels=11111b fab387 +urls=89b4fa diff --git a/home/dotfiles/foot/dank-colors.ini b/home/dotfiles/foot/dank-colors.ini new file mode 100644 index 0000000..6ab7f43 --- /dev/null +++ b/home/dotfiles/foot/dank-colors.ini @@ -0,0 +1,25 @@ +[colors] +foreground=181c20 +background=f7f9ff +selection-foreground=181c20 +selection-background=e3f2fd +cursor = f7f9ff 1976d2 + +regular0=101418 +regular1=c7003b +regular2=009d14 +regular3=fbee00 +regular4=1077dc +regular5=b7dbff +regular6=1976d2 +regular7=36383a +bright0=aaaeb2 +bright1=fb1e60 +bright2=07e724 +bright3=fff100 +bright4=077df1 +bright5=b7dbff +bright6=8ec7ff +bright7=f6faff + +dim-blend-towards=white diff --git a/home/dotfiles/foot/foot.ini b/home/dotfiles/foot/foot.ini index 3524125..70aad4a 100644 --- a/home/dotfiles/foot/foot.ini +++ b/home/dotfiles/foot/foot.ini @@ -1,24 +1,9 @@ -[colors-light] -alpha=1.0 -background=eeeeee -bright0=585858 -bright1=d70000 -bright2=5faf5f -bright3=ffaf00 -bright4=0087af -bright5=ff5faf -bright6=00afaf -bright7=bcbcbc -cursor=eeeeee 1c1c1c -foreground=1c1c1c -regular0=1c1c1c -regular1=af0000 -regular2=008700 -regular3=d75f00 -regular4=005faf -regular5=d70087 -regular6=005f87 -regular7=ffffff +[main] +font=JetBrains Mono:size=12 +pad=15x15 +include=~/.config/foot/catppuccin-mocha.ini +include=~/.config/foot/catppuccin-latte.ini +# include=~/.config/foot/dank-colors.ini [csd] size=0 @@ -30,10 +15,7 @@ style=beam [key-bindings] show-urls-copy=Control+Shift+y show-urls-launch=Control+Shift+g - -[main] -font=JetBrains Mono:size=12 -pad=15x15 +color-theme-toggle=Control+comma [mouse] hide-when-typing=yes diff --git a/home/dotfiles/neomutt/colors.neomuttrc b/home/dotfiles/neomutt/colors.neomuttrc index afb98b1..424a3e0 100644 --- a/home/dotfiles/neomutt/colors.neomuttrc +++ b/home/dotfiles/neomutt/colors.neomuttrc @@ -1,11 +1,5 @@ -# Colors - -color status $my_primary_color default -color index $my_primary_color default '~N' - -# color indicator default foreground -color index_flags brightmagenta default '.*' -color index_date cyan default +# color index_flags brightmagenta default '.*' +# color index_date cyan default color header brightblack default ".*" color header brightgreen default "^(Subject)" color header yellow default "^(From|To|CC|BCC)" diff --git a/home/dotfiles/polybar/config.ini b/home/dotfiles/polybar/config.ini deleted file mode 100644 index 0c89cda..0000000 --- a/home/dotfiles/polybar/config.ini +++ /dev/null @@ -1,186 +0,0 @@ -;========================================================== -; -; -; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ -; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ -; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ -; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ -; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ -; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ -; -; -; To learn more about how to configure Polybar -; go to https://github.com/polybar/polybar -; -; The README contains a lot of information -; -;========================================================== - -[colors] -background = #282A2E -background-alt = #373B41 -foreground = #C5C8C6 -primary = #F0C674 -secondary = #8ABEB7 -alert = #A54242 -disabled = #707880 - -[bar/example] -width = 100% -height = 35pt -radius = 0 - -offset-x = 0 - -; dpi = 96 - -background = ${colors.background} -foreground = ${colors.foreground} - -line-size = 3pt - -border-size = 4pt -border-color = #00000000 - -padding-left = 0 -padding-right = 1 - -module-margin = 1 - -separator = | -separator-foreground = ${colors.disabled} - -font-0 = monospace;2 - -modules-left = xworkspaces xwindow -modules-right = filesystem pulseaudio xkeyboard memory cpu wlan eth date - -cursor-click = pointer -cursor-scroll = ns-resize - -enable-ipc = true - -; wm-restack = generic -; wm-restack = bspwm -; wm-restack = i3 - -override-redirect = false - -; This module is not active by default (to enable it, add it to one of the -; modules-* list above). -; Please note that only a single tray can exist at any time. If you launch -; multiple bars with this module, only a single one will show it, the others -; will produce a warning. Which bar gets the module is timing dependent and can -; be quite random. -; For more information, see the documentation page for this module: -; https://polybar.readthedocs.io/en/stable/user/modules/tray.html -[module/systray] -type = internal/tray - -format-margin = 8pt -tray-spacing = 16pt - -[module/xworkspaces] -type = internal/xworkspaces - -label-active = %name% -label-active-background = ${colors.background-alt} -label-active-underline= ${colors.primary} -label-active-padding = 1 - -label-occupied = %name% -label-occupied-padding = 1 - -label-urgent = %name% -label-urgent-background = ${colors.alert} -label-urgent-padding = 1 - -label-empty = %name% -label-empty-foreground = ${colors.disabled} -label-empty-padding = 1 - -[module/xwindow] -type = internal/xwindow -label = %title:0:60:...% - -[module/filesystem] -type = internal/fs -interval = 25 - -mount-0 = / - -label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%% - -label-unmounted = %mountpoint% not mounted -label-unmounted-foreground = ${colors.disabled} - -[module/pulseaudio] -type = internal/pulseaudio - -format-volume-prefix = "VOL " -format-volume-prefix-foreground = ${colors.primary} -format-volume = - -label-volume = %percentage%% - -label-muted = muted -label-muted-foreground = ${colors.disabled} - -[module/xkeyboard] -type = internal/xkeyboard -blacklist-0 = num lock - -label-layout = %layout% -label-layout-foreground = ${colors.primary} - -label-indicator-padding = 2 -label-indicator-margin = 1 -label-indicator-foreground = ${colors.background} -label-indicator-background = ${colors.secondary} - -[module/memory] -type = internal/memory -interval = 2 -format-prefix = "RAM " -format-prefix-foreground = ${colors.primary} -label = %percentage_used:2%% - -[module/cpu] -type = internal/cpu -interval = 2 -format-prefix = "CPU " -format-prefix-foreground = ${colors.primary} -label = %percentage:2%% - -[network-base] -type = internal/network -interval = 5 -format-connected = -format-disconnected = -label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected - -[module/wlan] -inherit = network-base -interface-type = wireless -label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip% - -[module/eth] -inherit = network-base -interface-type = wired -label-connected = %{F#F0C674}%ifname%%{F-} %local_ip% - -[module/date] -type = internal/date -interval = 1 - -date = %H:%M -date-alt = %Y-%m-%d %H:%M:%S - -label = %date% -label-foreground = ${colors.primary} - -[settings] -screenchange-reload = true -pseudo-transparency = true - -; vim:ft=dosini diff --git a/home/dotfiles/waybar/config.jsonc b/home/dotfiles/waybar/config.jsonc deleted file mode 100644 index a330204..0000000 --- a/home/dotfiles/waybar/config.jsonc +++ /dev/null @@ -1,219 +0,0 @@ -// -*- mode: jsonc -*- -{ - // "layer": "top", // Waybar at top layer - // "position": "bottom", // Waybar position (top|bottom|left|right) - "height": 20, // Waybar height (to be removed for auto height) - // "width": 1280, // Waybar width - "spacing": 2, // Gaps between modules (4px) - // Choose the order of the modules - "modules-left": [ - "sway/workspaces", - "sway/mode", - "sway/scratchpad", - "custom/media" - ], - "modules-center": [ - "sway/window" - ], - "modules-right": [ - "mpd", - "idle_inhibitor", - "pulseaudio", - "network", - "power-profiles-daemon", - "cpu", - "memory", - "temperature", - "backlight", - "keyboard-state", - "sway/language", - "battery", - "battery#bat2", - "clock", - "tray", - "custom/power" - ], - // Modules configuration - // "sway/workspaces": { - // "disable-scroll": true, - // "all-outputs": true, - // "warp-on-scroll": false, - // "format": "{name}: {icon}", - // "format-icons": { - // "1": "", - // "2": "", - // "3": "", - // "4": "", - // "5": "", - // "urgent": "", - // "focused": "", - // "default": "" - // } - // }, - "keyboard-state": { - "numlock": true, - "capslock": true, - "format": "{name} {icon}", - "format-icons": { - "locked": "", - "unlocked": "" - } - }, - "sway/mode": { - "format": "{}" - }, - "sway/scratchpad": { - "format": "{icon} {count}", - "show-empty": false, - "format-icons": ["", ""], - "tooltip": true, - "tooltip-format": "{app}: {title}" - }, - "mpd": { - "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", - "format-disconnected": "Disconnected ", - "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", - "unknown-tag": "N/A", - "interval": 5, - "consume-icons": { - "on": " " - }, - "random-icons": { - "off": " ", - "on": " " - }, - "repeat-icons": { - "on": " " - }, - "single-icons": { - "on": "1 " - }, - "state-icons": { - "paused": "", - "playing": "" - }, - "tooltip-format": "MPD (connected)", - "tooltip-format-disconnected": "MPD (disconnected)" - }, - "idle_inhibitor": { - "format": "{icon}", - "format-icons": { - "activated": "", - "deactivated": "" - } - }, - "tray": { - // "icon-size": 21, - "spacing": 10, - // "icons": { - // "blueman": "bluetooth", - // "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png" - // } - }, - "clock": { - // "timezone": "America/New_York", - "tooltip-format": "{:%Y %B}\n{calendar}", - "format-alt": "{:%Y-%m-%d}" - }, - "cpu": { - "format": "{usage}% ", - "tooltip": false - }, - "memory": { - "format": "{}% " - }, - "temperature": { - // "thermal-zone": 2, - // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", - "critical-threshold": 80, - // "format-critical": "{temperatureC}°C {icon}", - "format": "{temperatureC}°C {icon}", - "format-icons": ["󰉬", "", "󰉪"] - }, - "backlight": { - // "device": "acpi_video1", - "format": "{percent}% {icon}", - "format-icons": ["", "", "", "", "", "", "", "", ""] - }, - "battery": { - "states": { - // "good": 95, - "warning": 30, - "critical": 15 - }, - "format": "{capacity}% {icon}", - "format-full": "{capacity}% {icon}", - "format-charging": "{capacity}% 󰃨", - "format-plugged": "{capacity}% ", - "format-alt": "{time} {icon}", - // "format-good": "", // An empty format will hide the module - // "format-full": "", - "format-icons": ["", "", "", "", ""] - }, - "battery#bat2": { - "bat": "BAT2" - }, - "power-profiles-daemon": { - "format": "{icon}", - "tooltip-format": "Power profile: {profile}\nDriver: {driver}", - "tooltip": true, - "format-icons": { - "default": "", - "performance": "", - "balanced": "", - "power-saver": "" - } - }, - "network": { - // "interface": "wlp2*", // (Optional) To force the use of this interface - "format-wifi": "{essid} ({signalStrength}%) ", - "format-ethernet": "{ipaddr}/{cidr} 󰊗", - "tooltip-format": "{ifname} via {gwaddr} 󰊗", - "format-linked": "{ifname} (No IP) 󰊗", - "format-disconnected": "Disconnected ⚠", - "format-alt": "{ifname}: {ipaddr}/{cidr}" - }, - "pulseaudio": { - // "scroll-step": 1, // %, can be a float - "format": "{volume}% {icon} {format_source}", - "format-bluetooth": "{volume}% {icon} {format_source}", - "format-bluetooth-muted": "󰅶 {icon} {format_source}", - "format-muted": "󰅶 {format_source}", - "format-source": "{volume}% ", - "format-source-muted": "", - "format-icons": { - "headphone": "", - "hands-free": "󰂑", - "headset": "󰂑", - "phone": "", - "portable": "", - "car": "", - "default": ["", "", ""] - }, - "on-click": "pavucontrol" - }, - "custom/media": { - "format": "{icon} {text}", - "return-type": "json", - "max-length": 40, - "format-icons": { - "spotify": "", - "default": "🎜" - }, - "escape": true, - "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder - // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name - }, - "custom/power": { - "format" : "⏻ ", - "tooltip": false, - "menu": "on-click", - "menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder - "menu-actions": { - "shutdown": "shutdown", - "reboot": "reboot", - "suspend": "systemctl suspend", - "hibernate": "systemctl hibernate" - } - } -} diff --git a/home/minimal.nix b/home/minimal/default.nix similarity index 58% rename from home/minimal.nix rename to home/minimal/default.nix index 0f9547a..97340c3 100644 --- a/home/minimal.nix +++ b/home/minimal/default.nix @@ -6,11 +6,11 @@ home.homeDirectory = "/home/${config.home.username}"; imports = [ - ./modules/fish.nix - ./modules/vifm.nix - ./modules/nvim - ./modules/tmux.nix - ./modules/git.nix + ./fish.nix + ./vifm.nix + ./nvim + ./tmux.nix + ./git.nix ]; home.packages = with pkgs; [ @@ -30,13 +30,13 @@ ]; home.shellAliases = { - cdg = "cd \$(git rev-parse --show-toplevel)"; - dmy = "date +'%-d.-%-m.%Y'"; - du = "dust"; - ls = "eza"; - tree = "eza --tree"; - top = "btm --battery"; - ymd = "date +'%Y-%m-%d'"; + cdg = "cd \$(git rev-parse --show-toplevel)"; + dmy = "date +'%-d.-%-m.%Y'"; + du = "dust"; + ls = "eza"; + tree = "eza --tree"; + top = "btm --battery"; + ymd = "date +'%Y-%m-%d'"; }; programs.nix-index = { @@ -46,7 +46,6 @@ programs.bottom = { enable = true; - # settings.styles.theme = "default-light"; }; home.stateVersion = "22.11"; diff --git a/home/modules/fish.nix b/home/minimal/fish.nix similarity index 100% rename from home/modules/fish.nix rename to home/minimal/fish.nix diff --git a/home/modules/git.nix b/home/minimal/git.nix similarity index 100% rename from home/modules/git.nix rename to home/minimal/git.nix diff --git a/home/modules/nvim/config.vim b/home/minimal/nvim/config.vim similarity index 93% rename from home/modules/nvim/config.vim rename to home/minimal/nvim/config.vim index 94efc9a..57ae46f 100644 --- a/home/modules/nvim/config.vim +++ b/home/minimal/nvim/config.vim @@ -31,6 +31,9 @@ let g:netrw_fastbrowse = 0 nnoremap Y y$ +nnoremap cd :lcd %:h +nnoremap ew :e =expand("%:p:h") . "/" + nnoremap gF :edit nnoremap gx :! xdg-open diff --git a/home/modules/nvim/default.nix b/home/minimal/nvim/default.nix similarity index 100% rename from home/modules/nvim/default.nix rename to home/minimal/nvim/default.nix diff --git a/home/modules/nvim/dotfiles/after/ftplugin/markdown.vim b/home/minimal/nvim/dotfiles/after/ftplugin/markdown.vim similarity index 100% rename from home/modules/nvim/dotfiles/after/ftplugin/markdown.vim rename to home/minimal/nvim/dotfiles/after/ftplugin/markdown.vim diff --git a/home/modules/nvim/dotfiles/autocommands.vim b/home/minimal/nvim/dotfiles/autocommands.vim similarity index 100% rename from home/modules/nvim/dotfiles/autocommands.vim rename to home/minimal/nvim/dotfiles/autocommands.vim diff --git a/home/modules/nvim/dotfiles/ftplugin/markdown.vim b/home/minimal/nvim/dotfiles/ftplugin/markdown.vim similarity index 100% rename from home/modules/nvim/dotfiles/ftplugin/markdown.vim rename to home/minimal/nvim/dotfiles/ftplugin/markdown.vim diff --git a/home/modules/nvim/dotfiles/ftplugin/nix.vim b/home/minimal/nvim/dotfiles/ftplugin/nix.vim similarity index 100% rename from home/modules/nvim/dotfiles/ftplugin/nix.vim rename to home/minimal/nvim/dotfiles/ftplugin/nix.vim diff --git a/home/modules/nvim/dotfiles/ftplugin/r.vim b/home/minimal/nvim/dotfiles/ftplugin/r.vim similarity index 100% rename from home/modules/nvim/dotfiles/ftplugin/r.vim rename to home/minimal/nvim/dotfiles/ftplugin/r.vim diff --git a/home/modules/nvim/dotfiles/ftplugin/rmd.vim b/home/minimal/nvim/dotfiles/ftplugin/rmd.vim similarity index 100% rename from home/modules/nvim/dotfiles/ftplugin/rmd.vim rename to home/minimal/nvim/dotfiles/ftplugin/rmd.vim diff --git a/home/modules/nvim/dotfiles/ftplugin/tex.vim b/home/minimal/nvim/dotfiles/ftplugin/tex.vim similarity index 100% rename from home/modules/nvim/dotfiles/ftplugin/tex.vim rename to home/minimal/nvim/dotfiles/ftplugin/tex.vim diff --git a/home/modules/nvim/dotfiles/ftplugin/typescript.vim b/home/minimal/nvim/dotfiles/ftplugin/typescript.vim similarity index 100% rename from home/modules/nvim/dotfiles/ftplugin/typescript.vim rename to home/minimal/nvim/dotfiles/ftplugin/typescript.vim diff --git a/home/modules/nvim/dotfiles/syntax/rmd.vim b/home/minimal/nvim/dotfiles/syntax/rmd.vim similarity index 100% rename from home/modules/nvim/dotfiles/syntax/rmd.vim rename to home/minimal/nvim/dotfiles/syntax/rmd.vim diff --git a/home/modules/nvim/lsp.lua b/home/minimal/nvim/lsp.lua similarity index 100% rename from home/modules/nvim/lsp.lua rename to home/minimal/nvim/lsp.lua diff --git a/home/modules/nvim/nvim-cmp.lua b/home/minimal/nvim/nvim-cmp.lua similarity index 100% rename from home/modules/nvim/nvim-cmp.lua rename to home/minimal/nvim/nvim-cmp.lua diff --git a/home/modules/tmux.nix b/home/minimal/tmux.nix similarity index 100% rename from home/modules/tmux.nix rename to home/minimal/tmux.nix diff --git a/home/minimal/vifm.nix b/home/minimal/vifm.nix new file mode 100644 index 0000000..900cf0e --- /dev/null +++ b/home/minimal/vifm.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: + +{ + programs.vifm = { + enable = true; + extraConfig = " + set vicmd=nvim + filetype * xdg-open + colorscheme Default + "; + }; +} diff --git a/home/modules/foot.nix b/home/modules/foot.nix deleted file mode 100644 index 4e54a1f..0000000 --- a/home/modules/foot.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ config, pkgs, lib, ... }: - -{ - programs.foot = { - enable = true; - }; - xdg.configFile."foot/foot.ini".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/dotfiles/foot/foot.ini"; -} diff --git a/home/modules/niri.nix b/home/modules/niri.nix deleted file mode 100644 index 9cc652e..0000000 --- a/home/modules/niri.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ pkgs, config, ... }: - -{ - services.swayidle.enable = true; # idle management daemon - services.polkit-gnome.enable = true; # polkit - - home.packages = with pkgs; [ - wl-mirror - xwayland-satellite - ]; - - programs.ghostty.enable = true; - - # xdg.configFile."polybar/config.ini".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/dotfiles/polybar/config.ini"; -} diff --git a/home/modules/vifm.nix b/home/modules/vifm.nix deleted file mode 100644 index d68ebbd..0000000 --- a/home/modules/vifm.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.vifm = { - enable = true; - extraConfig = " - colorscheme light - set vicmd=nvim - filetype * xdg-open - "; - }; - xdg.configFile."vifm/colors/light.vifm".text = '' - highlight clear - highlight Win cterm=none ctermfg=black ctermbg=default - highlight Directory cterm=none ctermfg=cyan ctermbg=default - highlight Link cterm=none ctermfg=yellow ctermbg=default - highlight BrokenLink cterm=none ctermfg=white ctermbg=red - highlight Socket cterm=none ctermfg=red ctermbg=default - highlight Device cterm=none ctermfg=red ctermbg=default - highlight Fifo cterm=none ctermfg=black ctermbg=cyan - highlight Executable cterm=none ctermfg=green ctermbg=default - highlight Selected cterm=bold ctermfg=magenta ctermbg=default - highlight CurrLine cterm=bold ctermfg=white ctermbg=magenta - highlight TopLine cterm=bold ctermfg=magenta ctermbg=default - highlight TopLineSel cterm=bold ctermfg=magenta ctermbg=white - highlight StatusLine cterm=bold ctermfg=magenta ctermbg=white - highlight CmdLine cterm=bold ctermfg=magenta ctermbg=default - highlight Border cterm=none ctermfg=default ctermbg=default - ''; -} diff --git a/home/modules/gnome.nix b/home/unused/gnome.nix similarity index 100% rename from home/modules/gnome.nix rename to home/unused/gnome.nix diff --git a/home/modules/hyprland.nix b/home/unused/hyprland.nix similarity index 100% rename from home/modules/hyprland.nix rename to home/unused/hyprland.nix diff --git a/home/modules/plasma.nix b/home/unused/plasma.nix similarity index 100% rename from home/modules/plasma.nix rename to home/unused/plasma.nix diff --git a/hosts/nova/default.nix b/hosts/nova/default.nix index 8afaee2..a28c920 100644 --- a/hosts/nova/default.nix +++ b/hosts/nova/default.nix @@ -9,9 +9,8 @@ ../../users/guest/system.nix ../../system ../../system/desktop + ../../system/desktop/laptop.nix ../../system/desktop/ergodox-udev.nix - # ../../system/desktop/gnome.nix - ../../system/desktop/cosmic.nix ../../system/desktop/niri.nix ../../system/desktop/steam.nix ../../system/desktop/yubikey-pam.nix diff --git a/system/desktop/default.nix b/system/desktop/default.nix index b88c446..2e6ca6c 100644 --- a/system/desktop/default.nix +++ b/system/desktop/default.nix @@ -34,6 +34,8 @@ virtiofsd ]; + environment.pathsToLink = [ "/share/foot" ]; + fonts.packages = with pkgs; [ jetbrains-mono ]; diff --git a/system/desktop/laptop.nix b/system/desktop/laptop.nix new file mode 100644 index 0000000..0b88d9b --- /dev/null +++ b/system/desktop/laptop.nix @@ -0,0 +1,22 @@ +{ ... }: + +{ + services.thermald.enable = true; + + services.auto-cpufreq.enable = true; + services.auto-cpufreq.settings = { + battery = { + governor = "powersave"; + energy_performance_preference = "power"; + turbo = "never"; + enable_thresholds = true; + start_threshold = 20; + stop_threshold = 80; + }; + charger = { + governor = "performance"; + energy_performance_preference = "performance"; + turbo = "auto"; + }; + }; +} diff --git a/system/desktop/niri.nix b/system/desktop/niri.nix index f2e6623..7f62cd4 100644 --- a/system/desktop/niri.nix +++ b/system/desktop/niri.nix @@ -1,12 +1,34 @@ -{ lib, ... }: +{ lib, pkgs, inputs, ... }: { programs.niri.enable = true; - programs.dms-shell.enable = true; - services.gnome.gnome-keyring.enable = lib.mkForce false; - programs.nm-applet.enable = false; - # programs.firefox.preferences = { - # "widget.gtk.libadwaita-colors.enabled" = false; - # }; + programs.dms-shell = { + enable = true; + systemd.enable = true; + quickshell.package = inputs.quickshell.packages.${pkgs.stdenv.hostPlatform.system}.quickshell; + }; + + services.displayManager.dms-greeter = { + enable = true; + compositor.name = "niri"; + configHome = "/home/till"; + }; + + services.gnome.gnome-keyring.enable = lib.mkForce false; + programs.nm-applet.enable = lib.mkForce false; + + environment.systemPackages = with pkgs; [ + nirius + ]; + + systemd.user.services."niriusd" = { + enable = true; + wantedBy = [ "niri.service" ]; + after = [ "niri.service" ]; + description = "Nirius daemon"; + serviceConfig = { + ExecStart = "${pkgs.nirius}/bin/niriusd"; + }; + }; } From b4b1f4a63fb317d730edcd456b8b47bc805f362b Mon Sep 17 00:00:00 2001 From: Till Date: Sun, 12 Apr 2026 18:48:42 +0200 Subject: [PATCH 43/44] dotfiles --- .../foot/catppuccin-frappe.ini | 0 .../foot/catppuccin-latte.ini | 0 .../foot/catppuccin-macchiato.ini | 0 .../foot/catppuccin-mocha.ini | 0 dotfiles/foot/dank-colors.ini | 25 ++ {home/dotfiles => dotfiles}/foot/foot.ini | 5 +- dotfiles/foot/matugen.ini | 2 + dotfiles/foot/paper-color.ini | 49 ++++ .../neomutt/bindings.neomuttrc | 0 .../neomutt/colors.neomuttrc | 0 .../neomutt/config.neomuttrc | 0 dotfiles/niri/config.kdl | 203 +++++++++++++++ dotfiles/niri/dms/alttab.kdl | 10 + dotfiles/niri/dms/binds.kdl | 233 ++++++++++++++++++ dotfiles/niri/dms/colors.kdl | 39 +++ dotfiles/niri/dms/cursor.kdl | 11 + dotfiles/niri/dms/layout.kdl | 22 ++ dotfiles/niri/dms/outputs.kdl | 20 ++ dotfiles/niri/dms/windowrules.kdl | 0 dotfiles/niri/dms/wpblur.kdl | 9 + flake.lock | 38 +-- home/desktop-full/mail.nix | 6 +- home/desktop-full/r.nix | 2 +- home/desktop-slim/devel.nix | 15 +- home/desktop-slim/firefox.nix | 20 +- home/desktop-slim/foot.nix | 2 +- home/desktop-slim/niri.nix | 18 +- home/desktop-slim/user-dirs.nix | 1 + home/dotfiles/foot/dank-colors.ini | 25 -- home/minimal/git.nix | 1 + home/minimal/nvim/default.nix | 3 + hosts/nova/default.nix | 3 +- system/desktop/default.nix | 9 +- system/desktop/laptop.nix | 10 +- system/desktop/niri.nix | 5 + system/desktop/yubikey-pam.nix | 24 +- 36 files changed, 716 insertions(+), 94 deletions(-) rename {home/dotfiles => dotfiles}/foot/catppuccin-frappe.ini (100%) rename {home/dotfiles => dotfiles}/foot/catppuccin-latte.ini (100%) rename {home/dotfiles => dotfiles}/foot/catppuccin-macchiato.ini (100%) rename {home/dotfiles => dotfiles}/foot/catppuccin-mocha.ini (100%) create mode 100644 dotfiles/foot/dank-colors.ini rename {home/dotfiles => dotfiles}/foot/foot.ini (64%) create mode 100644 dotfiles/foot/matugen.ini create mode 100644 dotfiles/foot/paper-color.ini rename {home/dotfiles => dotfiles}/neomutt/bindings.neomuttrc (100%) rename {home/dotfiles => dotfiles}/neomutt/colors.neomuttrc (100%) rename {home/dotfiles => dotfiles}/neomutt/config.neomuttrc (100%) create mode 100644 dotfiles/niri/config.kdl create mode 100644 dotfiles/niri/dms/alttab.kdl create mode 100644 dotfiles/niri/dms/binds.kdl create mode 100644 dotfiles/niri/dms/colors.kdl create mode 100644 dotfiles/niri/dms/cursor.kdl create mode 100644 dotfiles/niri/dms/layout.kdl create mode 100644 dotfiles/niri/dms/outputs.kdl create mode 100644 dotfiles/niri/dms/windowrules.kdl create mode 100644 dotfiles/niri/dms/wpblur.kdl delete mode 100644 home/dotfiles/foot/dank-colors.ini diff --git a/home/dotfiles/foot/catppuccin-frappe.ini b/dotfiles/foot/catppuccin-frappe.ini similarity index 100% rename from home/dotfiles/foot/catppuccin-frappe.ini rename to dotfiles/foot/catppuccin-frappe.ini diff --git a/home/dotfiles/foot/catppuccin-latte.ini b/dotfiles/foot/catppuccin-latte.ini similarity index 100% rename from home/dotfiles/foot/catppuccin-latte.ini rename to dotfiles/foot/catppuccin-latte.ini diff --git a/home/dotfiles/foot/catppuccin-macchiato.ini b/dotfiles/foot/catppuccin-macchiato.ini similarity index 100% rename from home/dotfiles/foot/catppuccin-macchiato.ini rename to dotfiles/foot/catppuccin-macchiato.ini diff --git a/home/dotfiles/foot/catppuccin-mocha.ini b/dotfiles/foot/catppuccin-mocha.ini similarity index 100% rename from home/dotfiles/foot/catppuccin-mocha.ini rename to dotfiles/foot/catppuccin-mocha.ini diff --git a/dotfiles/foot/dank-colors.ini b/dotfiles/foot/dank-colors.ini new file mode 100644 index 0000000..355fa0e --- /dev/null +++ b/dotfiles/foot/dank-colors.ini @@ -0,0 +1,25 @@ +[colors-dark] +foreground=e4e2e1 +background=131313 +selection-foreground=e4e2e1 +selection-background=11201d +cursor = 131313 b9cac5 + +regular0=131313 +regular1=e89268 +regular2=65ca6a +regular3=fcf071 +regular4=acbfba +regular5=4f5d59 +regular6=b9cac5 +regular7=c7d4d0 +bright0=798380 +bright1=ffbe9f +bright2=9df2a2 +bright3=fff7a5 +bright4=ceded9 +bright5=effffa +bright6=f5fffc +bright7=f8fffd + +dim-blend-towards=black diff --git a/home/dotfiles/foot/foot.ini b/dotfiles/foot/foot.ini similarity index 64% rename from home/dotfiles/foot/foot.ini rename to dotfiles/foot/foot.ini index 70aad4a..d204548 100644 --- a/home/dotfiles/foot/foot.ini +++ b/dotfiles/foot/foot.ini @@ -1,9 +1,8 @@ [main] font=JetBrains Mono:size=12 pad=15x15 -include=~/.config/foot/catppuccin-mocha.ini -include=~/.config/foot/catppuccin-latte.ini -# include=~/.config/foot/dank-colors.ini +include=~/.config/foot/paper-color.ini +include=~/.config/foot/matugen.ini [csd] size=0 diff --git a/dotfiles/foot/matugen.ini b/dotfiles/foot/matugen.ini new file mode 100644 index 0000000..e6518ac --- /dev/null +++ b/dotfiles/foot/matugen.ini @@ -0,0 +1,2 @@ +initial-color-theme=dark + diff --git a/dotfiles/foot/paper-color.ini b/dotfiles/foot/paper-color.ini new file mode 100644 index 0000000..0993492 --- /dev/null +++ b/dotfiles/foot/paper-color.ini @@ -0,0 +1,49 @@ +# -*- conf -*- +# PaperColorDark +# Palette based on https://github.com/NLKNguyen/papercolor-theme + +[colors-dark] +cursor=1c1c1c eeeeee +background=1c1c1c +foreground=eeeeee +regular0=1c1c1c # black +regular1=af005f # red +regular2=5faf00 # green +regular3=d7af5f # yellow +regular4=5fafd7 # blue +regular5=808080 # magenta +regular6=d7875f # cyan +regular7=d0d0d0 # white +bright0=bcbcbc # bright black +bright1=5faf5f # bright red +bright2=afd700 # bright green +bright3=af87d7 # bright yellow +bright4=ffaf00 # bright blue +bright5=ff5faf # bright magenta +bright6=00afaf # bright cyan +bright7=5f8787 # bright white +# selection-foreground=1c1c1c +# selection-background=af87d7 + +[colors-light] +cursor=eeeeee 444444 +background=eeeeee +foreground=444444 +regular0=eeeeee # black +regular1=af0000 # red +regular2=008700 # green +regular3=5f8700 # yellow +regular4=0087af # blue +regular5=878787 # magenta +regular6=005f87 # cyan +regular7=764e37 # white +bright0=bcbcbc # bright black +bright1=d70000 # bright red +bright2=d70087 # bright green +bright3=8700af # bright yellow +bright4=d75f00 # bright blue +bright5=d75f00 # bright magenta +bright6=4c7a5d # bright cyan +bright7=005faf # bright white +# selection-foreground=eeeeee +# selection-background=0087af diff --git a/home/dotfiles/neomutt/bindings.neomuttrc b/dotfiles/neomutt/bindings.neomuttrc similarity index 100% rename from home/dotfiles/neomutt/bindings.neomuttrc rename to dotfiles/neomutt/bindings.neomuttrc diff --git a/home/dotfiles/neomutt/colors.neomuttrc b/dotfiles/neomutt/colors.neomuttrc similarity index 100% rename from home/dotfiles/neomutt/colors.neomuttrc rename to dotfiles/neomutt/colors.neomuttrc diff --git a/home/dotfiles/neomutt/config.neomuttrc b/dotfiles/neomutt/config.neomuttrc similarity index 100% rename from home/dotfiles/neomutt/config.neomuttrc rename to dotfiles/neomutt/config.neomuttrc diff --git a/dotfiles/niri/config.kdl b/dotfiles/niri/config.kdl new file mode 100644 index 0000000..f756013 --- /dev/null +++ b/dotfiles/niri/config.kdl @@ -0,0 +1,203 @@ +/-output "eDP-1" { + mode "1920x1080@120.030" + scale 2 + transform "normal" + position x=1280 y=0 +} + +layout { + preset-column-widths { + proportion 0.381966 + proportion 0.5 + proportion 0.618034 + } + default-column-width { proportion 0.5; } +} + +environment { + TERMINAL "foot" + XDG_CURRENT_DESKTOP "niri" +} + +hotkey-overlay { + skip-at-startup +} + +prefer-no-csd + +screenshot-path "~/media/img/screenshots/screenshot_%Y-%m-%d_%H-%M-%S.png" + +// debug { +// honor-xdg-activation-with-invalid-serial +// } + +recent-windows { + binds { + Super+Tab { next-window scope="output"; } + Super+Shift+Tab { previous-window scope="output"; } + Super+grave { next-window filter="app-id"; } + Super+Shift+grave { previous-window filter="app-id"; } + } +} + +animations { + + workspace-switch { + spring damping-ratio=0.9 stiffness=2000 epsilon=0.001 + } + + window-open { + duration-ms 50 + curve "ease-out-expo" + } + + window-close { + duration-ms 50 + curve "ease-out-quad" + } + + horizontal-view-movement { + spring damping-ratio=0.9 stiffness=2000 epsilon=0.001 + } + + window-movement { + // spring damping-ratio=0.75 stiffness=323 epsilon=0.0001 + spring damping-ratio=0.9 stiffness=2000 epsilon=0.001 + } + + window-resize { + spring damping-ratio=0.9 stiffness=2000 epsilon=0.001 + } + + config-notification-open-close { + spring damping-ratio=0.9 stiffness=2000 epsilon=0.001 + } + + screenshot-ui-open { + duration-ms 50 + curve "ease-out-quad" + } + + overview-open-close { + spring damping-ratio=0.9 stiffness=2000 epsilon=0.001 + } +} + +input { + keyboard { + xkb { + layout "us,de,th" + variant "altgr-intl" + options "grp:alt_space_toggle" + } + numlock + } + + touchpad { + tap + natural-scroll + click-method "clickfinger" + } + + trackball { + natural-scroll + accel-speed -0.3 + } + + mouse { + } + + trackpoint { + } + + warp-mouse-to-focus + focus-follows-mouse max-scroll-amount="0%" +} + +layer-rule { + match namespace="^quickshell$" + place-within-backdrop false +} + +layer-rule { + match namespace="dms:blurwallpaper" + place-within-backdrop true +} + +window-rule { + match app-id=r#"^org\.wezfurlong\.wezterm$"# + default-column-width {} +} + +window-rule { + match app-id=r#"^org\.gnome\."# + draw-border-with-background false + geometry-corner-radius 12 + clip-to-geometry true +} + +window-rule { + match app-id=r#"^gnome-control-center$"# + match app-id=r#"^pavucontrol$"# + match app-id=r#"^nm-connection-editor$"# + default-column-width { proportion 0.5; } + open-floating false +} + +window-rule { + match app-id=r#"^gnome-calculator$"# + match app-id=r#"^galculator$"# + match app-id=r#"^blueman-manager$"# + match app-id=r#"^org\.gnome\.Nautilus$"# + match app-id=r#"^xdg-desktop-portal$"# + open-floating true +} + +window-rule { + match app-id=r#"^steam$"# title=r#"^notificationtoasts_\d+_desktop$"# + default-floating-position x=10 y=10 relative-to="bottom-right" + open-focused false +} + +window-rule { + match app-id=r#"^org\.wezfurlong\.wezterm$"# + match app-id="Alacritty" + match app-id="zen" + match app-id="com.mitchellh.ghostty" + match app-id="kitty" + draw-border-with-background false +} + +window-rule { + match app-id=r#"firefox$"# title="^Picture-in-Picture$" + match app-id="zoom" + open-floating true +} + +window-rule { + match app-id="firefox" + default-column-width {} + open-on-workspace "browser" +} + +window-rule { + match app-id=r#"org.quickshell$"# + open-floating true +} + +window-rule { + match app-id=r#"org.quickshell$"# title="^Settings$" + open-floating false +} + +// include optional=true "user-config.kdl" +include "user-config.kdl" + + +// Include dms files +include "dms/colors.kdl" +include "dms/layout.kdl" +include "dms/alttab.kdl" +include "dms/outputs.kdl" +include "dms/cursor.kdl" +include "dms/binds.kdl" diff --git a/dotfiles/niri/dms/alttab.kdl b/dotfiles/niri/dms/alttab.kdl new file mode 100644 index 0000000..6708e41 --- /dev/null +++ b/dotfiles/niri/dms/alttab.kdl @@ -0,0 +1,10 @@ +// ! DO NOT EDIT ! + // ! AUTO-GENERATED BY DMS ! + // ! CHANGES WILL BE OVERWRITTEN ! + // ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + + recent-windows { + highlight { + corner-radius 9 + } + } diff --git a/dotfiles/niri/dms/binds.kdl b/dotfiles/niri/dms/binds.kdl new file mode 100644 index 0000000..2cc1fe3 --- /dev/null +++ b/dotfiles/niri/dms/binds.kdl @@ -0,0 +1,233 @@ +binds { + + // === System & Overview === + Mod+Space repeat=false { toggle-overview; } + Mod+Shift+Slash { show-hotkey-overlay; } + + // === Application Launchers === + Mod+Return hotkey-overlay-title="Open Terminal" { + spawn "foot"; + } + + Mod+B hotkey-overlay-title="Open Browser" { + spawn "nirius" "focus-or-spawn" "-a" "^firefox$" "firefox"; + } + + Mod+M hotkey-overlay-title="Open Mail" { + spawn "nirius" "focus-or-spawn" "-t" "^neomutt" "foot" "--" "-e" "neomutt"; + } + + Mod+F hotkey-overlay-title="Open Files" { + spawn "nirius" "focus-or-spawn" "-t" "^vifm" "foot" "--" "-e" "vifm"; + } + + Mod+Slash hotkey-overlay-title="Application Launcher" { + spawn "dms" "ipc" "call" "spotlight" "toggle"; + } + + Mod+T hotkey-overlay-title="Task Manager" { + spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; + } + + Super+X hotkey-overlay-title="Power Menu: Toggle" { + spawn "dms" "ipc" "call" "powermenu" "toggle"; + } + + Mod+Comma hotkey-overlay-title="Settings" { + spawn "dms" "ipc" "call" "settings" "focusOrToggle"; + } + + Mod+Y hotkey-overlay-title="Browse Wallpapers" { + spawn "dms" "ipc" "call" "dankdash" "wallpaper"; + } + + Mod+O hotkey-overlay-title="Show dash overview" { + spawn "dms" "ipc" "call" "dash" "toggle" ""; + } + + Mod+W hotkey-overlay-title="Show dash weather" { + spawn "dms" "ipc" "call" "dash" "toggle" "weather"; + } + + Mod+P hotkey-overlay-title="Show dash music" { + spawn "dms" "ipc" "call" "dash" "toggle" "media"; + } + + Mod+N hotkey-overlay-title="Notification Center" { spawn "dms" "ipc" "call" "notifications" "toggle"; } + + // Mod+Shift+N hotkey-overlay-title="Notepad" { spawn "dms" "ipc" "call" "notepad" "toggle"; } + + // === Security === + Mod+Backspace hotkey-overlay-title="Lock Screen" { + spawn "dms" "ipc" "call" "lock" "lock"; + } + + Mod+Shift+Q { + quit; + } + + Ctrl+Alt+Delete hotkey-overlay-title="Task Manager" { + spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; + } + + // === Audio Controls === + XF86AudioRaiseVolume allow-when-locked=true { + spawn "dms" "ipc" "call" "audio" "increment" "3"; + } + XF86AudioLowerVolume allow-when-locked=true { + spawn "dms" "ipc" "call" "audio" "decrement" "3"; + } + XF86AudioMute allow-when-locked=true { + spawn "dms" "ipc" "call" "audio" "mute"; + } + XF86AudioMicMute allow-when-locked=true { + spawn "dms" "ipc" "call" "audio" "micmute"; + } + XF86AudioPause allow-when-locked=true { + spawn "dms" "ipc" "call" "mpris" "playPause"; + } + XF86AudioPlay allow-when-locked=true { + spawn "dms" "ipc" "call" "mpris" "playPause"; + } + XF86AudioPrev allow-when-locked=true { + spawn "dms" "ipc" "call" "mpris" "previous"; + } + XF86AudioNext allow-when-locked=true { + spawn "dms" "ipc" "call" "mpris" "next"; + } + Ctrl+XF86AudioRaiseVolume allow-when-locked=true { + spawn "dms" "ipc" "call" "mpris" "increment" "3"; + } + Ctrl+XF86AudioLowerVolume allow-when-locked=true { + spawn "dms" "ipc" "call" "mpris" "decrement" "3"; + } + + // === Brightness Controls === + XF86MonBrightnessUp allow-when-locked=true { + spawn "dms" "ipc" "call" "brightness" "increment" "5" ""; + } + XF86MonBrightnessDown allow-when-locked=true { + spawn "dms" "ipc" "call" "brightness" "decrement" "5" ""; + } + + // === Focus Navigation === + Mod+H { focus-column-left; } + Mod+L { focus-column-right; } + Mod+J { focus-window-or-workspace-down; } + Mod+K { focus-window-or-workspace-up; } + + // === Window Movement === + Mod+Shift+H { move-column-left; } + Mod+Shift+L { move-column-right; } + Mod+Shift+J { move-window-down-or-to-workspace-down; } + Mod+Shift+K { move-window-up-or-to-workspace-up; } + + // === Column Navigation === + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+End { move-column-to-last; } + + // === Monitor Navigation === + Mod+Ctrl+H { focus-monitor-left; } + Mod+Ctrl+J { focus-monitor-down; } + Mod+Ctrl+K { focus-monitor-up; } + Mod+Ctrl+L { focus-monitor-right; } + + // === Move to Monitor === + Mod+Ctrl+Shift+H { move-column-to-monitor-left; } + Mod+Ctrl+Shift+J { move-column-to-monitor-down; } + Mod+Ctrl+Shift+K { move-column-to-monitor-up; } + Mod+Ctrl+Shift+L { move-column-to-monitor-right; } + + // === Workspace Navigation === + Mod+D { focus-workspace-down; } + Mod+U { focus-workspace-up; } + + // === Workspace Management === + Mod+Ctrl+R hotkey-overlay-title="Rename Workspace" { + spawn "dms" "ipc" "call" "workspace-rename" "open"; + } + + // === Move Workspaces === + Mod+Shift+D { move-workspace-down; } + Mod+Shift+U { move-workspace-up; } + + // === Mouse Wheel Navigation === + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + + // === Numbered Workspaces === + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + + // === Move to Numbered Workspaces === + Mod+Shift+1 { move-column-to-workspace 1; } + Mod+Shift+2 { move-column-to-workspace 2; } + Mod+Shift+3 { move-column-to-workspace 3; } + Mod+Shift+4 { move-column-to-workspace 4; } + Mod+Shift+5 { move-column-to-workspace 5; } + Mod+Shift+6 { move-column-to-workspace 6; } + Mod+Shift+7 { move-column-to-workspace 7; } + Mod+Shift+8 { move-column-to-workspace 8; } + Mod+Shift+9 { move-column-to-workspace 9; } + + // === Column Management === + Mod+Shift+BracketLeft { consume-or-expel-window-left; } + Mod+Shift+BracketRight { consume-or-expel-window-right; } + Mod+Shift+Period { expel-window-from-column; } + + // === Window Management === + Mod+Q repeat=false { close-window; } + Mod+Shift+G { toggle-window-floating; } + Mod+G { switch-focus-between-floating-and-tiling; } + Mod+Shift+T { toggle-column-tabbed-display; } + Mod+Shift+W hotkey-overlay-title="Create window rule" { spawn "dms" "ipc" "call" "window-rules" "toggle"; } + + // === Sizing & Layout === + Mod+R { switch-preset-column-width; } + Mod+V { switch-preset-window-height; } + Mod+Shift+V { reset-window-height; } + Mod+Shift+R { expand-column-to-available-width; } + Mod+C { center-column; } + Mod+Ctrl+C { center-visible-columns; } + Mod+Z { maximize-column; } + Mod+Shift+Z { maximize-window-to-edges; } + Mod+Escape { fullscreen-window; } + + // === Manual Sizing === + Mod+Minus { set-column-width "-10%"; } + Mod+Equal { set-column-width "+10%"; } + Mod+Shift+Minus { set-window-height "-10%"; } + Mod+Shift+Equal { set-window-height "+10%"; } + + // === Screenshots === + XF86Launch1 { screenshot; } + Ctrl+XF86Launch1 { screenshot-screen; } + Mod+XF86Launch1 { screenshot-window; } + Print { screenshot; } + Ctrl+Print { screenshot-screen; } + Mod+Print { screenshot-window; } + + // === System Controls === + Mod+Ctrl+P { power-off-monitors; } +} diff --git a/dotfiles/niri/dms/colors.kdl b/dotfiles/niri/dms/colors.kdl new file mode 100644 index 0000000..8352dc1 --- /dev/null +++ b/dotfiles/niri/dms/colors.kdl @@ -0,0 +1,39 @@ +// ! Auto-generated file. Do not edit directly. +// Remove `include "dms/colors.kdl"` from your config to override. + +layout { + background-color "transparent" + + focus-ring { + active-color "#b9cac5" + inactive-color "#8c9290" + urgent-color "#ffb4ab" + } + + border { + active-color "#b9cac5" + inactive-color "#8c9290" + urgent-color "#ffb4ab" + } + + shadow { + color "#00000070" + } + + tab-indicator { + active-color "#b9cac5" + inactive-color "#8c9290" + urgent-color "#ffb4ab" + } + + insert-hint { + color "#b9cac580" + } +} + +recent-windows { + highlight { + active-color "#11201d" + urgent-color "#ffb4ab" + } +} diff --git a/dotfiles/niri/dms/cursor.kdl b/dotfiles/niri/dms/cursor.kdl new file mode 100644 index 0000000..cd14ec9 --- /dev/null +++ b/dotfiles/niri/dms/cursor.kdl @@ -0,0 +1,11 @@ +// ! DO NOT EDIT ! +// ! AUTO-GENERATED BY DMS ! +// ! CHANGES WILL BE OVERWRITTEN ! +// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + +cursor { + xcursor-theme "phinger-cursors-dark" + xcursor-size 24 + hide-when-typing + hide-after-inactive-ms 5000 +} \ No newline at end of file diff --git a/dotfiles/niri/dms/layout.kdl b/dotfiles/niri/dms/layout.kdl new file mode 100644 index 0000000..243c04f --- /dev/null +++ b/dotfiles/niri/dms/layout.kdl @@ -0,0 +1,22 @@ +// ! DO NOT EDIT ! + // ! AUTO-GENERATED BY DMS ! + // ! CHANGES WILL BE OVERWRITTEN ! + // ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + + layout { + gaps 15 + + border { + width 2 + } + + focus-ring { + width 2 + } + } + window-rule { + geometry-corner-radius 9 + clip-to-geometry true + tiled-state true + draw-border-with-background false + } diff --git a/dotfiles/niri/dms/outputs.kdl b/dotfiles/niri/dms/outputs.kdl new file mode 100644 index 0000000..3863ba7 --- /dev/null +++ b/dotfiles/niri/dms/outputs.kdl @@ -0,0 +1,20 @@ +// Auto-generated by DMS - do not edit manually + +output "DP-3" { + mode "3840x2160@59.997" + scale 1.75 + position x=0 y=0 +} + +output "DP-1" { + mode "3840x2160@59.997" + scale 1.75 + position x=0 y=0 +} + +output "eDP-1" { + mode "1920x1200@60.026" + scale 1.25 + position x=2194 y=274 +} + diff --git a/dotfiles/niri/dms/windowrules.kdl b/dotfiles/niri/dms/windowrules.kdl new file mode 100644 index 0000000..e69de29 diff --git a/dotfiles/niri/dms/wpblur.kdl b/dotfiles/niri/dms/wpblur.kdl new file mode 100644 index 0000000..3d58802 --- /dev/null +++ b/dotfiles/niri/dms/wpblur.kdl @@ -0,0 +1,9 @@ +// ! DO NOT EDIT ! +// ! AUTO-GENERATED BY DMS ! +// ! CHANGES WILL BE OVERWRITTEN ! +// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + +layer-rule { + match namespace="dms:blurwallpaper" + place-within-backdrop true +} diff --git a/flake.lock b/flake.lock index bae8605..1854c0f 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1774065775, - "narHash": "sha256-anJXbdfZMhXWjHSfB5v6e8+yv1ASTHM4TwikH8tloMI=", + "lastModified": 1775880170, + "narHash": "sha256-63PLZ7lspPAqpV/+d0oNtDHLCWQf1MVFRG2DOeDK+nU=", "owner": "rycee", "repo": "nur-expressions", - "rev": "4b3bbb9dc3c80d1b62228c9a2ca0bef74a24a192", + "rev": "28b164d30b5ab6820ef7e17281ae55c539ae9ff5", "type": "gitlab" }, "original": { @@ -29,11 +29,11 @@ ] }, "locked": { - "lastModified": 1773963144, - "narHash": "sha256-WzBOBfSay3GYilUfKaUa1Mbf8/jtuAiJIedx7fWuIX4=", + "lastModified": 1775425411, + "narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=", "owner": "nix-community", "repo": "home-manager", - "rev": "a91b3ea73a765614d90360580b689c48102d1d33", + "rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe", "type": "github" }, "original": { @@ -50,11 +50,11 @@ ] }, "locked": { - "lastModified": 1774007980, - "narHash": "sha256-FOnZjElEI8pqqCvB6K/1JRHTE8o4rer8driivTpq2uo=", + "lastModified": 1775900011, + "narHash": "sha256-QUGu6CJYFQ5AWVV0n3/FsJyV+1/gj7HSDx68/SX9pwM=", "owner": "nix-community", "repo": "home-manager", - "rev": "9670de2921812bc4e0452f6e3efd8c859696c183", + "rev": "b0569dc6ec1e6e7fefd8f6897184e4c191cd768e", "type": "github" }, "original": { @@ -65,11 +65,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1773814637, - "narHash": "sha256-GNU+ooRmrHLfjlMsKdn0prEKVa0faVanm0jrgu1J/gY=", + "lastModified": 1775811116, + "narHash": "sha256-t+HZK42pB6N+i5RGbuy7Xluez/VvWbembBdvzsc23Ss=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fea3b367d61c1a6592bc47c72f40a9f3e6a53e96", + "rev": "54170c54449ea4d6725efd30d719c5e505f1c10e", "type": "github" }, "original": { @@ -81,11 +81,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1773821835, - "narHash": "sha256-TJ3lSQtW0E2JrznGVm8hOQGVpXjJyXY2guAxku2O9A4=", + "lastModified": 1775710090, + "narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0", + "rev": "4c1018dae018162ec878d42fec712642d214fdfa", "type": "github" }, "original": { @@ -102,11 +102,11 @@ ] }, "locked": { - "lastModified": 1774764457, - "narHash": "sha256-i0mv2GYp8yIZT++NAQL+zQ+QaKK4Po1a4jXI7VJLzTU=", + "lastModified": 1775720097, + "narHash": "sha256-p+vqkCuFfVNyQBo370wr6MebNUvz55RZiC0m8YKUhvQ=", "ref": "refs/heads/master", - "rev": "9bf752ac33b2181356d33251c3b1b4dedde0bbc6", - "revCount": 779, + "rev": "d4c92973b53d9fa34cc110d3b974eb6bde5b3027", + "revCount": 800, "type": "git", "url": "https://git.outfoxxed.me/quickshell/quickshell" }, diff --git a/home/desktop-full/mail.nix b/home/desktop-full/mail.nix index 50ba98c..c5d79ab 100644 --- a/home/desktop-full/mail.nix +++ b/home/desktop-full/mail.nix @@ -263,11 +263,11 @@ in { key = "l"; map = [ "index" "pager" ]; action = "unset signature"; } ]; - extraConfig = builtins.readFile ../dotfiles/neomutt/config.neomuttrc; + extraConfig = builtins.readFile ../../dotfiles/neomutt/config.neomuttrc; }; - xdg.configFile."neomutt/colors.neomuttrc".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/dotfiles/neomutt/colors.neomuttrc"; - xdg.configFile."neomutt/bindings.neomuttrc".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/dotfiles/neomutt/bindings.neomuttrc"; + xdg.configFile."neomutt/colors.neomuttrc".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/dotfiles/neomutt/colors.neomuttrc"; + xdg.configFile."neomutt/bindings.neomuttrc".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/dotfiles/neomutt/bindings.neomuttrc"; programs.neovim.plugins = with pkgs.vimPlugins; [ { plugin = vim-pathogen; diff --git a/home/desktop-full/r.nix b/home/desktop-full/r.nix index e284118..0e6e6bc 100644 --- a/home/desktop-full/r.nix +++ b/home/desktop-full/r.nix @@ -53,7 +53,7 @@ in { home.packages = with pkgs; [ R-packed - RStudio-packed + # RStudio-packed ]; home.shellAliases = { diff --git a/home/desktop-slim/devel.nix b/home/desktop-slim/devel.nix index 27817b2..c27cb2c 100644 --- a/home/desktop-slim/devel.nix +++ b/home/desktop-slim/devel.nix @@ -1,13 +1,8 @@ -{ config, pkgs, ... }: +{ ... }: { - home.file.".npmrc".text = '' - prefix = ${config.xdg.dataHome}/npm/packages - ''; - - home.packages = with pkgs; [ - nodejs - ]; - - programs.direnv.enable = true; + programs.direnv = { + enable = true; + nix-direnv.enable = true; + }; } diff --git a/home/desktop-slim/firefox.nix b/home/desktop-slim/firefox.nix index 43418ef..fef201f 100644 --- a/home/desktop-slim/firefox.nix +++ b/home/desktop-slim/firefox.nix @@ -51,6 +51,7 @@ template = "https://search.nixos.org/packages"; params = [ { name = "type"; value = "packages"; } + { name = "channel"; value = "unstable"; } { name = "query"; value = "{searchTerms}"; } ]; }]; @@ -64,13 +65,27 @@ definedAliases = [ "@nw" ]; }; "NixOS Options" = { - urls = [{ template = "https://search.nixos.org/options?channel=${osConfig.system.nixos.release}&query={searchTerms}"; }]; + urls = [{ + template = "https://search.nixos.org/options"; + params = [ + # { name = "channel"; value = "${osConfig.system.nixos.release}"; } + { name = "channel"; value = "unstable"; } + { name = "query"; value = "{searchTerms}"; } + ]; + }]; icon = "https://nixos.org/favicon.png"; updateInterval = 24 * 60 * 60 * 1000; definedAliases = [ "@no" ]; }; "Home manager options" = { - urls = [{ template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=release-${osConfig.system.nixos.release}"; }]; + urls = [{ + template = "https://home-manager-options.extranix.com"; + params = [ + # { name = "release"; value = "release-${osConfig.system.nixos.release}"; } + { name = "release"; value = "master"; } + { name = "query"; value = "{searchTerms}"; } + ]; + }]; icon = "https://mipmip.github.io/home-manager-option-search/images/favicon.png"; updateInterval = 24 * 60 * 60 * 1000; definedAliases = [ "@hm" ]; @@ -148,7 +163,6 @@ user_pref("signon.rememberSignons", false); user_pref("toolkit.telemetry.enabled", false); user_pref("toolkit.telemetry.server", ""); - user_pref("widget.gtk.libadwaita-colors.enabled", false); ''; }; }; diff --git a/home/desktop-slim/foot.nix b/home/desktop-slim/foot.nix index 9cdea88..596be0b 100644 --- a/home/desktop-slim/foot.nix +++ b/home/desktop-slim/foot.nix @@ -6,6 +6,6 @@ }; xdg.configFile."foot" = { recursive = true; - source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/dotfiles/foot"; + source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/dotfiles/foot"; }; } diff --git a/home/desktop-slim/niri.nix b/home/desktop-slim/niri.nix index 4355279..00e25cd 100644 --- a/home/desktop-slim/niri.nix +++ b/home/desktop-slim/niri.nix @@ -5,18 +5,18 @@ services.polkit-gnome.enable = true; home.packages = with pkgs; [ + dgop dsearch wl-mirror xwayland-satellite + adw-gtk3 ]; - programs.foot.server.enable = true; - - # programs.ghostty.enable = true; - - # programs.firefox.preferences = { - # "widget.gtk.libadwaita-colors.enabled" = true; - # }; - - # xdg.configFile."polybar/config.ini".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/dotfiles/polybar/config.ini"; + xdg.configFile = { + "niri/config.kdl".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/dotfiles/niri/config.kdl"; + "niri/dms" = { + source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/dotfiles/niri/dms"; + recursive = true; + }; + }; } diff --git a/home/desktop-slim/user-dirs.nix b/home/desktop-slim/user-dirs.nix index 4a04c28..5daba7f 100644 --- a/home/desktop-slim/user-dirs.nix +++ b/home/desktop-slim/user-dirs.nix @@ -4,6 +4,7 @@ xdg.userDirs = { enable = true; createDirectories = true; + setSessionVariables = false; desktop = "${config.home.homeDirectory}/desktop"; documents = "${config.home.homeDirectory}/misc"; download = "${config.home.homeDirectory}/tmp"; diff --git a/home/dotfiles/foot/dank-colors.ini b/home/dotfiles/foot/dank-colors.ini deleted file mode 100644 index 6ab7f43..0000000 --- a/home/dotfiles/foot/dank-colors.ini +++ /dev/null @@ -1,25 +0,0 @@ -[colors] -foreground=181c20 -background=f7f9ff -selection-foreground=181c20 -selection-background=e3f2fd -cursor = f7f9ff 1976d2 - -regular0=101418 -regular1=c7003b -regular2=009d14 -regular3=fbee00 -regular4=1077dc -regular5=b7dbff -regular6=1976d2 -regular7=36383a -bright0=aaaeb2 -bright1=fb1e60 -bright2=07e724 -bright3=fff100 -bright4=077df1 -bright5=b7dbff -bright6=8ec7ff -bright7=f6faff - -dim-blend-towards=white diff --git a/home/minimal/git.nix b/home/minimal/git.nix index 4119ab0..6672801 100644 --- a/home/minimal/git.nix +++ b/home/minimal/git.nix @@ -3,6 +3,7 @@ { programs.git = { enable = true; + signing.format = "openpgp"; settings = { pull.rebase = true; extraConfig.init.defaultBranch = "main"; diff --git a/home/minimal/nvim/default.nix b/home/minimal/nvim/default.nix index 9dbeba5..805735a 100644 --- a/home/minimal/nvim/default.nix +++ b/home/minimal/nvim/default.nix @@ -234,6 +234,9 @@ ''; } ]; + + withRuby = false; + withPython3 = true; }; xdg.configFile."nvim" = { diff --git a/hosts/nova/default.nix b/hosts/nova/default.nix index a28c920..0388077 100644 --- a/hosts/nova/default.nix +++ b/hosts/nova/default.nix @@ -7,6 +7,7 @@ ./hardware-configuration.nix ../../users/alt/system.nix ../../users/guest/system.nix + ../../system ../../system/desktop ../../system/desktop/laptop.nix @@ -48,7 +49,7 @@ ]; networking.useDHCP = lib.mkDefault true; - powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand"; + # powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand"; hardware.trackpoint.enable = true; } diff --git a/system/desktop/default.nix b/system/desktop/default.nix index 2e6ca6c..7411c8a 100644 --- a/system/desktop/default.nix +++ b/system/desktop/default.nix @@ -6,6 +6,8 @@ ./btrbk.nix ]; + hardware.bluetooth.enable = true; + networking.networkmanager = { enable = true; plugins = with pkgs; [ networkmanager-openvpn ]; @@ -34,8 +36,6 @@ virtiofsd ]; - environment.pathsToLink = [ "/share/foot" ]; - fonts.packages = with pkgs; [ jetbrains-mono ]; @@ -55,6 +55,9 @@ programs.gnupg.agent = { enable = true; pinentryPackage = pkgs.pinentry-all; - # pinentry.program = "pinentry"; + settings = { + default-cache-ttl = 34560000; + max-cache-ttl = 34560000; + }; }; } diff --git a/system/desktop/laptop.nix b/system/desktop/laptop.nix index 0b88d9b..1485b5b 100644 --- a/system/desktop/laptop.nix +++ b/system/desktop/laptop.nix @@ -1,7 +1,8 @@ -{ ... }: +{ lib, ... }: { services.thermald.enable = true; + services.power-profiles-daemon.enable = lib.mkForce false; services.auto-cpufreq.enable = true; services.auto-cpufreq.settings = { @@ -9,9 +10,10 @@ governor = "powersave"; energy_performance_preference = "power"; turbo = "never"; - enable_thresholds = true; - start_threshold = 20; - stop_threshold = 80; + ideapad_laptop_conservation_mode = true; + # enable_thresholds = true; + # start_threshold = 20; + # stop_threshold = 80; }; charger = { governor = "performance"; diff --git a/system/desktop/niri.nix b/system/desktop/niri.nix index 7f62cd4..e3cfca7 100644 --- a/system/desktop/niri.nix +++ b/system/desktop/niri.nix @@ -7,6 +7,7 @@ enable = true; systemd.enable = true; quickshell.package = inputs.quickshell.packages.${pkgs.stdenv.hostPlatform.system}.quickshell; + enableSystemMonitoring = false; }; services.displayManager.dms-greeter = { @@ -20,6 +21,8 @@ environment.systemPackages = with pkgs; [ nirius + papirus-icon-theme + phinger-cursors ]; systemd.user.services."niriusd" = { @@ -31,4 +34,6 @@ ExecStart = "${pkgs.nirius}/bin/niriusd"; }; }; + + services.upower.enable = true; } diff --git a/system/desktop/yubikey-pam.nix b/system/desktop/yubikey-pam.nix index 3544d2d..a16409e 100644 --- a/system/desktop/yubikey-pam.nix +++ b/system/desktop/yubikey-pam.nix @@ -11,18 +11,18 @@ services.udev = { packages = [ pkgs.yubikey-personalization ]; - # extraRules = '' - # ACTION=="remove",\ - # ENV{ID_BUS}=="usb",\ - # ENV{ID_MODEL_ID}=="0407",\ - # ENV{ID_VENDOR_ID}=="1050",\ - # ENV{ID_VENDOR}=="Yubico",\ - # RUN+="${pkgs.systemd}/bin/loginctl lock-sessions" - # ''; + extraRules = '' + ACTION=="remove",\ + ENV{ID_BUS}=="usb",\ + ENV{ID_MODEL_ID}=="0407",\ + ENV{ID_VENDOR_ID}=="1050",\ + ENV{ID_VENDOR}=="Yubico",\ + RUN+="${pkgs.systemd}/bin/loginctl lock-sessions" + ''; }; - # security.pam.services = { - # login.u2fAuth = true; - # sudo.u2fAuth = true; - # }; + security.pam.services = { + login.u2fAuth = true; + sudo.u2fAuth = true; + }; } From 28e84d34df60e2eceef5c02501e838ed2ec33b8a Mon Sep 17 00:00:00 2001 From: Till Date: Wed, 15 Apr 2026 22:04:14 +0200 Subject: [PATCH 44/44] mostly dotfiles --- dotfiles/foot/catppuccin-frappe.ini | 0 dotfiles/foot/catppuccin-latte.ini | 0 dotfiles/foot/catppuccin-macchiato.ini | 0 dotfiles/foot/catppuccin-mocha.ini | 0 dotfiles/foot/dank-colors.ini | 0 dotfiles/foot/foot.ini | 0 dotfiles/foot/matugen.ini | 0 dotfiles/foot/paper-color.ini | 0 dotfiles/neomutt/bindings.neomuttrc | 0 dotfiles/neomutt/colors.neomuttrc | 0 dotfiles/neomutt/config.neomuttrc | 0 dotfiles/niri/config.kdl | 2 +- dotfiles/niri/dms/alttab.kdl | 0 dotfiles/niri/dms/binds.kdl | 296 ++++++------------ dotfiles/niri/dms/colors.kdl | 0 dotfiles/niri/dms/cursor.kdl | 0 dotfiles/niri/dms/layout.kdl | 2 +- dotfiles/niri/dms/outputs.kdl | 0 dotfiles/niri/dms/windowrules.kdl | 0 dotfiles/niri/dms/wpblur.kdl | 0 dotfiles/tmux/rloft.conf | 2 + dotfiles/tmux/tmux.conf | 45 +++ flake.lock | 12 +- home/desktop-full/mail.nix | 5 +- home/minimal/nvim/default.nix | 45 +-- home/minimal/tmux.nix | 55 +--- hosts/arielle/hardware-configuration.nix | 1 - hosts/homer/default.nix | 2 +- ...ardware.nix => hardware-configuration.nix} | 0 system/desktop/btrbk.nix | 2 +- 30 files changed, 180 insertions(+), 289 deletions(-) mode change 100644 => 100755 dotfiles/foot/catppuccin-frappe.ini mode change 100644 => 100755 dotfiles/foot/catppuccin-latte.ini mode change 100644 => 100755 dotfiles/foot/catppuccin-macchiato.ini mode change 100644 => 100755 dotfiles/foot/catppuccin-mocha.ini mode change 100644 => 100755 dotfiles/foot/dank-colors.ini mode change 100644 => 100755 dotfiles/foot/foot.ini mode change 100644 => 100755 dotfiles/foot/matugen.ini mode change 100644 => 100755 dotfiles/foot/paper-color.ini mode change 100644 => 100755 dotfiles/neomutt/bindings.neomuttrc mode change 100644 => 100755 dotfiles/neomutt/colors.neomuttrc mode change 100644 => 100755 dotfiles/neomutt/config.neomuttrc mode change 100644 => 100755 dotfiles/niri/config.kdl mode change 100644 => 100755 dotfiles/niri/dms/alttab.kdl mode change 100644 => 100755 dotfiles/niri/dms/binds.kdl mode change 100644 => 100755 dotfiles/niri/dms/colors.kdl mode change 100644 => 100755 dotfiles/niri/dms/cursor.kdl mode change 100644 => 100755 dotfiles/niri/dms/layout.kdl mode change 100644 => 100755 dotfiles/niri/dms/outputs.kdl mode change 100644 => 100755 dotfiles/niri/dms/windowrules.kdl mode change 100644 => 100755 dotfiles/niri/dms/wpblur.kdl create mode 100644 dotfiles/tmux/rloft.conf create mode 100644 dotfiles/tmux/tmux.conf rename hosts/homer/{hardware.nix => hardware-configuration.nix} (100%) diff --git a/dotfiles/foot/catppuccin-frappe.ini b/dotfiles/foot/catppuccin-frappe.ini old mode 100644 new mode 100755 diff --git a/dotfiles/foot/catppuccin-latte.ini b/dotfiles/foot/catppuccin-latte.ini old mode 100644 new mode 100755 diff --git a/dotfiles/foot/catppuccin-macchiato.ini b/dotfiles/foot/catppuccin-macchiato.ini old mode 100644 new mode 100755 diff --git a/dotfiles/foot/catppuccin-mocha.ini b/dotfiles/foot/catppuccin-mocha.ini old mode 100644 new mode 100755 diff --git a/dotfiles/foot/dank-colors.ini b/dotfiles/foot/dank-colors.ini old mode 100644 new mode 100755 diff --git a/dotfiles/foot/foot.ini b/dotfiles/foot/foot.ini old mode 100644 new mode 100755 diff --git a/dotfiles/foot/matugen.ini b/dotfiles/foot/matugen.ini old mode 100644 new mode 100755 diff --git a/dotfiles/foot/paper-color.ini b/dotfiles/foot/paper-color.ini old mode 100644 new mode 100755 diff --git a/dotfiles/neomutt/bindings.neomuttrc b/dotfiles/neomutt/bindings.neomuttrc old mode 100644 new mode 100755 diff --git a/dotfiles/neomutt/colors.neomuttrc b/dotfiles/neomutt/colors.neomuttrc old mode 100644 new mode 100755 diff --git a/dotfiles/neomutt/config.neomuttrc b/dotfiles/neomutt/config.neomuttrc old mode 100644 new mode 100755 diff --git a/dotfiles/niri/config.kdl b/dotfiles/niri/config.kdl old mode 100644 new mode 100755 index f756013..bf021a7 --- a/dotfiles/niri/config.kdl +++ b/dotfiles/niri/config.kdl @@ -110,7 +110,7 @@ input { trackpoint { } - warp-mouse-to-focus + // warp-mouse-to-focus focus-follows-mouse max-scroll-amount="0%" } diff --git a/dotfiles/niri/dms/alttab.kdl b/dotfiles/niri/dms/alttab.kdl old mode 100644 new mode 100755 diff --git a/dotfiles/niri/dms/binds.kdl b/dotfiles/niri/dms/binds.kdl old mode 100644 new mode 100755 index 2cc1fe3..5af1fc6 --- a/dotfiles/niri/dms/binds.kdl +++ b/dotfiles/niri/dms/binds.kdl @@ -1,175 +1,29 @@ binds { - - // === System & Overview === - Mod+Space repeat=false { toggle-overview; } - Mod+Shift+Slash { show-hotkey-overlay; } - - // === Application Launchers === - Mod+Return hotkey-overlay-title="Open Terminal" { - spawn "foot"; - } - - Mod+B hotkey-overlay-title="Open Browser" { - spawn "nirius" "focus-or-spawn" "-a" "^firefox$" "firefox"; - } - - Mod+M hotkey-overlay-title="Open Mail" { - spawn "nirius" "focus-or-spawn" "-t" "^neomutt" "foot" "--" "-e" "neomutt"; - } - - Mod+F hotkey-overlay-title="Open Files" { - spawn "nirius" "focus-or-spawn" "-t" "^vifm" "foot" "--" "-e" "vifm"; - } - - Mod+Slash hotkey-overlay-title="Application Launcher" { - spawn "dms" "ipc" "call" "spotlight" "toggle"; - } - - Mod+T hotkey-overlay-title="Task Manager" { - spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; - } - - Super+X hotkey-overlay-title="Power Menu: Toggle" { - spawn "dms" "ipc" "call" "powermenu" "toggle"; - } - - Mod+Comma hotkey-overlay-title="Settings" { - spawn "dms" "ipc" "call" "settings" "focusOrToggle"; - } - - Mod+Y hotkey-overlay-title="Browse Wallpapers" { - spawn "dms" "ipc" "call" "dankdash" "wallpaper"; - } - - Mod+O hotkey-overlay-title="Show dash overview" { - spawn "dms" "ipc" "call" "dash" "toggle" ""; - } - - Mod+W hotkey-overlay-title="Show dash weather" { - spawn "dms" "ipc" "call" "dash" "toggle" "weather"; - } - - Mod+P hotkey-overlay-title="Show dash music" { - spawn "dms" "ipc" "call" "dash" "toggle" "media"; - } - + Ctrl+Alt+Delete hotkey-overlay-title="Task Manager" { spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; } + Ctrl+XF86AudioLowerVolume allow-when-locked=true { spawn "dms" "ipc" "call" "mpris" "decrement" "3"; } + Ctrl+XF86AudioRaiseVolume allow-when-locked=true { spawn "dms" "ipc" "call" "mpris" "increment" "3"; } + Mod+Backspace hotkey-overlay-title="Lock Screen" { spawn "dms" "ipc" "call" "lock" "lock"; } + Mod+Comma hotkey-overlay-title="Settings" { spawn "dms" "ipc" "call" "settings" "focusOrToggle"; } + Mod+Ctrl+R hotkey-overlay-title="Rename Workspace" { spawn "dms" "ipc" "call" "workspace-rename" "open"; } Mod+N hotkey-overlay-title="Notification Center" { spawn "dms" "ipc" "call" "notifications" "toggle"; } - - // Mod+Shift+N hotkey-overlay-title="Notepad" { spawn "dms" "ipc" "call" "notepad" "toggle"; } - - // === Security === - Mod+Backspace hotkey-overlay-title="Lock Screen" { - spawn "dms" "ipc" "call" "lock" "lock"; - } - - Mod+Shift+Q { - quit; - } - - Ctrl+Alt+Delete hotkey-overlay-title="Task Manager" { - spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; - } - - // === Audio Controls === - XF86AudioRaiseVolume allow-when-locked=true { - spawn "dms" "ipc" "call" "audio" "increment" "3"; - } - XF86AudioLowerVolume allow-when-locked=true { - spawn "dms" "ipc" "call" "audio" "decrement" "3"; - } - XF86AudioMute allow-when-locked=true { - spawn "dms" "ipc" "call" "audio" "mute"; - } - XF86AudioMicMute allow-when-locked=true { - spawn "dms" "ipc" "call" "audio" "micmute"; - } - XF86AudioPause allow-when-locked=true { - spawn "dms" "ipc" "call" "mpris" "playPause"; - } - XF86AudioPlay allow-when-locked=true { - spawn "dms" "ipc" "call" "mpris" "playPause"; - } - XF86AudioPrev allow-when-locked=true { - spawn "dms" "ipc" "call" "mpris" "previous"; - } - XF86AudioNext allow-when-locked=true { - spawn "dms" "ipc" "call" "mpris" "next"; - } - Ctrl+XF86AudioRaiseVolume allow-when-locked=true { - spawn "dms" "ipc" "call" "mpris" "increment" "3"; - } - Ctrl+XF86AudioLowerVolume allow-when-locked=true { - spawn "dms" "ipc" "call" "mpris" "decrement" "3"; - } - - // === Brightness Controls === - XF86MonBrightnessUp allow-when-locked=true { - spawn "dms" "ipc" "call" "brightness" "increment" "5" ""; - } - XF86MonBrightnessDown allow-when-locked=true { - spawn "dms" "ipc" "call" "brightness" "decrement" "5" ""; - } - - // === Focus Navigation === - Mod+H { focus-column-left; } - Mod+L { focus-column-right; } - Mod+J { focus-window-or-workspace-down; } - Mod+K { focus-window-or-workspace-up; } - - // === Window Movement === - Mod+Shift+H { move-column-left; } - Mod+Shift+L { move-column-right; } - Mod+Shift+J { move-window-down-or-to-workspace-down; } - Mod+Shift+K { move-window-up-or-to-workspace-up; } - - // === Column Navigation === - Mod+Home { focus-column-first; } - Mod+End { focus-column-last; } - Mod+Ctrl+Home { move-column-to-first; } - Mod+Ctrl+End { move-column-to-last; } - - // === Monitor Navigation === - Mod+Ctrl+H { focus-monitor-left; } - Mod+Ctrl+J { focus-monitor-down; } - Mod+Ctrl+K { focus-monitor-up; } - Mod+Ctrl+L { focus-monitor-right; } - - // === Move to Monitor === - Mod+Ctrl+Shift+H { move-column-to-monitor-left; } - Mod+Ctrl+Shift+J { move-column-to-monitor-down; } - Mod+Ctrl+Shift+K { move-column-to-monitor-up; } - Mod+Ctrl+Shift+L { move-column-to-monitor-right; } - - // === Workspace Navigation === - Mod+D { focus-workspace-down; } - Mod+U { focus-workspace-up; } - - // === Workspace Management === - Mod+Ctrl+R hotkey-overlay-title="Rename Workspace" { - spawn "dms" "ipc" "call" "workspace-rename" "open"; - } - - // === Move Workspaces === - Mod+Shift+D { move-workspace-down; } - Mod+Shift+U { move-workspace-up; } - - // === Mouse Wheel Navigation === - Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } - Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } - Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } - Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } - - Mod+WheelScrollRight { focus-column-right; } - Mod+WheelScrollLeft { focus-column-left; } - Mod+Ctrl+WheelScrollRight { move-column-right; } - Mod+Ctrl+WheelScrollLeft { move-column-left; } - - Mod+Shift+WheelScrollDown { focus-column-right; } - Mod+Shift+WheelScrollUp { focus-column-left; } - Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } - Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } - - // === Numbered Workspaces === + Mod+O hotkey-overlay-title="Show dash overview" { spawn "dms" "ipc" "call" "dash" "toggle" ""; } + Mod+P hotkey-overlay-title="Show dash music" { spawn "dms" "ipc" "call" "dash" "toggle" "media"; } + Mod+Shift+W hotkey-overlay-title="Create window rule" { spawn "dms" "ipc" "call" "window-rules" "toggle"; } + Mod+Slash hotkey-overlay-title="Application Launcher" { spawn "dms" "ipc" "call" "spotlight" "toggle"; } + Mod+T hotkey-overlay-title="Task Manager" { spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; } + Mod+W hotkey-overlay-title="Show dash weather" { spawn "dms" "ipc" "call" "dash" "toggle" "weather"; } + Mod+Y hotkey-overlay-title="Browse Wallpapers" { spawn "dms" "ipc" "call" "dankdash" "wallpaper"; } + Super+X hotkey-overlay-title="Power Menu: Toggle" { spawn "dms" "ipc" "call" "powermenu" "toggle"; } + XF86AudioLowerVolume allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "decrement" "3"; } + XF86AudioMicMute allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "micmute"; } + XF86AudioMute allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "mute"; } + XF86AudioNext allow-when-locked=true { spawn "dms" "ipc" "call" "mpris" "next"; } + XF86AudioPause allow-when-locked=true { spawn "dms" "ipc" "call" "mpris" "playPause"; } + XF86AudioPlay allow-when-locked=true { spawn "dms" "ipc" "call" "mpris" "playPause"; } + XF86AudioPrev allow-when-locked=true { spawn "dms" "ipc" "call" "mpris" "previous"; } + XF86AudioRaiseVolume allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "increment" "3"; } + XF86MonBrightnessDown allow-when-locked=true { spawn "dms" "ipc" "call" "brightness" "decrement" "5" ""; } + XF86MonBrightnessUp allow-when-locked=true { spawn "dms" "ipc" "call" "brightness" "increment" "5" ""; } Mod+1 { focus-workspace 1; } Mod+2 { focus-workspace 2; } Mod+3 { focus-workspace 3; } @@ -179,8 +33,11 @@ binds { Mod+7 { focus-workspace 7; } Mod+8 { focus-workspace 8; } Mod+9 { focus-workspace 9; } - - // === Move to Numbered Workspaces === + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + Mod+D { focus-workspace-down; } + Mod+J { focus-window-or-workspace-down; } + Mod+K { focus-window-or-workspace-up; } Mod+Shift+1 { move-column-to-workspace 1; } Mod+Shift+2 { move-column-to-workspace 2; } Mod+Shift+3 { move-column-to-workspace 3; } @@ -190,44 +47,69 @@ binds { Mod+Shift+7 { move-column-to-workspace 7; } Mod+Shift+8 { move-column-to-workspace 8; } Mod+Shift+9 { move-column-to-workspace 9; } - - // === Column Management === - Mod+Shift+BracketLeft { consume-or-expel-window-left; } - Mod+Shift+BracketRight { consume-or-expel-window-right; } - Mod+Shift+Period { expel-window-from-column; } - - // === Window Management === - Mod+Q repeat=false { close-window; } - Mod+Shift+G { toggle-window-floating; } - Mod+G { switch-focus-between-floating-and-tiling; } - Mod+Shift+T { toggle-column-tabbed-display; } - Mod+Shift+W hotkey-overlay-title="Create window rule" { spawn "dms" "ipc" "call" "window-rules" "toggle"; } - - // === Sizing & Layout === - Mod+R { switch-preset-column-width; } - Mod+V { switch-preset-window-height; } - Mod+Shift+V { reset-window-height; } - Mod+Shift+R { expand-column-to-available-width; } + Mod+Shift+D { move-workspace-down; } + Mod+Shift+J { move-window-down-or-to-workspace-down; } + Mod+Shift+K { move-window-up-or-to-workspace-up; } + Mod+Shift+U { move-workspace-up; } + Mod+U { focus-workspace-up; } + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + Mod+B hotkey-overlay-title="Open Browser" { spawn "nirius" "focus-or-spawn" "-a" "^firefox$" "firefox"; } Mod+C { center-column; } Mod+Ctrl+C { center-visible-columns; } - Mod+Z { maximize-column; } - Mod+Shift+Z { maximize-window-to-edges; } - Mod+Escape { fullscreen-window; } - - // === Manual Sizing === - Mod+Minus { set-column-width "-10%"; } + Mod+Ctrl+End { move-column-to-last; } + Mod+Ctrl+H { focus-monitor-left; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+J { focus-monitor-down; } + Mod+Ctrl+K { focus-monitor-up; } + Mod+Ctrl+L { focus-monitor-right; } + Mod+Ctrl+Shift+H { move-column-to-monitor-left; } + Mod+Ctrl+Shift+J { move-column-to-monitor-down; } + Mod+Ctrl+Shift+K { move-column-to-monitor-up; } + Mod+Ctrl+Shift+L { move-column-to-monitor-right; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+End { focus-column-last; } Mod+Equal { set-column-width "+10%"; } - Mod+Shift+Minus { set-window-height "-10%"; } - Mod+Shift+Equal { set-window-height "+10%"; } - - // === Screenshots === - XF86Launch1 { screenshot; } - Ctrl+XF86Launch1 { screenshot-screen; } - Mod+XF86Launch1 { screenshot-window; } - Print { screenshot; } - Ctrl+Print { screenshot-screen; } + Mod+Escape { fullscreen-window; } + Mod+F hotkey-overlay-title="Open Files" { spawn "nirius" "focus-or-spawn" "-t" "^vifm" "foot" "--" "-e" "vifm"; } + Mod+G { switch-focus-between-floating-and-tiling; } + Mod+H { focus-column-left; } + Mod+Home { focus-column-first; } + Mod+L { focus-column-right; } + Mod+M hotkey-overlay-title="Open Mail" { spawn "nirius" "focus-or-spawn" "-t" "^neomutt" "foot" "--" "-e" "neomutt"; } + Mod+Minus { set-column-width "-10%"; } Mod+Print { screenshot-window; } - - // === System Controls === + Mod+Q repeat=false { close-window; } + Mod+R { switch-preset-column-width; } + Mod+Shift+BracketLeft { consume-or-expel-window-left; } + Mod+Shift+BracketRight { consume-or-expel-window-right; } + Mod+Shift+Equal { set-window-height "+10%"; } + Mod+Shift+G { toggle-window-floating; } + Mod+Shift+H { move-column-left; } + Mod+Shift+L { move-column-right; } + Mod+Shift+Minus { set-window-height "-10%"; } + Mod+Shift+Period { expel-window-from-column; } + Mod+Shift+R { expand-column-to-available-width; } + Mod+Shift+T { toggle-column-tabbed-display; } + Mod+Shift+V { reset-window-height; } + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Shift+Z { maximize-window-to-edges; } + Mod+V { switch-preset-window-height; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+WheelScrollRight { focus-column-right; } + Mod+XF86Launch1 { screenshot-window; } + Mod+Z { maximize-column; } Mod+Ctrl+P { power-off-monitors; } + Ctrl+Print { screenshot-screen; } + Ctrl+XF86Launch1 { screenshot-screen; } + Print { screenshot; } + XF86Launch1 { screenshot; } + Mod+Shift+Q { quit; } + Mod+Return hotkey-overlay-title="Open Terminal" { spawn "foot"; } + Mod+Shift+Slash { show-hotkey-overlay; } + Mod+Space repeat=false { toggle-overview; } } diff --git a/dotfiles/niri/dms/colors.kdl b/dotfiles/niri/dms/colors.kdl old mode 100644 new mode 100755 diff --git a/dotfiles/niri/dms/cursor.kdl b/dotfiles/niri/dms/cursor.kdl old mode 100644 new mode 100755 diff --git a/dotfiles/niri/dms/layout.kdl b/dotfiles/niri/dms/layout.kdl old mode 100644 new mode 100755 index 243c04f..b339058 --- a/dotfiles/niri/dms/layout.kdl +++ b/dotfiles/niri/dms/layout.kdl @@ -4,7 +4,7 @@ // ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! layout { - gaps 15 + gaps 6 border { width 2 diff --git a/dotfiles/niri/dms/outputs.kdl b/dotfiles/niri/dms/outputs.kdl old mode 100644 new mode 100755 diff --git a/dotfiles/niri/dms/windowrules.kdl b/dotfiles/niri/dms/windowrules.kdl old mode 100644 new mode 100755 diff --git a/dotfiles/niri/dms/wpblur.kdl b/dotfiles/niri/dms/wpblur.kdl old mode 100644 new mode 100755 diff --git a/dotfiles/tmux/rloft.conf b/dotfiles/tmux/rloft.conf new file mode 100644 index 0000000..f03ec39 --- /dev/null +++ b/dotfiles/tmux/rloft.conf @@ -0,0 +1,2 @@ +split-window -c '#{pane_current_path}' -h R -q --no-save --no-restore; +select-pane -l diff --git a/dotfiles/tmux/tmux.conf b/dotfiles/tmux/tmux.conf new file mode 100644 index 0000000..c8cbfb4 --- /dev/null +++ b/dotfiles/tmux/tmux.conf @@ -0,0 +1,45 @@ +# Key bindings +bind C-l next-window +bind C-h previous-window +bind C-b last-window +bind n new-window +bind C-n new-window -c '#{pane_current_path}' +bind v split-window -h +bind C-v split-window -hc '#{pane_current_path}' +bind s split-window -v +bind C-s split-window -vc '#{pane_current_path}' +bind h select-pane -L +bind j select-pane -D +bind k select-pane -U +bind l select-pane -R +bind -r H resize-pane -L 5 +bind -r J resize-pane -D 5 +bind -r K resize-pane -U 5 +bind -r L resize-pane -R 5 +bind c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'" +bind C-c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'" + +# Layouts +bind f new-window -c '#{pane_current_path}' vifm +bind R source rloft.conf + +# Unbind +unbind p +unbind '"' +unbind % + +# Eye candy +set-option -g status-right "" +set-option -g status-left "" +set-option -g status-justify "centre" +# set-option -g status-style fg=magenta +# set-option -g pane-border-style fg=brightwhite +set-option -g pane-active-border-style fg=magenta +# set-option -g window-status-current-style bg=brightwhite + +# Some more specifics +set-option -g focus-events on +set -g base-index 1 +setw -g pane-base-index 1 +set -g default-terminal "tmux-256color" +set -as terminal-features ",xterm-256color:RGB" diff --git a/flake.lock b/flake.lock index 1854c0f..0a05880 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1775880170, - "narHash": "sha256-63PLZ7lspPAqpV/+d0oNtDHLCWQf1MVFRG2DOeDK+nU=", + "lastModified": 1776052978, + "narHash": "sha256-WR0Svwg/JreBNW006qjHET6RRRmmjWCMfrkS5JmDZK8=", "owner": "rycee", "repo": "nur-expressions", - "rev": "28b164d30b5ab6820ef7e17281ae55c539ae9ff5", + "rev": "6c0e7f01d9315f4806a187c2ec58d0f3b6961876", "type": "gitlab" }, "original": { @@ -50,11 +50,11 @@ ] }, "locked": { - "lastModified": 1775900011, - "narHash": "sha256-QUGu6CJYFQ5AWVV0n3/FsJyV+1/gj7HSDx68/SX9pwM=", + "lastModified": 1776046499, + "narHash": "sha256-Wzc4nn07/0RL21ypPHRzNDQZcjhIC8LaYo7QJQjM5T4=", "owner": "nix-community", "repo": "home-manager", - "rev": "b0569dc6ec1e6e7fefd8f6897184e4c191cd768e", + "rev": "287f84846c1eb3b72c986f5f6bebcff0bd67440d", "type": "github" }, "original": { diff --git a/home/desktop-full/mail.nix b/home/desktop-full/mail.nix index c5d79ab..db30c84 100644 --- a/home/desktop-full/mail.nix +++ b/home/desktop-full/mail.nix @@ -85,12 +85,12 @@ in ''; }; neomutt = { - extraConfig = '' + extraConfig = makeConfig name + '' color status blue default color index blue default '~N' alternates ^tstraube@(em|rz)?.uni-frankfurt.de$ set smime_is_default - '' + makeConfig name; + ''; }; }; @@ -271,6 +271,7 @@ in programs.neovim.plugins = with pkgs.vimPlugins; [ { plugin = vim-pathogen; + type = "viml"; config = "execute pathogen#infect()"; } ]; diff --git a/home/minimal/nvim/default.nix b/home/minimal/nvim/default.nix index 805735a..1a23c4e 100644 --- a/home/minimal/nvim/default.nix +++ b/home/minimal/nvim/default.nix @@ -69,6 +69,7 @@ { plugin = goyo-vim; + type = "viml"; config = '' nnoremap yog :Goyo nnoremap [og :Goyo 80 @@ -77,6 +78,7 @@ } { plugin = limelight-vim; + type = "viml"; config = '' set termguicolors let g:limelight_conceal_ctermfg = 'darkgray' @@ -97,6 +99,7 @@ { plugin = nvim-colorizer-lua; + type = "viml"; config = "lua require 'colorizer'.setup()"; } @@ -135,20 +138,22 @@ ''; } - { - plugin = catppuccin-nvim; - config = '' - colorscheme catppuccin-nvim - ''; - } - # { - # plugin = papercolor-theme; + # plugin = catppuccin-nvim; + # type = "viml"; # config = '' - # colorscheme PaperColor + # colorscheme catppuccin-nvim # ''; # } + { + plugin = papercolor-theme; + type = "viml"; + config = '' + colorscheme PaperColor + ''; + } + quarto-nvim typescript-vim @@ -164,6 +169,7 @@ { plugin = vim-astro; + type = "viml"; config = '' let g:astro_typescript = 'enable' ''; @@ -173,30 +179,29 @@ { plugin = vim-easy-align; + type = "viml"; config = '' xmap ga (EasyAlign) nmap ga (EasyAlign) ''; } - { - plugin = vim-fish; - } - + vim-fish vim-nix - { - plugin = vim-pandoc; - config = '' - let g:pandoc#modules#disabled = ["completion", "command", "menu"] - ''; - } + # { + # plugin = vim-pandoc; + # config = '' + # let g:pandoc#modules#disabled = ["completion", "command", "menu"] + # ''; + # } vim-pandoc-syntax vim-repeat { plugin = vim-slime; + type = "viml"; config = '' let g:slime_target = "tmux" let g:slime_default_config = {"socket_name": get(split($TMUX, ","), 0), "target_pane": ":.2"} @@ -215,6 +220,7 @@ { plugin = vim-unimpaired; + type = "viml"; config = '' nnoremap =p nnoremap =P @@ -224,6 +230,7 @@ { plugin = vimwiki; + type = "viml"; config = '' let g:vimwiki_list = [ { 'path': '~/notes/', 'syntax': 'markdown', 'ext': '.md' } ] nnoremap wt diff --git a/home/minimal/tmux.nix b/home/minimal/tmux.nix index 5c54bc3..7049270 100644 --- a/home/minimal/tmux.nix +++ b/home/minimal/tmux.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: { programs.tmux = { @@ -7,55 +7,10 @@ mouse = true; newSession = true; shell = "${pkgs.fish}/bin/fish"; - extraConfig = '' - # Key bindings - bind C-l next-window - bind C-h previous-window - bind C-b last-window - bind n new-window - bind C-n new-window -c '#{pane_current_path}' - bind v split-window -h - bind C-v split-window -hc '#{pane_current_path}' - bind s split-window -v - bind C-s split-window -vc '#{pane_current_path}' - bind h select-pane -L - bind j select-pane -D - bind k select-pane -U - bind l select-pane -R - bind -r H resize-pane -L 5 - bind -r J resize-pane -D 5 - bind -r K resize-pane -U 5 - bind -r L resize-pane -R 5 - bind c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'" - bind C-c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'" + }; - # Layouts - bind f new-window -c '#{pane_current_path}' vifm - bind R source ${ pkgs.writeText "tmux-rloft" '' - split-window -c '#{pane_current_path}' -h R -q --no-save --no-restore; - select-pane -l - ''} - - # Unbind - unbind p - unbind '"' - unbind % - - # Eye candy - set-option -g status-right "" - set-option -g status-left "" - set-option -g status-justify "centre" - set-option -g status-style fg=magenta - set-option -g pane-border-style fg=brightwhite - set-option -g pane-active-border-style fg=magenta - set-option -g window-status-current-style bg=brightwhite - - # Some more specifics - set-option -g focus-events on - set -g base-index 1 - setw -g pane-base-index 1 - set -g default-terminal "tmux-256color" - set -as terminal-features ",xterm-256color:RGB" - ''; + xdg.configFile."tmux" = { + source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/dotfiles/tmux"; + recursive = true; }; } diff --git a/hosts/arielle/hardware-configuration.nix b/hosts/arielle/hardware-configuration.nix index 7d2b330..ff69e44 100644 --- a/hosts/arielle/hardware-configuration.nix +++ b/hosts/arielle/hardware-configuration.nix @@ -23,6 +23,5 @@ ]; networking.useDHCP = lib.mkDefault true; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; } diff --git a/hosts/homer/default.nix b/hosts/homer/default.nix index 1f81a32..bdb97b8 100644 --- a/hosts/homer/default.nix +++ b/hosts/homer/default.nix @@ -4,7 +4,7 @@ networking.hostName = "homer"; imports = [ - ./hardware.nix + ./hardware-configuration.nix ../../system ../../system/desktop ../../system/desktop/gnome.nix diff --git a/hosts/homer/hardware.nix b/hosts/homer/hardware-configuration.nix similarity index 100% rename from hosts/homer/hardware.nix rename to hosts/homer/hardware-configuration.nix diff --git a/system/desktop/btrbk.nix b/system/desktop/btrbk.nix index 04f893a..cb797f4 100644 --- a/system/desktop/btrbk.nix +++ b/system/desktop/btrbk.nix @@ -2,7 +2,7 @@ { services.btrbk.instances.btrbk = { - onCalendar = "hourly"; + # onCalendar = "hourly"; settings = { subvolume = "/home"; snapshot_preserve = "40d";