diff --git a/default.nix b/default.nix index 7306079..0f8f44e 100644 --- a/default.nix +++ b/default.nix @@ -3,34 +3,34 @@ let # https://github.com/andir/npins?tab=readme-ov-file#using-the-nixpkgs-fetchers src = import ./npins; - pkgs = import src.nixpkgs {}; - sources = mapAttrs (k: v: v {inherit pkgs;}) src; + pkgs = import src.nixpkgs { }; + sources = mapAttrs (k: v: v { inherit pkgs; }) src; inherit (pkgs) lib; inherit (lib.filesystem) listFilesRecursive; inherit (lib.strings) hasSuffix; - mkSystem = system: hostname: + mkSystem = + system: hostname: import (src.nixpkgs + "/nixos/lib/eval-config.nix") { specialArgs = { inherit sources; self = ./.; }; - modules = - [ - # This is used to pre-emptively set the hostPlatform for nixpkgs. - # Also, we set the system hostname here. - { - networking.hostName = hostname; - nixpkgs.hostPlatform = system; - } - ./hosts/common.nix - ./hosts/${hostname} - ] - ++ ((listFilesRecursive ./modules) - |> filter (hasSuffix ".mod.nix")); + modules = [ + # This is used to pre-emptively set the hostPlatform for nixpkgs. + # Also, we set the system hostname here. + { + networking.hostName = hostname; + nixpkgs.hostPlatform = system; + } + ./hosts/common.nix + ./hosts/${hostname} + ] + ++ ((listFilesRecursive ./modules) |> filter (hasSuffix ".mod.nix")); }; -in { +in +{ temperance = mkSystem "x86_64-linux" "temperance"; hermit = mkSystem "x86_64-linux" "hermit"; tower = mkSystem "aarch64-linux" "tower"; diff --git a/flake.nix b/flake.nix index df55b43..58f693a 100644 --- a/flake.nix +++ b/flake.nix @@ -3,43 +3,38 @@ # No inputs, take this flakers - outputs = _: let - sources = import ./npins; - nixpkgs = (import sources.flake-compat {src = sources.nixpkgs;}).outputs; - inherit (nixpkgs) lib; - pkgsFor = nixpkgs.legacyPackages; - inputs = sources; - in { - nixosConfigurations = import ./default.nix; + outputs = + _: + let + sources = import ./npins; + nixpkgs = (import sources.flake-compat { src = sources.nixpkgs; }).outputs; + inherit (nixpkgs) lib; + pkgsFor = nixpkgs.legacyPackages; + inputs = sources; + in + { + nixosConfigurations = import ./default.nix; - packages = - lib.mapAttrs ( - _: pkgs: { - inherit - (import ./packages { - inherit inputs pkgs sources; - }) - fish - helix - kakoune - nushell - ; - } - ) - pkgsFor; - devShells = - lib.mapAttrs ( - _: pkgs: { - default = pkgs.mkShellNoCC { - packages = [ - (pkgs.callPackage (sources.npins + "/npins.nix") {}) - ]; - env.NPINS_OVERRIDE_nichts = "."; - }; - } - ) - pkgsFor; + packages = lib.mapAttrs (_: pkgs: { + inherit + (import ./packages { + inherit inputs pkgs sources; + }) + fish + helix + kakoune + nushell + ; + }) pkgsFor; + devShells = lib.mapAttrs (_: pkgs: { + default = pkgs.mkShellNoCC { + packages = [ + (pkgs.callPackage (sources.npins + "/npins.nix") { }) + ]; + env.NPINS_OVERRIDE_nichts = "."; + }; + }) pkgsFor; - templates = import ./templates; - }; + templates = import ./templates; + }; } diff --git a/hosts/common.nix b/hosts/common.nix index 850d677..68f1c62 100644 --- a/hosts/common.nix +++ b/hosts/common.nix @@ -8,16 +8,17 @@ pkgs, sources, ... -}: let +}: +let inherit (lib.meta) hiPrioSet; - helix = pkgs.callPackage (self + "/packages/helix") {inherit sources;}; + helix = pkgs.callPackage (self + "/packages/helix") { inherit sources; }; - fish = pkgs.callPackage (self + "/packages/fish") {inherit sources;}; -in { + fish = pkgs.callPackage (self + "/packages/fish") { inherit sources; }; +in +{ environment.systemPackages = builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) cachix calc delta diff --git a/hosts/default.nix b/hosts/default.nix index dfc5387..12ee7fd 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -3,7 +3,8 @@ nixpkgs, self, ... -}: let +}: +let inherit (builtins) filter map toString; inherit (nixpkgs) lib; inherit (lib.attrsets) recursiveUpdate; @@ -14,20 +15,18 @@ # NOTE: This was inspired by raf, and I find this # to be quite a sane way of managing all modules in my flake. - mkSystem = { - system, - hostname, - ... - } @ args: + mkSystem = + { + system, + hostname, + ... + }@args: nixosSystem { - specialArgs = - recursiveUpdate - { - inherit lib; - inputs = sources; - inherit self; - } - args.specialArgs or {}; + specialArgs = recursiveUpdate { + inherit lib; + inputs = sources; + inherit self; + } args.specialArgs or { }; modules = concatLists [ # This is used to pre-emptively set the hostPlatform for nixpkgs. # Also, we set the system hostname here. @@ -42,20 +41,15 @@ # common configuration, which all hosts share. (singleton ./common.nix) # Import all files called module.nix from my modules directory. - ( - map toString (listFilesRecursive ../modules) - |> filter (hasSuffix "module.nix") - ) - ( - map toString (listFilesRecursive ../modules) - |> filter (hasSuffix ".mod.nix") - ) + (map toString (listFilesRecursive ../modules) |> filter (hasSuffix "module.nix")) + (map toString (listFilesRecursive ../modules) |> filter (hasSuffix ".mod.nix")) ] |> flatten ) ]; }; -in { +in +{ temperance = mkSystem { system = "x86_64-linux"; hostname = "temperance"; diff --git a/hosts/hermit/configuration.nix b/hosts/hermit/configuration.nix index bb970bf..42a14c8 100644 --- a/hosts/hermit/configuration.nix +++ b/hosts/hermit/configuration.nix @@ -2,7 +2,8 @@ lib, pkgs, ... -}: { +}: +{ # Time Zone time.timeZone = "Europe/Zurich"; # Select internationalisation properties. diff --git a/hosts/hermit/filesystem/default.nix b/hosts/hermit/filesystem/default.nix index cef9c16..f751038 100644 --- a/hosts/hermit/filesystem/default.nix +++ b/hosts/hermit/filesystem/default.nix @@ -1,6 +1,7 @@ { config = { - boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/10318654-ed20-43f6-885d-35366a427581"; + boot.initrd.luks.devices."cryptroot".device = + "/dev/disk/by-uuid/10318654-ed20-43f6-885d-35366a427581"; fileSystems = { "/boot" = { device = "/dev/disk/by-uuid/5D7D-FC52"; @@ -10,17 +11,28 @@ "/" = { device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e"; fsType = "btrfs"; - options = ["compress=zstd" "noatime"]; + options = [ + "compress=zstd" + "noatime" + ]; }; "/nix" = { device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e"; fsType = "btrfs"; - options = ["subvol=nix" "compress=zstd" "noatime"]; + options = [ + "subvol=nix" + "compress=zstd" + "noatime" + ]; }; "/home" = { device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e"; fsType = "btrfs"; - options = ["subvol=home" "compress=zstd" "noatime"]; + options = [ + "subvol=home" + "compress=zstd" + "noatime" + ]; }; }; # swapDevices = [ diff --git a/hosts/hermit/hardware-configuration.nix b/hosts/hermit/hardware-configuration.nix index 6f67a73..e9442b8 100644 --- a/hosts/hermit/hardware-configuration.nix +++ b/hosts/hermit/hardware-configuration.nix @@ -6,21 +6,34 @@ lib, modulesPath, ... -}: { +}: +{ imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; boot = { initrd = { - availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"]; - kernelModules = []; + availableKernelModules = [ + "xhci_pci" + "ahci" + "nvme" + "usb_storage" + "sd_mod" + "rtsx_pci_sdmmc" + ]; + kernelModules = [ ]; }; - kernelModules = ["kvm-intel"]; - blacklistedKernelModules = ["nouveau" "nvidia" "nvidia_drm" "nvidia_modeset"]; + kernelModules = [ "kvm-intel" ]; + blacklistedKernelModules = [ + "nouveau" + "nvidia" + "nvidia_drm" + "nvidia_modeset" + ]; - kernelParams = ["mem_sleep_default=deep"]; - extraModulePackages = []; + kernelParams = [ "mem_sleep_default=deep" ]; + extraModulePackages = [ ]; extraModprobeConfig = '' blacklist nouveau options nouveau modeset=0 diff --git a/hosts/hermit/hardware/default.nix b/hosts/hermit/hardware/default.nix index 715273e..c09935b 100644 --- a/hosts/hermit/hardware/default.nix +++ b/hosts/hermit/hardware/default.nix @@ -1 +1 @@ -_: {imports = [./monitors.nix];} +_: { imports = [ ./monitors.nix ]; } diff --git a/hosts/hermit/kernel/default.nix b/hosts/hermit/kernel/default.nix index 5146fec..ccd6622 100644 --- a/hosts/hermit/kernel/default.nix +++ b/hosts/hermit/kernel/default.nix @@ -3,8 +3,10 @@ lib, pkgs, ... -}: let +}: +let xanmod_custom = callPackage ./xanmod.nix; -in { +in +{ boot.kernelPackages = xanmod_custom; } diff --git a/hosts/hermit/programs.nix b/hosts/hermit/programs.nix index bcded7f..eeac268 100644 --- a/hosts/hermit/programs.nix +++ b/hosts/hermit/programs.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: let +{ pkgs, ... }: +let # a newer nil version, for pipes support. new-nil = pkgs.nil.overrideAttrs (_: { version = "unstable-18-07-2025"; @@ -17,10 +18,10 @@ hash = "sha256-Sljr3ff8hl/qm/0wqc1GXsEr1wWn7NAXmdrd5wHzUX8="; }; }); -in { +in +{ environment.systemPackages = builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) abook aerc aichat diff --git a/hosts/temperance/configuration.nix b/hosts/temperance/configuration.nix index 18d06af..6039b58 100644 --- a/hosts/temperance/configuration.nix +++ b/hosts/temperance/configuration.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: { +}: +{ # Time Zone time.timeZone = "Europe/Zurich"; # Select internationalisation properties. diff --git a/hosts/temperance/filesystem/default.nix b/hosts/temperance/filesystem/default.nix index 7b7311f..4731289 100644 --- a/hosts/temperance/filesystem/default.nix +++ b/hosts/temperance/filesystem/default.nix @@ -1,6 +1,7 @@ { config = { - boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/96e8f3d6-8d2d-4e2d-abd9-3eb7f48fed02"; + boot.initrd.luks.devices."cryptroot".device = + "/dev/disk/by-uuid/96e8f3d6-8d2d-4e2d-abd9-3eb7f48fed02"; fileSystems = { "/boot" = { device = "/dev/disk/by-uuid/B3AC-9050"; @@ -10,29 +11,49 @@ "/" = { device = "none"; fsType = "tmpfs"; - options = ["defaults" "size=40%" "mode=755"]; + options = [ + "defaults" + "size=40%" + "mode=755" + ]; }; "/nix" = { device = "/dev/disk/by-uuid/f0569993-722e-4721-b0d9-8ac537a7a548"; fsType = "btrfs"; - options = ["subvol=nix" "compress=zstd" "noatime"]; + options = [ + "subvol=nix" + "compress=zstd" + "noatime" + ]; }; "/persist" = { device = "/dev/disk/by-uuid/f0569993-722e-4721-b0d9-8ac537a7a548"; neededForBoot = true; fsType = "btrfs"; - options = ["subvol=persist" "compress=zstd" "noatime"]; + options = [ + "subvol=persist" + "compress=zstd" + "noatime" + ]; }; "/home" = { device = "/dev/disk/by-uuid/f0569993-722e-4721-b0d9-8ac537a7a548"; fsType = "btrfs"; - options = ["subvol=home" "compress=zstd" "noatime"]; + options = [ + "subvol=home" + "compress=zstd" + "noatime" + ]; }; "/swap" = { device = "/dev/disk/by-uuid/f0569993-722e-4721-b0d9-8ac537a7a548"; fsType = "btrfs"; - options = ["subvol=swap" "compress=lzo" "noatime"]; + options = [ + "subvol=swap" + "compress=lzo" + "noatime" + ]; }; }; swapDevices = [ diff --git a/hosts/temperance/hardware-configuration.nix b/hosts/temperance/hardware-configuration.nix index 0720ed8..e75c895 100644 --- a/hosts/temperance/hardware-configuration.nix +++ b/hosts/temperance/hardware-configuration.nix @@ -3,14 +3,21 @@ lib, modulesPath, ... -}: { - imports = [(modulesPath + "/installer/scan/not-detected.nix")]; +}: +{ + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; boot = { - initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "sd_mod"]; - initrd.kernelModules = []; - kernelModules = []; - extraModulePackages = []; + initrd.availableKernelModules = [ + "xhci_pci" + "ahci" + "nvme" + "usbhid" + "sd_mod" + ]; + initrd.kernelModules = [ ]; + kernelModules = [ ]; + extraModulePackages = [ ]; }; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking @@ -21,6 +28,5 @@ # networking.interfaces.enp4s0.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = - lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/hosts/temperance/hardware/default.nix b/hosts/temperance/hardware/default.nix index 715273e..c09935b 100644 --- a/hosts/temperance/hardware/default.nix +++ b/hosts/temperance/hardware/default.nix @@ -1 +1 @@ -_: {imports = [./monitors.nix];} +_: { imports = [ ./monitors.nix ]; } diff --git a/hosts/temperance/kernel/default.nix b/hosts/temperance/kernel/default.nix index 5146fec..ccd6622 100644 --- a/hosts/temperance/kernel/default.nix +++ b/hosts/temperance/kernel/default.nix @@ -3,8 +3,10 @@ lib, pkgs, ... -}: let +}: +let xanmod_custom = callPackage ./xanmod.nix; -in { +in +{ boot.kernelPackages = xanmod_custom; } diff --git a/hosts/temperance/kernel/unused.nix b/hosts/temperance/kernel/unused.nix index 8f4cc06..ce5a9ee 100644 --- a/hosts/temperance/kernel/unused.nix +++ b/hosts/temperance/kernel/unused.nix @@ -1,8 +1,10 @@ -{lib, ...}: let +{ lib, ... }: +let inherit (lib.kernel) no unset; inherit (lib.attrsets) mapAttrs; inherit (lib.modules) mkForce; -in { +in +{ boot.kernelPatches = [ { name = "disable-unused-features"; diff --git a/hosts/temperance/kernel/xanmod.nix b/hosts/temperance/kernel/xanmod.nix index 68954d5..f5dc2cf 100644 --- a/hosts/temperance/kernel/xanmod.nix +++ b/hosts/temperance/kernel/xanmod.nix @@ -4,7 +4,8 @@ buildLinux, kernelPatches, ... -}: let +}: +let pname = "linux-xanmod"; version = "6.11.5"; vendorSuffix = "xanmod1"; @@ -58,17 +59,17 @@ }; }) # 1:1 taken from raf's custom kernel, check out his config for this. - .overrideAttrs (oa: { - prePatch = - oa.prePatch or "" - + '' + .overrideAttrs + (oa: { + prePatch = oa.prePatch or "" + '' # bragging rights echo "Replacing localversion with custom suffix" substituteInPlace localversion \ --replace-fail "xanmod1" "blox" ''; - }); -in { + }); +in +{ inherit xanmod_blox ; diff --git a/hosts/temperance/programs.nix b/hosts/temperance/programs.nix index 4d1f8bd..98474f2 100644 --- a/hosts/temperance/programs.nix +++ b/hosts/temperance/programs.nix @@ -1,7 +1,7 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ environment.systemPackages = builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) alsa-utils anki asciinema diff --git a/hosts/tower/configuration.nix b/hosts/tower/configuration.nix index ed19846..d652aca 100644 --- a/hosts/tower/configuration.nix +++ b/hosts/tower/configuration.nix @@ -2,7 +2,8 @@ lib, pkgs, ... -}: { +}: +{ # Time Zone time.timeZone = "Europe/Vienna"; # Select internationalisation properties. diff --git a/hosts/tower/filesystem/default.nix b/hosts/tower/filesystem/default.nix index 331c4dd..be5ccd8 100644 --- a/hosts/tower/filesystem/default.nix +++ b/hosts/tower/filesystem/default.nix @@ -8,7 +8,7 @@ "/" = { device = "/dev/disk/by-uuid/3a781f2e-290a-4609-9035-a93374459def"; fsType = "ext4"; - options = ["noatime"]; + options = [ "noatime" ]; }; }; } diff --git a/hosts/tower/hardware-configuration.nix b/hosts/tower/hardware-configuration.nix index b9d7981..67abc5e 100644 --- a/hosts/tower/hardware-configuration.nix +++ b/hosts/tower/hardware-configuration.nix @@ -2,19 +2,24 @@ lib, modulesPath, ... -}: { +}: +{ imports = [ (modulesPath + "/profiles/qemu-guest.nix") ]; boot = { - initrd.availableKernelModules = ["xhci_pci" "virtio_scsi" "sr_mod"]; - initrd.kernelModules = []; - kernelModules = []; - extraModulePackages = []; + initrd.availableKernelModules = [ + "xhci_pci" + "virtio_scsi" + "sr_mod" + ]; + initrd.kernelModules = [ ]; + kernelModules = [ ]; + extraModulePackages = [ ]; }; - 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/tower/programs.nix b/hosts/tower/programs.nix index 505d7b8..74465fe 100644 --- a/hosts/tower/programs.nix +++ b/hosts/tower/programs.nix @@ -1,7 +1,7 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ environment.systemPackages = builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) ; }; } diff --git a/hosts/world/configuration.nix b/hosts/world/configuration.nix index 2d02091..0d6ae9d 100644 --- a/hosts/world/configuration.nix +++ b/hosts/world/configuration.nix @@ -2,7 +2,8 @@ lib, pkgs, ... -}: { +}: +{ # Time Zone time.timeZone = "Europe/Zurich"; # Select internationalisation properties. diff --git a/hosts/world/filesystem/default.nix b/hosts/world/filesystem/default.nix index cef9c16..f751038 100644 --- a/hosts/world/filesystem/default.nix +++ b/hosts/world/filesystem/default.nix @@ -1,6 +1,7 @@ { config = { - boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/10318654-ed20-43f6-885d-35366a427581"; + boot.initrd.luks.devices."cryptroot".device = + "/dev/disk/by-uuid/10318654-ed20-43f6-885d-35366a427581"; fileSystems = { "/boot" = { device = "/dev/disk/by-uuid/5D7D-FC52"; @@ -10,17 +11,28 @@ "/" = { device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e"; fsType = "btrfs"; - options = ["compress=zstd" "noatime"]; + options = [ + "compress=zstd" + "noatime" + ]; }; "/nix" = { device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e"; fsType = "btrfs"; - options = ["subvol=nix" "compress=zstd" "noatime"]; + options = [ + "subvol=nix" + "compress=zstd" + "noatime" + ]; }; "/home" = { device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e"; fsType = "btrfs"; - options = ["subvol=home" "compress=zstd" "noatime"]; + options = [ + "subvol=home" + "compress=zstd" + "noatime" + ]; }; }; # swapDevices = [ diff --git a/hosts/world/hardware-configuration.nix b/hosts/world/hardware-configuration.nix index 904ed89..ee5c934 100644 --- a/hosts/world/hardware-configuration.nix +++ b/hosts/world/hardware-configuration.nix @@ -3,7 +3,8 @@ lib, modulesPath, ... -}: { +}: +{ imports = [ # (modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix") (modulesPath + "/installer/scan/not-detected.nix") @@ -11,14 +12,26 @@ boot = { initrd = { - availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"]; - kernelModules = []; + availableKernelModules = [ + "xhci_pci" + "ahci" + "nvme" + "usb_storage" + "sd_mod" + "rtsx_pci_sdmmc" + ]; + kernelModules = [ ]; }; - kernelModules = ["kvm-intel"]; - blacklistedKernelModules = ["nouveau" "nvidia" "nvidia_drm" "nvidia_modeset"]; + kernelModules = [ "kvm-intel" ]; + blacklistedKernelModules = [ + "nouveau" + "nvidia" + "nvidia_drm" + "nvidia_modeset" + ]; - kernelParams = ["mem_sleep_default=deep"]; - extraModulePackages = []; + kernelParams = [ "mem_sleep_default=deep" ]; + extraModulePackages = [ ]; extraModprobeConfig = '' blacklist nouveau options nouveau modeset=0 diff --git a/hosts/world/hardware/default.nix b/hosts/world/hardware/default.nix index 715273e..c09935b 100644 --- a/hosts/world/hardware/default.nix +++ b/hosts/world/hardware/default.nix @@ -1 +1 @@ -_: {imports = [./monitors.nix];} +_: { imports = [ ./monitors.nix ]; } diff --git a/hosts/world/programs.nix b/hosts/world/programs.nix index 4f29a7b..dd35220 100644 --- a/hosts/world/programs.nix +++ b/hosts/world/programs.nix @@ -2,10 +2,10 @@ self, pkgs, ... -}: { +}: +{ environment.systemPackages = builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) calc comma difftastic diff --git a/modules/options/system/monitors.mod.nix b/modules/options/system/monitors.mod.nix index e65a481..b42d25d 100644 --- a/modules/options/system/monitors.mod.nix +++ b/modules/options/system/monitors.mod.nix @@ -1,10 +1,18 @@ -{lib, ...}: let +{ lib, ... }: +let inherit (lib.options) mkOption; - inherit (lib.types) submodule int ints number attrsOf; -in { + inherit (lib.types) + submodule + int + ints + number + attrsOf + ; +in +{ options.modules.system.hardware.monitors = mkOption { description = "\n List of monitors to use\n "; - default = {}; + default = { }; type = attrsOf (submodule { options = { resolution = mkOption { diff --git a/modules/options/system/options.mod.nix b/modules/options/system/options.mod.nix index 4d308f4..a211afe 100644 --- a/modules/options/system/options.mod.nix +++ b/modules/options/system/options.mod.nix @@ -2,18 +2,26 @@ config, lib, ... -}: let +}: +let inherit (builtins) elemAt; inherit (lib.options) mkOption mkEnableOption; - inherit (lib.types) enum listOf str nullOr bool; + inherit (lib.types) + enum + listOf + str + nullOr + bool + ; inherit (lib.lists) elem; inherit (config.modules.system) systemType; -in { +in +{ options.modules.system = { users = mkOption { type = listOf str; - default = ["cr"]; + default = [ "cr" ]; description = "A list of users on the system."; }; @@ -27,7 +35,11 @@ in { }; systemType = mkOption { - type = nullOr (enum ["desktop" "laptop" "server"]); + type = nullOr (enum [ + "desktop" + "laptop" + "server" + ]); default = null; description = '' The type of the current system. This is used to determine whether things like graphical @@ -37,7 +49,10 @@ in { isGraphical = mkOption { type = bool; - default = elem systemType ["desktop" "laptop"]; + default = elem systemType [ + "desktop" + "laptop" + ]; description = '' Whether the current system is a graphical system. ''; @@ -46,7 +61,10 @@ in { yubikeySupport = { enable = mkEnableOption "yubikey support"; deviceType = mkOption { - type = nullOr (enum ["NFC5" "nano"]); + type = nullOr (enum [ + "NFC5" + "nano" + ]); default = null; description = "A list of device models to enable Yubikey support for"; }; @@ -76,7 +94,7 @@ in { enable = mkEnableOption "printing"; extraDrivers = mkOption { type = listOf str; - default = []; + default = [ ]; description = "A list of extra drivers to enable for printing"; }; }; diff --git a/modules/options/system/programs.mod.nix b/modules/options/system/programs.mod.nix index 403de42..04f6b85 100644 --- a/modules/options/system/programs.mod.nix +++ b/modules/options/system/programs.mod.nix @@ -1,7 +1,9 @@ -{lib, ...}: let +{ lib, ... }: +let inherit (lib.types) str enum; inherit (lib.options) mkEnableOption mkOption; -in { +in +{ options.modules.system.programs = { editors = { helix.enable = mkEnableOption "Helix text editor"; @@ -27,23 +29,42 @@ in { }; default = { terminal = mkOption { - type = enum ["foot" "kitty"]; + type = enum [ + "foot" + "kitty" + ]; default = "foot"; }; fileManager = mkOption { - type = enum ["thunar" "dolphin" "nemo"]; + type = enum [ + "thunar" + "dolphin" + "nemo" + ]; default = "thunar"; }; browser = mkOption { - type = enum ["firefox" "librewolf" "chromium"]; + type = enum [ + "firefox" + "librewolf" + "chromium" + ]; default = "firefox"; }; editor = mkOption { - type = enum ["neovim" "helix" "emacs"]; + type = enum [ + "neovim" + "helix" + "emacs" + ]; default = "emacs"; }; launcher = mkOption { - type = enum ["anyrun" "rofi" "wofi"]; + type = enum [ + "anyrun" + "rofi" + "wofi" + ]; default = "anyrun"; }; }; diff --git a/modules/other/git.mod.nix b/modules/other/git.mod.nix index c5b31c3..6e56d9f 100644 --- a/modules/other/git.mod.nix +++ b/modules/other/git.mod.nix @@ -1,7 +1,8 @@ -{pkgs, ...}: let - key = - pkgs.writeText "signingkey" "ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw=="; -in { +{ pkgs, ... }: +let + key = pkgs.writeText "signingkey" "ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw=="; +in +{ programs.git = { enable = true; lfs.enable = true; diff --git a/modules/other/system.mod.nix b/modules/other/system.mod.nix index d533cf5..dbec1ac 100644 --- a/modules/other/system.mod.nix +++ b/modules/other/system.mod.nix @@ -1,7 +1,9 @@ -{lib, ...}: let +{ lib, ... }: +let inherit (lib.options) mkOption; inherit (lib.types) str; -in { +in +{ options.modules.other.system = { username = mkOption { description = "username for this system"; diff --git a/modules/other/users.mod.nix b/modules/other/users.mod.nix index 908ca9d..040ef2a 100644 --- a/modules/other/users.mod.nix +++ b/modules/other/users.mod.nix @@ -4,18 +4,20 @@ pkgs, self, ... -}: let +}: +let inherit (builtins) elemAt; inherit (lib.options) mkOption; inherit (lib.types) listOf str package; inherit (config.meta.mainUser) username; - nushell = pkgs.callPackage (self + "/packages/nushell") {}; -in { + nushell = pkgs.callPackage (self + "/packages/nushell") { }; +in +{ options.meta = { users = mkOption { type = listOf str; - default = ["cr"]; + default = [ "cr" ]; description = '' A list of users on a system. ''; diff --git a/modules/other/xdg.mod.nix b/modules/other/xdg.mod.nix index c094693..a08b632 100644 --- a/modules/other/xdg.mod.nix +++ b/modules/other/xdg.mod.nix @@ -2,7 +2,8 @@ config, pkgs, ... -}: let +}: +let inherit (config.meta.mainUser) username; primary_browser = "Librewolf.desktop"; @@ -13,9 +14,10 @@ text_editor = "helix.desktop"; terminal = "foot.desktop"; pdf_viewer = "zathura.desktop"; -in { +in +{ environment = { - systemPackages = [pkgs.xdg-utils]; + systemPackages = [ pkgs.xdg-utils ]; variables = { TERMINAL = "${terminal}"; XDG_CACHE_HOME = "/home/${username}/.config"; @@ -29,43 +31,43 @@ in { mime = { enable = true; defaultApplications = { - "text/html" = [primary_browser]; - "x-scheme-handler/http" = [primary_browser]; - "x-scheme-handler/https" = [primary_browser]; - "x-scheme-handler/about" = [primary_browser]; - "x-scheme-handler/unknown" = [primary_browser]; - "x-scheme-handler/mailto" = [mail_client]; - "message/rfc822" = [mail_client]; - "x-scheme-handler/mid" = [mail_client]; - "inode/directory" = [file_manager]; - "audio/mp3" = [media_player]; - "audio/ogg" = [media_player]; - "audio/mpeg" = [media_player]; - "audio/aac" = [media_player]; - "audio/opus" = [media_player]; - "audio/wav" = [media_player]; - "audio/webm" = [media_player]; - "audio/3gpp" = [media_player]; - "audio/3gpp2" = [media_player]; - "video/mp4" = [media_player]; - "video/x-msvideo" = [media_player]; - "video/mpeg" = [media_player]; - "video/ogg" = [media_player]; - "video/mp2t" = [media_player]; - "video/webm" = [media_player]; - "video/3gpp" = [media_player]; - "video/3gpp2" = [media_player]; - "image/png" = [image_viewer]; - "image/jpeg" = [image_viewer]; - "image/gif" = [image_viewer]; - "image/avif" = [image_viewer]; - "image/bmp" = [image_viewer]; - "image/vnd.microsoft.icon" = [image_viewer]; - "image/svg+xml" = [image_viewer]; - "image/tiff" = [image_viewer]; - "image/webp" = [image_viewer]; - "text/plain" = [text_editor]; - "application/pdf" = [pdf_viewer]; + "text/html" = [ primary_browser ]; + "x-scheme-handler/http" = [ primary_browser ]; + "x-scheme-handler/https" = [ primary_browser ]; + "x-scheme-handler/about" = [ primary_browser ]; + "x-scheme-handler/unknown" = [ primary_browser ]; + "x-scheme-handler/mailto" = [ mail_client ]; + "message/rfc822" = [ mail_client ]; + "x-scheme-handler/mid" = [ mail_client ]; + "inode/directory" = [ file_manager ]; + "audio/mp3" = [ media_player ]; + "audio/ogg" = [ media_player ]; + "audio/mpeg" = [ media_player ]; + "audio/aac" = [ media_player ]; + "audio/opus" = [ media_player ]; + "audio/wav" = [ media_player ]; + "audio/webm" = [ media_player ]; + "audio/3gpp" = [ media_player ]; + "audio/3gpp2" = [ media_player ]; + "video/mp4" = [ media_player ]; + "video/x-msvideo" = [ media_player ]; + "video/mpeg" = [ media_player ]; + "video/ogg" = [ media_player ]; + "video/mp2t" = [ media_player ]; + "video/webm" = [ media_player ]; + "video/3gpp" = [ media_player ]; + "video/3gpp2" = [ media_player ]; + "image/png" = [ image_viewer ]; + "image/jpeg" = [ image_viewer ]; + "image/gif" = [ image_viewer ]; + "image/avif" = [ image_viewer ]; + "image/bmp" = [ image_viewer ]; + "image/vnd.microsoft.icon" = [ image_viewer ]; + "image/svg+xml" = [ image_viewer ]; + "image/tiff" = [ image_viewer ]; + "image/webp" = [ image_viewer ]; + "text/plain" = [ text_editor ]; + "application/pdf" = [ pdf_viewer ]; }; }; }; diff --git a/modules/packages/packages.mod.nix b/modules/packages/packages.mod.nix new file mode 100644 index 0000000..de5b16f --- /dev/null +++ b/modules/packages/packages.mod.nix @@ -0,0 +1,13 @@ +{ + pkgs, + sources, + ... +}: +let + nixfmt = pkgs.callPackage "${sources.nixfmt}/default.nix" { }; +in +{ + environment.systemPackages = [ + nixfmt + ]; +} diff --git a/modules/programs/cli/jj.mod.nix b/modules/programs/cli/jj.mod.nix index 8d619a5..80b06e5 100644 --- a/modules/programs/cli/jj.mod.nix +++ b/modules/programs/cli/jj.mod.nix @@ -3,10 +3,11 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.meta) getExe; - toml = pkgs.formats.toml {}; + toml = pkgs.formats.toml { }; jj-config = toml.generate "config.toml" { user = { name = "Bloxx12"; @@ -14,11 +15,20 @@ }; ui = { - pager = ["${getExe pkgs.bat}" "--plain"]; + pager = [ + "${getExe pkgs.bat}" + "--plain" + ]; default-command = "log"; movement.edit = true; - diff.tool = ["${getExe pkgs.difftastic}" "--color" "always" "$left" "$right"]; + diff.tool = [ + "${getExe pkgs.difftastic}" + "--color" + "always" + "$left" + "$right" + ]; }; # FIXME: do this with agenix # "--scope" = [ @@ -44,26 +54,52 @@ signing = { behaviour = "own"; backend = "ssh"; - key = ["ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw=="]; + key = [ + "ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw==" + ]; }; aliases = { - c = ["commit"]; - ci = ["commit" "--interactive"]; + c = [ "commit" ]; + ci = [ + "commit" + "--interactive" + ]; - e = ["edit"]; + e = [ "edit" ]; # "new bookmark" - nb = ["bookmark" "create" "-r @-"]; + nb = [ + "bookmark" + "create" + "-r @-" + ]; - pull = ["git" "fetch"]; - push = ["git" "push" "--allow-new"]; + pull = [ + "git" + "fetch" + ]; + push = [ + "git" + "push" + "--allow-new" + ]; - r = ["rebase"]; - s = ["squash"]; - si = ["squash" "--interactive"]; + r = [ "rebase" ]; + s = [ "squash" ]; + si = [ + "squash" + "--interactive" + ]; - tug = ["bookmark" "move" "--from" "closest_bookmark(@-)" "--to" "@-"]; + tug = [ + "bookmark" + "move" + "--from" + "closest_bookmark(@-)" + "--to" + "@-" + ]; }; revset-aliases = { "closest_bookmark(to)" = "heads(::to & bookmarks())"; @@ -89,14 +125,15 @@ jj-wrapped = pkgs.symlinkJoin { name = "jj-wrapped"; - paths = [pkgs.jj]; - nativeBuildInputs = [pkgs.makeWrapper]; + paths = [ pkgs.jj ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/mako --add-flags "\ --config ${jj-config} ''; }; -in { +in +{ # environment.systemPackages = [jj-wrapped]; } diff --git a/modules/programs/cli/nh.mod.nix b/modules/programs/cli/nh.mod.nix index a6fc253..a671006 100644 --- a/modules/programs/cli/nh.mod.nix +++ b/modules/programs/cli/nh.mod.nix @@ -4,15 +4,17 @@ pkgs, sources, ... -}: let +}: +let cfg = config.modules.programs.nh; inherit (config.modules.other.system) username; inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; - nh = (pkgs.callPackage "${sources.nh}/package.nix" {}).overrideAttrs (_: { + nh = (pkgs.callPackage "${sources.nh}/package.nix" { }).overrideAttrs (_: { doInstallCheck = false; }); -in { +in +{ options.modules.programs.nh.enable = mkEnableOption "nh"; config = mkIf cfg.enable { diff --git a/modules/programs/gui/bitwarden.mod.nix b/modules/programs/gui/bitwarden.mod.nix index 6286247..79726ad 100644 --- a/modules/programs/gui/bitwarden.mod.nix +++ b/modules/programs/gui/bitwarden.mod.nix @@ -3,25 +3,26 @@ lib, pkgs, ... -}: let +}: +let inherit (config.modules.system) isGraphical; inherit (lib.modules) mkIf; bitwarden-desktop-wrapped = pkgs.symlinkJoin { name = "bitwarden-desktop-wrapped"; - paths = [pkgs.bitwarden-desktop]; - nativeBuildInputs = [pkgs.makeWrapper]; + paths = [ pkgs.bitwarden-desktop ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/bitwarden --set \ BITWARDEN_SSH_AUTH_SOCK /run/user/1000/ssh-agent.sock ''; }; -in { +in +{ config = mkIf isGraphical { environment = { systemPackages = lib.attrValues { - inherit - (pkgs) + inherit (pkgs) bitwarden-cli ; inherit bitwarden-desktop-wrapped; diff --git a/modules/programs/gui/brave.mod.nix b/modules/programs/gui/brave.mod.nix index 8ded1dd..b55a250 100644 --- a/modules/programs/gui/brave.mod.nix +++ b/modules/programs/gui/brave.mod.nix @@ -2,7 +2,8 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.lists) map; inherit (lib.strings) concatStringsSep; @@ -20,16 +21,15 @@ brave-wrapped = pkgs.symlinkJoin { name = "brave"; paths = [ - ( - pkgs.brave.override {vulkanSupport = true;} - ) + (pkgs.brave.override { vulkanSupport = true; }) ]; - nativeBuildInputs = [pkgs.makeWrapper]; + nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/brave --append-flags "${flags}" ''; }; -in { +in +{ environment.systemPackages = [ brave-wrapped ]; diff --git a/modules/programs/gui/dolphin.mod.nix b/modules/programs/gui/dolphin.mod.nix index 6f13d56..559f002 100644 --- a/modules/programs/gui/dolphin.mod.nix +++ b/modules/programs/gui/dolphin.mod.nix @@ -3,15 +3,17 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (config.modules.system) isGraphical; -in { +in +{ config = mkIf isGraphical { environment.systemPackages = with pkgs; [ kdePackages.dolphin - kdePackages.kio-fuse #to mount remote filesystems via FUSE - kdePackages.kio-extras #extra protocols support (sftp, fish and more) + kdePackages.kio-fuse # to mount remote filesystems via FUSE + kdePackages.kio-extras # extra protocols support (sftp, fish and more) ]; }; } diff --git a/modules/programs/gui/foot.mod.nix b/modules/programs/gui/foot.mod.nix index 9aa32da..390c648 100644 --- a/modules/programs/gui/foot.mod.nix +++ b/modules/programs/gui/foot.mod.nix @@ -3,137 +3,141 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (config.meta.mainUser) username; cfg = config.modules.system.programs.terminals.foot; theme-colors = config.modules.style.colorScheme.colors; - foot-config = pkgs.writeText "foot.ini" (lib.generators.toINI {} { - main = { - term = "xterm-256color"; - app-id = "foot"; - title = "foot"; - locked-title = "no"; + foot-config = pkgs.writeText "foot.ini" ( + lib.generators.toINI { } { + main = { + term = "xterm-256color"; + app-id = "foot"; + title = "foot"; + locked-title = "no"; - font = "JetBrainsMono Nerd Font Mono:size=14"; - font-bold = "JetBrainsMono Nerd Font Mono:size=14:style=Bold"; + font = "JetBrainsMono Nerd Font Mono:size=14"; + font-bold = "JetBrainsMono Nerd Font Mono:size=14:style=Bold"; - line-height = 20; - letter-spacing = 0; + line-height = 20; + letter-spacing = 0; - horizontal-letter-offset = 0; - vertical-letter-offset = 0; - box-drawings-uses-font-glyphs = "no"; - dpi-aware = "no"; + horizontal-letter-offset = 0; + vertical-letter-offset = 0; + box-drawings-uses-font-glyphs = "no"; + dpi-aware = "no"; - bold-text-in-bright = "no"; - word-delimiters = ",│`|:\"'()[]{}<>"; - selection-target = "primary"; + bold-text-in-bright = "no"; + word-delimiters = ",│`|:\"'()[]{}<>"; + selection-target = "primary"; - initial-window-size-chars = "104x36"; - initial-window-mode = "windowed"; - pad = "8x8 center"; - resize-delay-ms = 100; - }; + initial-window-size-chars = "104x36"; + initial-window-mode = "windowed"; + pad = "8x8 center"; + resize-delay-ms = 100; + }; - desktop-notifications.command = "${pkgs.libnotify}/bin/notify-send -a \${app-id} -i \${app-id} \${title} \${body}"; + desktop-notifications.command = "${pkgs.libnotify}/bin/notify-send -a \${app-id} -i \${app-id} \${title} \${body}"; - bell = { - urgent = "yes"; - notify = "yes"; - command = "${pkgs.libnotify}/bin/notify-send bell"; - command-focused = "no"; - }; + bell = { + urgent = "yes"; + notify = "yes"; + command = "${pkgs.libnotify}/bin/notify-send bell"; + command-focused = "no"; + }; - scrollback = { - lines = 10000; - multiplier = 10.0; - indicator-position = "relative"; - indicator-format = "line"; - }; + scrollback = { + lines = 10000; + multiplier = 10.0; + indicator-position = "relative"; + indicator-format = "line"; + }; - url = { - launch = "${pkgs.xdg-utils}/bin/xdg-open \${url}"; - label-letters = "sadfjklewcmpgh"; - osc8-underline = "always"; - }; + url = { + launch = "${pkgs.xdg-utils}/bin/xdg-open \${url}"; + label-letters = "sadfjklewcmpgh"; + osc8-underline = "always"; + }; - tweak = { - font-monospace-warn = "no"; - sixel = "yes"; - }; - cursor = { - style = "beam"; - blink = "no"; - }; + tweak = { + font-monospace-warn = "no"; + sixel = "yes"; + }; + cursor = { + style = "beam"; + blink = "no"; + }; - mouse = { - hide-when-typing = "yes"; # not really needed since we already enable this in Hyprland. - alternate-scroll-mode = "yes"; - }; - csd.preferred = "server"; - key-bindings = { - scrollback-up-half-page = "Control+k"; - scrollback-up-page = "Control+Shift+k"; - scrollback-down-half-page = "Control+j"; - scrollback-down-page = "Control+Shift+j"; - }; - mouse-bindings = { - selection-override-modifiers = "Shift"; - primary-paste = "BTN_MIDDLE"; - select-begin = "BTN_LEFT"; - select-begin-block = "Control+BTN_LEFT"; - select-extend = "BTN_RIGHT"; - select-extend-character-wise = "Control+BTN_RIGHT"; - select-word = "BTN_LEFT-2"; - select-word-whitespace = "Control+BTN_LEFT-2"; - }; + mouse = { + hide-when-typing = "yes"; # not really needed since we already enable this in Hyprland. + alternate-scroll-mode = "yes"; + }; + csd.preferred = "server"; + key-bindings = { + scrollback-up-half-page = "Control+k"; + scrollback-up-page = "Control+Shift+k"; + scrollback-down-half-page = "Control+j"; + scrollback-down-page = "Control+Shift+j"; + }; + mouse-bindings = { + selection-override-modifiers = "Shift"; + primary-paste = "BTN_MIDDLE"; + select-begin = "BTN_LEFT"; + select-begin-block = "Control+BTN_LEFT"; + select-extend = "BTN_RIGHT"; + select-extend-character-wise = "Control+BTN_RIGHT"; + select-word = "BTN_LEFT-2"; + select-word-whitespace = "Control+BTN_LEFT-2"; + }; - colors = { - foreground = theme-colors.base05; # Text - background = theme-colors.base00; # Base - regular0 = theme-colors.base03; # Surface 1 - regular1 = theme-colors.base08; # red - regular2 = theme-colors.base0B; # green - regular3 = theme-colors.base0A; # yellow - regular4 = theme-colors.base0D; # blue - regular5 = "f5c2e7"; # pink - regular6 = "94e2d5"; # teal - regular7 = "bac2de"; # Subtext 1 + colors = { + foreground = theme-colors.base05; # Text + background = theme-colors.base00; # Base + regular0 = theme-colors.base03; # Surface 1 + regular1 = theme-colors.base08; # red + regular2 = theme-colors.base0B; # green + regular3 = theme-colors.base0A; # yellow + regular4 = theme-colors.base0D; # blue + regular5 = "f5c2e7"; # pink + regular6 = "94e2d5"; # teal + regular7 = "bac2de"; # Subtext 1 - bright0 = theme-colors.base04; # Surface 2 - bright1 = theme-colors.base08; # red - bright2 = theme-colors.base0B; # green - bright3 = theme-colors.base0A; # yellow - bright4 = "89b4fa"; # blue - bright5 = "f5c2e7"; # pink - bright6 = "94e2d5"; # teal - bright7 = "a6adc8"; # Subtext 0 + bright0 = theme-colors.base04; # Surface 2 + bright1 = theme-colors.base08; # red + bright2 = theme-colors.base0B; # green + bright3 = theme-colors.base0A; # yellow + bright4 = "89b4fa"; # blue + bright5 = "f5c2e7"; # pink + bright6 = "94e2d5"; # teal + bright7 = "a6adc8"; # Subtext 0 - selection-foreground = "cdd6f4"; - selection-background = "414356"; + selection-foreground = "cdd6f4"; + selection-background = "414356"; - search-box-no-match = "11111b f38ba8"; - search-box-match = "cdd6f4 313244"; + search-box-no-match = "11111b f38ba8"; + search-box-match = "cdd6f4 313244"; - jump-labels = "11111b fab387"; - urls = "89b4fa"; + jump-labels = "11111b fab387"; + urls = "89b4fa"; - alpha = 0.9; - }; - }); + alpha = 0.9; + }; + } + ); foot-wrapped = pkgs.symlinkJoin { name = "foot-wrapped"; - paths = [pkgs.foot]; - nativeBuildInputs = [pkgs.makeWrapper]; + paths = [ pkgs.foot ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/foot --add-flags "--config=${foot-config} --working-directory=/home/${username}" ''; }; -in { +in +{ config = mkIf cfg.enable { - environment.systemPackages = [foot-wrapped]; + environment.systemPackages = [ foot-wrapped ]; }; } diff --git a/modules/programs/gui/ghostty.mod.nix b/modules/programs/gui/ghostty.mod.nix index f588902..121edee 100644 --- a/modules/programs/gui/ghostty.mod.nix +++ b/modules/programs/gui/ghostty.mod.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.lists) elem; inherit (lib.meta) getExe; inherit (lib.attrsets) mapAttrsToList; @@ -15,9 +16,16 @@ # Shell integration for ghostty only supports # bash, fish and zsh for now. shell-integration = - if elem name ["bash" "fish" "zsh"] - then name - else "none"; + if + elem name [ + "bash" + "fish" + "zsh" + ] + then + name + else + "none"; ghostty-settings = { font-size = 14; @@ -53,17 +61,21 @@ command = getExe package; }; - settingsFile = pkgs.writeText "config" <| concatStringsSep "\n" <| mapAttrsToList (name: value: "${name} = ${toString value}") ghostty-settings; + settingsFile = + pkgs.writeText "config" + <| concatStringsSep "\n" + <| mapAttrsToList (name: value: "${name} = ${toString value}") ghostty-settings; ghostty-wrapped = pkgs.symlinkJoin { name = "ghostty-wrapped"; - paths = [pkgs.ghostty]; - nativeBuildInputs = [pkgs.makeWrapper]; + paths = [ pkgs.ghostty ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/ghostty --add-flags "--config-file=${settingsFile}" ''; }; -in { +in +{ environment.systemPackages = builtins.attrValues { inherit ghostty-wrapped; }; diff --git a/modules/programs/gui/minecraft.nix b/modules/programs/gui/minecraft.nix index 753faeb..fd5632a 100644 --- a/modules/programs/gui/minecraft.nix +++ b/modules/programs/gui/minecraft.nix @@ -3,18 +3,20 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.options) mkEnableOption; inherit (lib.modules) mkIf; cfg = config.modules.programs.minecraft; -in { +in +{ options.modules.programs.minecraft = { enable = mkEnableOption "minecraft"; wayland = mkEnableOption "wayland"; }; config = mkIf cfg.enable { - environment.systemPackages = [pkgs.prismlauncher]; + environment.systemPackages = [ pkgs.prismlauncher ]; }; } diff --git a/modules/programs/gui/spotify.mod.nix b/modules/programs/gui/spotify.mod.nix index 589d93f..9f0eeeb 100644 --- a/modules/programs/gui/spotify.mod.nix +++ b/modules/programs/gui/spotify.mod.nix @@ -1,9 +1,9 @@ -{pkgs, ...}: { - environment.systemPackages = - [ - pkgs.spotify - ] - ++ (with pkgs; [ - sptlrx - ]); +{ pkgs, ... }: +{ + environment.systemPackages = [ + pkgs.spotify + ] + ++ (with pkgs; [ + sptlrx + ]); } diff --git a/modules/programs/gui/steam.mod.nix b/modules/programs/gui/steam.mod.nix index 2b19e16..7d22abe 100644 --- a/modules/programs/gui/steam.mod.nix +++ b/modules/programs/gui/steam.mod.nix @@ -3,12 +3,14 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.system.programs.steam; -in { +in +{ options.modules.system.programs.steam.enable = mkEnableOption "Steam games platform"; config = mkIf cfg.enable { programs.steam = { @@ -19,14 +21,15 @@ in { SDL_VIDEODRIVER = "x11"; }; - extraLibraries = p: + extraLibraries = + p: builtins.attrValues { inherit (p) atk; }; }; gamescopeSession.enable = true; - extraCompatPackages = [pkgs.proton-ge-bin.steamcompattool]; + extraCompatPackages = [ pkgs.proton-ge-bin.steamcompattool ]; }; # See # https://wiki.nixos.org/wiki/GameMode diff --git a/modules/programs/gui/thunar.mod.nix b/modules/programs/gui/thunar.mod.nix index 0937764..30773f1 100644 --- a/modules/programs/gui/thunar.mod.nix +++ b/modules/programs/gui/thunar.mod.nix @@ -3,18 +3,19 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.programs.thunar; -in { +in +{ options.modules.programs.thunar.enable = mkEnableOption "Thunar file manager"; config = mkIf cfg.enable { programs.thunar = { enable = true; plugins = builtins.attrValues { - inherit - (pkgs.xfce) + inherit (pkgs.xfce) thunar-volman thunar-vcs-plugin thunar-archive-plugin diff --git a/modules/programs/other/direnv.mod.nix b/modules/programs/other/direnv.mod.nix index 90f6098..1c5e612 100644 --- a/modules/programs/other/direnv.mod.nix +++ b/modules/programs/other/direnv.mod.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ config = { programs.direnv = { enable = true; diff --git a/modules/programs/other/nix-index.mod.nix b/modules/programs/other/nix-index.mod.nix index 43fb005..febcd44 100644 --- a/modules/programs/other/nix-index.mod.nix +++ b/modules/programs/other/nix-index.mod.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ programs = { # We have to disable this and use nix-index instead. (Rust >>> Pearl) command-not-found = { diff --git a/modules/programs/tui/btop.mod.nix b/modules/programs/tui/btop.mod.nix index 802080e..3bdbc4c 100644 --- a/modules/programs/tui/btop.mod.nix +++ b/modules/programs/tui/btop.mod.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.options) mkEnableOption; inherit (lib.modules) mkIf; @@ -33,15 +34,16 @@ btop-wrapped = pkgs.symlinkJoin { name = "btop-wrapped"; - paths = [btop-no-desktop-entry]; - nativeBuildInputs = [pkgs.makeWrapper]; + paths = [ btop-no-desktop-entry ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/btop --set XDG_CONFIG_HOME "${btop-settings}" ''; }; -in { +in +{ options.modules.programs.btop.enable = mkEnableOption "btop"; config = mkIf cfg.enable { - environment.systemPackages = [btop-wrapped]; + environment.systemPackages = [ btop-wrapped ]; }; } diff --git a/modules/programs/tui/zellij/zellij.mod.nix b/modules/programs/tui/zellij/zellij.mod.nix index e7ccd93..ba3ef39 100644 --- a/modules/programs/tui/zellij/zellij.mod.nix +++ b/modules/programs/tui/zellij/zellij.mod.nix @@ -1,14 +1,16 @@ -{pkgs, ...}: let +{ pkgs, ... }: +let zellij-wrapped = pkgs.symlinkJoin { name = "zellij-wrapped"; - paths = [pkgs.zellij]; - nativeBuildInputs = [pkgs.makeWrapper]; + paths = [ pkgs.zellij ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/zellij --add-flags "\ --config ${./config.kdl}" ''; }; -in { +in +{ environment.systemPackages = builtins.attrValues { inherit zellij-wrapped; }; diff --git a/modules/services/acme.mod.nix b/modules/services/acme.mod.nix index 078b405..07e8221 100644 --- a/modules/services/acme.mod.nix +++ b/modules/services/acme.mod.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: let +}: +let mkAcmeCert = domain: { # An acme system user is created. This user belongs to the acme group # and the home directory is /var/lib/acme. This user will try to make the directory @@ -15,7 +16,8 @@ email = "charlie@charlieroot.dev"; group = "nginx"; }; -in { +in +{ security.acme = { acceptTerms = true; defaults = { diff --git a/modules/services/forgejo/forgejo.mod.nix b/modules/services/forgejo/forgejo.mod.nix index 146dc0a..5e0e399 100644 --- a/modules/services/forgejo/forgejo.mod.nix +++ b/modules/services/forgejo/forgejo.mod.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: let +}: +let inherit (pkgs) fetchurl; inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; @@ -16,7 +17,8 @@ img = ./img; dataDir = "/srv/data/forgejo"; dumpDir = "/srv/data/forgejo-dump"; -in { +in +{ options.modules.system.services.forgejo.enable = mkEnableOption "forgejo"; config = mkIf cfg.enable { @@ -50,7 +52,7 @@ in { group = "git"; isSystemUser = true; }; - users.groups.git = {}; + users.groups.git = { }; services.forgejo = { enable = true; @@ -113,53 +115,55 @@ in { }; }; - systemd.tmpfiles.rules = let - # no crawlers, thank you. - robots = pkgs.writeText "robots-txt" '' - User-agent: * - Disallow: / - ''; - base-brand = fetchurl { - url = "https://codeberg.org/Codeberg-Infrastructure/forgejo/raw/branch/codeberg-10/web_src/css/themes/codeberg/base-brand.css"; - hash = "sha256-QJ775HpINf8klO3d/8h+tEw0vk34p19dWUCWWuVwcho="; - }; - dark-variables = fetchurl { - url = "https://codeberg.org/Codeberg-Infrastructure/forgejo/raw/branch/codeberg-10/web_src/css/themes/codeberg/dark-variables.css"; - hash = "sha256-nCSJUOU9/R1fldoKXTTZmP7vmRjYUk/OKkbgrJ/NrXQ="; - }; - theme-codeberg-dark = fetchurl { - url = "https://codeberg.org/Codeberg-Infrastructure/forgejo/raw/branch/codeberg-10/web_src/css/themes/theme-codeberg-dark.css"; - hash = "sha256-KyXznH49koRGlzIDDqagN4PvFGD/zCX//wrctmtfgBs="; - }; - in [ - "d '${customDir}/public' 0750 ${user} ${group} - -" - "d '${customDir}/public/assets' 0750 ${user} ${group} - -" - "d '${customDir}/public/assets/img' 0750 ${user} ${group} - -" - # Copeberg logo, thanks Raf <3 - "L+ '${customDir}/public/assets/img/logo.svg' - - - - ${img}/logo.svg" - "L+ '${customDir}/public/assets/img/logo.png' - - - - ${img}/logo.png" - "L+ '${customDir}/public/assets/img/apple-touch-icon' - - - - ${img}/logo.png" - "L+ '${customDir}/public/assets/img/favicon.svg' - - - - ${img}/logo.svg" - "L+ '${customDir}/public/assets/img/favicon.png' - - - - ${img}/logo.png" + systemd.tmpfiles.rules = + let + # no crawlers, thank you. + robots = pkgs.writeText "robots-txt" '' + User-agent: * + Disallow: / + ''; + base-brand = fetchurl { + url = "https://codeberg.org/Codeberg-Infrastructure/forgejo/raw/branch/codeberg-10/web_src/css/themes/codeberg/base-brand.css"; + hash = "sha256-QJ775HpINf8klO3d/8h+tEw0vk34p19dWUCWWuVwcho="; + }; + dark-variables = fetchurl { + url = "https://codeberg.org/Codeberg-Infrastructure/forgejo/raw/branch/codeberg-10/web_src/css/themes/codeberg/dark-variables.css"; + hash = "sha256-nCSJUOU9/R1fldoKXTTZmP7vmRjYUk/OKkbgrJ/NrXQ="; + }; + theme-codeberg-dark = fetchurl { + url = "https://codeberg.org/Codeberg-Infrastructure/forgejo/raw/branch/codeberg-10/web_src/css/themes/theme-codeberg-dark.css"; + hash = "sha256-KyXznH49koRGlzIDDqagN4PvFGD/zCX//wrctmtfgBs="; + }; + in + [ + "d '${customDir}/public' 0750 ${user} ${group} - -" + "d '${customDir}/public/assets' 0750 ${user} ${group} - -" + "d '${customDir}/public/assets/img' 0750 ${user} ${group} - -" + # Copeberg logo, thanks Raf <3 + "L+ '${customDir}/public/assets/img/logo.svg' - - - - ${img}/logo.svg" + "L+ '${customDir}/public/assets/img/logo.png' - - - - ${img}/logo.png" + "L+ '${customDir}/public/assets/img/apple-touch-icon' - - - - ${img}/logo.png" + "L+ '${customDir}/public/assets/img/favicon.svg' - - - - ${img}/logo.svg" + "L+ '${customDir}/public/assets/img/favicon.png' - - - - ${img}/logo.png" - # Theming shenanigans - "d '${customDir}/public/assets' 0750 ${user} ${group} - -" - "d '${customDir}/public/assets/css' 0750 ${user} ${group} - -" - "d '${customDir}/public/assets/css/codeberg' 0750 ${user} ${group} - -" + # Theming shenanigans + "d '${customDir}/public/assets' 0750 ${user} ${group} - -" + "d '${customDir}/public/assets/css' 0750 ${user} ${group} - -" + "d '${customDir}/public/assets/css/codeberg' 0750 ${user} ${group} - -" - "L+ '${customDir}/public/assets/css/theme-codeberg-dark.css' - - - - ${theme-codeberg-dark}" - "L+ '${customDir}/public/assets/css/codeberg/base-brand.css' - - - - ${base-brand}" - "L+ '${customDir}/public/assets/css/codeberg/dark-variables.css' - - - - ${dark-variables}" + "L+ '${customDir}/public/assets/css/theme-codeberg-dark.css' - - - - ${theme-codeberg-dark}" + "L+ '${customDir}/public/assets/css/codeberg/base-brand.css' - - - - ${base-brand}" + "L+ '${customDir}/public/assets/css/codeberg/dark-variables.css' - - - - ${dark-variables}" - # Templates - "d '${customDir}/templates' 0750 ${user} ${group} - -" - "d '${customDir}/templates/repo' 0750 ${user} ${group} - -" - # Home page - "L+ '${customDir}/templates/home.tmpl' - - - - ${./templates}/home.tmpl" - "L+ '${customDir}/templates/repo/header.tmpl' - - - - ${./templates/repo}/header.tmpl" + # Templates + "d '${customDir}/templates' 0750 ${user} ${group} - -" + "d '${customDir}/templates/repo' 0750 ${user} ${group} - -" + # Home page + "L+ '${customDir}/templates/home.tmpl' - - - - ${./templates}/home.tmpl" + "L+ '${customDir}/templates/repo/header.tmpl' - - - - ${./templates/repo}/header.tmpl" - # Fuck off scrapers - "L+ ${customDir}/public/robots.txt - - - - ${robots.outPath}" - ]; + # Fuck off scrapers + "L+ ${customDir}/public/robots.txt - - - - ${robots.outPath}" + ]; }; } diff --git a/modules/services/grafana/grafana.mod.nix b/modules/services/grafana/grafana.mod.nix index e52e7e1..5652656 100644 --- a/modules/services/grafana/grafana.mod.nix +++ b/modules/services/grafana/grafana.mod.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: let +}: +let inherit (builtins) fetchurl; inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; @@ -11,11 +12,12 @@ cfg = config.modules.system.services.grafana; domain = "info.copeberg.org"; port = 4021; -in { +in +{ options.modules.system.services.grafana.enable = mkEnableOption "Grafana, a graphing service"; config = mkIf cfg.enable { - networking.firewall.allowedTCPPorts = [config.services.grafana.settings.server.http_port]; + networking.firewall.allowedTCPPorts = [ config.services.grafana.settings.server.http_port ]; modules.system.services.database.postgresql.enable = true; diff --git a/modules/services/greetd.mod.nix b/modules/services/greetd.mod.nix index a772bee..468c302 100644 --- a/modules/services/greetd.mod.nix +++ b/modules/services/greetd.mod.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.meta) getExe getExe'; inherit (lib.modules) mkIf; inherit (lib.options) mkOption mkEnableOption; @@ -12,7 +13,8 @@ inherit (config.meta.mainUser) username; cfg = config.modules.services.greetd; uwsmEnabled = config.modules.services.uwsm.enable; -in { +in +{ options.modules.services.greetd = { enable = mkEnableOption "greetd"; greeter = mkOption { @@ -27,33 +29,33 @@ in { description = "Which login session to start"; type = str; default = - if uwsmEnabled - then "${getExe config.programs.uwsm.package} start Hyprland" - else "Hyprland"; + if uwsmEnabled then "${getExe config.programs.uwsm.package} start Hyprland" else "Hyprland"; }; }; config = mkIf cfg.enable { - services.greetd = let - session = { - # command = '' - # ${pkgs.greetd.tuigreet}/bin/tuigreet \ - # -c \"${cfg.session}\" \ - # -r - # -t --time-format "DD.MM.YYYY" - # --asteriks''; + services.greetd = + let + session = { + # command = '' + # ${pkgs.greetd.tuigreet}/bin/tuigreet \ + # -c \"${cfg.session}\" \ + # -r + # -t --time-format "DD.MM.YYYY" + # --asteriks''; - command = "${getExe config.programs.uwsm.package} start hyprland-uwsm.desktop"; - user = username; + command = "${getExe config.programs.uwsm.package} start hyprland-uwsm.desktop"; + user = username; + }; + in + { + enable = true; + package = pkgs.greetd; + vt = 7; + settings = { + default_session = session; + initial_session = session; + }; }; - in { - enable = true; - package = pkgs.greetd; - vt = 7; - settings = { - default_session = session; - initial_session = session; - }; - }; }; } diff --git a/modules/services/kanata/kanata.mod.nix b/modules/services/kanata/kanata.mod.nix index c39dd6d..d9a21a4 100644 --- a/modules/services/kanata/kanata.mod.nix +++ b/modules/services/kanata/kanata.mod.nix @@ -2,12 +2,14 @@ config, lib, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.services.kanata; -in { +in +{ options.modules.services.kanata.enable = mkEnableOption "kanata"; config = mkIf cfg.enable { services.kanata = { diff --git a/modules/services/locate.mod.nix b/modules/services/locate.mod.nix index d945e6b..61bf0f4 100644 --- a/modules/services/locate.mod.nix +++ b/modules/services/locate.mod.nix @@ -3,14 +3,16 @@ lib, pkgs, ... -}: let +}: +let cfg = config.modules.services.locate; inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; -in { +in +{ options.modules.services.locate.enable = mkEnableOption "Locate service"; config = mkIf cfg.enable { - environment.systemPackages = [pkgs.plocate]; + environment.systemPackages = [ pkgs.plocate ]; services.locate = { enable = true; interval = "hourly"; diff --git a/modules/services/mako.mod.nix b/modules/services/mako.mod.nix index 52eba30..2df18f9 100644 --- a/modules/services/mako.mod.nix +++ b/modules/services/mako.mod.nix @@ -1,8 +1,9 @@ -{pkgs, ...}: let +{ pkgs, ... }: +let mako-wrapped = pkgs.symlinkJoin { name = "mako-wrapped"; - paths = [pkgs.mako]; - nativeBuildInputs = [pkgs.makeWrapper]; + paths = [ pkgs.mako ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/mako --add-flags "\ --font 'Lexend 11' \ @@ -12,6 +13,7 @@ --default-timeout 4000" ''; }; -in { - environment.systemPackages = [mako-wrapped]; +in +{ + environment.systemPackages = [ mako-wrapped ]; } diff --git a/modules/services/monitoring/loki/loki.mod.nix b/modules/services/monitoring/loki/loki.mod.nix index eda11a2..4bdd589 100644 --- a/modules/services/monitoring/loki/loki.mod.nix +++ b/modules/services/monitoring/loki/loki.mod.nix @@ -3,14 +3,16 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.system.services.loki; port = 4026; dataDir = "/srv/data/loki"; -in { +in +{ options.modules.system.services.loki.enable = mkEnableOption "Grafana, a graphing service"; config = mkIf cfg.enable { diff --git a/modules/services/mpd.mod.nix b/modules/services/mpd.mod.nix index 195af90..edf67bf 100644 --- a/modules/services/mpd.mod.nix +++ b/modules/services/mpd.mod.nix @@ -3,13 +3,15 @@ lib, pkgs, ... -}: let +}: +let cfg = config.modules.services.media.mpd; inherit (config.meta.mainUser) username; inherit (lib.modules) mkIf; inherit (lib.types) str; inherit (lib.options) mkOption mkEnableOption; -in { +in +{ options.modules.services = { media = { mpd = { @@ -24,7 +26,7 @@ in { }; config = mkIf cfg.enable { # command line interface to mpd - environment.systemPackages = [pkgs.mpc]; + environment.systemPackages = [ pkgs.mpc ]; systemd.services.mpd.environment = { # https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/609 diff --git a/modules/services/nginx.mod.nix b/modules/services/nginx.mod.nix index 1c0b7cc..e407478 100644 --- a/modules/services/nginx.mod.nix +++ b/modules/services/nginx.mod.nix @@ -3,11 +3,13 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkIf mkDefault; inherit (lib.options) mkEnableOption; cfg = config.modules.system.services.nginx; -in { +in +{ options.modules.system.services.nginx.enable = mkEnableOption "nginx"; config = mkIf cfg.enable { security = { diff --git a/modules/services/owncloud.mod.nix b/modules/services/owncloud.mod.nix index 7e1ec97..2be69c1 100644 --- a/modules/services/owncloud.mod.nix +++ b/modules/services/owncloud.mod.nix @@ -3,12 +3,14 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.meta) getExe'; inherit (lib.modules) mkIf; cfg = config.modules.system.services.owncloud; -in { +in +{ options.modules.system.services.owncloud.enable = lib.mkEnableOption "owncloud"; config = { @@ -16,11 +18,11 @@ in { description = "Owncloud client service"; # makes the graphical session start this service when it starts - wantedBy = ["graphical-session.target"]; + wantedBy = [ "graphical-session.target" ]; # when graphical session restarts or gets stopped, this also gets restarted/stopped. - partOf = ["graphical-session.target"]; + partOf = [ "graphical-session.target" ]; # gets started only after graphical session - after = ["graphical-session.target"]; + after = [ "graphical-session.target" ]; serviceConfig = { ExecStart = "${getExe' pkgs.owncloud-client "owncloud"}"; diff --git a/modules/services/pipewire.mod.nix b/modules/services/pipewire.mod.nix index bb375c3..0f5e74f 100644 --- a/modules/services/pipewire.mod.nix +++ b/modules/services/pipewire.mod.nix @@ -2,10 +2,12 @@ config, lib, ... -}: let +}: +let cfg = config.modules.system.sound; inherit (lib.modules) mkIf; -in { +in +{ config = mkIf cfg.enable { services.pulseaudio.enable = false; services.pipewire = { diff --git a/modules/services/postgresql.mod.nix b/modules/services/postgresql.mod.nix index e8ee68f..363128d 100644 --- a/modules/services/postgresql.mod.nix +++ b/modules/services/postgresql.mod.nix @@ -3,12 +3,14 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.system.services.database.postgresql; -in { +in +{ options.modules.system.services.database.postgresql.enable = mkEnableOption "postgresql"; config = mkIf cfg.enable { diff --git a/modules/services/printing.mod.nix b/modules/services/printing.mod.nix index 732fc17..ea20bf8 100644 --- a/modules/services/printing.mod.nix +++ b/modules/services/printing.mod.nix @@ -2,9 +2,11 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.options) mkEnableOption; -in { +in +{ options.modules.services.cups.enable = mkEnableOption "CUPS, the Common UNIX printing system"; config = { diff --git a/modules/services/prometheus/prometheus.mod.nix b/modules/services/prometheus/prometheus.mod.nix index f978d0f..e5933d2 100644 --- a/modules/services/prometheus/prometheus.mod.nix +++ b/modules/services/prometheus/prometheus.mod.nix @@ -3,13 +3,15 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.system.services.prometheus; port = 4022; -in { +in +{ options.modules.system.services.prometheus.enable = mkEnableOption "Grafana, a graphing service"; config = mkIf cfg.enable { @@ -22,7 +24,10 @@ in { node = { enable = true; port = 4023; - enabledCollectors = ["systemd" "processes"]; + enabledCollectors = [ + "systemd" + "processes" + ]; }; postgres = { @@ -39,22 +44,28 @@ in { { job_name = "prometheus"; scrape_interval = "30s"; - static_configs = [{targets = ["localhost:${toString port}"];}]; + static_configs = [ { targets = [ "localhost:${toString port}" ]; } ]; } { job_name = "node"; scrape_interval = "30s"; - static_configs = [{targets = ["localhost:${toString config.services.prometheus.exporters.node.port}"];}]; + static_configs = [ + { targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ]; } + ]; } { job_name = "postgres"; scrape_interval = "30s"; - static_configs = [{targets = ["localhost:${toString config.services.prometheus.exporters.postgres.port}"];}]; + static_configs = [ + { targets = [ "localhost:${toString config.services.prometheus.exporters.postgres.port}" ]; } + ]; } { job_name = "nginx"; scrape_interval = "30s"; - static_configs = [{targets = ["localhost:${toString config.services.prometheus.exporters.nginx.port}"];}]; + static_configs = [ + { targets = [ "localhost:${toString config.services.prometheus.exporters.nginx.port}" ]; } + ]; } ]; }; diff --git a/modules/services/spotifyd.mod.nix b/modules/services/spotifyd.mod.nix index 65a1906..6ffecc9 100644 --- a/modules/services/spotifyd.mod.nix +++ b/modules/services/spotifyd.mod.nix @@ -2,15 +2,17 @@ config, lib, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (config.modules.system) isGraphical; -in { +in +{ # TODO: setup services.spotifyd = mkIf isGraphical { enable = true; settings = { - backend = "pipe"; + # backend = "pipe"; }; }; } diff --git a/modules/services/ssh.mod.nix b/modules/services/ssh.mod.nix index 6fc4a76..b8f5315 100644 --- a/modules/services/ssh.mod.nix +++ b/modules/services/ssh.mod.nix @@ -1,11 +1,13 @@ -{lib, ...}: let +{ lib, ... }: +let inherit (lib.options) mkEnableOption; -in { +in +{ options.modules.programs.ssh.enable = mkEnableOption "ssh"; config = { services.openssh = { enable = true; - ports = [22]; + ports = [ 22 ]; settings = { PasswordAuthentication = false; PermitRootLogin = "no"; diff --git a/modules/services/stalwart.mod.nix b/modules/services/stalwart.mod.nix index 67e3d96..93f8273 100644 --- a/modules/services/stalwart.mod.nix +++ b/modules/services/stalwart.mod.nix @@ -3,14 +3,16 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; domain = "charlieroot.dev"; cfg = config.modules.system.services.stalwart; -in { +in +{ options.modules.system.services.stalwart.enable = mkEnableOption "stalwart"; config = mkIf cfg.enable { # create the stallwart user @@ -20,7 +22,7 @@ in { group = "stalwart"; isSystemUser = true; }; - users.groups.stalwart = {}; + users.groups.stalwart = { }; services.stalwart-mail = { enable = true; @@ -55,7 +57,7 @@ in { # This is the standard port for SMTP, and is used by mail servers to send email to each other. smtp = { protocol = "smtp"; - bind = ["[::]:25"]; + bind = [ "[::]:25" ]; tls.implicit = true; }; # SMTP submissions with implicit TLS are received on port 465 by default. @@ -63,17 +65,17 @@ in { # and is used by mail clients to send email to mail servers. submissions = { - bind = ["[::]:465"]; + bind = [ "[::]:465" ]; protocol = "smtp"; tls.implicit = true; }; imaps = { - bind = ["[::]:993"]; + bind = [ "[::]:993" ]; protocol = "imap"; tls.implicit = true; }; management = { - bind = ["127.0.0.1:8080"]; + bind = [ "127.0.0.1:8080" ]; protocol = "http"; tls.implicit = true; }; diff --git a/modules/services/usbguard.mod.nix b/modules/services/usbguard.mod.nix index 9bdaa71..40e8353 100644 --- a/modules/services/usbguard.mod.nix +++ b/modules/services/usbguard.mod.nix @@ -3,18 +3,23 @@ lib, pkgs, ... -}: let +}: +let inherit (config.meta.mainUser) username; inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.services.usbguard; -in { +in +{ options.modules.services.usbguard.enable = mkEnableOption "usbguard"; config = mkIf cfg.enable { - environment.systemPackages = [pkgs.usbguard]; + environment.systemPackages = [ pkgs.usbguard ]; services.usbguard = { enable = true; - IPCAllowedUsers = ["root" "${username}"]; + IPCAllowedUsers = [ + "root" + "${username}" + ]; presentDevicePolicy = "allow"; rules = '' allow with-interface equals { 08:*:* } diff --git a/modules/services/uwsm.mod.nix b/modules/services/uwsm.mod.nix index 8a16d98..bc4bc7e 100644 --- a/modules/services/uwsm.mod.nix +++ b/modules/services/uwsm.mod.nix @@ -3,11 +3,13 @@ lib, pkgs, ... -}: let +}: +let cfg = config.modules.services.uwsm; inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; -in { +in +{ options.modules.services.uwsm.enable = mkEnableOption "uwsm"; config = mkIf cfg.enable { programs.uwsm = { diff --git a/modules/services/wayneko.mod.nix b/modules/services/wayneko.mod.nix index b028bf8..2eaf564 100644 --- a/modules/services/wayneko.mod.nix +++ b/modules/services/wayneko.mod.nix @@ -2,7 +2,8 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.meta) getExe; custom-wayneko = pkgs.wayneko.overrideAttrs { @@ -16,16 +17,17 @@ hash = ""; }; -in { +in +{ systemd.user.services.wayneko = { description = "Wayneko, as a systemd service"; # makes the graphical session start this service when it starts - wantedBy = ["graphical-session.target"]; + wantedBy = [ "graphical-session.target" ]; # when graphical session restarts or gets stopped, this also gets restarted/stopped. - partOf = ["graphical-session.target"]; + partOf = [ "graphical-session.target" ]; # gets started only after graphical session - after = ["graphical-session.target"]; + after = [ "graphical-session.target" ]; serviceConfig = { ExecStart = '' @@ -39,7 +41,7 @@ in { RestartSec = 1; TimeoutStopSec = 10; - CapabilityBoundingSet = [""]; + CapabilityBoundingSet = [ "" ]; DevicePolicy = "closed"; LockPersonality = true; MemoryDenyWriteExecute = true; @@ -65,7 +67,7 @@ in { RestrictRealTime = true; RestrictSUIDSGID = true; - SystemCallArchitectures = ["native"]; + SystemCallArchitectures = [ "native" ]; SystemCallFilter = "~@clock @cpu-emulation @debug @obsolete @module @mount @raw-io @reboot @swap @privileged"; }; diff --git a/modules/style/colors.mod.nix b/modules/style/colors.mod.nix index 8b6dcd9..344788d 100644 --- a/modules/style/colors.mod.nix +++ b/modules/style/colors.mod.nix @@ -9,10 +9,24 @@ config, lib, ... -}: let +}: +let inherit (lib.options) mkOption literalExpression; - inherit (lib.strings) toLower replaceStrings removePrefix hasPrefix isString; - inherit (lib.types) str nullOr enum mkOptionType attrsOf coercedTo; + inherit (lib.strings) + toLower + replaceStrings + removePrefix + hasPrefix + isString + ; + inherit (lib.types) + str + nullOr + enum + mkOptionType + attrsOf + coercedTo + ; cfg = config.modules.style; @@ -24,16 +38,24 @@ }; colorType = attrsOf (coercedTo str (removePrefix "#") hexColorType); - nameToSlug = name: toLower (replaceStrings [" "] ["-"] name); - getPaletteFromScheme = slug: - if builtins.pathExists ./palettes/${slug}.nix - then (import ./palettes/${slug}.nix).colorscheme.palette - else throw "The following colorscheme was imported but not found: ${slug}"; -in { + nameToSlug = name: toLower (replaceStrings [ " " ] [ "-" ] name); + getPaletteFromScheme = + slug: + if builtins.pathExists ./palettes/${slug}.nix then + (import ./palettes/${slug}.nix).colorscheme.palette + else + throw "The following colorscheme was imported but not found: ${slug}"; +in +{ options.modules.style = { colorScheme = { name = mkOption { - type = nullOr (enum ["Catppuccin Mocha" "Zenburn" "Black Metal Venom" "Gruvbox"]); + type = nullOr (enum [ + "Catppuccin Mocha" + "Zenburn" + "Black Metal Venom" + "Gruvbox" + ]); description = "The colorscheme that should be used globally to theme your system."; default = "Catppuccin Mocha"; }; @@ -83,11 +105,11 @@ in { }; variant = mkOption { - type = enum ["dark" "light"]; - default = - if builtins.substring 0 1 cfg.colorScheme.colors.base00 < "5" - then "dark" - else "light"; + type = enum [ + "dark" + "light" + ]; + default = if builtins.substring 0 1 cfg.colorScheme.colors.base00 < "5" then "dark" else "light"; description = '' Whether the scheme is dark or light ''; diff --git a/modules/style/fonts.mod.nix b/modules/style/fonts.mod.nix index 1e9ba57..dcde8b2 100644 --- a/modules/style/fonts.mod.nix +++ b/modules/style/fonts.mod.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: let +{ pkgs, ... }: +let inherit (builtins) mapAttrs; fancy-iosevka = pkgs.iosevka.override { @@ -40,7 +41,8 @@ }; set = "Fancy"; }; -in { +in +{ # A (somewhat) sane list of fonts to be installed. fonts = { fontconfig = { @@ -58,26 +60,26 @@ in { # Set the defalt fonts. This was taken from raf, # many thanks. - defaultFonts = let - common = [ - "Iosevka Nerd Font" - "Roboto Mono Nerd Font" - "Fira Code Nerd Font" - "Symbols Nerd Font" - "Noto Color Emoji" - "JetbrainsMono Nerd Font" - ]; - in + defaultFonts = + let + common = [ + "Iosevka Nerd Font" + "Roboto Mono Nerd Font" + "Fira Code Nerd Font" + "Symbols Nerd Font" + "Noto Color Emoji" + "JetbrainsMono Nerd Font" + ]; + in mapAttrs (_: fonts: fonts ++ common) { - serif = ["Noto Serif"]; - sansSerif = ["Lexend"]; - emoji = ["Noto Color Emoji"]; - monospace = ["Iosevka Nerd Font"]; + serif = [ "Noto Serif" ]; + sansSerif = [ "Lexend" ]; + emoji = [ "Noto Color Emoji" ]; + monospace = [ "Iosevka Nerd Font" ]; }; }; packages = builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) material-icons material-design-icons lexend @@ -88,8 +90,7 @@ in { corefonts font-awesome ; - inherit - (pkgs.nerd-fonts) + inherit (pkgs.nerd-fonts) iosevka jetbrains-mono comic-shanns-mono diff --git a/modules/style/gtk-colors.nix b/modules/style/gtk-colors.nix index b714eed..eed6ff9 100644 --- a/modules/style/gtk-colors.nix +++ b/modules/style/gtk-colors.nix @@ -1,6 +1,7 @@ # blatantly stolen from sioodmy, thanks :3 -{colors}: -with colors; '' +{ colors }: +with colors; +'' @define-color accent_color #${base0D}; @define-color accent_bg_color #${base0D}; @define-color accent_fg_color #${base00}; diff --git a/modules/style/gtk.mod.nix b/modules/style/gtk.mod.nix index 82a0aab..8be837b 100644 --- a/modules/style/gtk.mod.nix +++ b/modules/style/gtk.mod.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: let +}: +let inherit (builtins) toString isBool; inherit (lib.generators) toINI; inherit (lib.modules) mkIf; @@ -15,12 +16,12 @@ cfg = config.modules.theming.gtk; toGtk3Ini = toINI { - mkKeyValue = key: value: let - value' = - if isBool value - then boolToString value - else toString value; - in "${escape ["="] key}=${value'}"; + mkKeyValue = + key: value: + let + value' = if isBool value then boolToString value else toString value; + in + "${escape [ "=" ] key}=${value'}"; }; gtkIni = { @@ -34,7 +35,8 @@ gtk-cursor-theme-name = "BreezeX-RosePine-Linux"; gtk-theme-name = "Gruvbox-Dark"; }; -in { +in +{ options.modules.theming.gtk = { enable = mkEnableOption "Wether to enable GTK theming"; theme = { @@ -63,15 +65,15 @@ in { }; }; }; - config = let - cursorSize = 32; - in + config = + let + cursorSize = 32; + in mkIf cfg.enable { programs.dconf.enable = true; environment = { systemPackages = builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) rose-pine-cursor gruvbox-gtk-theme papirus-icon-theme @@ -83,31 +85,33 @@ in { XCURSOR_THEME = "BreezeX-RosePine-Linux"; XCURSOR_SIZE = cursorSize; }; - etc = let - css = import ./gtk-colors.nix {inherit (config.modules.style.colorScheme) colors;}; - in { - "xdg/gtk-4.0/settings.ini".text = toGtk3Ini { - Settings = gtkIni; - }; - "xdg/gtk-3.0/settings.ini".text = toGtk3Ini { - Settings = gtkIni; - }; - "xdg/gtk-4.0/gtk.css".text = css; - "xdg/gtk-3.0/gtk.css".text = css; + etc = + let + css = import ./gtk-colors.nix { inherit (config.modules.style.colorScheme) colors; }; + in + { + "xdg/gtk-4.0/settings.ini".text = toGtk3Ini { + Settings = gtkIni; + }; + "xdg/gtk-3.0/settings.ini".text = toGtk3Ini { + Settings = gtkIni; + }; + "xdg/gtk-4.0/gtk.css".text = css; + "xdg/gtk-3.0/gtk.css".text = css; - "xdg/gtk-2.0/gtkrc".text = '' - gtk-cursor-theme-name = BreezeX-RosePine-Linux - gtk-cursor-theme-size = ${toString cursorSize} - gtk-theme-name = ${cfg.theme.name} - gtk-icon-theme-name = ${cfg.iconTheme.name} - gtk-font-name = Lexend 11 - ''; + "xdg/gtk-2.0/gtkrc".text = '' + gtk-cursor-theme-name = BreezeX-RosePine-Linux + gtk-cursor-theme-size = ${toString cursorSize} + gtk-theme-name = ${cfg.theme.name} + gtk-icon-theme-name = ${cfg.iconTheme.name} + gtk-font-name = Lexend 11 + ''; - "xdg/Xresources".text = '' - Xcursor.size: ${toString cursorSize} - Xcursor.theme: BreezeX-RosePine-Linux - ''; - }; + "xdg/Xresources".text = '' + Xcursor.size: ${toString cursorSize} + Xcursor.theme: BreezeX-RosePine-Linux + ''; + }; }; }; } diff --git a/modules/style/qt.mod.nix b/modules/style/qt.mod.nix index 316c8cf..76769ed 100644 --- a/modules/style/qt.mod.nix +++ b/modules/style/qt.mod.nix @@ -3,13 +3,15 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption mkOption; inherit (lib.types) str package; cfg = config.modules.theming.qt; -in { +in +{ options.modules.theming.qt = { enable = mkEnableOption "qt theming"; name = mkOption { diff --git a/modules/style/quickshell/quickshell.mod.nix b/modules/style/quickshell/quickshell.mod.nix index cff3df9..5ab2e37 100644 --- a/modules/style/quickshell/quickshell.mod.nix +++ b/modules/style/quickshell/quickshell.mod.nix @@ -4,17 +4,19 @@ pkgs, sources, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.theming.quickshell; -in { +in +{ options.modules.theming.quickshell.enable = mkEnableOption "quickshell"; config = mkIf cfg.enable { environment.systemPackages = with pkgs; [ - (pkgs.callPackage (sources.quickshell + "/default.nix") {}) + (pkgs.callPackage (sources.quickshell + "/default.nix") { }) qt6.qtimageformats qt6.qt5compat qt6.qtmultimedia diff --git a/modules/style/quickshell/shell/.qmlls.ini b/modules/style/quickshell/shell/.qmlls.ini index dbd3d39..a780449 100644 --- a/modules/style/quickshell/shell/.qmlls.ini +++ b/modules/style/quickshell/shell/.qmlls.ini @@ -1 +1 @@ -/run/user/1000/quickshell/vfs/97b86fe3cbb42714790f5e96b44b706b/.qmlls.ini \ No newline at end of file +/run/user/1000/quickshell/vfs/4f7a8066a49ba487f5b2754750896151/.qmlls.ini \ No newline at end of file diff --git a/modules/system/boot/boot.mod.nix b/modules/system/boot/boot.mod.nix index 2aeeb1a..5c05cb8 100644 --- a/modules/system/boot/boot.mod.nix +++ b/modules/system/boot/boot.mod.nix @@ -3,13 +3,15 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkForce mkDefault; inherit (lib.options) mkOption mkEnableOption; inherit (lib.types) int; cfg = config.modules.system.boot; -in { +in +{ options.modules.system.boot = { grub.enable = mkEnableOption "Grub, a bloated boot loader"; systemd-boot.enable = mkEnableOption "Poetteringboot"; @@ -29,7 +31,8 @@ in { message = "No bootloader is enabled."; } { - assertion = cfg.systemd-boot.enable -> !cfg.grub.enable && cfg.grub.enable -> !cfg.systemd-boot.enable; + assertion = + cfg.systemd-boot.enable -> !cfg.grub.enable && cfg.grub.enable -> !cfg.systemd-boot.enable; message = "Please enable only ONE of systemd-boot or grub."; } ]; @@ -73,12 +76,11 @@ in { plymouth = { enable = true; themePackages = [ - (pkgs.adi1090x-plymouth-themes.override - { - selected_themes = [ - "hud_3" - ]; - }) + (pkgs.adi1090x-plymouth-themes.override { + selected_themes = [ + "hud_3" + ]; + }) ]; theme = "hud_3"; }; diff --git a/modules/system/boot/lanzaboote.mod.nix b/modules/system/boot/lanzaboote.mod.nix index 38797f0..574d89f 100644 --- a/modules/system/boot/lanzaboote.mod.nix +++ b/modules/system/boot/lanzaboote.mod.nix @@ -4,12 +4,14 @@ pkgs, sources, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.system.boot.lanzaboote; -in { +in +{ options.modules.system.boot.lanzaboote.enable = mkEnableOption "Lanzaboote"; imports = [ (sources.lanzaboote + "/nix/modules/lanzaboote.nix") @@ -29,6 +31,6 @@ in { loader.systemd-boot.enable = lib.mkForce false; }; - environment.systemPackages = [pkgs.sbctl]; + environment.systemPackages = [ pkgs.sbctl ]; }; } diff --git a/modules/system/hardware/bluetooth.mod.nix b/modules/system/hardware/bluetooth.mod.nix index 81a3255..ff68b93 100644 --- a/modules/system/hardware/bluetooth.mod.nix +++ b/modules/system/hardware/bluetooth.mod.nix @@ -3,19 +3,20 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkIf; cfg = config.modules.system.hardware.bluetooth; -in { +in +{ config = mkIf cfg.enable { hardware.bluetooth = { enable = true; inherit (cfg) powerOnBoot; }; environment.systemPackages = builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) bluetuith bluez blueman diff --git a/modules/system/hardware/graphics.mod.nix b/modules/system/hardware/graphics.mod.nix index 25e255e..ffd09ea 100644 --- a/modules/system/hardware/graphics.mod.nix +++ b/modules/system/hardware/graphics.mod.nix @@ -2,12 +2,14 @@ config, lib, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.system.hardware; -in { +in +{ options.modules.system.hardware = { nvidia = { enable = mkEnableOption "Nvidia graphics drivers"; @@ -32,6 +34,6 @@ in { package = config.boot.kernelPackages.nvidiaPackages.beta; }; }; - services.xserver.videoDrivers = mkIf cfg.nvidia.enable ["nvidia"]; + services.xserver.videoDrivers = mkIf cfg.nvidia.enable [ "nvidia" ]; }; } diff --git a/modules/system/hardware/intel.mod.nix b/modules/system/hardware/intel.mod.nix index ba82da7..863d9a3 100644 --- a/modules/system/hardware/intel.mod.nix +++ b/modules/system/hardware/intel.mod.nix @@ -3,19 +3,20 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkDefault mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.system.hardware.intel; -in { +in +{ options.modules.system.hardware.intel.enable = mkEnableOption "Intel Hardware"; config = mkIf cfg.enable { hardware = { cpu.intel.updateMicrocode = mkDefault config.hardware.enableRedistributableFirmware; graphics.extraPackages = builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) intel-vaapi-driver intel-media-driver ; diff --git a/modules/system/hardware/pipewire.mod.nix b/modules/system/hardware/pipewire.mod.nix index a18d3de..9a61f76 100644 --- a/modules/system/hardware/pipewire.mod.nix +++ b/modules/system/hardware/pipewire.mod.nix @@ -2,11 +2,13 @@ config, lib, ... -}: let +}: +let inherit (lib.modules) mkIf; cfg = config.modules.system.sound; -in { +in +{ config = mkIf cfg.enable { services.pipewire = { enable = true; diff --git a/modules/system/hardware/power.mod.nix b/modules/system/hardware/power.mod.nix index b73dd91..9d9c53d 100644 --- a/modules/system/hardware/power.mod.nix +++ b/modules/system/hardware/power.mod.nix @@ -4,23 +4,24 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkDefault; -in { +in +{ imports = [ # (sources.watt + "/nix/module.nix") ]; config = { environment.systemPackages = builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) acpi powertop ; }; boot = { - kernelModules = ["acpi_call"]; + kernelModules = [ "acpi_call" ]; extraModulePackages = with config.boot.kernelPackages; [ acpi_call cpupower diff --git a/modules/system/nix/determinate.mod.nix b/modules/system/nix/determinate.mod.nix index cab9547..74b7c72 100644 --- a/modules/system/nix/determinate.mod.nix +++ b/modules/system/nix/determinate.mod.nix @@ -4,9 +4,12 @@ pkgs, sources, ... -}: let - determinate = (import sources.flake-compat {src = sources.determinate;}).outputs; - dix = (import sources.flake-compat {src = determinate.inputs.nix;}).outputs.packages.${pkgs.stdenv.system}.nix; +}: +let + determinate = (import sources.flake-compat { src = sources.determinate; }).outputs; + dix = + (import sources.flake-compat { src = determinate.inputs.nix; }) + .outputs.packages.${pkgs.stdenv.system}.nix; # Stronger than mkDefault (1000), weaker than mkForce (50) and the "default override priority" # (100). @@ -14,7 +17,8 @@ # Stronger than the "default override priority", as the upstream module uses that, and weaker than mkForce (50). mkMorePreferable = lib.mkOverride 75; -in { +in +{ config = { nix = { package = dix; @@ -30,7 +34,9 @@ in { services.nix-daemon.serviceConfig = { ExecStart = [ "" - "@${determinate.packages.${pkgs.stdenv.system}.default}/bin/determinate-nixd determinate-nixd --nix-bin ${config.nix.package}/bin daemon" + "@${ + determinate.packages.${pkgs.stdenv.system}.default + }/bin/determinate-nixd determinate-nixd --nix-bin ${config.nix.package}/bin daemon" ]; KillMode = mkPreferable "process"; LimitNOFILE = mkMorePreferable 1048576; @@ -41,11 +47,14 @@ in { nix-daemon.socketConfig.FileDescriptorName = "nix-daemon.socket"; determinate-nixd = { description = "Determinate Nixd Daemon Socket"; - wantedBy = ["sockets.target"]; - before = ["multi-user.target"]; + wantedBy = [ "sockets.target" ]; + before = [ "multi-user.target" ]; unitConfig = { - RequiresMountsFor = ["/nix/store" "/nix/var/determinate"]; + RequiresMountsFor = [ + "/nix/store" + "/nix/var/determinate" + ]; }; socketConfig = { diff --git a/modules/system/nix/nix.mod.nix b/modules/system/nix/nix.mod.nix index 8cc3282..4ae7264 100644 --- a/modules/system/nix/nix.mod.nix +++ b/modules/system/nix/nix.mod.nix @@ -5,10 +5,12 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.attrsets) mapAttrsToList; inherit (lib.modules) mkForce; -in { +in +{ nix = { # Check that Nix can parse the generated nix.conf. checkConfig = true; @@ -46,7 +48,7 @@ in { # Automatically optimize nix store by removing hard links optimise = { automatic = true; - dates = ["21:00"]; + dates = [ "21:00" ]; }; # NOTE: @@ -62,10 +64,18 @@ in { auto-optimise-store = true; # Users that are allowed to connect to the Nix daemon. - allowed-users = ["root" "@wheel" "nix-builder"]; + allowed-users = [ + "root" + "@wheel" + "nix-builder" + ]; # Users that are allowed to connect to the Nix daemon. - trusted-users = ["root" "@wheel" "nix-builder"]; + trusted-users = [ + "root" + "@wheel" + "nix-builder" + ]; # Let the system decide the number of max jobs # based on available system specs. Usually this is diff --git a/modules/system/nix/nixpkgs.mod.nix b/modules/system/nix/nixpkgs.mod.nix index afff4f5..0f98f70 100644 --- a/modules/system/nix/nixpkgs.mod.nix +++ b/modules/system/nix/nixpkgs.mod.nix @@ -1,5 +1,6 @@ # taken from raf -{sources, ...}: { +{ sources, ... }: +{ # Global nixpkgs configuration. # This is ignored if nixpkgs.pkgs is set, which should be avoided. nixpkgs = { @@ -40,7 +41,7 @@ # List of derivation warnings to display while rebuilding. # See: - showDerivationWarnings = []; + showDerivationWarnings = [ ]; }; }; } diff --git a/modules/system/os/impermanence.mod.nix b/modules/system/os/impermanence.mod.nix index bc778e7..4125d44 100644 --- a/modules/system/os/impermanence.mod.nix +++ b/modules/system/os/impermanence.mod.nix @@ -4,12 +4,14 @@ lib, sources, ... -}: let +}: +let inherit (lib.modules) mkIf mkForce; inherit (builtins) map; cfg = config.modules.system.impermanence; -in { +in +{ imports = [ (sources.impermanence + "/nixos.nix") ]; @@ -41,20 +43,36 @@ in { ]; users.cr = { - directories = - [ - "cloud" - "repos" - ] - ++ map ( - dir: ".config/${dir}" - ) ["nicotine" "Signal" "Nextcloud" "emacs" "doom"] - ++ map ( - dir: ".cache/${dir}" - ) ["tealdeer" "keepassxc" "nix" "starship" "nix-index" "mozilla" "zsh" "nvim"] - ++ map ( - dir: ".local/share/${dir}" - ) ["direnv" "Steam" "TelegramDesktop" "PrismLauncher" "nicotine" "zoxide" ".keepass"]; + directories = [ + "cloud" + "repos" + ] + ++ map (dir: ".config/${dir}") [ + "nicotine" + "Signal" + "Nextcloud" + "emacs" + "doom" + ] + ++ map (dir: ".cache/${dir}") [ + "tealdeer" + "keepassxc" + "nix" + "starship" + "nix-index" + "mozilla" + "zsh" + "nvim" + ] + ++ map (dir: ".local/share/${dir}") [ + "direnv" + "Steam" + "TelegramDesktop" + "PrismLauncher" + "nicotine" + "zoxide" + ".keepass" + ]; }; }; diff --git a/modules/system/os/networking/dns.mod.nix b/modules/system/os/networking/dns.mod.nix index c42be83..ee19661 100644 --- a/modules/system/os/networking/dns.mod.nix +++ b/modules/system/os/networking/dns.mod.nix @@ -3,10 +3,12 @@ lib, pkgs, ... -}: let +}: +let StateDirectory = "dnscrypt-proxy"; inherit (lib.modules) mkForce; -in { +in +{ networking = { networkmanager.dns = mkForce "none"; nameservers = [ diff --git a/modules/system/os/networking/firewall.mod.nix b/modules/system/os/networking/firewall.mod.nix index a3e1182..f016940 100644 --- a/modules/system/os/networking/firewall.mod.nix +++ b/modules/system/os/networking/firewall.mod.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: { +}: +{ networking = { # use nftables over iptables nftables.enable = true; diff --git a/modules/system/os/networking/networking.mod.nix b/modules/system/os/networking/networking.mod.nix index ee58659..627919c 100644 --- a/modules/system/os/networking/networking.mod.nix +++ b/modules/system/os/networking/networking.mod.nix @@ -1,6 +1,8 @@ -{config, ...}: let +{ config, ... }: +let inherit (config.modules.other.system) username; -in { +in +{ networking = { enableIPv6 = true; @@ -40,7 +42,7 @@ in { openFirewall = true; }; - users.users.${username}.extraGroups = ["networkmanager"]; + users.users.${username}.extraGroups = [ "networkmanager" ]; # faster boot systemd = { diff --git a/modules/system/os/security/security.mod.nix b/modules/system/os/security/security.mod.nix index 06e0a7a..0525506 100644 --- a/modules/system/os/security/security.mod.nix +++ b/modules/system/os/security/security.mod.nix @@ -1,11 +1,12 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ security = { # Enable Soteria, a GTK-based Polkit authentication agent. soteria.enable = true; apparmor = { enable = true; killUnconfinedConfinables = true; - packages = [pkgs.apparmor-profiles]; + packages = [ pkgs.apparmor-profiles ]; }; pam.services = { diff --git a/modules/system/os/security/sudo.mod.nix b/modules/system/os/security/sudo.mod.nix index 30b3b2b..8e4ce07 100644 --- a/modules/system/os/security/sudo.mod.nix +++ b/modules/system/os/security/sudo.mod.nix @@ -2,16 +2,18 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkForce mkDefault; -in { +in +{ security = { sudo-rs.enable = mkForce false; sudo = { enable = true; # We use the default sudo package, but with insults if we # fail to provide the correct password - package = pkgs.sudo.override {withInsults = true;}; + package = pkgs.sudo.override { withInsults = true; }; # Wheel user should need the password to execute sudo commands wheelNeedsPassword = mkDefault true; diff --git a/modules/system/os/systemd.mod.nix b/modules/system/os/systemd.mod.nix index d1c15d5..2e407a6 100644 --- a/modules/system/os/systemd.mod.nix +++ b/modules/system/os/systemd.mod.nix @@ -1,11 +1,13 @@ -{lib, ...}: let +{ lib, ... }: +let inherit (lib.modules) mkForce; -in { +in +{ config.systemd = { # faster startup - targets.network-online.wantedBy = mkForce []; # Normally ["multi-user.target"] + targets.network-online.wantedBy = mkForce [ ]; # Normally ["multi-user.target"] services = { - NetworkManager-wait-online.wantedBy = mkForce []; # Normally ["network-online.target"] + NetworkManager-wait-online.wantedBy = mkForce [ ]; # Normally ["network-online.target"] systemd-udev-settle.enable = false; }; }; diff --git a/modules/system/system.mod.nix b/modules/system/system.mod.nix index 3a8451e..1f4b7cf 100644 --- a/modules/system/system.mod.nix +++ b/modules/system/system.mod.nix @@ -1,6 +1,8 @@ -{config, ...}: let +{ config, ... }: +let machine-id = builtins.substring 0 32 (builtins.hashString "sha256" config.networking.hostName); -in { +in +{ system = { # My state version. stateVersion = "23.11"; diff --git a/modules/wms/niri/niri.mod.nix b/modules/wms/niri/niri.mod.nix index 320f273..e9a714c 100644 --- a/modules/wms/niri/niri.mod.nix +++ b/modules/wms/niri/niri.mod.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkForce mkIf; inherit (lib.options) mkEnableOption; inherit (config.modules.system) isGraphical; @@ -27,31 +28,28 @@ }) ]; }); -in { +in +{ options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor"; - config = - mkIf (cfg.enable - || isGraphical) - { - programs.niri = { - enable = true; - package = patched-niri; - }; - # The niri module auto enables the gnome keyring, - # which is something I direly want to avoid. - services.gnome.gnome-keyring.enable = mkForce false; - - environment.etc."niri/config.kdl".source = ./config.kdl; - - environment.systemPackages = builtins.attrValues { - inherit - (pkgs) - xwayland-satellite - avizo - playerctl - wl-clipboard - ; - }; + config = mkIf (cfg.enable || isGraphical) { + programs.niri = { + enable = true; + package = patched-niri; }; + # The niri module auto enables the gnome keyring, + # which is something I direly want to avoid. + services.gnome.gnome-keyring.enable = mkForce false; + + environment.etc."niri/config.kdl".source = ./config.kdl; + + environment.systemPackages = builtins.attrValues { + inherit (pkgs) + xwayland-satellite + avizo + playerctl + wl-clipboard + ; + }; + }; } diff --git a/modules/wms/portal.mod.nix b/modules/wms/portal.mod.nix index e37949e..a7c47d9 100644 --- a/modules/wms/portal.mod.nix +++ b/modules/wms/portal.mod.nix @@ -3,10 +3,12 @@ lib, pkgs, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.lists) optional; -in { +in +{ xdg.portal = { enable = true; # Sets environment variable NIXOS_XDG_OPEN_USE_PORTAL to 1. @@ -26,7 +28,7 @@ in { "org.freedesktop.impl.portal.Secret" = [ "kwallet" ]; - "org.freedesktop.secrets" = ["kwalletd6"]; + "org.freedesktop.secrets" = [ "kwalletd6" ]; }; niri = { default = [ @@ -38,7 +40,7 @@ in { # https://docs.flatpak.org/en/latest/portal-api-reference.html # "org.freedesktop.impl.portal.Access" = ["kde"]; # "org.freedesktop.impl.portal.Notification" = ["kde"]; - "org.freedesktop.impl.portal.FileChooser" = ["kde"]; + "org.freedesktop.impl.portal.FileChooser" = [ "kde" ]; }; }; }; diff --git a/modules/wms/variables.mod.nix b/modules/wms/variables.mod.nix index efcb13a..e7aabfc 100644 --- a/modules/wms/variables.mod.nix +++ b/modules/wms/variables.mod.nix @@ -2,12 +2,14 @@ config, lib, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.wms.wayland; -in { +in +{ options.modules.wms.wayland.enable = mkEnableOption "wayland"; config = mkIf true { environment.variables = { diff --git a/packages/default.nix b/packages/default.nix index 7d10d8d..c1ab3bb 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -2,12 +2,19 @@ inputs, pkgs, sources, -}: let +}: +let inherit (pkgs) lib; - helix = pkgs.callPackage ./helix {}; - kakoune = pkgs.callPackage ./kakoune.nix {}; - fish = pkgs.callPackage ./fish {inherit lib;}; - nushell = pkgs.callPackage ./nushell {}; -in { - inherit kakoune fish helix nushell; + helix = pkgs.callPackage ./helix { }; + kakoune = pkgs.callPackage ./kakoune.nix { }; + fish = pkgs.callPackage ./fish { inherit lib; }; + nushell = pkgs.callPackage ./nushell { }; +in +{ + inherit + kakoune + fish + helix + nushell + ; } diff --git a/packages/fish/aliases.nix b/packages/fish/aliases.nix index 13bedee..e200f6c 100644 --- a/packages/fish/aliases.nix +++ b/packages/fish/aliases.nix @@ -1,6 +1,8 @@ -{pkgs, ...}: let +{ pkgs, ... }: +let inherit (pkgs.lib) getExe; -in { +in +{ ls = "${getExe pkgs.eza} --icons=never"; la = "${getExe pkgs.eza} --icons=never -lha --git"; diff --git a/packages/fish/default.nix b/packages/fish/default.nix index 6d0faa6..8b09cfb 100644 --- a/packages/fish/default.nix +++ b/packages/fish/default.nix @@ -1,14 +1,15 @@ # This shell setup was originally inspired by sioodmy. # Some further cool tricks, like using vendor_conf.d to avoid having # to build fish myself, are taken from viperml's setup. -{pkgs, ...}: let +{ pkgs, ... }: +let inherit (pkgs) lib; inherit (lib.strings) concatStringsSep; inherit (lib.attrsets) mapAttrsToList; - toml = pkgs.formats.toml {}; + toml = pkgs.formats.toml { }; starship-config = import ./starship.nix; - aliases = import ./aliases.nix {inherit pkgs;}; + aliases = import ./aliases.nix { inherit pkgs; }; vendorConf = "share/fish/vendor_conf.d"; fishinit = import ./fishinit.nix { @@ -19,27 +20,25 @@ ; }; - aliasesStr = - mapAttrsToList (k: v: "alias ${k}=\"${v}\"") aliases - |> concatStringsSep "\n"; + aliasesStr = mapAttrsToList (k: v: "alias ${k}=\"${v}\"") aliases |> concatStringsSep "\n"; packages = import ./packages.nix pkgs; in - (pkgs.symlinkJoin { - name = "fish"; - paths = [pkgs.fish] ++ packages; - nativeBuildInputs = [pkgs.makeWrapper]; - postBuild = '' - wrapProgram $out/bin/fish \ - --set STARSHIP_CONFIG "${toml.generate "starship.toml" starship-config}" \ - --prefix XDG_DATA_DIRS : "${ - lib.makeSearchPathOutput "out" "share" [ - fishinit - ] - }" - ''; - }) - .overrideAttrs (_: { +(pkgs.symlinkJoin { + name = "fish"; + paths = [ pkgs.fish ] ++ packages; + nativeBuildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/fish \ + --set STARSHIP_CONFIG "${toml.generate "starship.toml" starship-config}" \ + --prefix XDG_DATA_DIRS : "${ + lib.makeSearchPathOutput "out" "share" [ + fishinit + ] + }" + ''; +}).overrideAttrs + (_: { passthru = { shellPath = "/bin/fish"; }; diff --git a/packages/fish/fishinit.nix b/packages/fish/fishinit.nix index 760a08a..b818cce 100644 --- a/packages/fish/fishinit.nix +++ b/packages/fish/fishinit.nix @@ -4,31 +4,31 @@ vendorConf, }: pkgs.writeTextDir "${vendorConf}/blox_config.fish" -# fish -'' - # source ${pkgs.fishPlugins.sponge}/share/zsh-defer/zsh-defer.plugin.zsh - ${pkgs.atuin}/bin/atuin init fish | source - bind up _atuin_bind_up + # fish + '' + # source ${pkgs.fishPlugins.sponge}/share/zsh-defer/zsh-defer.plugin.zsh + ${pkgs.atuin}/bin/atuin init fish | source + bind up _atuin_bind_up - ${pkgs.zoxide}/bin/zoxide init fish | source - # abbr --erase cd &>/dev/null - # alias cd=__zoxide_z + ${pkgs.zoxide}/bin/zoxide init fish | source + # abbr --erase cd &>/dev/null + # alias cd=__zoxide_z - # abbr --erase ci &>/dev/null - # alias ci=__zoxide_zi + # abbr --erase ci &>/dev/null + # alias ci=__zoxide_zi - ${pkgs.starship}/bin/starship init fish | source - ${pkgs.direnv}/bin/direnv hook fish | source - ${pkgs.pay-respects}/bin/pay-respects fish --alias f --nocnf | source + ${pkgs.starship}/bin/starship init fish | source + ${pkgs.direnv}/bin/direnv hook fish | source + ${pkgs.pay-respects}/bin/pay-respects fish --alias f --nocnf | source - # I need to source /etc/profile using foreign-env, to get stuff set by nixos, e.g. environment.systemVariables. - # set -p fish_function_path ${pkgs.fishPlugins.foreign-env}/share/fish/vendor_functions.d + # I need to source /etc/profile using foreign-env, to get stuff set by nixos, e.g. environment.systemVariables. + # set -p fish_function_path ${pkgs.fishPlugins.foreign-env}/share/fish/vendor_functions.d - # fenv source /etc/profile + # fenv source /etc/profile - source ${./config.fish} + source ${./config.fish} - ${aliasesStr} -'' + ${aliasesStr} + '' diff --git a/packages/fish/packages.nix b/packages/fish/packages.nix index f4be9ad..3a3aacb 100644 --- a/packages/fish/packages.nix +++ b/packages/fish/packages.nix @@ -1,7 +1,6 @@ pkgs: builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) # better cd zoxide # pipe viewer diff --git a/packages/fish/starship.nix b/packages/fish/starship.nix index 915a0d4..dec32be 100644 --- a/packages/fish/starship.nix +++ b/packages/fish/starship.nix @@ -14,44 +14,110 @@ docker_context.symbol = " "; elixir.symbol = " "; elm.symbol = " "; - fennel = {symbol = " ";}; - fossil_branch = {symbol = " ";}; - gcloud = {symbol = " ";}; - git_branch = {symbol = " ";}; - git_commit = {tag_symbol = "  ";}; + fennel = { + symbol = " "; + }; + fossil_branch = { + symbol = " "; + }; + gcloud = { + symbol = " "; + }; + git_branch = { + symbol = " "; + }; + git_commit = { + tag_symbol = "  "; + }; golang.symbol = " "; - gradle = {symbol = " ";}; - guix_shell = {symbol = " ";}; - haskell = {symbol = " ";}; - haxe = {symbol = " ";}; - hg_branch = {symbol = " ";}; - hostname = {ssh_symbol = " ";}; - java = {symbol = " ";}; - julia = {symbol = " ";}; - kotlin = {symbol = " ";}; - lua = {symbol = " ";}; - memory_usage = {symbol = "󰍛 ";}; - meson = {symbol = "󰔷 ";}; - nim = {symbol = "󰆥 ";}; - nix_shell = {symbol = " ";}; - nodejs = {symbol = " ";}; - ocaml = {symbol = " ";}; + gradle = { + symbol = " "; + }; + guix_shell = { + symbol = " "; + }; + haskell = { + symbol = " "; + }; + haxe = { + symbol = " "; + }; + hg_branch = { + symbol = " "; + }; + hostname = { + ssh_symbol = " "; + }; + java = { + symbol = " "; + }; + julia = { + symbol = " "; + }; + kotlin = { + symbol = " "; + }; + lua = { + symbol = " "; + }; + memory_usage = { + symbol = "󰍛 "; + }; + meson = { + symbol = "󰔷 "; + }; + nim = { + symbol = "󰆥 "; + }; + nix_shell = { + symbol = " "; + }; + nodejs = { + symbol = " "; + }; + ocaml = { + symbol = " "; + }; os = { symbols = { Linux = " "; NixOS = " "; }; }; - package = {symbol = "󰏗 ";}; - perl = {symbol = " ";}; - php = {symbol = " ";}; - pijul_channel = {symbol = " ";}; - pixi = {symbol = "󰏗 ";}; - python = {symbol = " ";}; - rlang = {symbol = "󰟔 ";}; - ruby = {symbol = " ";}; - rust = {symbol = "󱘗 ";}; - scala = {symbol = " ";}; - swift = {symbol = " ";}; - zig = {symbol = " ";}; + package = { + symbol = "󰏗 "; + }; + perl = { + symbol = " "; + }; + php = { + symbol = " "; + }; + pijul_channel = { + symbol = " "; + }; + pixi = { + symbol = "󰏗 "; + }; + python = { + symbol = " "; + }; + rlang = { + symbol = "󰟔 "; + }; + ruby = { + symbol = " "; + }; + rust = { + symbol = "󱘗 "; + }; + scala = { + symbol = " "; + }; + swift = { + symbol = " "; + }; + zig = { + symbol = " "; + }; } diff --git a/packages/helix/colorscheme.nix b/packages/helix/colorscheme.nix index b90f7c4..4aa1f86 100644 --- a/packages/helix/colorscheme.nix +++ b/packages/helix/colorscheme.nix @@ -1,4 +1,4 @@ { inherits = "gruvbox_dark_hard"; - "ui.background" = {}; + "ui.background" = { }; } diff --git a/packages/helix/default.nix b/packages/helix/default.nix index d1f0938..2409a1c 100644 --- a/packages/helix/default.nix +++ b/packages/helix/default.nix @@ -38,12 +38,12 @@ vscode-langservers-extracted, zls, ... -}: let +}: +let inherit (lib.meta) getExe; - custom-helix = - helix.overrideAttrs - (finalAttrs: previousAttrs: { + custom-helix = helix.overrideAttrs ( + finalAttrs: previousAttrs: { version = "25.07.2"; src = fetchzip { url = "https://github.com/bloxx12/helix/releases/download/${finalAttrs.version}/helix-${finalAttrs.version}-source.tar.xz"; @@ -57,11 +57,12 @@ inherit (custom-helix) src; hash = "sha256-3poZSvIrkx8lguxxDeNfngW6+4hH8TV/LHcZx5W5aXg="; }; - }); + } + ); - toml = formats.toml {}; + toml = formats.toml { }; - helix-languages = callPackage ./languages.nix {inherit lib sources;}; + helix-languages = callPackage ./languages.nix { inherit lib sources; }; colorscheme = toml.generate "colorscheme.toml" (import ./colorscheme.nix); helix-config = { @@ -97,10 +98,25 @@ select = "underline"; }; statusline = { - left = ["spinner" "version-control" "diagnostics" "file-name"]; - right = ["file-base-name" "file-type" "position" "file-encoding"]; + left = [ + "spinner" + "version-control" + "diagnostics" + "file-name" + ]; + right = [ + "file-base-name" + "file-type" + "position" + "file-encoding" + ]; }; - gutters.layout = ["diff" "diagnostics" "line-numbers" "spacer"]; + gutters.layout = [ + "diff" + "diagnostics" + "line-numbers" + "spacer" + ]; inline-diagnostics = { cursor-line = "hint"; other-lines = "error"; @@ -109,17 +125,29 @@ keys = { normal = { space = { - g = [":new" ":insert-output XDG_CONFIG_HOME=~/.config ${getExe lazygit}" ":buffer-close!" ":redraw"]; + g = [ + ":new" + ":insert-output XDG_CONFIG_HOME=~/.config ${getExe lazygit}" + ":buffer-close!" + ":redraw" + ]; i = ":toggle lsp.display-inlay-hints"; }; - esc = ["collapse_selection" "keep_primary_selection" "normal_mode"]; + esc = [ + "collapse_selection" + "keep_primary_selection" + "normal_mode" + ]; A-H = "goto_previous_buffer"; A-L = "goto_next_buffer"; A-w = ":buffer-close"; A-f = ":format"; A-r = ":reload"; A-x = "extend_to_line_bounds"; - X = ["extend_line_up" "extend_to_line_bounds"]; + X = [ + "extend_line_up" + "extend_to_line_bounds" + ]; ";" = "flip_selections"; "A-;" = "collapse_selection"; @@ -131,8 +159,13 @@ }; select = { A-x = "extend_to_line_bounds"; - X = ["extend_line_up" "extend_to_line_bounds"]; - g = {e = "goto_file_end";}; + X = [ + "extend_line_up" + "extend_to_line_bounds" + ]; + g = { + e = "goto_file_end"; + }; }; }; }; @@ -173,7 +206,7 @@ # zig language server zls ]; - nativeBuildInputs = [makeWrapper]; + nativeBuildInputs = [ makeWrapper ]; postBuild = '' mkdir -p $out/config/helix/themes cp "${toml.generate "config.toml" helix-config}" $out/config/helix/config.toml @@ -184,4 +217,4 @@ ''; }; in - wrapped-helix +wrapped-helix diff --git a/packages/helix/languages.nix b/packages/helix/languages.nix index 6e5d1b3..00b457f 100644 --- a/packages/helix/languages.nix +++ b/packages/helix/languages.nix @@ -22,12 +22,13 @@ vscode-langservers-extracted, zls, ... -}: let +}: +let inherit (lib.meta) getExe getExe'; - toml = formats.toml {}; + toml = formats.toml { }; - nixfmt = callPackage "${sources.nixfmt}/default.nix" {}; + nixfmt = callPackage "${sources.nixfmt}/default.nix" { }; # a newer nil version, for pipes support. new-nil = nil.overrideAttrs (_: { @@ -48,129 +49,157 @@ }; }); - new-deadnix = deadnix.overrideAttrs (finalAttrs: previousAttrs: { - version = "unstable-15-07-2025"; - src = fetchFromGitHub { - owner = "astro"; - repo = "deadnix"; - rev = "d75457b95d7cfa82fcd60970939f76fccfce19e5"; - hash = "sha256-O/z2neAXL8JNkGosvxC+DyZnnJ8zYP9XHApxHVmlzfY="; - }; - - doInstallCheck = false; - - cargoDeps = rustPlatform.fetchCargoVendor { - inherit (new-deadnix) src; - hash = "sha256-O8yhqyPflOvQXAA19k1XpbrHysgV5VNWLBX0l5Q5GkM="; - }; - }); - helix-languages = { - language = let - mark = lang: { - command = getExe deno; - args = ["fmt" "-" "--ext" lang]; + new-deadnix = deadnix.overrideAttrs ( + finalAttrs: previousAttrs: { + version = "unstable-15-07-2025"; + src = fetchFromGitHub { + owner = "astro"; + repo = "deadnix"; + rev = "d75457b95d7cfa82fcd60970939f76fccfce19e5"; + hash = "sha256-O/z2neAXL8JNkGosvxC+DyZnnJ8zYP9XHApxHVmlzfY="; }; - in [ - { - name = "bash"; - auto-format = true; - formatter = { - command = getExe shfmt; - args = ["-i" "2"]; - }; - } - { - name = "clojure"; - injection-regex = "(clojure|clj|edn|boot|yuck)"; - file-types = ["clj" "cljs" "cljc" "clje" "cljr" "cljx" "edn" "boot" "yuck"]; - } - { - name = "cmake"; - auto-format = true; - language-servers = ["cmake-language-server"]; - formatter = { - command = getExe cmake-format; - args = ["-"]; - }; - } - { - name = "javascript"; - auto-format = true; - language-servers = ["dprint" "typescript-language-server"]; - } - { - name = "json"; - formatter = mark "json"; - } - { - name = "markdown"; - auto-format = true; - formatter = mark "md"; - language-servers = ["taplo"]; - } - { - name = "nix"; - language-servers = ["nil"]; - } - { - name = "qml"; - language-servers = ["qmlls"]; - } - { - name = "python"; - auto-format = true; - language-servers = [ - "basedpyright" - "ruff" - ]; - } - { - name = "typescript"; - auto-format = true; - language-servers = ["dprint" "typescript-language-server"]; - } - { - name = "rust"; - } - { - name = "c"; - auto-format = true; - language-servers = ["clangd"]; - } - { - name = "zig"; - auto-format = true; - } - { - name = "c"; - debugger = { - name = "gdb"; - command = getExe gdb; - transport = "stdio"; - templates = [ - { - name = "binary"; - request = "launch"; - completion = [ - { - name = "binary"; - completion = "filename"; - } - ]; - args = { - program = "{0}"; - runInTerminal = true; - }; - } + + doInstallCheck = false; + + cargoDeps = rustPlatform.fetchCargoVendor { + inherit (new-deadnix) src; + hash = "sha256-O8yhqyPflOvQXAA19k1XpbrHysgV5VNWLBX0l5Q5GkM="; + }; + } + ); + helix-languages = { + language = + let + mark = lang: { + command = getExe deno; + args = [ + "fmt" + "-" + "--ext" + lang ]; }; - } - ]; + in + [ + { + name = "bash"; + auto-format = true; + formatter = { + command = getExe shfmt; + args = [ + "-i" + "2" + ]; + }; + } + { + name = "clojure"; + injection-regex = "(clojure|clj|edn|boot|yuck)"; + file-types = [ + "clj" + "cljs" + "cljc" + "clje" + "cljr" + "cljx" + "edn" + "boot" + "yuck" + ]; + } + { + name = "cmake"; + auto-format = true; + language-servers = [ "cmake-language-server" ]; + formatter = { + command = getExe cmake-format; + args = [ "-" ]; + }; + } + { + name = "javascript"; + auto-format = true; + language-servers = [ + "dprint" + "typescript-language-server" + ]; + } + { + name = "json"; + formatter = mark "json"; + } + { + name = "markdown"; + auto-format = true; + formatter = mark "md"; + language-servers = [ "taplo" ]; + } + { + name = "nix"; + language-servers = [ "nil" ]; + } + { + name = "qml"; + language-servers = [ "qmlls" ]; + } + { + name = "python"; + auto-format = true; + language-servers = [ + "basedpyright" + "ruff" + ]; + } + { + name = "typescript"; + auto-format = true; + language-servers = [ + "dprint" + "typescript-language-server" + ]; + } + { + name = "rust"; + } + { + name = "c"; + auto-format = true; + language-servers = [ "clangd" ]; + } + { + name = "zig"; + auto-format = true; + } + { + name = "c"; + debugger = { + name = "gdb"; + command = getExe gdb; + transport = "stdio"; + templates = [ + { + name = "binary"; + request = "launch"; + completion = [ + { + name = "binary"; + completion = "filename"; + } + ]; + args = { + program = "{0}"; + runInTerminal = true; + }; + } + ]; + }; + } + ]; language-server = { bash-language-server = { command = getExe bash-language-server; - args = ["start"]; + args = [ "start" ]; }; rust-analyzer = { @@ -186,7 +215,15 @@ }; check = { command = "clippy"; - extraArgs = ["--" "-W" "clippy::pedantic" "-W" "clippy::nursery" "-W" "clippy::perf"]; + extraArgs = [ + "--" + "-W" + "clippy::pedantic" + "-W" + "clippy::nursery" + "-W" + "clippy::perf" + ]; }; lens = { references = true; @@ -200,7 +237,7 @@ clangd = { command = "${clang-tools}/bin/clangd"; - clangd.fallbackFlags = ["-std=c++2b"]; + clangd.fallbackFlags = [ "-std=c++2b" ]; }; cmake-language-server = { @@ -209,7 +246,7 @@ deno-lsp = { command = getExe deno; - args = ["lsp"]; + args = [ "lsp" ]; environment.NO_COLOR = "1"; config.deno = { enable = true; @@ -217,7 +254,9 @@ unstable = true; suggest = { completeFunctionCalls = false; - imports = {hosts."https://deno.land" = true;}; + imports = { + hosts."https://deno.land" = true; + }; }; inlayHints = { enumMemberValues.enabled = true; @@ -231,13 +270,13 @@ }; dprint = { command = getExe dprint; - args = ["lsp"]; + args = [ "lsp" ]; }; nil = { command = getExe new-nil; config.nil = { - formatting.command = ["${getExe nixfmt}"]; + formatting.command = [ "${getExe nixfmt}" ]; diagnostics = { bindingEndHintMinLines = 3; }; @@ -254,7 +293,7 @@ typescript-language-server = { command = getExe typescript-language-server; - args = ["--stdio"]; + args = [ "--stdio" ]; config = { typescript-language-server.source = { addMissingImports.ts = true; @@ -267,18 +306,18 @@ }; ruff = { command = getExe ruff; - args = ["server"]; + args = [ "server" ]; }; qmlls = { command = getExe' kdePackages.qtdeclarative "qmlls"; - args = ["-E"]; + args = [ "-E" ]; }; basedpyright.command = "${basedpyright}/bin/basedpyright-langserver"; vscode-css-language-server = { command = "${vscode-langservers-extracted}/bin/vscode-css-language-server"; - args = ["--stdio"]; + args = [ "--stdio" ]; config = { provideFormatter = true; css.validate.enable = true; @@ -289,7 +328,11 @@ command = getExe zls; config = { enable_build_on_save = true; - build_on_save_args = ["check" "-fincremental" "--watch"]; + build_on_save_args = [ + "check" + "-fincremental" + "--watch" + ]; enable_autofix = false; warn_style = true; highlight_global_var_declarations = true; @@ -298,4 +341,4 @@ }; }; in - toml.generate "languages.toml" helix-languages +toml.generate "languages.toml" helix-languages diff --git a/packages/kakoune.nix b/packages/kakoune.nix index aa51912..73fde0b 100644 --- a/packages/kakoune.nix +++ b/packages/kakoune.nix @@ -5,7 +5,8 @@ symlinkJoin, kakounePlugins, ... -}: let +}: +let custom-kakoune = stdenv.mkDerivation { name = "custom-kakoune"; src = fetchFromGitHub { @@ -15,7 +16,10 @@ hash = "sha256-+xqJrJr6nnmEpQaizQ3JMDEISCD8IMB84NJZiXJ74kY="; }; - makeFlags = ["debug=no" "PREFIX=${placeholder "out"}"]; + makeFlags = [ + "debug=no" + "PREFIX=${placeholder "out"}" + ]; enableParallellBuilding = true; @@ -32,13 +36,13 @@ ''; }; plugins = builtins.attrValues { - inherit (kakounePlugins); + inherit (kakounePlugins) ; }; kakoune-wrapped = symlinkJoin { name = "kakoune-wrapped"; - nativeBuildInputs = [makeWrapper]; - paths = [custom-kakoune] ++ plugins; + nativeBuildInputs = [ makeWrapper ]; + paths = [ custom-kakoune ] ++ plugins; postBuild = '' # create a directory for bins that kakoune needs @@ -62,4 +66,4 @@ ''; }; in - kakoune-wrapped +kakoune-wrapped diff --git a/packages/nushell/default.nix b/packages/nushell/default.nix index b8e29b7..d01a589 100644 --- a/packages/nushell/default.nix +++ b/packages/nushell/default.nix @@ -1,44 +1,45 @@ -{pkgs, ...}: let +{ pkgs, ... }: +let inherit (pkgs) lib; inherit (lib.meta) getExe; nu-config = pkgs.writeText "nu-init" - # nu - '' - #!/usr/bin/env nu - source ${./config.nu} - source ${./prompt.nu} + # nu + '' + #!/usr/bin/env nu + source ${./config.nu} + source ${./prompt.nu} - let autoload_dir = $nu.user-autoload-dirs.0 - mkdir $autoload_dir + let autoload_dir = $nu.user-autoload-dirs.0 + mkdir $autoload_dir - let zoxide_path = $autoload_dir | path join zoxide.nu - if not ($zoxide_path | path exists) { - ${getExe pkgs.zoxide} init nushell --cmd cd | save -f $zoxide_path - } - # Atuin is too slow, sadly. - # let atuin_path = $autoload_dir | path join atuin.nu - # if not ($atuin_path | path exists) { - # ${getExe pkgs.atuin} init nu | save -f $atuin_path - # } - let carapace_path = $autoload_dir | path join carapace.nu - if not ($carapace_path | path exists) { - ${getExe pkgs.carapace} _carapace nushell | save -f $carapace_path - } - ''; + let zoxide_path = $autoload_dir | path join zoxide.nu + if not ($zoxide_path | path exists) { + ${getExe pkgs.zoxide} init nushell --cmd cd | save -f $zoxide_path + } + # Atuin is too slow, sadly. + # let atuin_path = $autoload_dir | path join atuin.nu + # if not ($atuin_path | path exists) { + # ${getExe pkgs.atuin} init nu | save -f $atuin_path + # } + let carapace_path = $autoload_dir | path join carapace.nu + if not ($carapace_path | path exists) { + ${getExe pkgs.carapace} _carapace nushell | save -f $carapace_path + } + ''; packages = import ./packages.nix pkgs; in - (pkgs.symlinkJoin { - name = "nushell"; - paths = [pkgs.nushell] ++ packages; - nativeBuildInputs = [pkgs.makeWrapper]; - postBuild = '' - wrapProgram $out/bin/nu --add-flags "\ - --config ${nu-config}" - ''; - }) - .overrideAttrs (_: { +(pkgs.symlinkJoin { + name = "nushell"; + paths = [ pkgs.nushell ] ++ packages; + nativeBuildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/nu --add-flags "\ + --config ${nu-config}" + ''; +}).overrideAttrs + (_: { passthru = { shellPath = "/bin/nu"; }; diff --git a/packages/nushell/packages.nix b/packages/nushell/packages.nix index 3732db4..cea8418 100644 --- a/packages/nushell/packages.nix +++ b/packages/nushell/packages.nix @@ -1,7 +1,6 @@ pkgs: builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) # better cd zoxide # pipe viewer diff --git a/templates/rust/default.nix b/templates/rust/default.nix index 69ea5e5..3d6c889 100644 --- a/templates/rust/default.nix +++ b/templates/rust/default.nix @@ -1,4 +1,4 @@ -{rustPlatform}: +{ rustPlatform }: rustPlatform.buildRustPackage { pname = "some-rust-package"; version = "0.0.1"; diff --git a/templates/rust/flake.nix b/templates/rust/flake.nix index 738ae57..c535237 100644 --- a/templates/rust/flake.nix +++ b/templates/rust/flake.nix @@ -5,20 +5,22 @@ systems.url = "github:nix-systems/default-linux"; }; - outputs = inputs: let - inherit (inputs.nixpkgs) lib; - inherit (lib.attrsets) genAttrs mapAttrs; + outputs = + inputs: + let + inherit (inputs.nixpkgs) lib; + inherit (lib.attrsets) genAttrs mapAttrs; - eachSystem = genAttrs (import inputs.systems); - pkgsFor = inputs.nixpkgs.legacyPackages; - in { - packages = eachSystem (system: { - default = inputs.self.packages.${system}.ralc; - ralc = pkgsFor.${system}.callPackage ./nix/package.nix {}; - }); + eachSystem = genAttrs (import inputs.systems); + pkgsFor = inputs.nixpkgs.legacyPackages; + in + { + packages = eachSystem (system: { + default = inputs.self.packages.${system}.ralc; + ralc = pkgsFor.${system}.callPackage ./nix/package.nix { }; + }); - devShells = - mapAttrs (system: pkgs: { + devShells = mapAttrs (system: pkgs: { default = pkgs.mkShell { packages = with pkgs; [ cargo @@ -29,7 +31,6 @@ rustPackages.clippy ]; }; - }) - pkgsFor; - }; + }) pkgsFor; + }; }