From 50044b7a87bc9f59452855a96a2013c9b000a0a1 Mon Sep 17 00:00:00 2001 From: scouckel Date: Thu, 2 Apr 2026 20:49:34 -0400 Subject: big work done --- modules/core/createHost.nix | 94 ----------------------- modules/hosts/tiamat/tiamat.nix | 48 +++++++++++- modules/lib/asciiArt/tree | 17 +++++ modules/lib/hostOptions.nix | 41 ++++++++++ modules/lib/wallpapers/camdenyards.jpg | Bin 0 -> 2850041 bytes modules/nixosModules/createHost.nix | 83 ++++++++++++++++++++ modules/nixosModules/desktop/default.nix | 15 ++++ modules/nixosModules/desktop/gaming.nix | 24 ++++++ modules/nixosModules/desktop/pipewire.nix | 12 +++ modules/nixosModules/desktop/printing.nix | 13 ++++ modules/nixosModules/desktop/thunar.nix | 17 +++++ modules/nixosModules/server/arr.nix | 74 ++++++++++++++++++ modules/nixosModules/server/cgit.nix | 57 ++++++++++++++ modules/nixosModules/server/default.nix | 12 +++ modules/nixosModules/server/jellyfin.nix | 44 +++++++++++ modules/nixosModules/server/nginx.nix | 20 +++++ modules/nixosModules/server/radicale.nix | 45 +++++++++++ modules/packages/environment.nix | 40 ++++++++++ modules/packages/fastfetch.nix | 92 ++++++++++++++++++++++ modules/packages/fish.nix | 23 ++++++ modules/packages/git.nix | 14 ++++ modules/packages/kitty.nix | 81 ++++++++++++++++++++ modules/packages/nh.nix | 11 +++ modules/packages/niri/hosts/tiamat.nix | 38 +++++++++ modules/packages/niri/package.nix | 27 +++++++ modules/packages/niri/settings.nix | 24 ++++++ modules/packages/nvf/_nvfConfig.nix | 123 ++++++++++++++++++++++++++++++ modules/packages/nvf/package.nix | 11 +++ modules/packages/yazi.nix | 36 +++++++++ modules/packages/zen-browser.nix | 23 ++++++ modules/parts.nix | 10 --- modules/systems.nix | 16 ++++ 32 files changed, 1078 insertions(+), 107 deletions(-) delete mode 100644 modules/core/createHost.nix create mode 100644 modules/lib/asciiArt/tree create mode 100644 modules/lib/hostOptions.nix create mode 100644 modules/lib/wallpapers/camdenyards.jpg create mode 100644 modules/nixosModules/createHost.nix create mode 100644 modules/nixosModules/desktop/default.nix create mode 100644 modules/nixosModules/desktop/gaming.nix create mode 100644 modules/nixosModules/desktop/pipewire.nix create mode 100644 modules/nixosModules/desktop/printing.nix create mode 100644 modules/nixosModules/desktop/thunar.nix create mode 100644 modules/nixosModules/server/arr.nix create mode 100644 modules/nixosModules/server/cgit.nix create mode 100644 modules/nixosModules/server/default.nix create mode 100644 modules/nixosModules/server/jellyfin.nix create mode 100644 modules/nixosModules/server/nginx.nix create mode 100644 modules/nixosModules/server/radicale.nix create mode 100644 modules/packages/environment.nix create mode 100644 modules/packages/fastfetch.nix create mode 100644 modules/packages/fish.nix create mode 100644 modules/packages/git.nix create mode 100644 modules/packages/kitty.nix create mode 100644 modules/packages/nh.nix create mode 100644 modules/packages/niri/hosts/tiamat.nix create mode 100644 modules/packages/niri/package.nix create mode 100644 modules/packages/niri/settings.nix create mode 100644 modules/packages/nvf/_nvfConfig.nix create mode 100644 modules/packages/nvf/package.nix create mode 100644 modules/packages/yazi.nix create mode 100644 modules/packages/zen-browser.nix delete mode 100644 modules/parts.nix create mode 100644 modules/systems.nix (limited to 'modules') diff --git a/modules/core/createHost.nix b/modules/core/createHost.nix deleted file mode 100644 index da33708..0000000 --- a/modules/core/createHost.nix +++ /dev/null @@ -1,94 +0,0 @@ -{ - self, - lib, - ... -}: -{ - flake.nixosModules.createHost = { lib, config, pkgs, ... }: let - cfg = config.jcklib.createHost; - in { - options.jcklib.createHost = { - hostName = lib.mkOption { - type = lib.types.str; - }; - architecture = lib.mkOption { - type = lib.types.enum ["x86_64-linux" "aarch64-linux"]; - default = "x86_64-linux"; - }; - userName = lib.mkOption { - type = lib.types.str; - default = "jck"; - }; - }; - - config = { - boot.loader = { - efi = { - canTouchEfiVariables = true; - efiSysMountPoint = "/boot"; # ← use the same mount point here. - }; - grub = { - efiSupport = true; - device = "nodev"; - useOSProber = true; - theme = "${pkgs.fetchFromGitHub { # blue screen of life grub theme - owner = "scouckel"; - repo = "bsol"; - rev = "a8eedad9e7163dce230ca7886be8e1b4ef81da99"; - sha256 = "sha256-P2q73uM1Ysn1a+0mOGOvee/Q1WAYRGQvfanrasx/8r8"; - }}/bsol"; - }; - }; - - boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; - hardware.firmware = with pkgs; [ - linux-firmware - ]; - hardware.enableRedistributableFirmware = true; - - system.name = cfg.hostName; - networking.hostName = cfg.hostName; - - networking.networkmanager.enable = true; - - time.timeZone = lib.mkDefault "US/Central"; - i18n.defaultLocale = "en_US.UTF-8"; - i18n.extraLocaleSettings = { - LC_ADDRESS = "en_US.UTF-8"; - LC_IDENTIFICATION = "en_US.UTF-8"; - LC_MEASUREMENT = "en_US.UTF-8"; - LC_MONETARY = "en_US.UTF-8"; - LC_NAME = "en_US.UTF-8"; - LC_NUMERIC = "en_US.UTF-8"; - LC_PAPER = "en_US.UTF-8"; - LC_TELEPHONE = "en_US.UTF-8"; - LC_TIME = "en_US.UTF-8"; - }; - - services.xserver.xkb = { - layout = "us"; - variant = ""; - }; - - users.users.${cfg.userName} = { - isNormalUser = true; - description = cfg.userName; - extraGroups = ["networkmanager" "wheel"]; - # shell = self.packages.fish; # UPDATE WITH WRAPPED FISH CONFIG LATER - }; - - nixpkgs.config.allowUnfree = true; - nix.settings = { - experimental-features = ["nix-command" "flakes"]; - auto-optimise-store = true; - }; - - services.openssh = { - enable = true; - settings.PermitRootLogin = "no"; - }; - - system.stateVersion = "25.05"; - }; - }; -} diff --git a/modules/hosts/tiamat/tiamat.nix b/modules/hosts/tiamat/tiamat.nix index 3ff764b..317df61 100644 --- a/modules/hosts/tiamat/tiamat.nix +++ b/modules/hosts/tiamat/tiamat.nix @@ -1,19 +1,61 @@ { inputs, self, ... }: { + imports = [ + inputs.home-manager.flakeModules.home-manager + ]; + flake.nixosConfigurations.tiamat = inputs.nixpkgs.lib.nixosSystem { modules = [ self.nixosModules.tiamat self.nixosModules.tiamatHardware self.nixosModules.createHost + self.nixosModules.hostOptions + inputs.nixos-hardware.nixosModules.framework-13-7040-amd + + self.nixosModules.tiamatNiri + self.nixosModules.desktop ]; }; flake.nixosModules.tiamat = { pkgs, ... }: { - jcklib.createHost = { - hostName = "tiamat"; - userName = "jck"; + hostOptions = { + host.name = "tiamat"; + user.name = "jck"; + user.email = "jckrinsky@gmail.com"; + }; + + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + + networking.nameservers = [ "1.1.1.1" "9.9.9.9" ]; + + services.automatic-timezoned.enable = true; + + services.kanata = { + enable = true; + keyboards.tkb = { + devices = [ + "dev/input/by-path/platform-i8042-serio-0-event-kbd" + ]; + config = " + (defsrc h j k l caps) + + (deflayer default _ _ _ _ @press) + (deflayer arrows left down up right @press) + + (defalias press + (tap-hold-press 200 200 esc (layer-while-held arrows)) + ) + "; + + extraDefCfg = " + process-unmapped-keys yes + "; + }; }; }; } diff --git a/modules/lib/asciiArt/tree b/modules/lib/asciiArt/tree new file mode 100644 index 0000000..b3bc376 --- /dev/null +++ b/modules/lib/asciiArt/tree @@ -0,0 +1,17 @@ + * * + * * * + * * * * * + * * * * * + * * * * * * * + * * * * * .# * * + * * * #. .# * * + * "#. #: #" * * * + * * * "#. ##" * + * "### + "## + ##. + .##: + :### + ;### + ,####. +/\/\/\/\/\/.######.\/\/\/\/\ diff --git a/modules/lib/hostOptions.nix b/modules/lib/hostOptions.nix new file mode 100644 index 0000000..37a00c8 --- /dev/null +++ b/modules/lib/hostOptions.nix @@ -0,0 +1,41 @@ +{ + flake.nixosModules.hostOptions = {lib, ...}: { + options.hostOptions = { + host = { + name = lib.mkOption { + type = lib.types.str; + }; + }; + user = { + name = lib.mkOption { + type = lib.types.str; + default = "jck"; + }; + email = lib.mkOption { + type = lib.types.str; + default = "jckrinsky@gmail.com"; + }; + }; + server = { + dataPath = lib.mkOption { + type = lib.types.path; + default = "/tank/data/"; + example = "/var/lib/"; + description = "path where you keep all your services' data"; + }; + mediaPath = lib.mkOption { + type = lib.types.path; + default = "/tank/media"; + description = "path where you keep all your media"; + }; + domain = lib.mkOption { + type = lib.types.str; + default = "jckrinsky.net"; + }; + sshKeys = { + type = lib.types.list lib.types.str; + }; + }; + }; + }; +} diff --git a/modules/lib/wallpapers/camdenyards.jpg b/modules/lib/wallpapers/camdenyards.jpg new file mode 100644 index 0000000..4601318 Binary files /dev/null and b/modules/lib/wallpapers/camdenyards.jpg differ diff --git a/modules/nixosModules/createHost.nix b/modules/nixosModules/createHost.nix new file mode 100644 index 0000000..a74ac53 --- /dev/null +++ b/modules/nixosModules/createHost.nix @@ -0,0 +1,83 @@ +{ + self, + inputs, + ... +}: { + flake.nixosModules.createHost = { + lib, + pkgs, + config, + ... + }: let + cfg = config.hostOptions; + in { + boot.loader = { + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot"; # ← use the same mount point here. + }; + grub = { + efiSupport = true; + device = "nodev"; + useOSProber = true; + theme = "${pkgs.fetchFromGitHub { + # blue screen of life grub theme + owner = "scouckel"; + repo = "bsol"; + rev = "a8eedad9e7163dce230ca7886be8e1b4ef81da99"; + sha256 = "sha256-P2q73uM1Ysn1a+0mOGOvee/Q1WAYRGQvfanrasx/8r8"; + }}/bsol"; + }; + }; + + boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; + hardware.firmware = with pkgs; [ + linux-firmware + ]; + hardware.enableRedistributableFirmware = true; + + system.name = cfg.host.name; + networking.hostName = cfg.host.name; + + networking.networkmanager.enable = true; + + time.timeZone = lib.mkDefault "US/Central"; + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + users.users.${cfg.user.name} = { + isNormalUser = true; + description = cfg.user.name; + extraGroups = ["networkmanager" "wheel"]; + shell = self.packages."${pkgs.stdenv.hostPlatform.system}".environment; + }; + + nixpkgs.config.allowUnfree = true; + nix.settings = { + experimental-features = ["nix-command" "flakes"]; + auto-optimise-store = true; + }; + + services.openssh = { + enable = true; + settings.PermitRootLogin = "no"; + }; + + system.stateVersion = "25.05"; + }; +} diff --git a/modules/nixosModules/desktop/default.nix b/modules/nixosModules/desktop/default.nix new file mode 100644 index 0000000..4aa338c --- /dev/null +++ b/modules/nixosModules/desktop/default.nix @@ -0,0 +1,15 @@ +{ self, inputs, ... }: { + flake.nixosModules.desktop = {pkgs, ...}: { + imports = [ + self.nixosModules.gaming + self.nixosModules.pipewire + self.nixosModules.printing + self.nixosModules.thunar + ]; + + hardware.bluetooth.enable = true; + environment.systemPackages = [ + self.packages.${pkgs.stdenv.hostPlatform.system}.zen-browser + ]; + }; +} diff --git a/modules/nixosModules/desktop/gaming.nix b/modules/nixosModules/desktop/gaming.nix new file mode 100644 index 0000000..7314d8e --- /dev/null +++ b/modules/nixosModules/desktop/gaming.nix @@ -0,0 +1,24 @@ +{self, ...}: { + flake.nixosModules.gaming = { + pkgs, + lib, + ... + }: { + programs = { + steam = { + enable = true; + protontricks.enable = true; + extest.enable = true; + + extraCompatPackages = with pkgs; [ + proton-ge-bin + ]; + }; + }; + + environment.systemPackages = with pkgs; [ + prismlauncher + heroic + ]; + }; +} diff --git a/modules/nixosModules/desktop/pipewire.nix b/modules/nixosModules/desktop/pipewire.nix new file mode 100644 index 0000000..46e3926 --- /dev/null +++ b/modules/nixosModules/desktop/pipewire.nix @@ -0,0 +1,12 @@ +{ + flake.nixosModules.pipewire = {pkgs, ...}: { + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + jack.enable = true; + pulse.enable = true; + socketActivation = true; + }; + }; +} diff --git a/modules/nixosModules/desktop/printing.nix b/modules/nixosModules/desktop/printing.nix new file mode 100644 index 0000000..925a73d --- /dev/null +++ b/modules/nixosModules/desktop/printing.nix @@ -0,0 +1,13 @@ +{ + flake.nixosModules.printing = {pkgs, ...}: { + services.printing = { + enable = true; + drivers = with pkgs; [ + brlaser + gutenprint + brgenml1lpr + brgenml1cupswrapper + ]; + }; + }; +} diff --git a/modules/nixosModules/desktop/thunar.nix b/modules/nixosModules/desktop/thunar.nix new file mode 100644 index 0000000..bef8fa6 --- /dev/null +++ b/modules/nixosModules/desktop/thunar.nix @@ -0,0 +1,17 @@ +{ + flake.nixosModules.thunar = {pkgs, ...}: { + programs.thunar = { + enable = true; + + plugins = with pkgs; [ + thunar-archive-plugin + thunar-media-tags-plugin + thunar-volman + ]; + }; + + programs.xfconf.enable = true; + services.gvfs.enable = true; + services.tumbler.enable = true; + }; +} diff --git a/modules/nixosModules/server/arr.nix b/modules/nixosModules/server/arr.nix new file mode 100644 index 0000000..40261ef --- /dev/null +++ b/modules/nixosModules/server/arr.nix @@ -0,0 +1,74 @@ +{self, ...}: { + flake.nixosModules.arr = { + pkgs, + config, + lib, + ... + }: let + cfg = config.hostOptions.server; + in { + imports = [ + self.nixosModules.hostOptions + ]; + + services.radarr = { + enable = true; + openFirewall = false; + dataDir = "${cfg.dataPath}/arr/radarr/"; + settings.server = { + bindAddress = "*"; + port = 7878; + }; + }; + + services.lidarr = { + enable = true; + openFirewall = false; + dataDir = "${cfg.dataPath}/arr/lidarr/"; + settings.server = { + bindAddress = "*"; + port = 8686; + }; + }; + + services.sonarr = { + enable = true; + openFirewall = false; + dataDir = "${cfg.dataPath}/arr/sonarr/"; + settings.server = { + bindAddress = "*"; + port = 8989; + }; + }; + + services.prowlarr = { + enable = true; + openFirewall = false; + dataDir = "${cfg.dataPath}/arr/prowlarr/"; + settings.server = { + bindAddress = "*"; + port = 9696; + }; + }; + + users.users.prowlarr = { + isSystemUser = true; + group = "prowlarr"; + }; + users.groups.prowlarr = {}; + systemd.services.prowlarr.serviceConfig = { + DynamicUser = lib.mkForce false; + User = lib.mkForce "prowlarr"; + Group = lib.mkForce "prowlarr"; + ReadWritePaths = ["${cfg.dataPath}/arr/prowlarr/"]; + ExecStart = lib.mkForce "${pkgs.prowlarr}/bin/Prowlarr -nobrowser -data=${cfg.dataPath}/arr/prowlarr"; + }; + + services.flaresolverr.enable = true; + + users.groups.arr = {}; + users.users.radarr.extraGroups = ["arr"]; + users.users.lidarr.extraGroups = ["arr"]; + users.users.sonarr.extraGroups = ["arr"]; + }; +} diff --git a/modules/nixosModules/server/cgit.nix b/modules/nixosModules/server/cgit.nix new file mode 100644 index 0000000..09a5829 --- /dev/null +++ b/modules/nixosModules/server/cgit.nix @@ -0,0 +1,57 @@ +{ + self, + lib, + ... +}: { + flake.nixosModules.cgit = { + config, + pkgs, + ... + }: let + cfg = config.hostOptions.server; + in { + imports = [ + self.nixosModules.hostOptions + self.nixosModules.nginx + ]; + + users.users.git = { + isSystemUser = true; + group = "git"; + home = "${cfg.dataPath}/git"; + createHome = true; + shell = "${pkgs.git}/bin/git-shell"; + openssh.authorizedKeys.keys = cfg.sshKeys; + }; + users.groups.git = {}; + + services.cgit."git.${cfg.domain}" = { + enable = true; + + user = "git"; + group = "git"; + + scanPath = "${cfg.dataPath}/git"; + + settings = { + enable-index-owner = false; + enable-commit-graph = 1; + enable-log-filecount = 1; + enable-log-linecount = 1; + clone-url = "https://git.${cfg.domain}/$CGIT_REPO_URL ssh://git@git.${cfg.domain}:${cfg.dataPath}/git/$CGIT_REPO_URL"; + source-filter = "${pkgs.cgit}/lib/cgit/filters/syntax-highlighting.py"; + about-filter = "${pkgs.cgit}/lib/cgit/filters/about-formatting.sh"; + }; + + gitHttpBackend = { + enable = true; + checkExportOkFiles = false; + }; + }; + + services.nginx.virtualHosts."git.${cfg.domain}" = { + enableACME = true; + forceSSL = true; + }; + }; +} diff --git a/modules/nixosModules/server/default.nix b/modules/nixosModules/server/default.nix new file mode 100644 index 0000000..c9bbfa9 --- /dev/null +++ b/modules/nixosModules/server/default.nix @@ -0,0 +1,12 @@ +{ self, inputs, ... }: +{ + flake.nixosModules.server = { + imports = [ + self.nixosModules.arr + self.nixosModules.cgit + self.nixosModules.jellyfin + self.nixosModules.nginx + self.nixosModules.radicale + ]; + }; +} diff --git a/modules/nixosModules/server/jellyfin.nix b/modules/nixosModules/server/jellyfin.nix new file mode 100644 index 0000000..431022d --- /dev/null +++ b/modules/nixosModules/server/jellyfin.nix @@ -0,0 +1,44 @@ +{ + self, + lib, + ... +}: { + flake.nixosModules.jellyfin = { + config, + pkgs, + ... + }: let + cfg = config.hostOptions.server; + in { + imports = [ + self.nixosModules.hostOptions + self.nixosModules.nginx + ]; + + services.jellyfin = { + enable = true; + openFirewall = false; + dataDir = "${cfg.dataPath}/jellyfin/"; + hardwareAcceleration = { + enable = true; + device = lib.mkDefault "/dev/dri/renderD128"; + }; + }; + + # transcoding + users.users.jellyfin.extraGroups = ["video" "render"]; + environment.systemPackages = with pkgs; [jellyfin-ffmpeg]; + + services.nginx.virtualHosts."jellyfin.${cfg.domain}" = { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://127.0.0.1:8096"; + proxyWebsockets = true; + extraConfig = '' + proxy_buffering off; + ''; + }; + }; + }; +} diff --git a/modules/nixosModules/server/nginx.nix b/modules/nixosModules/server/nginx.nix new file mode 100644 index 0000000..9d014b0 --- /dev/null +++ b/modules/nixosModules/server/nginx.nix @@ -0,0 +1,20 @@ +{self, ...}: { + flake.nixosModules.nginx = {config, ...}: { + imports = [ + self.nixosModules.hostOptions + ]; + + services.nginx = { + enable = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + recommendedGzipSettings = true; + recommendedOptimization = true; + }; + + security.acme = { + enable = true; + defaults.email = config.hostOptions.user.email; + }; + }; +} diff --git a/modules/nixosModules/server/radicale.nix b/modules/nixosModules/server/radicale.nix new file mode 100644 index 0000000..7f62b70 --- /dev/null +++ b/modules/nixosModules/server/radicale.nix @@ -0,0 +1,45 @@ +{ + self, + lib, + ... +}: { + flake.nixosModules.radicale = {config, ...}: let + cfg = config.hostOptions.server; + in { + imports = [ + self.nixosModules.hostOptions + self.nixosModules.nginx + ]; + + services.radicale = { + enable = true; + settings = { + server.hosts = ["127.0.0.1:5232"]; + auth = { + type = "htpasswd"; + htpasswd_filename = "${cfg.dataPath}/radicale/users"; + htpasswd_encryption = "autodetect"; + }; + storage.filesystem_folder = "${cfg.dataPath}/radicale/calendars/"; + }; + }; + + users.users.radicale = { + isSystemUser = true; + group = "radicale"; + }; + users.groups.radicale = {}; + systemd.services.radicale.serviceConfig = { + DynamicUser = lib.mkForce false; + User = lib.mkForce "radicale"; + Group = lib.mkForce "radicale"; + ReadWritePaths = ["${cfg.dataPath}/arr/radicale/"]; + }; + + services.nginx.virtualHosts."radicale.${cfg.domain}" = { + enableACME = true; + forceSSL = true; + locations."/".proxyPass = "http://127.0.0.1:5232"; + }; + }; +} diff --git a/modules/packages/environment.nix b/modules/packages/environment.nix new file mode 100644 index 0000000..7d692e3 --- /dev/null +++ b/modules/packages/environment.nix @@ -0,0 +1,40 @@ +{ + lib, + inputs, + self, + ... +}: { + perSystem = { + pkgs, + self', + ... + }: { + packages.terminal = (inputs.wrappers.wrapperModules.kitty.apply { + inherit pkgs; + imports = [self.wrapperModules.kitty]; + shell = lib.getExe self'.packages.environment; + }).wrapper; + + packages.environment = inputs.wrappers.lib.wrapPackage { + inherit pkgs; + package = self'.packages.fish; + runtimeInputs = [ + self'.packages.fastfetch + self'.packages.git + self'.packages.neovim + self'.packages.nh + self'.packages.yazi + + pkgs.alejandra + pkgs.bluetui + pkgs.lazygit + pkgs.p7zip + pkgs.rsync + pkgs.speedtest-cli + ]; + env = { + EDITOR = lib.getExe self'.packages.neovim; + }; + }; + }; +} diff --git a/modules/packages/fastfetch.nix b/modules/packages/fastfetch.nix new file mode 100644 index 0000000..400d8ea --- /dev/null +++ b/modules/packages/fastfetch.nix @@ -0,0 +1,92 @@ +{ + self, + inputs, + ... +}: { + flake.wrapperModules.fastfetch = { + config, + lib, + ... + }: { + settings = { + logo = { + source = config.pkgs.writeText "tree" '' + * * + * * * + * * * * * + * * * * * + * * * * * * * + * * * * * .# * * + * * * #. .# * * + * "#. #: #" * * * + * * * "#. ##" * + * "### + "## + ##. + .##: + :### + ;### + ,####. + /\/\/\/\/\/.######.\/\/\/\/\ + ''; # ascii art by Joan G. Stark + padding = { + right = 2; + left = 1; + top = 2; + }; + color = { + "1" = "bright_green"; + }; + }; + + display = { + color = "bright_green"; + }; + + modules = [ + "title" + "separator" + { + type = "datetime"; + key = "Date"; + format = "{weekday}, {year}-{month-pretty}-{day-pretty}"; + } + { + type = "datetime"; + key = "Time"; + format = "{hour-pretty}:{minute-pretty}:{second-pretty}, {timezone-name}, UTC{offset-from-utc}"; + } + "uptime" + { + type = "battery"; + key = "Battery"; + format = "{capacity}, {time-formatted} [{status}]"; + } + "separator" + "os" + "host" + "kernel" + "packages" + "shell" + "display" + "wm" + "separator" + "cpu" + "gpu" + "memory" + "swap" + "disk" + "localip" + "break" + "colors" + ]; + }; + }; + + perSystem = {pkgs, ...}: { + packages.fastfetch = inputs.wrapper-modules.wrappers.fastfetch.wrap { + inherit pkgs; + imports = [self.wrapperModules.fastfetch]; + }; + }; +} diff --git a/modules/packages/fish.nix b/modules/packages/fish.nix new file mode 100644 index 0000000..8df609d --- /dev/null +++ b/modules/packages/fish.nix @@ -0,0 +1,23 @@ +{ + inputs, + lib, + ... +}: { + perSystem = {pkgs, ...}: let + fishConf = pkgs.writeText "fishConf" '' + function fish_greeting + ${lib.getExe pkgs.fastfetch} + end + + fish_vi_key_bindings + ''; + in { + packages.fish = inputs.wrappers.lib.wrapPackage { + inherit pkgs; + package = pkgs.fish; + flags = { + "-C" = "source ${fishConf}"; + }; + }; + }; +} diff --git a/modules/packages/git.nix b/modules/packages/git.nix new file mode 100644 index 0000000..3b586db --- /dev/null +++ b/modules/packages/git.nix @@ -0,0 +1,14 @@ +{inputs, ...}: { + perSystem = {pkgs, ...}: { + packages.git = inputs.wrappers.lib.wrapPackage { + inherit pkgs; + package = pkgs.git; + env = rec { + GIT_AUTHOR_NAME = "scouckel"; + GIT_AUTHOR_EMAIL = "james.krinsky@gmail.com"; + GIT_COMMITTER_NAME = GIT_AUTHOR_NAME; + GIT_COMMITTER_EMAIL = GIT_AUTHOR_EMAIL; + }; + }; + }; +} diff --git a/modules/packages/kitty.nix b/modules/packages/kitty.nix new file mode 100644 index 0000000..4e204ad --- /dev/null +++ b/modules/packages/kitty.nix @@ -0,0 +1,81 @@ +{ + self, + inputs, + ... +}: { + flake.wrapperModules.kitty = { + config, + lib, + ... + }: { + options.shell = lib.mkOption { + type = lib.types.str; + default = ""; + }; + config.args = lib.mkAfter (lib.optionals (config.shell != "") [config.shell]); + config.settings = { + font_size = 10; + font_family = "JetBrainsMono Nerd Font"; + + shell_integration = "enabled"; + allow_remote_control = "yes"; + + # Gruvbox Material Dark Hard + background = "#1d2021"; + foreground = "#d4be98"; + + selection_background = "#d4be98"; + selection_foreground = "#1d2021"; + + cursor = "#a89984"; + cursor_text_color = "background"; + + # Black + color0 = "#665c54"; + color8 = "#928374"; + + # Red + color1 = "#ea6962"; + color9 = "#ea6962"; + + # Green + color2 = "#a9b665"; + color10 = "#a9b665"; + + # Yellow + color3 = "#e78a4e"; + color11 = "#d8a657"; + + # Blue + color4 = "#7daea3"; + color12 = "#7daea3"; + + # Magenta + color5 = "#d3869b"; + color13 = "#d3869b"; + + # Cyan + color6 = "#89b482"; + color14 = "#89b482"; + + # White + color7 = "#d4be98"; + color15 = "#d4be98"; + + # START_AUTOGENERATED_TAB_STYLE + # Feel free to update these colors manually and remove these comments. + active_tab_foreground = "#444444"; + active_tab_background = "#d4be98"; + inactive_tab_foreground = "#d4be98"; + inactive_tab_background = "#171a1a"; + }; + }; + + perSystem = {pkgs, ...}: { + packages.kitty = + (inputs.wrappers.wrapperModules.kitty.apply { + inherit pkgs; + imports = [self.wrapperModules.kitty]; + }).wrapper; + }; +} diff --git a/modules/packages/nh.nix b/modules/packages/nh.nix new file mode 100644 index 0000000..b867ed1 --- /dev/null +++ b/modules/packages/nh.nix @@ -0,0 +1,11 @@ +{inputs, ...}: { + perSystem = {pkgs, ...}: { + packages.nh = inputs.wrappers.lib.wrapPackage { + inherit pkgs; + package = pkgs.nh; + env = { + "NH_FLAKE" = "/home/jck/nixosconf"; + }; + }; + }; +} diff --git a/modules/packages/niri/hosts/tiamat.nix b/modules/packages/niri/hosts/tiamat.nix new file mode 100644 index 0000000..5e5b466 --- /dev/null +++ b/modules/packages/niri/hosts/tiamat.nix @@ -0,0 +1,38 @@ +{ + self, + inputs, + ... +}: { + flake.nixosModules.tiamatNiri = { + pkgs, + lib, + config, + ... + }: { + programs.niri = { + enable = true; + package = self.packages."x86_64-linux".tiamatNiri; + }; + }; + + perSystem = { + pkgs, + lib, + ... + }: { + packages.tiamatNiri = inputs.wrapper-modules.wrappers.niri.wrap { + inherit pkgs; + imports = [ + self.wrapperModules.niri + { + config.settings.extraConfig = '' + output "eDP-1" { + mode "2880x1920@120" + scale 1.67 + } + ''; + } + ]; + }; + }; +} diff --git a/modules/packages/niri/package.nix b/modules/packages/niri/package.nix new file mode 100644 index 0000000..6b90f08 --- /dev/null +++ b/modules/packages/niri/package.nix @@ -0,0 +1,27 @@ +{ + self, + inputs, + ... +}: { + flake.nixosModules.niri = { + config, + lib, + pkgs, + ... + }: { + programs.niri = { + enable = true; + package = self.packages.${config.pkgs.stdenv.hostPlatform.system}.niri; + }; + }; + + perSystem = { + pkgs, + ... + }: { + packages.niri = inputs.wrapper-modules.wrappers.niri.wrap { + inherit pkgs; + imports = [self.wrapperModules.niri]; + }; + }; +} diff --git a/modules/packages/niri/settings.nix b/modules/packages/niri/settings.nix new file mode 100644 index 0000000..43b4be3 --- /dev/null +++ b/modules/packages/niri/settings.nix @@ -0,0 +1,24 @@ +{inputs, self, ...}: { + flake.wrapperModules.niri = {lib, config, pkgs, ...}: { + settings = { + input = { + keyboard = { + xkb = { + layout = "us"; + }; + }; + }; + + layout.gaps = 2; + + xwayland-satellite.path = lib.getExe config.pkgs.xwayland-satellite; + + binds = { + "Mod+F1".spawn = "${lib.getExe pkgs.rofi} -show drun"; + "Mod+F2".spawn = lib.getExe self.packages.${config.pkgs.stdenv.hostPlatform.system}.terminal; + "Mod+F3".spawn = "${lib.getExe self.packages.${config.pkgs.stdenv.hostPlatform.system}.terminal} yazi"; + "Mod+F4".close-window = {}; + }; + }; + }; +} diff --git a/modules/packages/nvf/_nvfConfig.nix b/modules/packages/nvf/_nvfConfig.nix new file mode 100644 index 0000000..2746966 --- /dev/null +++ b/modules/packages/nvf/_nvfConfig.nix @@ -0,0 +1,123 @@ +{ pkgs, lib, ... }: { + config.vim = { + viAlias = true; + vimAlias = true; + + lineNumberMode = "relNumber"; + + options = { + tabstop = lib.mkDefault 2; + shiftwidth = 0; + termguicolors = true; + }; + + keymaps = [ + { + key = "w"; + mode = "n"; + silent = true; + action = ":w"; + } + { + key = "x"; + mode = "n"; + silent = true; + action = ":wq"; + } + { + key = "q"; + mode = "n"; + silent = true; + action = ":q"; + } + { + key = "Q"; + mode = "n"; + silent = true; + action = ":q!"; + } + { + key = "ff"; + mode = "n"; + silent = true; + action = ":Telescope find_files"; + } + { + key = ""; + mode = "n"; + silent = true; + action = "zz"; + } + { + key = ""; + mode = "n"; + silent = true; + action = "zz"; + } + { + key = "n"; + mode = "n"; + silent = true; + action = ":noh"; + } + ]; + + lsp = { + enable = true; + + servers.nixd.settings.nil.nix.autoArchive = true; + }; + + languages = { + enableTreesitter = true; + + nix.enable = true; + clang.enable = true; + rust.enable = true; + ruby.enable = true; + java.enable = true; + }; + + treesitter = { + enable = true; + # context.enable = true; + highlight.enable = true; + }; + + telescope.enable = true; + + utility = { + motion = { + # hop.enable = true; + # leap.enable = true; + precognition.enable = true; + }; + }; + + visuals = { + rainbow-delimiters.enable = true; + }; + + extraPlugins = { + gruvbox-material = { + package = pkgs.vimPlugins.gruvbox-material; + setup = '' + vim.o.background = "dark" + vim.g.gruvbox_material_background = "hard" + vim.cmd("colorscheme gruvbox-material") + ''; + }; + }; + + autocmds = [ + { + event = [ "InsertEnter" ]; + command = "set norelativenumber"; + } + { + event = [ "InsertLeave" ]; + command = "set relativenumber"; + } + ]; + }; +} diff --git a/modules/packages/nvf/package.nix b/modules/packages/nvf/package.nix new file mode 100644 index 0000000..8189d29 --- /dev/null +++ b/modules/packages/nvf/package.nix @@ -0,0 +1,11 @@ +{ + inputs, + ... +}: { + perSystem = {pkgs, ...}: { + packages.neovim = (inputs.nvf.lib.neovimConfiguration { + inherit pkgs; + modules = [ ./_nvfConfig.nix ]; + }).neovim; + }; +} diff --git a/modules/packages/yazi.nix b/modules/packages/yazi.nix new file mode 100644 index 0000000..2068a08 --- /dev/null +++ b/modules/packages/yazi.nix @@ -0,0 +1,36 @@ +{ + self, + inputs, + ... +}: { + flake.wrapperModules.yazi = { + config, + lib, + pkgs, + ... + }: { + settings = { + yazi = { + mgr = { + show_hidden = true; + }; + + opener = { + edit = [ + { + run = ''${lib.getExe self.packages.${config.pkgs.stdenv.hostPlatform.system}.neovim} "$@"''; + block = true; + } + ]; + }; + }; + }; + }; + + perSystem = {pkgs, ...}: { + packages.yazi = inputs.wrapper-modules.wrappers.yazi.wrap { + inherit pkgs; + imports = [self.wrapperModules.yazi]; + }; + }; +} diff --git a/modules/packages/zen-browser.nix b/modules/packages/zen-browser.nix new file mode 100644 index 0000000..50768ff --- /dev/null +++ b/modules/packages/zen-browser.nix @@ -0,0 +1,23 @@ +{ inputs, ... }: { + perSystem = { system, ... }: { + packages.zen-browser = inputs.zen-browser.packages.${system}.twilight.unwrapped.override { + policies = { + AutofillAddressEnabled = true; + AutofillCreditCardEnabled = false; + DisableFeedbackCommands = true; + DisableFirefoxStudies = true; + DisablePocket = true; + DisableTelemetry = true; + DontCheckDefaultBrowser = true; + NoDefaultBookmarks = true; + OfferToSaveLogins = false; + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + }; + }; + }; +} diff --git a/modules/parts.nix b/modules/parts.nix deleted file mode 100644 index 657e3ca..0000000 --- a/modules/parts.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - config = { - systems = [ - "x86_64-linux" - "x86_64-darwin" - "aarch64-linux" - "aarch64-darwin" - ]; - }; -} diff --git a/modules/systems.nix b/modules/systems.nix new file mode 100644 index 0000000..efc1c28 --- /dev/null +++ b/modules/systems.nix @@ -0,0 +1,16 @@ +{inputs, ...}: { + options = { + flake = inputs.flake-parts.lib.mkSubmoduleOptions { + wrapperModules = inputs.nixpkgs.lib.mkOption { + default = {}; + }; + }; + }; + + config.systems = [ + "x86_64-linux" + "x86_64-darwin" + "aarch64-linux" + "aarch64-darwin" + ]; +} -- cgit v1.3