diff --git a/common.nix b/common.nix index 4c6e6f7..9b9cb3b 100644 --- a/common.nix +++ b/common.nix @@ -10,13 +10,11 @@ ... }: with lib; -with builtins; -{ - imports = [ lix-module.nixosModules.default ]; +with builtins; { + imports = [lix-module.nixosModules.default]; environment = { systemPackages = with pkgs; [ - nixfmt-rfc-style overskride transmission_4-gtk @@ -107,16 +105,7 @@ with builtins; users.users.jade = { isNormalUser = true; - extraGroups = [ - "wheel" - "input" - "uinput" - "libvirtd" - "adbusers" - "dialout" - "plugdev" - "wireshark" - ]; + extraGroups = ["wheel" "input" "uinput" "libvirtd" "adbusers" "dialout" "plugdev" "wireshark"]; openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOaE8TFsIazpn4OnHvHcRpOFr9FfvMaWOiEjmHsmnAoE cardno:000F_70CD7D05" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILg7hhAKxIAbokHHcIj9HBgbkgoKGCG2R+gx7HZKL+iz cardno:000F_93C6A612" diff --git a/flake.nix b/flake.nix index 1dd871f..e33d645 100644 --- a/flake.nix +++ b/flake.nix @@ -24,129 +24,106 @@ }; }; - outputs = - { - self, - nixpkgs, - nixpkgs-stable, - nixpkgs-unstable-small, - lix-module, - typst-within, - home-manager, - nixos-hardware, - niri, - stylix, - fenix, - crane, - ... - }@inputs: - let - system = "x86_64-linux"; - pkgs = nixpkgs.legacyPackages.${system}; - pkgs-stable = nixpkgs-stable.legacyPackages.${system}; - pkgs-unstable-small = nixpkgs-unstable-small.legacyPackages.${system}; - rs-toolchain = - with fenix.packages.${system}; - combine [ - complete.toolchain - ]; - crane-lib = (crane.mkLib nixpkgs.legacyPackages.${system}).overrideToolchain rs-toolchain; - rs-programs = final: prev: { - s10e-jrnl = crane-lib.buildPackage { - pname = "s10e-bs"; - version = "0.0.1"; - src = crane-lib.cleanCargoSource (crane-lib.path ./.); - }; - }; - in - { - formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style; - devShells."x86_64-linux".default = pkgs.mkShell { - buildInputs = [ - rs-toolchain - pkgs.pkg-config - pkgs.openssl - ]; - }; - nixosConfigurations = { - monosodium-glutamate-g = nixpkgs.lib.nixosSystem { - specialArgs = { - inherit - inputs - pkgs-unstable-small - pkgs-stable - rs-programs - lix-module - niri - ; - }; - system = "x86_64-linux"; - modules = [ - inputs.niri.nixosModules.niri - stylix.nixosModules.stylix - ./hosts/monosodium-glutamate-g/configuration.nix - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = { - inherit pkgs-unstable-small pkgs-stable typst-within; - }; - home-manager.sharedModules = [ - inputs.nixcord.homeManagerModules.nixcord - ]; - home-manager.users.jade = - { - nixosConfig, - pkgs, - ... - }: - { - home.sessionVariables.TZ = nixosConfig.time.timeZone; - home.stateVersion = "${nixosConfig.system.stateVersion}"; - }; - } - ]; - }; - denkbrett = nixpkgs.lib.nixosSystem { - specialArgs = { - inherit - inputs - pkgs-unstable-small - pkgs-stable - rs-programs - lix-module - niri - ; - }; - system = "x86_64-linux"; - modules = [ - inputs.niri.nixosModules.niri - stylix.nixosModules.stylix - ./hosts/denkbrett/configuration.nix - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = { - inherit pkgs-unstable-small pkgs-stable typst-within; - }; - home-manager.sharedModules = [ - inputs.nixcord.homeManagerModules.nixcord - ]; - home-manager.users.jade = - { - nixosConfig, - pkgs, - ... - }: - { - home.sessionVariables.TZ = nixosConfig.time.timeZone; - home.stateVersion = "22.11"; - }; - } - ]; - }; + outputs = { + self, + nixpkgs, + nixpkgs-stable, + nixpkgs-unstable-small, + lix-module, + typst-within, + home-manager, + nixos-hardware, + niri, + stylix, + fenix, + crane, + ... + } @ inputs: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + pkgs-stable = nixpkgs-stable.legacyPackages.${system}; + pkgs-unstable-small = nixpkgs-unstable-small.legacyPackages.${system}; + rs-toolchain = with fenix.packages.${system}; + combine [ + complete.toolchain + ]; + crane-lib = (crane.mkLib nixpkgs.legacyPackages.${system}).overrideToolchain rs-toolchain; + rs-programs = final: prev: { + s10e-jrnl = crane-lib.buildPackage { + pname = "s10e-bs"; + version = "0.0.1"; + src = crane-lib.cleanCargoSource (crane-lib.path ./.); }; }; + in { + devShells."x86_64-linux".default = pkgs.mkShell { + buildInputs = [ + rs-toolchain + pkgs.pkg-config + pkgs.openssl + ]; + }; + nixosConfigurations = { + monosodium-glutamate-g = nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs pkgs-unstable-small pkgs-stable rs-programs lix-module niri; + }; + system = "x86_64-linux"; + modules = [ + inputs.niri.nixosModules.niri + stylix.nixosModules.stylix + ./hosts/monosodium-glutamate-g/configuration.nix + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = { + inherit pkgs-unstable-small pkgs-stable typst-within; + }; + home-manager.sharedModules = [ + inputs.nixcord.homeManagerModules.nixcord + ]; + home-manager.users.jade = { + nixosConfig, + pkgs, + ... + }: { + home.sessionVariables.TZ = nixosConfig.time.timeZone; + home.stateVersion = "${nixosConfig.system.stateVersion}"; + }; + } + ]; + }; + denkbrett = nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs pkgs-unstable-small pkgs-stable rs-programs lix-module niri; + }; + system = "x86_64-linux"; + modules = [ + inputs.niri.nixosModules.niri + stylix.nixosModules.stylix + ./hosts/denkbrett/configuration.nix + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = { + inherit pkgs-unstable-small pkgs-stable typst-within; + }; + home-manager.sharedModules = [ + inputs.nixcord.homeManagerModules.nixcord + ]; + home-manager.users.jade = { + nixosConfig, + pkgs, + ... + }: { + home.sessionVariables.TZ = nixosConfig.time.timeZone; + home.stateVersion = "22.11"; + }; + } + ]; + }; + }; + }; } diff --git a/hosts/denkbrett/configuration.nix b/hosts/denkbrett/configuration.nix index a7558b7..6ecfb45 100644 --- a/hosts/denkbrett/configuration.nix +++ b/hosts/denkbrett/configuration.nix @@ -1,8 +1,7 @@ # Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ pkgs, ... }: -{ +{pkgs, ...}: { nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" "electron-27.3.11" @@ -28,19 +27,19 @@ }; }; - security.pam.services.swaylock = { }; + security.pam.services.swaylock = {}; hardware.usb-modeswitch.enable = true; systemd.services."ModemManager".enable = true; - systemd.services."ModemManager".wants = [ "NetworkManager.service" ]; - systemd.services."ModemManager".wantedBy = [ "multi-user.target" ]; + systemd.services."ModemManager".wants = ["NetworkManager.service"]; + systemd.services."ModemManager".wantedBy = ["multi-user.target"]; programs.wireshark.enable = true; boot.resumeDevice = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694"; - boot.kernelParams = [ "resume_offset=7380652" ]; + boot.kernelParams = ["resume_offset=7380652"]; - boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; + boot.binfmt.emulatedSystems = ["aarch64-linux"]; services.blueman.enable = true; diff --git a/hosts/denkbrett/hardware-configuration.nix b/hosts/denkbrett/hardware-configuration.nix index 9528956..6430beb 100644 --- a/hosts/denkbrett/hardware-configuration.nix +++ b/hosts/denkbrett/hardware-configuration.nix @@ -7,53 +7,35 @@ pkgs, modulesPath, ... -}: -{ +}: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ - "xhci_pci" - "nvme" - "usb_storage" - "sd_mod" - "rtsx_pci_sdmmc" - ]; - boot.initrd.kernelModules = [ "i915" ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"]; + boot.initrd.kernelModules = ["i915"]; + boot.kernelModules = ["kvm-intel"]; + boot.extraModulePackages = []; fileSystems."/" = { device = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694"; fsType = "btrfs"; - options = [ - "subvol=@" - "compress=zstd:3" - "noatime" - ]; + options = ["subvol=@" "compress=zstd:3" "noatime"]; }; fileSystems."/home" = { device = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694"; fsType = "btrfs"; - options = [ - "subvol=@home" - "compress=zstd:3" - ]; + options = ["subvol=@home" "compress=zstd:3"]; }; fileSystems."/swap" = { device = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694"; fsType = "btrfs"; - options = [ - "subvol=@/@swap" - "noatime" - ]; + options = ["subvol=@/@swap" "noatime"]; }; - boot.initrd.luks.devices."luks-9cd75cce-6829-4db8-8c5c-a9fb9ec3e122".device = - "/dev/disk/by-uuid/9cd75cce-6829-4db8-8c5c-a9fb9ec3e122"; + boot.initrd.luks.devices."luks-9cd75cce-6829-4db8-8c5c-a9fb9ec3e122".device = "/dev/disk/by-uuid/9cd75cce-6829-4db8-8c5c-a9fb9ec3e122"; fileSystems."/boot" = { device = "/dev/disk/by-uuid/C6CA-5DE8"; diff --git a/hosts/denkbrett/modules/default.nix b/hosts/denkbrett/modules/default.nix index b278c2b..ffe8790 100644 --- a/hosts/denkbrett/modules/default.nix +++ b/hosts/denkbrett/modules/default.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { imports = [ ./input.nix ./graphics.nix diff --git a/hosts/denkbrett/modules/graphics.nix b/hosts/denkbrett/modules/graphics.nix index 3666bc9..dae70fb 100644 --- a/hosts/denkbrett/modules/graphics.nix +++ b/hosts/denkbrett/modules/graphics.nix @@ -3,8 +3,7 @@ lib, config, ... -}: -{ +}: { environment.variables = { VDPAU_DRIVER = lib.mkIf config.hardware.graphics.enable (lib.mkDefault "va_gl"); }; diff --git a/hosts/denkbrett/modules/input.nix b/hosts/denkbrett/modules/input.nix index f4c9c0b..db9b4db 100644 --- a/hosts/denkbrett/modules/input.nix +++ b/hosts/denkbrett/modules/input.nix @@ -1,34 +1,25 @@ -{ ... }: -{ +{...}: { # key remapping - jade.input.remapping = - let - default = { - swapKeys = [ - [ - "KEY_Y" - "KEY_Z" - ] - [ - "KEY_LEFTALT" - "KEY_LEFTMETA" - ] - ]; - dual_role = [ - { - input = "KEY_CAPSLOCK"; - hold = [ "KEY_LEFTCTRL" ]; - tap = [ "KEY_ESC" ]; - } - ]; - }; - in - { - enable = true; - devices."AT Translated Set 2 keyboard" = default; - devices."Razer Razer Huntsman" = default; - devices."Razer Razer DeathAdder V2" = default; + jade.input.remapping = let + default = { + swapKeys = [ + ["KEY_Y" "KEY_Z"] + ["KEY_LEFTALT" "KEY_LEFTMETA"] + ]; + dual_role = [ + { + input = "KEY_CAPSLOCK"; + hold = ["KEY_LEFTCTRL"]; + tap = ["KEY_ESC"]; + } + ]; }; + in { + enable = true; + devices."AT Translated Set 2 keyboard" = default; + devices."Razer Razer Huntsman" = default; + devices."Razer Razer DeathAdder V2" = default; + }; hardware.trackpoint = { enable = true; diff --git a/hosts/monosodium-glutamate-g/configuration.nix b/hosts/monosodium-glutamate-g/configuration.nix index 9b27e5c..de708f8 100644 --- a/hosts/monosodium-glutamate-g/configuration.nix +++ b/hosts/monosodium-glutamate-g/configuration.nix @@ -5,8 +5,7 @@ pkgs, pkgs-stable, ... -}: -{ +}: { imports = [ ./hardware-configuration.nix ../../common.nix @@ -36,7 +35,7 @@ kernelPackages = pkgs.linuxPackages_zen; - binfmt.emulatedSystems = [ "aarch64-linux" ]; + binfmt.emulatedSystems = ["aarch64-linux"]; }; networking.hostName = "monosodium-glutamate-g"; @@ -80,7 +79,7 @@ # networking.firewall.allowedTCPPorts = [ 4713 ]; systemd.services."NetworkManager-wait-online".enable = false; - swapDevices = [ { device = "/swap/swapfile"; } ]; + swapDevices = [{device = "/swap/swapfile";}]; system.stateVersion = "24.05"; # Did you read the comment? } diff --git a/hosts/monosodium-glutamate-g/hardware-configuration.nix b/hosts/monosodium-glutamate-g/hardware-configuration.nix index c328c42..c414f70 100644 --- a/hosts/monosodium-glutamate-g/hardware-configuration.nix +++ b/hosts/monosodium-glutamate-g/hardware-configuration.nix @@ -7,49 +7,37 @@ pkgs, modulesPath, ... -}: -{ +}: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ - "nvme" - "xhci_pci" - "ahci" - "uas" - "usbhid" - "sd_mod" - ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "uas" "usbhid" "sd_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-amd"]; + boot.extraModulePackages = []; fileSystems."/" = { device = "/dev/disk/by-uuid/efb8f256-5b14-4b52-a2d9-ae4b91ecb711"; fsType = "btrfs"; - options = [ "subvol=@" ]; + options = ["subvol=@"]; }; - boot.initrd.luks.devices."luks-919f9b8b-2804-447a-97e0-f7f515d0be56".device = - "/dev/disk/by-uuid/919f9b8b-2804-447a-97e0-f7f515d0be56"; + boot.initrd.luks.devices."luks-919f9b8b-2804-447a-97e0-f7f515d0be56".device = "/dev/disk/by-uuid/919f9b8b-2804-447a-97e0-f7f515d0be56"; fileSystems."/boot" = { device = "/dev/disk/by-uuid/3FAD-A6B4"; fsType = "vfat"; - options = [ - "fmask=0077" - "dmask=0077" - ]; + options = ["fmask=0077" "dmask=0077"]; }; fileSystems."/swap" = { device = "/dev/disk/by-uuid/efb8f256-5b14-4b52-a2d9-ae4b91ecb711"; fsType = "btrfs"; - options = [ "subvol=swap" ]; + options = ["subvol=swap"]; }; - swapDevices = [ ]; + 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 diff --git a/hosts/monosodium-glutamate-g/modules/default.nix b/hosts/monosodium-glutamate-g/modules/default.nix index 34ffd52..fb1c643 100644 --- a/hosts/monosodium-glutamate-g/modules/default.nix +++ b/hosts/monosodium-glutamate-g/modules/default.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { imports = [ ./graphics.nix ]; diff --git a/hosts/monosodium-glutamate-g/modules/graphics.nix b/hosts/monosodium-glutamate-g/modules/graphics.nix index f4b1efa..baa608b 100644 --- a/hosts/monosodium-glutamate-g/modules/graphics.nix +++ b/hosts/monosodium-glutamate-g/modules/graphics.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { environment.systemPackages = [ pkgs.nvtopPackages.amd pkgs.radeontop diff --git a/modules/default.nix b/modules/default.nix index 1bf5670..cd4c0e8 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { imports = [ ./shell ./desktop diff --git a/modules/desktop-legacy/default.nix b/modules/desktop-legacy/default.nix index 7ddb6ef..7a2f692 100644 --- a/modules/desktop-legacy/default.nix +++ b/modules/desktop-legacy/default.nix @@ -4,8 +4,7 @@ pkgs, ... }: -with lib; -{ +with lib; { imports = [ ./gaming.nix ./syncthing.nix @@ -29,27 +28,25 @@ with lib; notifications.test = true; }; - home-manager.users.jade = - { pkgs, ... }: - { - programs.ssh = { - controlMaster = "yes"; - }; - home.packages = with pkgs; [ - just - bacon - - magic-wormhole-rs - - # filemanager - xfce.thunar - xfce.tumbler - xfce.thunar-archive-plugin - file-roller - - # from environment.systemPackages cleanup - virt-manager - ddccontrol-db - ]; + home-manager.users.jade = {pkgs, ...}: { + programs.ssh = { + controlMaster = "yes"; }; + home.packages = with pkgs; [ + just + bacon + + magic-wormhole-rs + + # filemanager + xfce.thunar + xfce.tumbler + xfce.thunar-archive-plugin + file-roller + + # from environment.systemPackages cleanup + virt-manager + ddccontrol-db + ]; + }; } diff --git a/modules/desktop-legacy/gaming.nix b/modules/desktop-legacy/gaming.nix index e8b0df4..8e6b7bc 100644 --- a/modules/desktop-legacy/gaming.nix +++ b/modules/desktop-legacy/gaming.nix @@ -2,20 +2,16 @@ config, lib, ... -}: -let +}: let cfg = config.jade.desktop.gaming; in -with lib; -{ - options.jade.desktop.gaming = { - enable = mkEnableOption "Enable gaming stuff"; - }; - config = mkIf cfg.enable { - programs.steam.enable = true; - home-manager.users.jade = - { pkgs, ... }: - { + with lib; { + options.jade.desktop.gaming = { + enable = mkEnableOption "Enable gaming stuff"; + }; + config = mkIf cfg.enable { + programs.steam.enable = true; + home-manager.users.jade = {pkgs, ...}: { home.packages = with pkgs; [ lutris prismlauncher @@ -24,5 +20,5 @@ with lib; vkd3d-proton ]; }; - }; -} + }; + } diff --git a/modules/desktop-legacy/kdeconnect.nix b/modules/desktop-legacy/kdeconnect.nix index cd73159..5133f5c 100644 --- a/modules/desktop-legacy/kdeconnect.nix +++ b/modules/desktop-legacy/kdeconnect.nix @@ -3,24 +3,20 @@ lib, pkgs, ... -}: -let +}: let cfg = config.jade.desktop.kdeconnect; in -with lib; -{ - options.jade.desktop.kdeconnect = { - enable = mkEnableOption "Enable KDE connect"; - }; - config = mkIf cfg.enable { - programs.kdeconnect.enable = true; - home-manager.users.jade = - { pkgs, ... }: - { + with lib; { + options.jade.desktop.kdeconnect = { + enable = mkEnableOption "Enable KDE connect"; + }; + config = mkIf cfg.enable { + programs.kdeconnect.enable = true; + home-manager.users.jade = {pkgs, ...}: { services.kdeconnect = { enable = true; indicator = true; }; }; - }; -} + }; + } diff --git a/modules/desktop-legacy/social.nix b/modules/desktop-legacy/social.nix index bd86033..dca396b 100644 --- a/modules/desktop-legacy/social.nix +++ b/modules/desktop-legacy/social.nix @@ -3,23 +3,19 @@ lib, pkgs, ... -}: -let +}: let cfg = config.jade.desktop.social; in -with lib; -{ - options.jade.desktop.social = { - enable = mkEnableOption "Enable social apps"; - }; - config = mkIf cfg.enable { - home-manager.users.jade = - { + with lib; { + options.jade.desktop.social = { + enable = mkEnableOption "Enable social apps"; + }; + config = mkIf cfg.enable { + home-manager.users.jade = { pkgs, pkgs-stable, ... - }: - { + }: { programs.nixcord = { enable = true; vesktop = { @@ -39,11 +35,11 @@ with lib; iamb ]; }; - programs.evolution = { - enable = true; - plugins = [ pkgs.evolution-ews ]; + programs.evolution = { + enable = true; + plugins = [pkgs.evolution-ews]; + }; + services.gnome.evolution-data-server.enable = true; + services.gnome.evolution-data-server.plugins = []; }; - services.gnome.evolution-data-server.enable = true; - services.gnome.evolution-data-server.plugins = [ ]; - }; -} + } diff --git a/modules/desktop-legacy/syncthing.nix b/modules/desktop-legacy/syncthing.nix index d114ce4..f44e40c 100644 --- a/modules/desktop-legacy/syncthing.nix +++ b/modules/desktop-legacy/syncthing.nix @@ -3,21 +3,19 @@ lib, pkgs, ... -}: -let +}: let cfg = config.jade.desktop.syncthing; in -with lib; -{ - options.jade.desktop.syncthing = { - enable = mkEnableOption "Enable syncing via syncthing"; - }; - config = mkIf cfg.enable { - services.syncthing = rec { - enable = true; - user = "jade"; - dataDir = "/home/${user}/Documents"; - configDir = "/home/${user}/Documents/.config/syncthing"; + with lib; { + options.jade.desktop.syncthing = { + enable = mkEnableOption "Enable syncing via syncthing"; }; - }; -} + config = mkIf cfg.enable { + services.syncthing = rec { + enable = true; + user = "jade"; + dataDir = "/home/${user}/Documents"; + configDir = "/home/${user}/Documents/.config/syncthing"; + }; + }; + } diff --git a/modules/desktop/audio.nix b/modules/desktop/audio.nix index fdfb747..c38403d 100644 --- a/modules/desktop/audio.nix +++ b/modules/desktop/audio.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { programs = { noisetorch.enable = true; }; diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index a5d5279..ba82753 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { imports = [ ./audio.nix ./home diff --git a/modules/desktop/dm.nix b/modules/desktop/dm.nix index f4f3470..e37fc8e 100644 --- a/modules/desktop/dm.nix +++ b/modules/desktop/dm.nix @@ -3,33 +3,31 @@ config, lib, ... -}: -let +}: let cfg = config.jade.desktop.dm; in -with lib; -{ - options.jade.desktop.dm.autoLogin = { - enable = mkEnableOption "Enable Autologin"; - delay = mkOption { - type = types.int; - default = 0; - }; - }; - config.services = { - displayManager = { - autoLogin = { - enable = cfg.autoLogin.enable; - user = "jade"; - }; - defaultSession = "niri"; - }; - xserver.displayManager.gdm = { - enable = true; - banner = "Meow :3"; - autoLogin = { - delay = cfg.autoLogin.delay; + with lib; { + options.jade.desktop.dm.autoLogin = { + enable = mkEnableOption "Enable Autologin"; + delay = mkOption { + type = types.int; + default = 0; }; }; - }; -} + config.services = { + displayManager = { + autoLogin = { + enable = cfg.autoLogin.enable; + user = "jade"; + }; + defaultSession = "niri"; + }; + xserver.displayManager.gdm = { + enable = true; + banner = "Meow :3"; + autoLogin = { + delay = cfg.autoLogin.delay; + }; + }; + }; + } diff --git a/modules/desktop/home/browser.nix b/modules/desktop/home/browser.nix index 0e6934e..afc8090 100644 --- a/modules/desktop/home/browser.nix +++ b/modules/desktop/home/browser.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { home.file = { ".tridactylrc" = { text = '' @@ -17,25 +16,23 @@ }; policies = { DefaultDownloadDirectory = "\${home}/Downloads"; - Extensions.Install = - builtins.map (name: "https://addons.mozilla.org/firefox/downloads/latest/${name}") - [ - "ublock-origin" - "tridactyl-vim" - "privacy-badger17" - "gruvbox-dark-theme" - "torproject-snowflake" - "bitwarden-password-manager" - "terms-of-service-didnt-read" - "shinigami-eyes" - "darkreader" - "sponsorblock" - "youtube-mrbeastify" - "return-youtube-dislikes" - "multi-account-containers" - "tabby-cat-friend" - "indie-wiki-buddy" - ]; + Extensions.Install = builtins.map (name: "https://addons.mozilla.org/firefox/downloads/latest/${name}") [ + "ublock-origin" + "tridactyl-vim" + "privacy-badger17" + "gruvbox-dark-theme" + "torproject-snowflake" + "bitwarden-password-manager" + "terms-of-service-didnt-read" + "shinigami-eyes" + "darkreader" + "sponsorblock" + "youtube-mrbeastify" + "return-youtube-dislikes" + "multi-account-containers" + "tabby-cat-friend" + "indie-wiki-buddy" + ]; Extensions.Uninstall = [ "google@search.mozilla.org" "bing@search.mozilla.org" @@ -66,7 +63,7 @@ } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "pkgs" ]; + definedAliases = ["pkgs"]; }; "Nix Options" = { urls = [ @@ -81,7 +78,7 @@ } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "opts" ]; + definedAliases = ["opts"]; }; "Home manager Options" = { urls = [ @@ -100,7 +97,7 @@ } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "hm" ]; + definedAliases = ["hm"]; }; "NixOS Wiki" = { urls = [ @@ -115,7 +112,7 @@ } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "nxwk" ]; + definedAliases = ["nxwk"]; }; "Noogle" = { urls = [ @@ -129,7 +126,7 @@ ]; } ]; - definedAliases = [ "ngl" ]; + definedAliases = ["ngl"]; }; "lib.rs" = { urls = [ @@ -144,7 +141,7 @@ } ]; icon = "https://lib.rs/favicon.png"; - definedAliases = [ "libs" ]; + definedAliases = ["libs"]; }; "rust docs" = { urls = [ @@ -159,7 +156,7 @@ } ]; icon = "https://docs.rs/-/static/favicon.ico"; - definedAliases = [ "docs" ]; + definedAliases = ["docs"]; }; "rust docs direct open" = { urls = [ @@ -167,10 +164,7 @@ template = "https://docs.rs/{searchTerms}"; } ]; - definedAliases = [ - "doc" - "docd" - ]; + definedAliases = ["doc" "docd"]; }; "rust std docs" = { urls = [ @@ -185,7 +179,7 @@ } ]; icon = "https://doc.rust-lang.org/favicon.ico"; - definedAliases = [ "std" ]; + definedAliases = ["std"]; }; "MDN" = { urls = [ diff --git a/modules/desktop/home/default.nix b/modules/desktop/home/default.nix index 92880a2..690a915 100644 --- a/modules/desktop/home/default.nix +++ b/modules/desktop/home/default.nix @@ -1,33 +1,30 @@ -{ ... }: -{ +{...}: { programs.niri.enable = true; - home-manager.users.jade = - { pkgs, ... }: - { - imports = [ - ./notifications.nix - ./terminal.nix - ./layaway.nix - ./swayidle.nix - ./browser.nix - ./eww - ./niri - ]; + home-manager.users.jade = {pkgs, ...}: { + imports = [ + ./notifications.nix + ./terminal.nix + ./layaway.nix + ./swayidle.nix + ./browser.nix + ./eww + ./niri + ]; - # temporary(tm) - programs.wofi.enable = true; - programs.swaylock.enable = true; - services.network-manager-applet.enable = true; - xsession.enable = true; + # temporary(tm) + programs.wofi.enable = true; + programs.swaylock.enable = true; + services.network-manager-applet.enable = true; + xsession.enable = true; - home.packages = [ - pkgs.fluent-reader - ]; + home.packages = [ + pkgs.fluent-reader + ]; - services.gpg-agent = { - enable = true; - enableNushellIntegration = true; - enableSshSupport = true; - }; + services.gpg-agent = { + enable = true; + enableNushellIntegration = true; + enableSshSupport = true; }; + }; } diff --git a/modules/desktop/home/eww/default.nix b/modules/desktop/home/eww/default.nix index f7ce3c1..377c1f4 100644 --- a/modules/desktop/home/eww/default.nix +++ b/modules/desktop/home/eww/default.nix @@ -1,7 +1,6 @@ -{ ... }: -{ - programs.eww = { - enable = true; - configDir = ./configDir; - }; +{ ... }: { + programs.eww = { + enable = true; + configDir = ./configDir; + }; } diff --git a/modules/desktop/home/layaway.nix b/modules/desktop/home/layaway.nix index 7687d3b..ba0354f 100644 --- a/modules/desktop/home/layaway.nix +++ b/modules/desktop/home/layaway.nix @@ -2,8 +2,7 @@ pkgs, lib, ... -}: -let +}: let # stolen: https://github.com/MultisampledNight/core/blob/678f176cb24f5dc4b5dc629cfd3e643487be01bb/system/packages/layaway/default.nix#L7-L25 layaway = pkgs.rustPlatform.buildRustPackage rec { pname = "layaway"; @@ -22,10 +21,9 @@ let meta = with lib; { description = "Layout creation for Sway via a relative and human-readable DSL."; homepage = "https://github.com/MultisampledNight/layaway"; - maintainers = [ maintainers.multisn8 ]; + maintainers = [maintainers.multisn8]; }; }; -in -{ - home.packages = [ layaway ]; +in { + home.packages = [layaway]; } diff --git a/modules/desktop/home/niri/binds.nix b/modules/desktop/home/niri/binds.nix index 2bb27a5..df6fbc2 100644 --- a/modules/desktop/home/niri/binds.nix +++ b/modules/desktop/home/niri/binds.nix @@ -1,91 +1,50 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { programs.niri.settings.binds = { # spawn terminal "Mod+Return".action.spawn = "kitty"; "Mod+Return".repeat = false; - "Mod+D".action.spawn = [ - "wofi" - "-S" - "drun" - "--allow-images" - ]; + "Mod+D".action.spawn = ["wofi" "-S" "drun" "--allow-images"]; "Mod+D".repeat = false; - "Mod+I".action.spawn = [ - "${pkgs.rofimoji}/bin/rofimoji" - "--selector" - "wofi" - "-f" - "alchemical_symbols" - "anatolian_hieroglyphs" - "emojis" - "braille_patterns" - "box_drawing" - "chess_symbols" - "emoticons" - "geometric_shapes" - "gothic" - "greek_extended" - "math" - "mathematical_alphanumeric_symbols" - "mathematical_operators" - "miscellaneous_symbols" - "miscellaneous_mathematical_symbols-a" - "miscellaneous_mathematical_symbols-b" - "miscellaneous_symbols_and_arrows" - "miscellaneous_symbols_and_pictographs" - "miscellaneous_technical" - "modi" - "modifier_tone_letters" - "musical_symbols" - "nerd_font" - "number_forms" - "shorthand_format_controls" - "specials" - "variation_selectors" - "vertical_forms" - "-a" - "copy" - ]; + "Mod+I".action.spawn = ["${pkgs.rofimoji}/bin/rofimoji" "--selector" "wofi" "-f" "alchemical_symbols" "anatolian_hieroglyphs" "emojis" "braille_patterns" "box_drawing" "chess_symbols" "emoticons" "geometric_shapes" "gothic" "greek_extended" "math" "mathematical_alphanumeric_symbols" "mathematical_operators" "miscellaneous_symbols" "miscellaneous_mathematical_symbols-a" "miscellaneous_mathematical_symbols-b" "miscellaneous_symbols_and_arrows" "miscellaneous_symbols_and_pictographs" "miscellaneous_technical" "modi" "modifier_tone_letters" "musical_symbols" "nerd_font" "number_forms" "shorthand_format_controls" "specials" "variation_selectors" "vertical_forms" "-a" "copy"]; - "Mod+Shift+E".action.quit = [ ]; - "Mod+Shift+Q".action.close-window = [ ]; - "Mod+Shift+P".action.power-off-monitors = [ ]; + "Mod+Shift+E".action.quit = []; + "Mod+Shift+Q".action.close-window = []; + "Mod+Shift+P".action.power-off-monitors = []; - "Mod+Shift+Ctrl+Slash".action.toggle-keyboard-shortcuts-inhibit = [ ]; + "Mod+Shift+Ctrl+Slash".action.toggle-keyboard-shortcuts-inhibit = []; "Mod+Shift+Ctrl+Slash".allow-inhibiting = false; - "Mod+Shift+Slash".action.show-hotkey-overlay = [ ]; + "Mod+Shift+Slash".action.show-hotkey-overlay = []; # window/columns controls - "Mod+H".action.focus-column-left = [ ]; - "Mod+J".action.focus-window-down = [ ]; - "Mod+K".action.focus-window-up = [ ]; - "Mod+L".action.focus-column-right = [ ]; - "Mod+Ctrl+H".action.move-column-left = [ ]; - "Mod+Ctrl+J".action.move-window-down = [ ]; - "Mod+Ctrl+K".action.move-window-up = [ ]; - "Mod+Ctrl+L".action.move-column-right = [ ]; - "Mod+R".action.switch-preset-column-width = [ ]; + "Mod+H".action.focus-column-left = []; + "Mod+J".action.focus-window-down = []; + "Mod+K".action.focus-window-up = []; + "Mod+L".action.focus-column-right = []; + "Mod+Ctrl+H".action.move-column-left = []; + "Mod+Ctrl+J".action.move-window-down = []; + "Mod+Ctrl+K".action.move-window-up = []; + "Mod+Ctrl+L".action.move-column-right = []; + "Mod+R".action.switch-preset-column-width = []; - "Mod+V".action.toggle-window-floating = [ ]; - "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = [ ]; + "Mod+V".action.toggle-window-floating = []; + "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = []; # monitor controls - "Mod+Shift+H".action.focus-monitor-left = [ ]; - "Mod+Shift+J".action.focus-monitor-down = [ ]; - "Mod+Shift+K".action.focus-monitor-up = [ ]; - "Mod+Shift+L".action.focus-monitor-right = [ ]; - "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = [ ]; - "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = [ ]; - "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = [ ]; - "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = [ ]; + "Mod+Shift+H".action.focus-monitor-left = []; + "Mod+Shift+J".action.focus-monitor-down = []; + "Mod+Shift+K".action.focus-monitor-up = []; + "Mod+Shift+L".action.focus-monitor-right = []; + "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = []; + "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = []; + "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = []; + "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = []; # workspace controls - "Mod+P".action.focus-workspace-up = [ ]; - "Mod+N".action.focus-workspace-down = [ ]; - "Mod+Ctrl+P".action.move-column-to-workspace-up = [ ]; - "Mod+Ctrl+N".action.move-column-to-workspace-down = [ ]; + "Mod+P".action.focus-workspace-up = []; + "Mod+N".action.focus-workspace-down = []; + "Mod+Ctrl+P".action.move-column-to-workspace-up = []; + "Mod+Ctrl+N".action.move-column-to-workspace-down = []; "Mod+1".action.focus-workspace = 1; "Mod+2".action.focus-workspace = 2; "Mod+3".action.focus-workspace = 3; @@ -106,46 +65,26 @@ "Mod+Ctrl+9".action.move-column-to-workspace = 9; # column editing stuffs - "Mod+BracketLeft".action.consume-or-expel-window-left = [ ]; - "Mod+BracketRight".action.consume-or-expel-window-right = [ ]; - "Mod+F".action.maximize-column = [ ]; - "Mod+Shift+F".action.expand-column-to-available-width = [ ]; - "Mod+Ctrl+F".action.fullscreen-window = [ ]; - "Mod+C".action.center-column = [ ]; + "Mod+BracketLeft".action.consume-or-expel-window-left = []; + "Mod+BracketRight".action.consume-or-expel-window-right = []; + "Mod+F".action.maximize-column = []; + "Mod+Shift+F".action.expand-column-to-available-width = []; + "Mod+Ctrl+F".action.fullscreen-window = []; + "Mod+C".action.center-column = []; "Mod+Minus".action.set-column-width = "-5%"; "Mod+Equal".action.set-column-width = "+5%"; "Mod+Shift+Minus".action.set-window-height = "-10%"; "Mod+Shift+Equal".action.set-window-height = "+10%"; - "Mod+W".action.toggle-column-tabbed-display = [ ]; + "Mod+W".action.toggle-column-tabbed-display = []; # media keys - "XF86AudioRaiseVolume".action.spawn = [ - "wpctl" - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.1+" - ]; - "XF86AudioLowerVolume".action.spawn = [ - "wpctl" - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.1-" - ]; - "XF86AudioMute".action.spawn = [ - "wpctl" - "set-mute" - "@DEFAULT_AUDIO_SINK@" - "toggle" - ]; - "XF86AudioMicMute".action.spawn = [ - "wpctl" - "set-mute" - "@DEFAULT_AUDIO_SOURCE@" - "toggle" - ]; + "XF86AudioRaiseVolume".action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"]; + "XF86AudioLowerVolume".action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"]; + "XF86AudioMute".action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"]; + "XF86AudioMicMute" .action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"]; "XF86AudioRaiseVolume".allow-when-locked = true; "XF86AudioLowerVolume".allow-when-locked = true; "XF86AudioMute".allow-when-locked = true; - "XF86AudioMicMute".allow-when-locked = true; + "XF86AudioMicMute" .allow-when-locked = true; }; } diff --git a/modules/desktop/home/niri/default.nix b/modules/desktop/home/niri/default.nix index 779106f..66736d0 100644 --- a/modules/desktop/home/niri/default.nix +++ b/modules/desktop/home/niri/default.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { imports = [ ./xwayland-sat.nix ./screenshot.nix @@ -15,14 +14,7 @@ }; spawn-at-startup = [ - { - command = [ - "eww" - "open-many" - "topBar" - "bottomBar" - ]; - } + {command = ["eww" "open-many" "topBar" "bottomBar"];} { command = [ "${pkgs.swaybg}/bin/swaybg" diff --git a/modules/desktop/home/niri/input.nix b/modules/desktop/home/niri/input.nix index 22a9eb2..25760b3 100644 --- a/modules/desktop/home/niri/input.nix +++ b/modules/desktop/home/niri/input.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { programs.niri.settings.input = { keyboard = { xkb = { diff --git a/modules/desktop/home/niri/privacy.nix b/modules/desktop/home/niri/privacy.nix index 6cd2016..b847972 100644 --- a/modules/desktop/home/niri/privacy.nix +++ b/modules/desktop/home/niri/privacy.nix @@ -1,10 +1,9 @@ -{ ... }: -{ +{...}: { programs.niri.settings = { layer-rules = [ { matches = [ - { namespace = "notifications"; } + {namespace = "notifications";} ]; block-out-from = "screen-capture"; } @@ -12,14 +11,12 @@ window-rules = [ { matches = [ - { app-id = "^signal|Element|org\.gnome\.Evolution$"; } - { title = "^.*(Discord|Beispiel Screenshare block Bug|Bitwarden|Träwelling).*$"; } + {app-id = "^signal|Element|org\.gnome\.Evolution$";} + {title = "^.*(Discord|Beispiel Screenshare block Bug|Bitwarden|Träwelling).*$";} ]; excludes = [ - { - title = "^.*((Schrottkatze|Statistics|Leaderboard) - Träwelling|chaos.social|Nekoverse|catgirl.cloud).*$"; - } - { is-floating = true; } + {title = "^.*((Schrottkatze|Statistics|Leaderboard) - Träwelling|chaos.social|Nekoverse|catgirl.cloud).*$";} + {is-floating = true;} ]; block-out-from = "screen-capture"; } diff --git a/modules/desktop/home/niri/quirks.nix b/modules/desktop/home/niri/quirks.nix index e43637f..7a9199e 100644 --- a/modules/desktop/home/niri/quirks.nix +++ b/modules/desktop/home/niri/quirks.nix @@ -1,6 +1,5 @@ -{ pkgs, ... }: -{ - home.packages = [ pkgs.gamescope ]; +{pkgs, ...}: { + home.packages = [pkgs.gamescope]; programs.niri.settings = { window-rules = [ { @@ -29,7 +28,6 @@ shadow.enable = false; border.enable = false; baba-is-float = false; - open-focused = false; } { matches = [ @@ -49,16 +47,12 @@ is-floating = true; } ]; - geometry-corner-radius = - let - val = 5.; - in - { - bottom-left = val; - bottom-right = val; - top-left = val; - top-right = val; - }; + geometry-corner-radius = let val = 5.; in { + bottom-left = val; + bottom-right = val; + top-left = val; + top-right = val; + }; } ]; diff --git a/modules/desktop/home/niri/screenshot.nix b/modules/desktop/home/niri/screenshot.nix index 9719fcb..bba65b2 100644 --- a/modules/desktop/home/niri/screenshot.nix +++ b/modules/desktop/home/niri/screenshot.nix @@ -1,14 +1,13 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { programs.niri.settings = { screenshot-path = "~/Pictures/screenshots/%Y-%m-%dT%H:%M:%S.png"; binds = { - "Print".action.screenshot = [ ]; - "Ctrl+Print".action.screenshot-screen = [ ]; - "Shift+Print".action.screenshot-window = [ ]; - "Mod+S".action.screenshot = [ ]; - "Mod+Ctrl+S".action.screenshot-screen = [ ]; - "Mod+Shift+S".action.screenshot-window = [ ]; + "Print".action.screenshot = []; + "Ctrl+Print".action.screenshot-screen = []; + "Shift+Print".action.screenshot-window = []; + "Mod+S".action.screenshot = []; + "Mod+Ctrl+S".action.screenshot-screen = []; + "Mod+Shift+S".action.screenshot-window = []; }; }; } diff --git a/modules/desktop/home/niri/style.nix b/modules/desktop/home/niri/style.nix index 2cee326..c4dd1fa 100644 --- a/modules/desktop/home/niri/style.nix +++ b/modules/desktop/home/niri/style.nix @@ -1,7 +1,6 @@ -{ ... }: -{ +{...}: { programs.niri.settings = { - prefer-no-csd = true; + prefer-no-csd = true; cursor = { theme = "phinger-cursors-dark"; @@ -39,42 +38,35 @@ inactive.color = "#3c3836"; gap = 2; width = 5; - corner-radius = 3; + corner-radius= 3; position = "left"; gaps-between-tabs = 0; }; }; - + window-rules = [ - { - matches = [ - { - is-floating = true; - } - ]; - baba-is-float = true; - shadow = { - offset.y = 0; - offset.x = 0; - softness = 40; - color = "#bab9e5af"; - inactive-color = "#fa9d99af"; - enable = true; + { + matches = [{ + is-floating = true; + }]; + baba-is-float = true; + shadow = { + offset.y = 0; + offset.x = 0; + softness = 40; + color = "#bab9e5af"; + inactive-color = "#fa9d99af"; + enable = true; + }; + } + { + geometry-corner-radius = let val = 1.; in { + bottom-left = val; + bottom-right = val; + top-left = val; + top-right = val; }; - } - { - geometry-corner-radius = - let - val = 1.; - in - { - bottom-left = val; - bottom-right = val; - top-left = val; - top-right = val; - }; clip-to-geometry = true; - } - ]; + }]; }; } diff --git a/modules/desktop/home/niri/xwayland-sat.nix b/modules/desktop/home/niri/xwayland-sat.nix index bae4d93..4846b11 100644 --- a/modules/desktop/home/niri/xwayland-sat.nix +++ b/modules/desktop/home/niri/xwayland-sat.nix @@ -1,8 +1,7 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { programs.niri.settings = { spawn-at-startup = [ - { command = [ "${pkgs.xwayland-satellite}/bin/xwayland-satellite" ]; } + {command = ["${pkgs.xwayland-satellite}/bin/xwayland-satellite"];} ]; environment.DISPLAY = ":0"; }; diff --git a/modules/desktop/home/notifications.nix b/modules/desktop/home/notifications.nix index ebbd633..37390e9 100644 --- a/modules/desktop/home/notifications.nix +++ b/modules/desktop/home/notifications.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { home.packages = [ pkgs.libnotify ]; diff --git a/modules/desktop/home/swayidle.nix b/modules/desktop/home/swayidle.nix index 427023e..d4c5b3d 100644 --- a/modules/desktop/home/swayidle.nix +++ b/modules/desktop/home/swayidle.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { # unsure whether i still need swayidle, will keep it in and might remove after further testing services.swayidle = { diff --git a/modules/desktop/home/terminal.nix b/modules/desktop/home/terminal.nix index 725a68e..6b14f2e 100644 --- a/modules/desktop/home/terminal.nix +++ b/modules/desktop/home/terminal.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { programs.kitty = { enable = true; font.size = 12; diff --git a/modules/desktop/locale.nix b/modules/desktop/locale.nix index 10cafb8..9071f8d 100644 --- a/modules/desktop/locale.nix +++ b/modules/desktop/locale.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { time.timeZone = "Europe/Berlin"; i18n.extraLocaleSettings = { LC_ADDRESS = "de_DE.UTF-8"; diff --git a/modules/desktop/printing.nix b/modules/desktop/printing.nix index c44ff0d..3233279 100644 --- a/modules/desktop/printing.nix +++ b/modules/desktop/printing.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { services.printing = { enable = true; drivers = with pkgs; [ diff --git a/modules/desktop/themeing.nix b/modules/desktop/themeing.nix index 837e117..3cc2047 100644 --- a/modules/desktop/themeing.nix +++ b/modules/desktop/themeing.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { stylix = { enable = true; polarity = "dark"; @@ -26,32 +25,30 @@ }; }; }; - home-manager.users.jade = - { pkgs, ... }: - { - stylix.targets = { - firefox = { - profileNames = [ "jade" ]; - }; - helix.enable = false; - btop.enable = false; - nushell.enable = false; - starship.enable = false; - kitty.enable = false; - dunst.enable = false; - wofi.enable = false; + home-manager.users.jade = {pkgs, ...}: { + stylix.targets = { + firefox = { + profileNames = ["jade"]; }; - gtk = { - enable = true; - cursorTheme = { - package = pkgs.phinger-cursors; - name = "phinger-cursors"; - size = 30; - }; - iconTheme = { - package = pkgs.gruvbox-dark-icons-gtk; - name = "gruvbox-dark-icons"; - }; + helix.enable = false; + btop.enable = false; + nushell.enable = false; + starship.enable = false; + kitty.enable = false; + dunst.enable = false; + wofi.enable = false; + }; + gtk = { + enable = true; + cursorTheme = { + package = pkgs.phinger-cursors; + name = "phinger-cursors"; + size = 30; + }; + iconTheme = { + package = pkgs.gruvbox-dark-icons-gtk; + name = "gruvbox-dark-icons"; }; }; + }; } diff --git a/modules/desktop/tlp.nix b/modules/desktop/tlp.nix index 5372b2d..88aa4d7 100644 --- a/modules/desktop/tlp.nix +++ b/modules/desktop/tlp.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { services.tlp = { enable = true; settings = { diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index c08c133..a28d10f 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -3,8 +3,7 @@ lib, pkgs, ... -}: -{ +}: { imports = [ ./spacenav.nix ./wacom.nix diff --git a/modules/hardware/hardware_key.nix b/modules/hardware/hardware_key.nix index 278bf91..1f75106 100644 --- a/modules/hardware/hardware_key.nix +++ b/modules/hardware/hardware_key.nix @@ -3,35 +3,33 @@ config, lib, ... -}: -let +}: let cfg = config.jade.hwKey; in -with lib; -{ - options.jade.hwKey = { - pamAuth.enable = mkEnableOption "Enable PAM authentication with hardware keys"; - }; - config = { - # nitrokey - services.udev.packages = [ pkgs.nitrokey-udev-rules ]; + with lib; { + options.jade.hwKey = { + pamAuth.enable = mkEnableOption "Enable PAM authentication with hardware keys"; + }; + config = { + # nitrokey + services.udev.packages = [pkgs.nitrokey-udev-rules]; - # smartcard daemon - services.pcscd.enable = true; + # smartcard daemon + services.pcscd.enable = true; - # authenticate using hw key - security.pam = { - services.jade.u2fAuth = cfg.pamAuth.enable; - u2f = { - enable = true; - control = "sufficient"; - settings = { - cue = true; - authFile = "/home/jade/.ssh/u2f_keys"; + # authenticate using hw key + security.pam = { + services.jade.u2fAuth = cfg.pamAuth.enable; + u2f = { + enable = true; + control = "sufficient"; + settings = { + cue = true; + authFile = "/home/jade/.ssh/u2f_keys"; + }; }; }; - }; - programs.i3lock.u2fSupport = true; - }; -} + programs.i3lock.u2fSupport = true; + }; + } diff --git a/modules/hardware/spacenav.nix b/modules/hardware/spacenav.nix index 00b4cb8..5d2a12c 100644 --- a/modules/hardware/spacenav.nix +++ b/modules/hardware/spacenav.nix @@ -1,11 +1,10 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { environment.systemPackages = with pkgs; [ spacenavd libspnav ]; systemd.services.spacenavd = { - wantedBy = [ "graphical.target" ]; + wantedBy = ["graphical.target"]; script = "${pkgs.spacenavd}/bin/spacenavd -d"; }; } diff --git a/modules/hardware/wacom.nix b/modules/hardware/wacom.nix index 0234f30..104cc68 100644 --- a/modules/hardware/wacom.nix +++ b/modules/hardware/wacom.nix @@ -1,13 +1,10 @@ -{ ... }: -{ +{...}: { services.xserver.wacom.enable = true; - home-manager.users.jade = - { pkgs, ... }: - { - home.packages = [ - # TODO: figure out if the previous enabled option depends on these anyway - pkgs.libwacom - pkgs.wacomtablet - ]; - }; + home-manager.users.jade = {pkgs, ...}: { + home.packages = [ + # TODO: figure out if the previous enabled option depends on these anyway + pkgs.libwacom + pkgs.wacomtablet + ]; + }; } diff --git a/modules/input/default.nix b/modules/input/default.nix index 12ceb65..62b0ec9 100644 --- a/modules/input/default.nix +++ b/modules/input/default.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { imports = [ ./evremap.nix ]; diff --git a/modules/input/evremap.nix b/modules/input/evremap.nix index 1c37c7e..18d644e 100644 --- a/modules/input/evremap.nix +++ b/modules/input/evremap.nix @@ -3,8 +3,7 @@ config, lib, ... -}: -let +}: let cfg = config.jade.input.remapping; evremap = pkgs.rustPlatform.buildRustPackage { pname = "evremap"; @@ -17,117 +16,91 @@ let }; useFetchCargoVendor = true; cargoHash = "sha256-O1rJ48m8Q7kZABw/UNpmUT7FFBWQedo6CuV+NX9kDt8="; - nativeBuildInputs = [ pkgs.pkg-config ]; - buildInputs = [ pkgs.libevdev ]; + nativeBuildInputs = [pkgs.pkg-config]; + buildInputs = [pkgs.libevdev]; }; - toml = pkgs.formats.toml { }; + toml = pkgs.formats.toml {}; in -with lib; -{ - options.jade.input.remapping = { - enable = mkEnableOption "Enable evremap"; - devices = mkOption { - type = types.attrsOf ( - types.submodule ( - { name, ... }: - { - options = { - device_name = mkOption { - type = types.str; - description = "The device name"; - default = name; - }; - remap = mkOption { - type = types.listOf ( - types.submodule ( - { ... }: - { - options.input = mkOption { type = types.listOf types.str; }; - options.output = mkOption { type = types.listOf types.str; }; - } - ) - ); - default = [ ]; - }; - swapKeys = mkOption { - description = "Lists with two keys to be swapped on the keyboard layout."; - type = types.listOf ( - # verify that each key swapping list contains two elements - types.addCheck (types.listOf types.str) (v: builtins.length v == 2) - ); - default = [ ]; - }; - dual_role = mkOption { - type = types.listOf ( - types.submodule ( - { ... }: - { - options.input = mkOption { type = types.str; }; - options.hold = mkOption { type = types.listOf types.str; }; - options.tap = mkOption { type = types.listOf types.str; }; - } - ) - ); - default = [ ]; - }; + with lib; { + options.jade.input.remapping = { + enable = mkEnableOption "Enable evremap"; + devices = mkOption { + type = types.attrsOf (types.submodule ({name, ...}: { + options = { + device_name = mkOption { + type = types.str; + description = "The device name"; + default = name; }; - } - ) - ); + remap = mkOption { + type = types.listOf (types.submodule ({...}: { + options.input = mkOption {type = types.listOf types.str;}; + options.output = mkOption {type = types.listOf types.str;}; + })); + default = []; + }; + swapKeys = mkOption { + description = "Lists with two keys to be swapped on the keyboard layout."; + type = types.listOf ( + # verify that each key swapping list contains two elements + types.addCheck (types.listOf types.str) (v: builtins.length v == 2) + ); + default = []; + }; + dual_role = mkOption { + type = types.listOf (types.submodule ({...}: { + options.input = mkOption {type = types.str;}; + options.hold = mkOption {type = types.listOf types.str;}; + options.tap = mkOption {type = types.listOf types.str;}; + })); + default = []; + }; + }; + })); + }; }; - }; - config = mkIf cfg.enable ( - with builtins; - let - devs = map ( - { + config = mkIf cfg.enable ( + with builtins; let + devs = map ({ device_name, remap, swapKeys, dual_role, - }: - { + }: { inherit device_name dual_role; # expand swapKeys to normal remaps remap = concatLists [ remap - (lib.lists.flatten ( - map (keys: [ + (lib.lists.flatten (map (keys: [ { - input = [ (head keys) ]; - output = [ (lib.lists.last keys) ]; + input = [(head keys)]; + output = [(lib.lists.last keys)]; } { - input = [ (lib.lists.last keys) ]; - output = [ (head keys) ]; + input = [(lib.lists.last keys)]; + output = [(head keys)]; } - ]) swapKeys - )) + ]) + swapKeys)) ]; - } - ) (attrValues cfg.devices); - in - { - # generate numbered systemd services for each device to be remapped - # https://github.com/wez/evremap/issues/17 - systemd.services = listToAttrs ( - genList (i: { + }) (attrValues cfg.devices); + in { + # generate numbered systemd services for each device to be remapped + # https://github.com/wez/evremap/issues/17 + systemd.services = listToAttrs (genList (i: { name = "evremap${toString i}"; - value = - let - cfgFile = toml.generate "remaps-${toString i}.toml" (elemAt devs i); - in - { - wantedBy = [ "multi-user.target" ]; - serviceConfig.ExecStart = "-${evremap}/bin/evremap remap ${cfgFile}"; - unitConfig = { - Restart = "on-failure"; - }; + value = let + cfgFile = toml.generate "remaps-${toString i}.toml" (elemAt devs i); + in { + wantedBy = ["multi-user.target"]; + serviceConfig.ExecStart = "-${evremap}/bin/evremap remap ${cfgFile}"; + unitConfig = { + Restart = "on-failure"; }; - }) (length devs) - ); - environment.systemPackages = [ evremap ]; - } - ); -} + }; + }) (length devs)); + environment.systemPackages = [evremap]; + } + ); + } diff --git a/modules/media/default.nix b/modules/media/default.nix index 3726cda..a3a8925 100644 --- a/modules/media/default.nix +++ b/modules/media/default.nix @@ -4,22 +4,18 @@ config, lib, ... -}: -let +}: let cfg = config.jade.desktop.media; in -with lib; -{ - imports = [ - ./obs.nix - ./fonts.nix - ]; - options.jade.desktop.media.videoEditing = mkEnableOption "Enable Video editing software"; - config = { - home-manager.users.jade = - { pkgs, ... }: - { - imports = [ ./typst.nix ]; + with lib; { + imports = [ + ./obs.nix + ./fonts.nix + ]; + options.jade.desktop.media.videoEditing = mkEnableOption "Enable Video editing software"; + config = { + home-manager.users.jade = {pkgs, ...}: { + imports = [./typst.nix]; home.packages = with pkgs; [ # creative software basics pastel @@ -38,7 +34,7 @@ with lib; imagemagick ffmpeg_7-full - libreoffice + onlyoffice-bin_latest # viewers pkgs-stable.font-manager @@ -56,5 +52,5 @@ with lib; (mkIf cfg.videoEditing glaxnimate) ]; }; - }; -} + }; + } diff --git a/modules/media/fonts.nix b/modules/media/fonts.nix index 2046198..27a9253 100644 --- a/modules/media/fonts.nix +++ b/modules/media/fonts.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { nixpkgs.config.packageOverrides = pkgs: { google-fonts = pkgs.google-fonts.overrideAttrs (oldAttrs: { src = pkgs.fetchFromGitHub { @@ -35,17 +34,15 @@ fontDir.enable = true; }; - home-manager.users.jade = - { ... }: - { - fonts.fontconfig = { - enable = true; - defaultFonts = { - emoji = [ ]; - monospace = [ ]; - sansSerif = [ "Atkinson Hyperlegible" ]; - serif = [ ]; - }; + home-manager.users.jade = {...}: { + fonts.fontconfig = { + enable = true; + defaultFonts = { + emoji = []; + monospace = []; + sansSerif = ["Atkinson Hyperlegible"]; + serif = []; }; }; + }; } diff --git a/modules/media/obs.nix b/modules/media/obs.nix index e04f440..978a8d3 100644 --- a/modules/media/obs.nix +++ b/modules/media/obs.nix @@ -3,36 +3,34 @@ lib, pkgs, ... -}: -let +}: let cfg = config.jade.desktop.media.obs; in -with lib; -{ - options.jade.desktop.media.obs = mkEnableOption "Enable OBS"; + with lib; { + options.jade.desktop.media.obs = mkEnableOption "Enable OBS"; - config = mkIf cfg { - programs.obs-studio.enableVirtualCamera = true; - # OBS stuffs - environment.systemPackages = [ - (pkgs.wrapOBS { - plugins = with pkgs.obs-studio-plugins; [ - wlrobs - obs-backgroundremoval - obs-pipewire-audio-capture - waveform - obs-3d-effect - ]; - }) - ]; - - boot = { - extraModulePackages = with config.boot.kernelPackages; [ - v4l2loopback + config = mkIf cfg { + programs.obs-studio.enableVirtualCamera = true; + # OBS stuffs + environment.systemPackages = [ + (pkgs.wrapOBS { + plugins = with pkgs.obs-studio-plugins; [ + wlrobs + obs-backgroundremoval + obs-pipewire-audio-capture + waveform + obs-3d-effect + ]; + }) ]; - extraModprobeConfig = '' - options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1 - ''; + + boot = { + extraModulePackages = with config.boot.kernelPackages; [ + v4l2loopback + ]; + extraModprobeConfig = '' + options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1 + ''; + }; }; - }; -} + } diff --git a/modules/media/typst.nix b/modules/media/typst.nix index 59c6638..76c2c24 100644 --- a/modules/media/typst.nix +++ b/modules/media/typst.nix @@ -2,15 +2,14 @@ pkgs, typst-within, ... -}: -let +}: let packages = { typst-configs = pkgs.fetchFromGitea { domain = "forge.katzen.cafe"; owner = "schrottkatze"; repo = "typst-configs"; - rev = "9a5bd5256ace2a56de51b89793f191b4eecce1dc"; # :REV:- rev = "%REV%";-:# - sha256 = "sha256-E+5fJULNxM0XcbimuENqIJC24ZwPRMSHnG97ncBtEGw="; # :SHA:- sha256 = "%SHA%";-:# + rev = "9a5bd5256ace2a56de51b89793f191b4eecce1dc"; #:REV:- rev = "%REV%";-:# + sha256 = "sha256-E+5fJULNxM0XcbimuENqIJC24ZwPRMSHnG97ncBtEGw="; #:SHA:- sha256 = "%SHA%";-:# }; flow = pkgs.fetchFromGitHub { owner = "MultisampledNight"; @@ -20,8 +19,7 @@ let }; }; mkTypstPath = name: ".local/share/typst/packages/local/${name}/0.1.0"; -in -{ +in { home.file = { typst-configs = { target = mkTypstPath "typst-configs"; diff --git a/modules/net/default.nix b/modules/net/default.nix index df22509..fba3d47 100644 --- a/modules/net/default.nix +++ b/modules/net/default.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { imports = [ ./firewall.nix ./hosts.nix @@ -11,13 +10,11 @@ systemd.services."NetworkManager-wait-online".enable = false; services.mullvad-vpn.enable = true; - home-manager.users.jade = - { pkgs, ... }: - { - home.packages = with pkgs; [ - networkmanagerapplet - mullvad-vpn - macchanger - ]; - }; + home-manager.users.jade = {pkgs, ...}: { + home.packages = with pkgs; [ + networkmanagerapplet + mullvad-vpn + macchanger + ]; + }; } diff --git a/modules/net/dispatchers/default.nix b/modules/net/dispatchers/default.nix index 73270a7..656d9cd 100644 --- a/modules/net/dispatchers/default.nix +++ b/modules/net/dispatchers/default.nix @@ -1,13 +1,10 @@ -{ pkgs, ... }: -let - addNuShebang = - path: +{pkgs, ...}: let + addNuShebang = path: builtins.concatStringsSep "\n\n" [ "#!${pkgs.nushell}/bin/nu" (builtins.readFile path) ]; -in -{ +in { networking.networkmanager.dispatcherScripts = [ { type = "basic"; @@ -15,15 +12,16 @@ in } ]; - environment.etc = - with builtins; - (listToAttrs ( + environment.etc = with builtins; ( + listToAttrs ( map (v: { name = "networkhooks/${v}"; value = { text = addNuShebang ./hooks/${v}; mode = "0755"; }; - }) (attrNames (readDir ./hooks)) - )); + }) + (attrNames (readDir ./hooks)) + ) + ); } diff --git a/modules/net/eduroam.nix b/modules/net/eduroam.nix index f6e9835..d6bc3db 100644 --- a/modules/net/eduroam.nix +++ b/modules/net/eduroam.nix @@ -1,19 +1,13 @@ # Thanks @ kloenk (@kloenk@catcatnya.com) for making this for me at MRMCD 2024 :33 -{ pkgs-stable, ... }: -let +{pkgs-stable, ...}: let caDir = "/var/lib/easyroam"; uuid = "821ad781-76a3-447f-a2e8-c7f18a1df3bc"; -in -{ +in { systemd.services.easyroam = { - requires = [ "NetworkManager.service" ]; - after = [ "NetworkManager.service" ]; - requiredBy = [ "network-online.target" ]; - path = with pkgs-stable; [ - networkmanager - openssl - gnused - ]; + requires = ["NetworkManager.service"]; + after = ["NetworkManager.service"]; + requiredBy = ["network-online.target"]; + path = with pkgs-stable; [networkmanager openssl gnused]; script = '' set -x openssl pkcs12 -password pass: -in ${caDir}/my_easyroam_cert.p12 -legacy -nokeys | openssl x509 > ${caDir}/easyroam_client_cert.pem @@ -50,7 +44,7 @@ in addr-gen-mode = "default"; method = "auto"; }; - proxy = { }; + proxy = {}; wifi = { mode = "infrastructure"; ssid = "eduroam"; diff --git a/modules/net/firewall.nix b/modules/net/firewall.nix index 48be5be..e10dec0 100644 --- a/modules/net/firewall.nix +++ b/modules/net/firewall.nix @@ -3,8 +3,7 @@ lib, pkgs, ... -}: -{ +}: { config = { networking = { firewall = { diff --git a/modules/net/hosts.nix b/modules/net/hosts.nix index 3a21884..1bfb877 100644 --- a/modules/net/hosts.nix +++ b/modules/net/hosts.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { networking.hosts = { "127.0.0.1" = [ "www.tiktok.com" diff --git a/modules/nix.nix b/modules/nix.nix index 4878fa6..42160d2 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -2,8 +2,7 @@ rs-programs, niri, ... -}: -{ +}: { nix = { extraOptions = '' experimental-features = nix-command flakes @@ -25,9 +24,6 @@ "nodejs-16.20.0" ]; }; - overlays = [ - rs-programs - niri.overlays.niri - ]; + overlays = [rs-programs niri.overlays.niri]; }; } diff --git a/modules/shell/btop.nix b/modules/shell/btop.nix index ee5df43..4e5f97d 100644 --- a/modules/shell/btop.nix +++ b/modules/shell/btop.nix @@ -1,14 +1,11 @@ -{ ... }: -{ - home-manager.users.jade = - { pkgs, ... }: - { - programs.btop = { - enable = true; - settings = { - color_theme = "gruvbox_dark"; - vim_keys = true; - }; +{...}: { + home-manager.users.jade = {pkgs, ...}: { + programs.btop = { + enable = true; + settings = { + color_theme = "gruvbox_dark"; + vim_keys = true; }; }; + }; } diff --git a/modules/shell/default.nix b/modules/shell/default.nix index 49f20b4..180d1ab 100644 --- a/modules/shell/default.nix +++ b/modules/shell/default.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { imports = [ ./helix.nix ./nu.nix @@ -12,12 +11,10 @@ ]; programs.mosh.enable = true; programs.bat.enable = true; - home-manager.users.jade = - { ... }: - { - programs.carapace.enable = true; - programs.direnv.enable = true; - }; + home-manager.users.jade = {...}: { + programs.carapace.enable = true; + programs.direnv.enable = true; + }; users.defaultUserShell = pkgs.nushell; } diff --git a/modules/shell/git.nix b/modules/shell/git.nix index 2732633..f597c76 100644 --- a/modules/shell/git.nix +++ b/modules/shell/git.nix @@ -3,57 +3,54 @@ lib, pkgs, ... -}: -{ - home-manager.users.jade = - { - pkgs, - config, - ... - }: - { - programs.git = { - enable = true; - userName = "Schrottkatze"; - userEmail = "git@schrottkatze.de"; - aliases = { - a = "add"; - c = "commit"; - ca = "commit --all"; - p = "push"; - pl = "pull"; - s = "status"; - }; - signing = { - format = "ssh"; - key = "${pkgs.writeText "blue_nk3.pub" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILg7hhAKxIAbokHHcIj9HBgbkgoKGCG2R+gx7HZKL+iz cardno:000F_93C6A612"}"; - signByDefault = true; - }; +}: { + home-manager.users.jade = { + pkgs, + config, + ... + }: { + programs.git = { + enable = true; + userName = "Schrottkatze"; + userEmail = "git@schrottkatze.de"; + aliases = { + a = "add"; + c = "commit"; + ca = "commit --all"; + p = "push"; + pl = "pull"; + s = "status"; }; - programs.jujutsu = { - enable = true; - settings = { - user = { - name = config.programs.git.userName; - email = config.programs.git.userEmail; - }; - }; - }; - programs.gitui = { - enable = true; - keyConfig = '' - ( - move_left: Some(( code: Char('h'), modifiers: "")), - move_right: Some(( code: Char('l'), modifiers: "")), - move_up: Some(( code: Char('k'), modifiers: "")), - move_down: Some(( code: Char('j'), modifiers: "")), - - stash_open: Some(( code: Char('l'), modifiers: "")), - open_help: Some(( code: F(1), modifiers: "")), - - status_reset_item: Some(( code: Char('U'), modifiers: "SHIFT")), - ) - ''; + signing = { + format = "ssh"; + key = "${pkgs.writeText "blue_nk3.pub" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILg7hhAKxIAbokHHcIj9HBgbkgoKGCG2R+gx7HZKL+iz cardno:000F_93C6A612"}"; + signByDefault = true; }; }; + programs.jujutsu = { + enable = true; + settings = { + user = { + name = config.programs.git.userName; + email = config.programs.git.userEmail; + }; + }; + }; + programs.gitui = { + enable = true; + keyConfig = '' + ( + move_left: Some(( code: Char('h'), modifiers: "")), + move_right: Some(( code: Char('l'), modifiers: "")), + move_up: Some(( code: Char('k'), modifiers: "")), + move_down: Some(( code: Char('j'), modifiers: "")), + + stash_open: Some(( code: Char('l'), modifiers: "")), + open_help: Some(( code: F(1), modifiers: "")), + + status_reset_item: Some(( code: Char('U'), modifiers: "SHIFT")), + ) + ''; + }; + }; } diff --git a/modules/shell/helix.nix b/modules/shell/helix.nix index dc04045..adfda34 100644 --- a/modules/shell/helix.nix +++ b/modules/shell/helix.nix @@ -1,225 +1,213 @@ -{ config, ... }: -{ - home-manager.users.jade = - { - pkgs, - pkgs-stable, - ... - }: - { - home = { - sessionVariables.EDITOR = "hx"; - packages = [ - pkgs.wl-clipboard-rs - pkgs.nil - pkgs.vscode-langservers-extracted - pkgs.nodePackages.typescript-language-server - pkgs.emmet-language-server - pkgs.jdt-language-server - pkgs.tinymist - pkgs.typstyle - ]; +{config, ...}: { + home-manager.users.jade = { + pkgs, + pkgs-stable, + ... + }: { + home = { + sessionVariables.EDITOR = "hx"; + packages = [ + pkgs.wl-clipboard-rs + pkgs.nil + pkgs.vscode-langservers-extracted + pkgs.nodePackages.typescript-language-server + pkgs.emmet-language-server + pkgs.jdt-language-server + pkgs.tinymist + pkgs.typstyle + ]; + }; + programs.helix = { + enable = true; + defaultEditor = true; + settings = { + theme = "gruvbox_dark_hard"; + editor = { + line-number = "relative"; + bufferline = "multiple"; + color-modes = true; + cursorline = true; + auto-save = { + after-delay.enable = true; + after-delay.timeout = 10000; + }; + auto-format = true; + end-of-line-diagnostics = "hint"; + # slightly optimized based on my layout + jump-label-alphabet = "jfkdhaslgwenuiopbcmyzqrtvx"; + clipboard-provider = "wayland"; + inline-diagnostics = { + cursor-line = "hint"; + }; + lsp = { + display-messages = true; + display-inlay-hints = true; + }; + popup-border = "popup"; + shell = ["nu" "-c"]; + statusline.left = [ + "mode" + "spinner" + "spacer" + "version-control" + "file-name" + "diagnostics" + "read-only-indicator" + "file-modification-indicator" + "spacer" + ]; + + statusline.right = [ + "workspace-diagnostics" + "register" + "position" + "selections" + "file-encoding" + "file-type" + ]; + idle-timeout = 50; + completion-timeout = 100; + indent-guides = { + render = true; + character = "│"; + skip-levels = 3; + }; + soft-wrap = { + enable = true; + }; + whitespace = { + render = { + space = "none"; + tab = "all"; + newline = "none"; + }; + characters = { + nbsp = "·"; + tab = "→"; + }; + }; + }; + keys = { + normal = { + space."=" = ":fmt"; + space.space = "@[]"; + + # smart tab++ + tab = "move_parent_node_end"; + S-tab = "move_parent_node_start"; + A-S = "@S[\\s]+"; + "'" = { + D = "@sgd"; + F = "@sgy"; + d = "@vgd"; + f = "@vgy"; + h = ":toggle-option lsp.display-inlay-hints"; + t = ":pipe flip-bool"; + }; + }; + insert = { + up = "no_op"; + down = "no_op"; + left = "no_op"; + right = "no_op"; + pageup = "no_op"; + pagedown = "no_op"; + home = "no_op"; + end = "no_op"; + + # smart tab ++ + S-tab = "move_parent_node_start"; + }; + select = { + # smart tab++ + tab = "extend_parent_node_end"; + S-tab = "extend_parent_node_start"; + }; + }; }; - programs.helix = { - enable = true; - defaultEditor = true; - settings = { - theme = "gruvbox_dark_hard"; - editor = { - line-number = "relative"; - bufferline = "multiple"; - color-modes = true; - cursorline = true; - auto-save = { - after-delay.enable = true; - after-delay.timeout = 10000; + languages = { + language-server = { + "nu-builtin-lsp" = { + command = "${config.users.defaultUserShell}/bin/nu"; + args = ["--lsp"]; + }; + "rust-analyzer" = { + config = { + check.command = "check"; + completion.snippets.custom = { + "pub fn" = { + prefix = ["pfn" "pubfn"]; + postfix = ["pfn"]; + body = [ + "pub fn $\{receiver\}() {" + "\\t$1" + "}" + ]; + scope = "type"; + }; + }; + completion.termSearch.enable = true; + diagnostics.enable = true; + inlayHints = { + bindingModeHints.enable = true; + closureCaptureHints.enable = true; + closureReturnTypeHints.enable = true; + discriminantHints.enable = true; + expressionAdjustmentHints = { + hideOutsideUnsafe = true; + }; + lifetimeElisionHints.enable = "skip_trivial"; + }; + interpret.tests = true; + lens = { + references = { + adt.enable = true; + trait.enable = true; + }; + }; + typing.autoClosingAngleBrackets.enable = true; + }; + }; + "emmet-language-server" = { + command = "emmet-language-server"; + args = ["--stdio"]; + }; + "psalm" = { + command = "psalm"; + args = ["--language-server"]; + }; + "tinymist" = { + config = { + exportPdf = "onType"; + formatterMode = "typstyle"; + }; + }; + }; + language = [ + { + name = "nu"; + language-servers = ["nu-builtin-lsp"]; + } + { + name = "php"; + language-servers = ["psalm"]; + } + { + name = "nix"; + formatter = { + command = "${pkgs.alejandra}/bin/alejandra"; + args = ["--quiet"]; }; auto-format = true; - end-of-line-diagnostics = "hint"; - # slightly optimized based on my layout - jump-label-alphabet = "jfkdhaslgwenuiopbcmyzqrtvx"; - clipboard-provider = "wayland"; - inline-diagnostics = { - cursor-line = "hint"; - }; - lsp = { - display-messages = true; - display-inlay-hints = true; - }; - popup-border = "popup"; - shell = [ - "nu" - "-c" - ]; - statusline.left = [ - "mode" - "spinner" - "spacer" - "version-control" - "file-name" - "diagnostics" - "read-only-indicator" - "file-modification-indicator" - "spacer" - ]; - - statusline.right = [ - "workspace-diagnostics" - "register" - "position" - "selections" - "file-encoding" - "file-type" - ]; - idle-timeout = 50; - completion-timeout = 100; - indent-guides = { - render = true; - character = "│"; - skip-levels = 3; - }; - soft-wrap = { - enable = true; - }; - whitespace = { - render = { - space = "none"; - tab = "all"; - newline = "none"; - }; - characters = { - nbsp = "·"; - tab = "→"; - }; - }; - }; - keys = { - normal = { - space."=" = ":fmt"; - space.space = "@[]"; - - # smart tab++ - tab = "move_parent_node_end"; - S-tab = "move_parent_node_start"; - A-S = "@S[\\s]+"; - "'" = { - D = "@sgd"; - F = "@sgy"; - d = "@vgd"; - f = "@vgy"; - h = ":toggle-option lsp.display-inlay-hints"; - t = ":pipe flip-bool"; - }; - }; - insert = { - up = "no_op"; - down = "no_op"; - left = "no_op"; - right = "no_op"; - pageup = "no_op"; - pagedown = "no_op"; - home = "no_op"; - end = "no_op"; - - # smart tab ++ - S-tab = "move_parent_node_start"; - }; - select = { - # smart tab++ - tab = "extend_parent_node_end"; - S-tab = "extend_parent_node_start"; - }; - }; - }; - languages = { - language-server = { - "nu-builtin-lsp" = { - command = "${config.users.defaultUserShell}/bin/nu"; - args = [ "--lsp" ]; - }; - "rust-analyzer" = { - config = { - check.command = "check"; - completion.snippets.custom = { - "pub fn" = { - prefix = [ - "pfn" - "pubfn" - ]; - postfix = [ "pfn" ]; - body = [ - "pub fn $\{receiver\}() {" - "\\t$1" - "}" - ]; - scope = "type"; - }; - }; - completion.termSearch.enable = true; - diagnostics.enable = true; - inlayHints = { - bindingModeHints.enable = true; - closureCaptureHints.enable = true; - closureReturnTypeHints.enable = true; - discriminantHints.enable = true; - expressionAdjustmentHints = { - hideOutsideUnsafe = true; - }; - lifetimeElisionHints.enable = "skip_trivial"; - }; - interpret.tests = true; - lens = { - references = { - adt.enable = true; - trait.enable = true; - }; - }; - typing.autoClosingAngleBrackets.enable = true; - }; - }; - "emmet-language-server" = { - command = "emmet-language-server"; - args = [ "--stdio" ]; - }; - "psalm" = { - command = "psalm"; - args = [ "--language-server" ]; - }; - "tinymist" = { - config = { - exportPdf = "onType"; - formatterMode = "typstyle"; - }; - }; - }; - language = [ - { - name = "nu"; - language-servers = [ "nu-builtin-lsp" ]; - } - { - name = "php"; - language-servers = [ "psalm" ]; - } - { - name = "nix"; - formatter = { - command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt"; - args = [ "--quiet" ]; - }; - auto-format = true; - } - { - name = "html"; - roots = [ ".git" ]; - language-servers = [ - "vscode-html-language-server" - "emmet-language-server" - ]; - auto-format = false; - } - ]; - }; + } + { + name = "html"; + roots = [".git"]; + language-servers = ["vscode-html-language-server" "emmet-language-server"]; + auto-format = false; + } + ]; }; }; + }; } diff --git a/modules/shell/mprocs.nix b/modules/shell/mprocs.nix index 1a7a401..7d6b96b 100644 --- a/modules/shell/mprocs.nix +++ b/modules/shell/mprocs.nix @@ -1,31 +1,24 @@ -{ ... }: -{ - home-manager.users.jade = - { - pkgs, - lib, - ... - }: - { - home = { - packages = [ pkgs.mprocs ]; - }; - xdg.configFile."mprocs/mprocs.yaml" = { - text = builtins.toJSON { - proc_list_width = 15; - keymap_procs = { - "" = { - c = "toggle-focus"; - }; - }; - keymap_term = { - "" = null; - # Ctrl-m so it doesnt overlap with zellij or helix - "" = { - c = "toggle-focus"; - }; - }; +{...}: { + home-manager.users.jade = { + pkgs, + lib, + ... + }: { + home = { + packages = [pkgs.mprocs]; + }; + xdg.configFile."mprocs/mprocs.yaml" = { + text = builtins.toJSON { + proc_list_width = 15; + keymap_procs = { + "" = {c = "toggle-focus";}; + }; + keymap_term = { + "" = null; + # Ctrl-m so it doesnt overlap with zellij or helix + "" = {c = "toggle-focus";}; }; }; }; + }; } diff --git a/modules/shell/nu.nix b/modules/shell/nu.nix index 521a300..54ec9a8 100644 --- a/modules/shell/nu.nix +++ b/modules/shell/nu.nix @@ -1,46 +1,44 @@ -{ config, ... }: -{ - home-manager.users.jade = - { pkgs, ... }: - { - # Needed for nu_scripts background_task - services.pueue = { - enable = true; - settings = { - shared = { - use_unix_socket = true; - }; +{config, ...}: { + home-manager.users.jade = {pkgs, ...}: { + # Needed for nu_scripts background_task + services.pueue = { + enable = true; + settings = { + shared = { + use_unix_socket = true; }; }; - home.packages = [ - pkgs.pueue - ]; - home.file."shell-startup" = { - source = ./nu/shell-startup.nu; - target = ".config/nushell/shell-startup.nu"; - }; - programs.nushell = { - enable = true; - package = config.users.defaultUserShell; - configFile.source = ./nu/config.nu; - envFile.source = ./nu/env.nu; - extraConfig = '' - plugin add ${pkgs.nushellPlugins.query}/bin/nu_plugin_query; - plugin add ${pkgs.nushellPlugins.polars}/bin/nu_plugin_polars; - plugin add ${pkgs.nushellPlugins.formats}/bin/nu_plugin_formats; - - plugin use query; - plugin use polars; - plugin use formats; - - source ${./nu/custom_commands.nu}; - source ${./nu/aliases.nu}; - nu ${./nu/shell-startup.nu}; - ''; - extraEnv = ''''; - }; - # programs.starship.enableNushellIntegration = true; - programs.carapace.enableNushellIntegration = true; - programs.direnv.enableNushellIntegration = true; }; + home.packages = [ + pkgs.pueue + ]; + home.file."shell-startup" = { + source = ./nu/shell-startup.nu; + target = ".config/nushell/shell-startup.nu"; + }; + programs.nushell = { + enable = true; + package = config.users.defaultUserShell; + configFile.source = ./nu/config.nu; + envFile.source = ./nu/env.nu; + extraConfig = '' + plugin add ${pkgs.nushellPlugins.query}/bin/nu_plugin_query; + plugin add ${pkgs.nushellPlugins.polars}/bin/nu_plugin_polars; + plugin add ${pkgs.nushellPlugins.formats}/bin/nu_plugin_formats; + + plugin use query; + plugin use polars; + plugin use formats; + + source ${./nu/custom_commands.nu}; + source ${./nu/aliases.nu}; + nu ${./nu/shell-startup.nu}; + ''; + extraEnv = '' + ''; + }; + # programs.starship.enableNushellIntegration = true; + programs.carapace.enableNushellIntegration = true; + programs.direnv.enableNushellIntegration = true; + }; } diff --git a/modules/shell/starship.nix b/modules/shell/starship.nix index 8cf92c5..eea943f 100644 --- a/modules/shell/starship.nix +++ b/modules/shell/starship.nix @@ -1,44 +1,41 @@ -{ ... }: -{ - home-manager.users.jade = - { pkgs, ... }: - { - programs.starship = { - enable = true; - enableNushellIntegration = false; - settings = { - format = "$all$directory$character"; - character = { - success_symbol = "[\\$](green)"; - error_symbol = "[X](red)"; - }; - git_branch = { - format = "\\[[$symbol$branch]($style)\\]"; - symbol = " "; - }; - git_status = { - format = "([\\[$all_status$ahead_behind\\]]($style))"; - }; - haskell = { - format = "\\[[$symbol($version)]($style)\\]"; - symbol = " "; - }; - cmd_duration = { - format = "\\[[⏱ $duration]($style)\\]"; - }; - nix_shell = { - format = "\\[[$symbol$state( \\($name\\))]($style)\\]"; - symbol = " "; - }; - rust = { - format = "\\[[$symbol($version)]($style)\\]"; - symbol = " "; - }; - package = { - format = "\\[[$symbol$version]($style)\\]"; - symbol = " "; - }; +{...}: { + home-manager.users.jade = {pkgs, ...}: { + programs.starship = { + enable = true; + enableNushellIntegration = false; + settings = { + format = "$all$directory$character"; + character = { + success_symbol = "[\\$](green)"; + error_symbol = "[X](red)"; + }; + git_branch = { + format = "\\[[$symbol$branch]($style)\\]"; + symbol = " "; + }; + git_status = { + format = "([\\[$all_status$ahead_behind\\]]($style))"; + }; + haskell = { + format = "\\[[$symbol($version)]($style)\\]"; + symbol = " "; + }; + cmd_duration = { + format = "\\[[⏱ $duration]($style)\\]"; + }; + nix_shell = { + format = "\\[[$symbol$state( \\($name\\))]($style)\\]"; + symbol = " "; + }; + rust = { + format = "\\[[$symbol($version)]($style)\\]"; + symbol = " "; + }; + package = { + format = "\\[[$symbol$version]($style)\\]"; + symbol = " "; }; }; }; + }; } diff --git a/modules/shell/sudo.nix b/modules/shell/sudo.nix index 5e45338..bcc38cd 100644 --- a/modules/shell/sudo.nix +++ b/modules/shell/sudo.nix @@ -1,7 +1,6 @@ -{ ... }: -{ +{...}: { nixpkgs.config.packageOverrides = pkgs: { - sudo = pkgs.sudo.override { withInsults = true; }; + sudo = pkgs.sudo.override {withInsults = true;}; }; security.sudo.extraConfig = "Defaults insults"; } diff --git a/modules/shell/tty.nix b/modules/shell/tty.nix index 3384e63..becd7b0 100644 --- a/modules/shell/tty.nix +++ b/modules/shell/tty.nix @@ -1,10 +1,13 @@ -{ config, ... }: -let - generateOptions = - with builtins; - (opts: toString (attrValues (mapAttrs (name: value: "--${name} ${toString value}") opts))); -in -{ +{config, ...}: let + generateOptions = with builtins; ( + opts: + toString ( + attrValues ( + mapAttrs (name: value: "--${name} ${toString value}") opts + ) + ) + ); +in { # TODO: global colorscheme vars for everything console.colors = [ "282828"