diff --git a/common.nix b/common.nix index 9b9cb3b..4c6e6f7 100644 --- a/common.nix +++ b/common.nix @@ -10,11 +10,13 @@ ... }: 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 @@ -105,7 +107,16 @@ 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 1b05de3..1dd871f 100644 --- a/flake.nix +++ b/flake.nix @@ -24,107 +24,129 @@ }; }; - 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; + 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 ./.); }; - 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}"; - }; - } + }; + 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 ]; }; - denkbrett = nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs pkgs-unstable-small pkgs-stable rs-programs lix-module niri; + 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"; + }; + } + ]; }; - 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 6ecfb45..a7558b7 100644 --- a/hosts/denkbrett/configuration.nix +++ b/hosts/denkbrett/configuration.nix @@ -1,7 +1,8 @@ # 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" @@ -27,19 +28,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 6430beb..9528956 100644 --- a/hosts/denkbrett/hardware-configuration.nix +++ b/hosts/denkbrett/hardware-configuration.nix @@ -7,35 +7,53 @@ 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 ffe8790..b278c2b 100644 --- a/hosts/denkbrett/modules/default.nix +++ b/hosts/denkbrett/modules/default.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ imports = [ ./input.nix ./graphics.nix diff --git a/hosts/denkbrett/modules/graphics.nix b/hosts/denkbrett/modules/graphics.nix index dae70fb..3666bc9 100644 --- a/hosts/denkbrett/modules/graphics.nix +++ b/hosts/denkbrett/modules/graphics.nix @@ -3,7 +3,8 @@ 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 db9b4db..f4c9c0b 100644 --- a/hosts/denkbrett/modules/input.nix +++ b/hosts/denkbrett/modules/input.nix @@ -1,25 +1,34 @@ -{...}: { +{ ... }: +{ # 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"]; - } - ]; + 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; }; - 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 de708f8..9b27e5c 100644 --- a/hosts/monosodium-glutamate-g/configuration.nix +++ b/hosts/monosodium-glutamate-g/configuration.nix @@ -5,7 +5,8 @@ pkgs, pkgs-stable, ... -}: { +}: +{ imports = [ ./hardware-configuration.nix ../../common.nix @@ -35,7 +36,7 @@ kernelPackages = pkgs.linuxPackages_zen; - binfmt.emulatedSystems = ["aarch64-linux"]; + binfmt.emulatedSystems = [ "aarch64-linux" ]; }; networking.hostName = "monosodium-glutamate-g"; @@ -79,7 +80,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 c414f70..c328c42 100644 --- a/hosts/monosodium-glutamate-g/hardware-configuration.nix +++ b/hosts/monosodium-glutamate-g/hardware-configuration.nix @@ -7,37 +7,49 @@ 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 fb1c643..34ffd52 100644 --- a/hosts/monosodium-glutamate-g/modules/default.nix +++ b/hosts/monosodium-glutamate-g/modules/default.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ imports = [ ./graphics.nix ]; diff --git a/hosts/monosodium-glutamate-g/modules/graphics.nix b/hosts/monosodium-glutamate-g/modules/graphics.nix index baa608b..f4b1efa 100644 --- a/hosts/monosodium-glutamate-g/modules/graphics.nix +++ b/hosts/monosodium-glutamate-g/modules/graphics.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ environment.systemPackages = [ pkgs.nvtopPackages.amd pkgs.radeontop diff --git a/modules/default.nix b/modules/default.nix index cd4c0e8..1bf5670 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ imports = [ ./shell ./desktop diff --git a/modules/desktop-legacy/default.nix b/modules/desktop-legacy/default.nix index 7a2f692..7ddb6ef 100644 --- a/modules/desktop-legacy/default.nix +++ b/modules/desktop-legacy/default.nix @@ -4,7 +4,8 @@ pkgs, ... }: -with lib; { +with lib; +{ imports = [ ./gaming.nix ./syncthing.nix @@ -28,25 +29,27 @@ with lib; { notifications.test = true; }; - home-manager.users.jade = {pkgs, ...}: { - programs.ssh = { - controlMaster = "yes"; + 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.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 8e6b7bc..e8b0df4 100644 --- a/modules/desktop-legacy/gaming.nix +++ b/modules/desktop-legacy/gaming.nix @@ -2,16 +2,20 @@ 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 @@ -20,5 +24,5 @@ in vkd3d-proton ]; }; - }; - } + }; +} diff --git a/modules/desktop-legacy/kdeconnect.nix b/modules/desktop-legacy/kdeconnect.nix index 5133f5c..cd73159 100644 --- a/modules/desktop-legacy/kdeconnect.nix +++ b/modules/desktop-legacy/kdeconnect.nix @@ -3,20 +3,24 @@ 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 dca396b..bd86033 100644 --- a/modules/desktop-legacy/social.nix +++ b/modules/desktop-legacy/social.nix @@ -3,19 +3,23 @@ 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 = { @@ -35,11 +39,11 @@ in iamb ]; }; - programs.evolution = { - enable = true; - plugins = [pkgs.evolution-ews]; - }; - services.gnome.evolution-data-server.enable = true; - services.gnome.evolution-data-server.plugins = []; + programs.evolution = { + enable = true; + plugins = [ pkgs.evolution-ews ]; }; - } + 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 f44e40c..d114ce4 100644 --- a/modules/desktop-legacy/syncthing.nix +++ b/modules/desktop-legacy/syncthing.nix @@ -3,19 +3,21 @@ lib, pkgs, ... -}: let +}: +let cfg = config.jade.desktop.syncthing; in - with lib; { - options.jade.desktop.syncthing = { - enable = mkEnableOption "Enable syncing via 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"; }; - 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 c38403d..fdfb747 100644 --- a/modules/desktop/audio.nix +++ b/modules/desktop/audio.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ programs = { noisetorch.enable = true; }; diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index ba82753..a5d5279 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ imports = [ ./audio.nix ./home diff --git a/modules/desktop/dm.nix b/modules/desktop/dm.nix index e37fc8e..f4f3470 100644 --- a/modules/desktop/dm.nix +++ b/modules/desktop/dm.nix @@ -3,31 +3,33 @@ 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; +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; }; }; - 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 afc8090..0e6934e 100644 --- a/modules/desktop/home/browser.nix +++ b/modules/desktop/home/browser.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ home.file = { ".tridactylrc" = { text = '' @@ -16,23 +17,25 @@ }; 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" @@ -63,7 +66,7 @@ } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = ["pkgs"]; + definedAliases = [ "pkgs" ]; }; "Nix Options" = { urls = [ @@ -78,7 +81,7 @@ } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = ["opts"]; + definedAliases = [ "opts" ]; }; "Home manager Options" = { urls = [ @@ -97,7 +100,7 @@ } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = ["hm"]; + definedAliases = [ "hm" ]; }; "NixOS Wiki" = { urls = [ @@ -112,7 +115,7 @@ } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = ["nxwk"]; + definedAliases = [ "nxwk" ]; }; "Noogle" = { urls = [ @@ -126,7 +129,7 @@ ]; } ]; - definedAliases = ["ngl"]; + definedAliases = [ "ngl" ]; }; "lib.rs" = { urls = [ @@ -141,7 +144,7 @@ } ]; icon = "https://lib.rs/favicon.png"; - definedAliases = ["libs"]; + definedAliases = [ "libs" ]; }; "rust docs" = { urls = [ @@ -156,7 +159,7 @@ } ]; icon = "https://docs.rs/-/static/favicon.ico"; - definedAliases = ["docs"]; + definedAliases = [ "docs" ]; }; "rust docs direct open" = { urls = [ @@ -164,7 +167,10 @@ template = "https://docs.rs/{searchTerms}"; } ]; - definedAliases = ["doc" "docd"]; + definedAliases = [ + "doc" + "docd" + ]; }; "rust std docs" = { urls = [ @@ -179,7 +185,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 690a915..92880a2 100644 --- a/modules/desktop/home/default.nix +++ b/modules/desktop/home/default.nix @@ -1,30 +1,33 @@ -{...}: { +{ ... }: +{ 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 377c1f4..f7ce3c1 100644 --- a/modules/desktop/home/eww/default.nix +++ b/modules/desktop/home/eww/default.nix @@ -1,6 +1,7 @@ -{ ... }: { - 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 ba0354f..7687d3b 100644 --- a/modules/desktop/home/layaway.nix +++ b/modules/desktop/home/layaway.nix @@ -2,7 +2,8 @@ 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"; @@ -21,9 +22,10 @@ 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 df6fbc2..2bb27a5 100644 --- a/modules/desktop/home/niri/binds.nix +++ b/modules/desktop/home/niri/binds.nix @@ -1,50 +1,91 @@ -{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; @@ -65,26 +106,46 @@ "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 66736d0..779106f 100644 --- a/modules/desktop/home/niri/default.nix +++ b/modules/desktop/home/niri/default.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ imports = [ ./xwayland-sat.nix ./screenshot.nix @@ -14,7 +15,14 @@ }; 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 25760b3..22a9eb2 100644 --- a/modules/desktop/home/niri/input.nix +++ b/modules/desktop/home/niri/input.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ programs.niri.settings.input = { keyboard = { xkb = { diff --git a/modules/desktop/home/niri/privacy.nix b/modules/desktop/home/niri/privacy.nix index b847972..6cd2016 100644 --- a/modules/desktop/home/niri/privacy.nix +++ b/modules/desktop/home/niri/privacy.nix @@ -1,9 +1,10 @@ -{...}: { +{ ... }: +{ programs.niri.settings = { layer-rules = [ { matches = [ - {namespace = "notifications";} + { namespace = "notifications"; } ]; block-out-from = "screen-capture"; } @@ -11,12 +12,14 @@ 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 37e6e8f..e43637f 100644 --- a/modules/desktop/home/niri/quirks.nix +++ b/modules/desktop/home/niri/quirks.nix @@ -1,5 +1,6 @@ -{pkgs, ...}: { - home.packages = [pkgs.gamescope]; +{ pkgs, ... }: +{ + home.packages = [ pkgs.gamescope ]; programs.niri.settings = { window-rules = [ { @@ -48,12 +49,16 @@ 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 bba65b2..9719fcb 100644 --- a/modules/desktop/home/niri/screenshot.nix +++ b/modules/desktop/home/niri/screenshot.nix @@ -1,13 +1,14 @@ -{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 c4dd1fa..2cee326 100644 --- a/modules/desktop/home/niri/style.nix +++ b/modules/desktop/home/niri/style.nix @@ -1,6 +1,7 @@ -{...}: { +{ ... }: +{ programs.niri.settings = { - prefer-no-csd = true; + prefer-no-csd = true; cursor = { theme = "phinger-cursors-dark"; @@ -38,35 +39,42 @@ 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; - }; - } - { - geometry-corner-radius = let val = 1.; in { - bottom-left = val; - bottom-right = val; - top-left = val; - top-right = val; + { + 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; + }; clip-to-geometry = true; - }]; + } + ]; }; } diff --git a/modules/desktop/home/niri/xwayland-sat.nix b/modules/desktop/home/niri/xwayland-sat.nix index 4846b11..bae4d93 100644 --- a/modules/desktop/home/niri/xwayland-sat.nix +++ b/modules/desktop/home/niri/xwayland-sat.nix @@ -1,7 +1,8 @@ -{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 37390e9..ebbd633 100644 --- a/modules/desktop/home/notifications.nix +++ b/modules/desktop/home/notifications.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ home.packages = [ pkgs.libnotify ]; diff --git a/modules/desktop/home/swayidle.nix b/modules/desktop/home/swayidle.nix index d4c5b3d..427023e 100644 --- a/modules/desktop/home/swayidle.nix +++ b/modules/desktop/home/swayidle.nix @@ -1,4 +1,5 @@ -{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 6b14f2e..725a68e 100644 --- a/modules/desktop/home/terminal.nix +++ b/modules/desktop/home/terminal.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ programs.kitty = { enable = true; font.size = 12; diff --git a/modules/desktop/locale.nix b/modules/desktop/locale.nix index 9071f8d..10cafb8 100644 --- a/modules/desktop/locale.nix +++ b/modules/desktop/locale.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ 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 3233279..c44ff0d 100644 --- a/modules/desktop/printing.nix +++ b/modules/desktop/printing.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ services.printing = { enable = true; drivers = with pkgs; [ diff --git a/modules/desktop/themeing.nix b/modules/desktop/themeing.nix index 3cc2047..837e117 100644 --- a/modules/desktop/themeing.nix +++ b/modules/desktop/themeing.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ stylix = { enable = true; polarity = "dark"; @@ -25,30 +26,32 @@ }; }; }; - home-manager.users.jade = {pkgs, ...}: { - stylix.targets = { - firefox = { - profileNames = ["jade"]; + 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; }; - 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"; + 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 88aa4d7..5372b2d 100644 --- a/modules/desktop/tlp.nix +++ b/modules/desktop/tlp.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ services.tlp = { enable = true; settings = { diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index a28d10f..c08c133 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: { +}: +{ imports = [ ./spacenav.nix ./wacom.nix diff --git a/modules/hardware/hardware_key.nix b/modules/hardware/hardware_key.nix index 1f75106..278bf91 100644 --- a/modules/hardware/hardware_key.nix +++ b/modules/hardware/hardware_key.nix @@ -3,33 +3,35 @@ 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 5d2a12c..00b4cb8 100644 --- a/modules/hardware/spacenav.nix +++ b/modules/hardware/spacenav.nix @@ -1,10 +1,11 @@ -{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 104cc68..0234f30 100644 --- a/modules/hardware/wacom.nix +++ b/modules/hardware/wacom.nix @@ -1,10 +1,13 @@ -{...}: { +{ ... }: +{ 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 62b0ec9..12ceb65 100644 --- a/modules/input/default.nix +++ b/modules/input/default.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ imports = [ ./evremap.nix ]; diff --git a/modules/input/evremap.nix b/modules/input/evremap.nix index 18d644e..1c37c7e 100644 --- a/modules/input/evremap.nix +++ b/modules/input/evremap.nix @@ -3,7 +3,8 @@ config, lib, ... -}: let +}: +let cfg = config.jade.input.remapping; evremap = pkgs.rustPlatform.buildRustPackage { pname = "evremap"; @@ -16,91 +17,117 @@ }; 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; +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 = [ ]; + }; }; - 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 c69abfc..3726cda 100644 --- a/modules/media/default.nix +++ b/modules/media/default.nix @@ -4,18 +4,22 @@ 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 @@ -52,5 +56,5 @@ in (mkIf cfg.videoEditing glaxnimate) ]; }; - }; - } + }; +} diff --git a/modules/media/fonts.nix b/modules/media/fonts.nix index 27a9253..2046198 100644 --- a/modules/media/fonts.nix +++ b/modules/media/fonts.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ nixpkgs.config.packageOverrides = pkgs: { google-fonts = pkgs.google-fonts.overrideAttrs (oldAttrs: { src = pkgs.fetchFromGitHub { @@ -34,15 +35,17 @@ 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 978a8d3..e04f440 100644 --- a/modules/media/obs.nix +++ b/modules/media/obs.nix @@ -3,34 +3,36 @@ 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 76c2c24..59c6638 100644 --- a/modules/media/typst.nix +++ b/modules/media/typst.nix @@ -2,14 +2,15 @@ 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"; @@ -19,7 +20,8 @@ }; }; 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 fba3d47..df22509 100644 --- a/modules/net/default.nix +++ b/modules/net/default.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ imports = [ ./firewall.nix ./hosts.nix @@ -10,11 +11,13 @@ 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 656d9cd..73270a7 100644 --- a/modules/net/dispatchers/default.nix +++ b/modules/net/dispatchers/default.nix @@ -1,10 +1,13 @@ -{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"; @@ -12,16 +15,15 @@ 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 d6bc3db..f6e9835 100644 --- a/modules/net/eduroam.nix +++ b/modules/net/eduroam.nix @@ -1,13 +1,19 @@ # 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 @@ -44,7 +50,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 e10dec0..48be5be 100644 --- a/modules/net/firewall.nix +++ b/modules/net/firewall.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: { +}: +{ config = { networking = { firewall = { diff --git a/modules/net/hosts.nix b/modules/net/hosts.nix index 1bfb877..3a21884 100644 --- a/modules/net/hosts.nix +++ b/modules/net/hosts.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ networking.hosts = { "127.0.0.1" = [ "www.tiktok.com" diff --git a/modules/nix.nix b/modules/nix.nix index 42160d2..4878fa6 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -2,7 +2,8 @@ rs-programs, niri, ... -}: { +}: +{ nix = { extraOptions = '' experimental-features = nix-command flakes @@ -24,6 +25,9 @@ "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 4e5f97d..ee5df43 100644 --- a/modules/shell/btop.nix +++ b/modules/shell/btop.nix @@ -1,11 +1,14 @@ -{...}: { - 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 180d1ab..49f20b4 100644 --- a/modules/shell/default.nix +++ b/modules/shell/default.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ imports = [ ./helix.nix ./nu.nix @@ -11,10 +12,12 @@ ]; 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 f597c76..2732633 100644 --- a/modules/shell/git.nix +++ b/modules/shell/git.nix @@ -3,54 +3,57 @@ 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; - }; - }; - programs.jujutsu = { - enable = true; - settings = { - user = { - name = config.programs.git.userName; - email = config.programs.git.userEmail; +}: +{ + 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; }; }; - }; - 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: "")), + 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: "")), + stash_open: Some(( code: Char('l'), modifiers: "")), + open_help: Some(( code: F(1), modifiers: "")), - status_reset_item: Some(( code: Char('U'), modifiers: "SHIFT")), - ) - ''; + status_reset_item: Some(( code: Char('U'), modifiers: "SHIFT")), + ) + ''; + }; }; - }; } diff --git a/modules/shell/helix.nix b/modules/shell/helix.nix index adfda34..dc04045 100644 --- a/modules/shell/helix.nix +++ b/modules/shell/helix.nix @@ -1,213 +1,225 @@ -{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"; - }; - }; - }; - 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; - } - { - name = "html"; - roots = [".git"]; - language-servers = ["vscode-html-language-server" "emmet-language-server"]; - auto-format = false; - } +{ 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"; + }; + }; + }; + 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; + } + ]; + }; + }; }; - }; } diff --git a/modules/shell/mprocs.nix b/modules/shell/mprocs.nix index 7d6b96b..1a7a401 100644 --- a/modules/shell/mprocs.nix +++ b/modules/shell/mprocs.nix @@ -1,24 +1,31 @@ -{...}: { - 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 54ec9a8..521a300 100644 --- a/modules/shell/nu.nix +++ b/modules/shell/nu.nix @@ -1,44 +1,46 @@ -{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; + 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; + plugin use query; + plugin use polars; + plugin use formats; - source ${./nu/custom_commands.nu}; - source ${./nu/aliases.nu}; - nu ${./nu/shell-startup.nu}; - ''; - extraEnv = '' - ''; + 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; }; - # 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 eea943f..8cf92c5 100644 --- a/modules/shell/starship.nix +++ b/modules/shell/starship.nix @@ -1,41 +1,44 @@ -{...}: { - 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 bcc38cd..5e45338 100644 --- a/modules/shell/sudo.nix +++ b/modules/shell/sudo.nix @@ -1,6 +1,7 @@ -{...}: { +{ ... }: +{ 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 becd7b0..3384e63 100644 --- a/modules/shell/tty.nix +++ b/modules/shell/tty.nix @@ -1,13 +1,10 @@ -{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"