diff --git a/TODO b/TODO new file mode 100644 index 0000000..21efb53 --- /dev/null +++ b/TODO @@ -0,0 +1,9 @@ +Create a command palette accessible with MOD+P (MOD => Windows Key) + (ie make fullscreen, send to monitor, etc) + +Make each monitor's window styling slightly different (just for fun) + +Bind 5 workspaces per connected monitor. + Then use the command palette (discussed prior) to send to + a different workspace (ie because I currently use MOD+SHIFT+n + but if n>=10 then it doesnt work! hence we need a command palette!) diff --git a/homes/me/default.nix b/homes/me/default.nix index f35678d..14e6d99 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -15,9 +15,11 @@ ../modules/bat.nix ../modules/fish.nix ../modules/editor/helix.nix + ../modules/editor/vscodium.nix ../modules/btop.nix - ../modules/rio.nix + ../modules/term/ghostty.nix + ../modules/term/rio.nix ../modules/firefox.nix ../modules/nixcord.nix diff --git a/homes/modules/editor/vscodium.nix b/homes/modules/editor/vscodium.nix new file mode 100644 index 0000000..c5daf64 --- /dev/null +++ b/homes/modules/editor/vscodium.nix @@ -0,0 +1,9 @@ +{pkgs, ...}: { + programs.vscode = { + enable = true; + package = pkgs.vscodium; + + extensions = with pkgs.vscode-extensions; [ + ]; + }; +} diff --git a/homes/modules/fish.nix b/homes/modules/fish.nix index e46175d..bcc7d77 100755 --- a/homes/modules/fish.nix +++ b/homes/modules/fish.nix @@ -1,19 +1,30 @@ { config, + lib, pkgs, ... }: { - programs.fish = { - enable = true; - interactiveShellInit = '' - #set -g fish_greeting "Welcome weary traveler to my shop" - cat ~/banner - ''; - plugins = [ - { - name = "grc"; - src = pkgs.fishPlugins.grc.src; - } - ]; + options = { + morphBashToFish = lib.mkEnableOption "morphBashToFish"; + }; + + config = { + programs.fish = { + enable = true; + interactiveShellInit = '' + # add dotnet completions if it exists (ie we're in a virtual environment) + if type -q dotnet + complete -f -c dotnet -a "(dotnet complete (commandline -cp))" + end + + set -g fish_greeting "Welcome weary traveller to my shop" + ''; + plugins = [ + { + name = "grc"; + src = pkgs.fishPlugins.grc.src; + } + ]; + }; }; } diff --git a/homes/modules/term/default.nix b/homes/modules/term/default.nix new file mode 100644 index 0000000..d446b15 --- /dev/null +++ b/homes/modules/term/default.nix @@ -0,0 +1,9 @@ +{ + lib, + ... +}: +{ + options = { + + } +} diff --git a/homes/modules/term/ghostty.nix b/homes/modules/term/ghostty.nix new file mode 100644 index 0000000..5eb2591 --- /dev/null +++ b/homes/modules/term/ghostty.nix @@ -0,0 +1,43 @@ +{pkgs, ...}: { + home = { + packages = [ + pkgs.ghostty + #(pkgs.writeShellScriptBin "xterm" ''${pkgs.ghostty}/bin/ghostty "$@"'') + ]; + + sessionVariables.TERMINAL = "ghostty"; + }; + + programs.ghostty = { + enable = true; + + settings = { + theme = "Dracula"; + font-family = "Geist Nerd Font"; + font-feature = ["liga" "calt"]; + + window-padding-x = 12; + window-padding-y = 6; + window-theme = "system"; + + window-height = 26; + window-width = 90; + copy-on-select = true; + gtk-single-instance = false; + adw-toolbar-style = "flat"; + + keybind = [ + "ctrl+shift+plus=increase_font_size:1" + "ctrl+shift+minus=decrease_font_size:1" + + "ctrl+h=goto_split:left" + "ctrl+l=goto_split:right" + ]; + }; + + #themes = { + #aylur-dark = colors (import ./colors.nix {scheme = "dark";}); + #aylur-light = colors (import ./colors.nix {scheme = "light";}); + #}; + }; +} diff --git a/homes/modules/rio.nix b/homes/modules/term/rio.nix similarity index 90% rename from homes/modules/rio.nix rename to homes/modules/term/rio.nix index 84ea3a2..88ef968 100755 --- a/homes/modules/rio.nix +++ b/homes/modules/term/rio.nix @@ -3,8 +3,16 @@ pkgs, ... }: { + home = { + packages = [ + pkgs.rio + ]; + + # currently set to ghostty (on lolcathost) + #sessionVariables.TERMINAL = "rio"; + }; + # The terminal I use - # TODO: this is dependent on nvim being installed # TODO: make this into a module with a configurable editor option programs.rio = { enable = true; diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 2dcf179..a75c426 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -6,14 +6,15 @@ }: let home-manager = builtins.fetchTarball { url = "https://github.com/nix-community/home-manager/archive/release-24.11.tar.gz"; - sha256 = "0c07xj74vsj37d3a8f98i9rhhhr99ckwlp45n40f0qkmigm3pk8s"; - #sha256 = "15k41il0mvmwyv6jns4z8k6khhmb22jk5gpcqs1paym3l01g6abn"; + sha256 = "1qsvg11b5d05z2gvxq2pp6xfg3gpcd363id0h52sicikx3vai93s"; }; in { imports = [ ./hardware-configuration.nix (import "${home-manager}/nixos") inputs.spicetify-nix.nixosModules.default + + ../modules/steam.nix ]; programs.spicetify = let @@ -67,10 +68,10 @@ in { networking.networkmanager.enable = true; # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; + #networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ]; # Or disable the firewall altogether. - networking.firewall.enable = true; + networking.firewall.enable = false; # ----- SERVICES ----- services = { @@ -117,7 +118,7 @@ in { # literally me fr (personal account) me = { isNormalUser = true; - extraGroups = ["wheel" "docker"]; + extraGroups = ["wheel" "netdev" "docker"]; shell = pkgs.bash; #pkgs.fish packages = let # TODO: can I just do this: https://nix.dev/manual/nix/2.18/command-ref/new-cli/nix3-flake#url-like-syntax @@ -187,6 +188,15 @@ in { ]; }; + # set environment variables + environment.sessionVariables = { + # folder names with capitalisation look awful! + XDG_DOWNLOAD_DIR = "$HOME/downloads"; + + # Hint Electrons apps to use Wayland + NIXOS_OZONE_WL = "1"; + }; + # ---- SYSTEM PACKAGES ----- environment.systemPackages = with pkgs; [ # User Environment @@ -207,6 +217,9 @@ in { # DEBUG: using neofetch temporarily to see if my system upgrades properly neofetch + openvpn + inetutils + # fish plugins grc # colorise command outputs @@ -250,6 +263,8 @@ in { zsh.enable = true; fish.enable = true; + nix-ld.enable = true; + # I want to use fish as my login shell but it always goes terrible # cause it isn't POSIX compliant, so instead Bash is my login and # will just exec fish (^-^) @@ -295,8 +310,8 @@ in { # TODO: change my default fonts fontconfig = { defaultFonts = { - serif = ["Iosevka"]; # TODO: package Iosevka Etoile since Iosevka isn't a serif font - sansSerif = ["Iosevka "]; + serif = ["Geist"]; # TODO: package Iosevka Etoile since Iosevka isn't a serif font + sansSerif = ["Geist"]; monospace = ["Cousine"]; emoji = ["Noto Emoji"]; }; diff --git a/hosts/modules/steam.nix b/hosts/modules/steam.nix new file mode 100644 index 0000000..afd9b33 --- /dev/null +++ b/hosts/modules/steam.nix @@ -0,0 +1,24 @@ +{ + pkgs, + lib, + ... +}: { + nixpkgs.config.allowUnfreePredicate = pkg: + builtins.elem (lib.getName pkg) [ + "steam" + "steam-original" + "steam-unwrapped" + "steam-run" + ]; + + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + }; + + environment.systemPackages = with pkgs; [ + steamcmd + ]; +}