From 2a0373dc7365cb4361de7e527b531961d5c60821 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 4 Nov 2024 11:59:14 +1000 Subject: [PATCH] more incomprehensible changes :) --- README => README.md | 22 ++ flake.lock | 187 ++++++++++- flake.nix | 18 +- homes/me/default.nix | 91 ++++- homes/me/default.nix.bak | 207 ++++++++++++ homes/me/default.nix.bak13 | 410 +++++++++++++++++++++++ homes/me/theme.rasi | 209 ++++++++++++ hosts/myputer/default.nix | 108 ++++-- hosts/myputer/hardware-configuration.nix | 3 +- modules/core/bootloader/default.nix | 0 modules/core/bootloader/grub.nix | 15 + modules/core/bootloader/systemd-boot.nix | 8 + modules/discord/nixcord.nix | 29 ++ typescript | 7 + 14 files changed, 1267 insertions(+), 47 deletions(-) rename README => README.md (65%) create mode 100644 homes/me/default.nix.bak create mode 100644 homes/me/default.nix.bak13 create mode 100644 homes/me/theme.rasi delete mode 100644 modules/core/bootloader/default.nix create mode 100644 modules/discord/nixcord.nix create mode 100644 typescript diff --git a/README b/README.md similarity index 65% rename from README rename to README.md index c09a31b..7a3953a 100644 --- a/README +++ b/README.md @@ -45,6 +45,26 @@ my dotfiles to also work on non-NixOS systems. +### Explaining my Vision with r/unixporn posts +I want the side panel from https://www.reddit.com/r/unixporn/comments/12wpvyf/hyprland_eww_is_all_i_need/ +but not the colour scheme and I'm 50/50 on the bar being on th eleft side lol. Also I love the volume bar on the right! + +https://www.reddit.com/r/unixporn/comments/12uy6q6/hyprland_first_time_trying_a_wm_ended_up/ +I love love love their rofi theme, everything else is eh (except the background switching is cool) + +https://www.reddit.com/r/unixporn/comments/1avnfjn/hyprland_animations_theme_generation_settings/ +I love their settings apps + +https://www.reddit.com/r/unixporn/comments/u7vgej/desktop_endeavouros_gnome_42/ +I like to imagine they have the ability to have nothing but apps on their screen (like a do not disturb / focus mode) + +https://www.reddit.com/r/unixporn/comments/xkvmhy/hyprland_dreamy/ +Their window decorations and bar are great, also being able to hide everything upwards is so cool + +https://www.reddit.com/r/unixporn/comments/vkcasz/i3gaps_i_prefer_light_mode/ +If their colour scheme was a little less white I'd love it but overall one of my favourites every + + ### Credits 1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured. @@ -52,3 +72,5 @@ The simplicity of their layout is amazing, was really good to pick out small mod Really great starter config for learning how parts interact and how to generally structure flakes 3. https://nixos.wiki/wiki/Fonts Wiki page explaining how to install fonts and nerd fonts on NixOS +4. https://github.com/adi1090x/rofi +For the Rofi theme diff --git a/flake.lock b/flake.lock index da8b556..eb4fc3d 100644 --- a/flake.lock +++ b/flake.lock @@ -50,6 +50,36 @@ } }, "flake-compat_2": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { "flake": false, "locked": { "lastModified": 1696426674, @@ -87,6 +117,24 @@ "type": "github" } }, + "grub2-themes": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1730004881, + "narHash": "sha256-8xVIqIW25o2uCL0fxAmP4Sj9sdebarQXmd1+64yMe8o=", + "owner": "vinceliuice", + "repo": "grub2-themes", + "rev": "42c232dfb46bf93c17506cbc1a574e5e89b5e09f", + "type": "github" + }, + "original": { + "owner": "vinceliuice", + "repo": "grub2-themes", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -144,7 +192,7 @@ "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "pre-commit-hooks": "pre-commit-hooks", "systems": "systems", "xdph": "xdph" @@ -267,18 +315,37 @@ "type": "github" } }, + "nixcord": { + "inputs": { + "flake-compat": "flake-compat_2", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1730107956, + "narHash": "sha256-Ohwk5/RGhGjDXaD4v0Yc40J/79gHRcD92mKWY+6qHJU=", + "owner": "kaylorben", + "repo": "nixcord", + "rev": "5dcb476b924ad08ffd8521cca812052605cb5974", + "type": "github" + }, + "original": { + "owner": "kaylorben", + "repo": "nixcord", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1729413321, - "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", + "lastModified": 1730370246, + "narHash": "sha256-UD2XmS6IWT+G/scUpPItb0dNijT5Dxa7WMuVqRhiaxU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26", + "rev": "88f31ac8837ab15748102da8bbc6e96a9330be0d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "master", "repo": "nixpkgs", "type": "github" } @@ -300,6 +367,38 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1729413321, + "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1730170245, + "narHash": "sha256-PRq4vJjDa+m1mNwkV9H7zVzMhuMqsHJrTGx0iJZ0e0w=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30c9efeef01e2ad4880bff6a01a61dd99536b3c9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1729413321, "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", @@ -315,6 +414,22 @@ "type": "github" } }, + "nixpkgs_5": { + "locked": { + "lastModified": 1727634051, + "narHash": "sha256-S5kVU7U82LfpEukbn/ihcyNt2+EvG7Z5unsKW9H/yFA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "06cf0e1da4208d3766d898b7fdab6513366d45b9", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", @@ -341,15 +456,18 @@ }, "root": { "inputs": { + "grub2-themes": "grub2-themes", "home-manager": "home-manager", "hyprland": "hyprland", - "nixpkgs": "nixpkgs_2", - "spicetify-nix": "spicetify-nix" + "nixcord": "nixcord", + "nixpkgs": "nixpkgs_4", + "spicetify-nix": "spicetify-nix", + "swww": "swww" } }, "spicetify-nix": { "inputs": { - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "nixpkgs": [ "nixpkgs" ] @@ -368,6 +486,26 @@ "type": "github" } }, + "swww": { + "inputs": { + "flake-compat": "flake-compat_4", + "nixpkgs": "nixpkgs_5", + "utils": "utils" + }, + "locked": { + "lastModified": 1730050836, + "narHash": "sha256-6xCp6rTJ5MWxfUXUYxWRZz1CA5V9/gGqgb0+34BMF6U=", + "owner": "LGFae", + "repo": "swww", + "rev": "36808dfd90223e648fcc45075ca57392b3d6a297", + "type": "github" + }, + "original": { + "owner": "LGFae", + "repo": "swww", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1689347949, @@ -383,6 +521,39 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ diff --git a/flake.nix b/flake.nix index 18ad9ae..3f56093 100644 --- a/flake.nix +++ b/flake.nix @@ -13,9 +13,21 @@ url = "github:Gerg-L/spicetify-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; + + #stylix.url = "github:danth/stylix"; + + nixcord = { + url = "github:kaylorben/nixcord"; + }; + + grub2-themes = { + url = "github:vinceliuice/grub2-themes"; + }; # is this necessary? (aren't I enabling it in `configuration.nix` anyways?) hyprland.url = "github:hyprwm/Hyprland"; + + swww.url = "github:LGFae/swww"; }; outputs = { @@ -23,11 +35,12 @@ nixpkgs, home-manager, hyprland, + grub2-themes, + #stylix, ... }@inputs: let system = "x86_64-linux"; - #system = pkgs.stdenv.hostPlatform.system; pkgs = import nixpkgs { inherit system; @@ -48,7 +61,8 @@ modules = [ ./hosts/myputer - #home-manager.nixosModules.default + grub2-themes.nixosModules.default + #stylix.nixosModules.stylix ]; }; diff --git a/homes/me/default.nix b/homes/me/default.nix index b943e09..806471c 100644 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -13,8 +13,9 @@ }; imports = [ + # inputs.nixcord.homeManagerModules.nixcord # inputs.spicetify-nix.homeManagerModules.default - #./wofi.nix + # ./wofi.nix ]; /* @@ -34,6 +35,25 @@ }; */ + # ----- STYLIX ----- + + #stylix = { + # enable = true; + # + # image = pkgs.fetchurl { + # url = "https://www.pixelstalk.net/wp-content/uploads/2016/05/Epic-Anime-Awesome-Wallpapers.jpg"; + # sha256 = "enQo3wqhgf0FEPHj2coOCvo7DuZv+x5rL/WIo4qPI50="; + # }; + # + # # Stylix will automatically theme applications + # autoEnable = true; + # targets = { + # # disable Stylix's themes for ones I will theme manually + # firefox.enable = false; + # wofi.enable = false; + # }; + #}; + home = { username = "me"; homeDirectory = "/home/me"; @@ -42,18 +62,58 @@ programs = { # these are both required for home-manager to work home-manager.enable = true; - git.enable = true; + git = { + enable = true; + userName = "emileclarkb"; + userEmail = "eclarkboman@gmail.com"; + }; + # like `/bin/cat` but with syntax highlighting # TODO: change the pager (maybe use Github:sachaos/viddy instead) bat = { enable = true; config = { pager = "less -FR"; - theme = "Dracula"; + # let Stylix control the theme + #theme = "Dracula"; }; }; + firefox = { + enable = true; + policies = { + #BlockAboutConfig = true; + DefaultDownloadDirectory = "\${home}/downloads"; + }; + }; + + # 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 it will just exec fish + #bash = { + # interactiveShellInit = '' + # if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + # then + # shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + # exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + # fi + # ''; + #}; + + fish = { + enable = true; + interactiveShellInit = '' + set -g fish_greeting "Welcome weary traveler to my shop" + ''; + plugins = [ + { + name = "grc"; + src = pkgs.fishPlugins.grc.src; + } + ]; + }; + /* spicetify = let @@ -88,7 +148,7 @@ # lines = (accumulated scroll * multiplier / divider) scroll = { - multiplier = 1.0; + multiplier = 3.0; divider = 1.0; }; @@ -141,7 +201,8 @@ allow_markup = true; width = 250; }; - style = '' + # Force the style to stop Stylix being a bitch and overwriting it + style = lib.mkForce '' @define-color rosewater #f2d5cf; @define-color rosewater-rgb rgb(242, 213, 207); @define-color flamingo #eebebe; @@ -309,13 +370,19 @@ } ''; }; + + rofi = { + enable = true; + package = pkgs.rofi-wayland; + font = "JetBrains Mono Nerd Font 10"; + location = "center"; + terminal = "${pkgs.rio}/bin/rio"; + }; + }; - # Nicely reload system units when changing configs - systemd.user.startServices = "sd-switch"; - - home.stateVersion = "24.05"; # don't change this + # ----- SERVICES ----- services = { # Change monitor positions # TODO: find a way to make this modular (ie put something different for my laptop) @@ -353,4 +420,10 @@ ]; }; }; + + + # Nicely reload system units when changing configs + systemd.user.startServices = "sd-switch"; + + home.stateVersion = "24.05"; # don't change this } diff --git a/homes/me/default.nix.bak b/homes/me/default.nix.bak new file mode 100644 index 0000000..3573995 --- /dev/null +++ b/homes/me/default.nix.bak @@ -0,0 +1,207 @@ +{ + inputs, + outputs, + lib, + config, + pkgs, + ... +}: + +{ + nixpkgs = { + config.allowUnfree = true; + }; + + imports = [ + # inputs.spicetify-nix.homeManagerModules.default + #./wofi.nix + ]; + + /* + programs.spicetify = + let + spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; + in + { + enable = true; + enabledExtensions = with spicePkgs.extensions; [ + adblock + hidePodcasts + shuffle # shuffle+ (special characters are sanitized out of extension names) + ]; + theme = spicePkgs.themes.catppuccin; + colorScheme = "mocha"; + }; + */ + + #wayland.windowManager.hyprland.enable = true; + + home = { + username = "me"; + homeDirectory = "/home/me"; + }; + + programs = { + # these are both required for home-manager to work + home-manager.enable = true; + git.enable = true; + + # like `/bin/cat` but with syntax highlighting + # TODO: change the pager (maybe use Github:sachaos/viddy instead) + bat = { + enable = true; + config = { + pager = "less -FR"; + #theme = "Dracula"; + }; + }; + + /* + spicetify = + let + spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; + in + { + enable = true; + enabledExtensions = with spicePkgs.extensions; [ + adblock + hidePodcasts + #shuffle + ]; + theme = spicePkgs.themes.catppuccin; + colorScheme = "mocha"; + }; + */ + + # The terminal I use + # TODO: this is dependent on nvim being installed + # TODO: make this into a module with a configurable editor option + rio = { + enable = true; + # Rio Config Docs: https://raphamorim.io/rio/docs/config + settings = { + theme = "dracula"; + hide-mouse-cursor-when-typing = true; + + use-fork = true; # fork (dont spawn) Rio + + padding-x = 10; + padding-y = [ 15 10 ]; # top, left + + # lines = (accumulated scroll * multiplier / divider) + scroll = { + multiplier = 1.0; + divider = 1.0; + }; + + fonts = { + size = 15; + features = []; + + regular = { + family = "FiraCode Nerd Font"; # "IosevkaTerm Nerd Font" + style = "Normal"; + weight = 400; + }; + + bold = { + family = "FiraCode Nerd Font"; + style = "Normal"; + weight = 800; + }; + + italic = { + family = "FiraCode Nerd Font"; + style = "Italic"; + weight = 400; + }; + + bold-italic = { + family = "FiraCode Nerd Font"; + style = "Italic"; + weight = 800; + }; + }; + + # Run when the `OpenConfigEditor` keybinding is triggered + editor = { + program = "nvim"; + args = []; + }; + + renderer = { + performance = "High"; + backend = "Automatic"; # Vulkan + }; + }; + }; + + wofi = { + enable = true; + settings = { + location = "center"; + allow_markup = true; + width = 250; + }; + }; + }; + + # ----- SERVICES ----- + services = { + # Hyprland Wallpaper + #hyprpaper = { + # enable = true; + # settings = { + # preload = [ "~/nixdots/wallpapers/ghibli-esque-valley.png" ]; + # wallpaper = [ + # "DP-2,~/nixdots/wallpapers/ghibli-esque-valley.png" + # "HDMI-A-1,~/nixdots/wallpapers/ghibli-esque-valley.png" + # ]; + # }; + #}; + + hyprpaper.enable = true; # so stylix can see it + + # Change monitor positions + # TODO: find a way to make this modular (ie put something different for my laptop) + # my idea is to have a "monitors" module and use kanshi for wayland + kanshi = { + enable = true; + systemdTarget = "hyprland-session.target"; + # You can find your monitors in hyprland by using `hyprctl monitors all` + settings = [ + { # 1920x1080@144 gaming monitor + output.criteria = "HDMI-A-1"; + output.mode = "1920x1080@119.98Hz"; + output.scale = 1.0; + output.adaptiveSync = false; # Variable Refresh Rate (this can be changed for gaming) + } + { # 4k side monitor + output.criteria = "DP-2"; + output.mode = "3840x2160@60.00Hz"; + output.scale = 2.0; + } + + { # This is my default setup + profile.name = "default"; + profile.outputs = [ + { + criteria = "DP-2"; + position = "0,0"; + } + { + criteria = "HDMI-A-1"; + position = "3840,0"; + } + ]; + } + ]; + }; + }; + + + # Nicely reload system units when changing configs + systemd.user.startServices = "sd-switch"; + + home.stateVersion = "24.05"; # don't change this +} diff --git a/homes/me/default.nix.bak13 b/homes/me/default.nix.bak13 new file mode 100644 index 0000000..f5b3589 --- /dev/null +++ b/homes/me/default.nix.bak13 @@ -0,0 +1,410 @@ +{ + inputs, + outputs, + lib, + config, + pkgs, + ... +}: + +{ + nixpkgs = { + config.allowUnfree = true; + }; + + imports = [ + #inputs.nixcord.homeManagerModules.nixcord + # inputs.spicetify-nix.homeManagerModules.default + #./wofi.nix + ]; + + /* + programs.spicetify = + let + spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; + in + { + enable = true; + enabledExtensions = with spicePkgs.extensions; [ + adblock + hidePodcasts + shuffle # shuffle+ (special characters are sanitized out of extension names) + ]; + theme = spicePkgs.themes.catppuccin; + colorScheme = "mocha"; + }; + */ + + # ----- STYLIX ----- + + #stylix = { + # enable = true; + # + # image = pkgs.fetchurl { + # url = "https://www.pixelstalk.net/wp-content/uploads/2016/05/Epic-Anime-Awesome-Wallpapers.jpg"; + # sha256 = "enQo3wqhgf0FEPHj2coOCvo7DuZv+x5rL/WIo4qPI50="; + # }; + # + # # Stylix will automatically theme applications + # autoEnable = true; + # targets = { + # # disable Stylix's themes for ones I will theme manually + # firefox.enable = false; + # wofi.enable = false; + # }; + #}; + + home = { + username = "me"; + homeDirectory = "/home/me"; + }; + + programs = { + # these are both required for home-manager to work + home-manager.enable = true; + git.enable = true; + + # like `/bin/cat` but with syntax highlighting + # TODO: change the pager (maybe use Github:sachaos/viddy instead) + bat = { + enable = true; + config = { + pager = "less -FR"; + # let Stylix control the theme + #theme = "Dracula"; + }; + }; + + firefox = { + enable = true; + policies = { + #BlockAboutConfig = true; + DefaultDownloadDirectory = "\${home}/downloads"; + }; + }; + + /* + spicetify = + let + spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; + in + { + enable = true; + enabledExtensions = with spicePkgs.extensions; [ + adblock + hidePodcasts + #shuffle + ]; + theme = spicePkgs.themes.catppuccin; + colorScheme = "mocha"; + }; + */ + + # The terminal I use + # TODO: this is dependent on nvim being installed + # TODO: make this into a module with a configurable editor option + rio = { + enable = true; + # Rio Config Docs: https://raphamorim.io/rio/docs/config + settings = { + theme = "dracula"; + hide-mouse-cursor-when-typing = true; + + use-fork = true; # fork (dont spawn) Rio + + padding-x = 10; + padding-y = [ 15 10 ]; # top, left + + # lines = (accumulated scroll * multiplier / divider) + scroll = { + multiplier = 3.0; + divider = 1.0; + }; + + fonts = { + size = 15; + features = []; + + regular = { + family = "FiraCode Nerd Font"; # "IosevkaTerm Nerd Font" + style = "Normal"; + weight = 400; + }; + + bold = { + family = "FiraCode Nerd Font"; + style = "Normal"; + weight = 800; + }; + + italic = { + family = "FiraCode Nerd Font"; + style = "Italic"; + weight = 400; + }; + + bold-italic = { + family = "FiraCode Nerd Font"; + style = "Italic"; + weight = 800; + }; + }; + + # Run when the `OpenConfigEditor` keybinding is triggered + editor = { + program = "nvim"; + args = []; + }; + + renderer = { + performance = "High"; + backend = "Automatic"; # Vulkan + }; + }; + }; + + wofi = { + enable = true; + settings = { + location = "center"; + allow_markup = true; + width = 250; + }; + # Force the style to stop Stylix being a bitch and overwriting it + style = lib.mkForce '' + @define-color rosewater #f2d5cf; + @define-color rosewater-rgb rgb(242, 213, 207); + @define-color flamingo #eebebe; + @define-color flamingo-rgb rgb(238, 190, 190); + @define-color pink #f4b8e4; + @define-color pink-rgb rgb(244, 184, 228); + @define-color mauve #ca9ee6; + @define-color mauve-rgb rgb(202, 158, 230); + @define-color red #e78284; + @define-color red-rgb rgb(231, 130, 132); + @define-color maroon #ea999c; + @define-color maroon-rgb rgb(234, 153, 156); + @define-color peach #ef9f76; + @define-color peach-rgb rgb(239, 159, 118); + @define-color yellow #e5c890; + @define-color yellow-rgb rgb(229, 200, 144); + @define-color green #a6d189; + @define-color green-rgb rgb(166, 209, 137); + @define-color teal #81c8be; + @define-color teal-rgb rgb(129, 200, 190); + @define-color sky #99d1db; + @define-color sky-rgb rgb(153, 209, 219); + @define-color sapphire #85c1dc; + @define-color sapphire-rgb rgb(133, 193, 220); + @define-color blue #8caaee; + @define-color blue-rgb rgb(140, 170, 238); + @define-color lavender #babbf1; + @define-color lavender-rgb rgb(186, 187, 241); + @define-color text #c6d0f5; + @define-color text-rgb rgb(198, 208, 245); + @define-color subtext1 #b5bfe2; + @define-color subtext1-rgb rgb(181, 191, 226); + @define-color subtext0 #a5adce; + @define-color subtext0-rgb rgb(165, 173, 206); + @define-color overlay2 #949cbb; + @define-color overlay2-rgb rgb(148, 156, 187); + @define-color overlay1 #838ba7; + @define-color overlay1-rgb rgb(131, 139, 167); + @define-color overlay0 #737994; + @define-color overlay0-rgb rgb(115, 121, 148); + @define-color surface2 #626880; + @define-color surface2-rgb rgb(98, 104, 128); + @define-color surface1 #51576d; + @define-color surface1-rgb rgb(81, 87, 109); + @define-color surface0 #414559; + @define-color surface0-rgb rgb(65, 69, 89); + @define-color base #303446; + @define-color base-rgb rgb(48, 52, 70); + @define-color mantle #292c3c; + @define-color mantle-rgb rgb(41, 44, 60); + @define-color crust #232634; + @define-color crust-rgb rgb(35, 38, 52); + + * { + font-family: 'FiraCode Nerd Font'; + font-size: 16px; + } + + /* Window */ + window { + margin: 0px; + padding: 10px; + border: 0.16em solid @teal; + border-radius: 0.5em; + background-color: @base; + animation: slideIn 0.25s ease-in-out both; + } + + /* Slide In */ + @keyframes slideIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } + } + + /* Inner Box */ + #inner-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; + /*animation: fadeIn 0.5s ease-in-out both;*/ + } + + /* Fade In */ + @keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } + } + + /* Outer Box */ + #outer-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; + } + + /* Scroll */ + #scroll { + margin: 0px; + padding: 10px; + border: none; + background-color: @base; + } + + /* Input */ + #input { + margin: 5px 20px; + padding: 10px; + border: none; + border-radius: 0.25em; + color: @text; + background-color: @base; + animation: fadeIn 0.25s ease-in-out both; + } + + #input image { + border: none; + color: @red; + } + + #input * { + outline: 4px solid @red!important; + } + + /* Text */ + #text { + margin: 5px; + border: none; + color: @text; + animation: fadeIn 0.5s ease-in-out both; + } + + #entry { + background-color: @base; + } + + #entry arrow { + border: none; + color: @teal; + } + + /* Selected Entry */ + #entry:selected { + border: 0.10em solid @teal; + border-radius: 0.25em; + } + + #entry:selected #text { + color: @teal; + } + + #entry:drop(active) { + background-color: @lavender!important; + } + ''; + }; + + rofi = { + enable = true; + package = pkgs.rofi-wayland; + font = "JetBrains Mono Nerd Font 10"; + location = "center"; + terminal = "${pkgs.rio}/bin/rio"; + }; + + }; + + + # ----- SERVICES ----- + services = { + # Hyprland Wallpaper + #hyprpaper = { + # enable = true; + # settings = { + # preload = [ "/home/me/nixdots/wallpapers/wall.png" ]; + # wallpaper = [ + # "DP-2,/home/me/nixdots/wallpapers/wall.png" + # "HDMI-A-1,/home/me/nixdots/wallpapers/wall.png" + # ]; + # }; + #}; + + # Change monitor positions + # TODO: find a way to make this modular (ie put something different for my laptop) + # my idea is to have a "monitors" module and use kanshi for wayland + kanshi = { + enable = true; + systemdTarget = "hyprland-session.target"; + # You can find your monitors in hyprland by using `hyprctl monitors all` + settings = [ + { # 1920x1080@144 gaming monitor + output.criteria = "HDMI-A-1"; + output.mode = "1920x1080@119.98Hz"; + output.scale = 1.0; + output.adaptiveSync = false; # Variable Refresh Rate (this can be changed for gaming) + } + { # 4k side monitor + output.criteria = "DP-2"; + output.mode = "3840x2160@60.00Hz"; + output.scale = 2.0; + } + + { # This is my default setup + profile.name = "default"; + profile.outputs = [ + { + criteria = "DP-2"; + position = "0,0"; + } + { + criteria = "HDMI-A-1"; + position = "3840,0"; + } + ]; + } + ]; + }; + }; + + + # Nicely reload system units when changing configs + systemd.user.startServices = "sd-switch"; + + home.stateVersion = "24.05"; # don't change this +} diff --git a/homes/me/theme.rasi b/homes/me/theme.rasi new file mode 100644 index 0000000..07c375d --- /dev/null +++ b/homes/me/theme.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOW"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #11092D; + background-alt: #281657; + foreground: #FFFFFF; + selected: #DF5296; + active: #6E77FF; + urgent: #8E3596; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 15px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listbox" ]; +} + +imagebox { + padding: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/images/j.jpg", height); + orientation: vertical; + children: [ "inputbar", "dummy", "mode-switcher" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +dummy { + background-color: transparent; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 20px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + padding: 8px; + border-radius: 10px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 6ea3aba..a4e6f6a 100644 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -36,19 +36,19 @@ in # Use the systemd-boot EFI boot loader. # TODO: use GRUB2 instead - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - #boot.loader = { - # efi = { - # canTouchEfiVariables = true; - # efiSysMountPoint = "/boot/efi"; - # }; - # grub = { - # efiSupport = true; - # #efiInstallAsRemovable = true; # in case canTouchEfiVariables doesn't work on this system - # device = "nodev"; - # }; - #}; + #boot.loader.systemd-boot.enable = true; + #boot.loader.efi.canTouchEfiVariables = true; + boot.loader = { + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot/efi"; + }; + grub = { + efiSupport = true; + #efiInstallAsRemovable = true; # in case canTouchEfiVariables doesn't work on this system + device = "nodev"; + }; + }; # Set your time zone. time.timeZone = "Australia/Brisbane"; @@ -97,6 +97,10 @@ in }; users = { + # using fish as the login shell tends + # to go very poorly because it isn't + # POSIX compliant, so we'll just use + # simple Bash then :) defaultUserShell = pkgs.bash; users = { @@ -104,7 +108,7 @@ in me = { isNormalUser = true; extraGroups = [ "wheel" ]; - shell = pkgs.fish; + shell = pkgs.bash; #pkgs.fish packages = with pkgs; [ firefox nitch @@ -117,7 +121,7 @@ in dev = { isNormalUser = true; extraGroups = [ "wheel" ]; - shell = pkgs.zsh; + shell = pkgs.bash; #pkgs.zsh packages = with pkgs; [ ]; }; @@ -126,7 +130,7 @@ in ae = { isNormalUser = true; extraGroups = [ "wheel" ]; - shell = pkgs.fish; + shell = pkgs.bash; #pkgs.fish packages = with pkgs; [ ]; }; @@ -137,29 +141,44 @@ in # ---- SYSTEM PACKAGES ----- environment.systemPackages = with pkgs; [ - # Applications - #kitty (switched to Rio) - vesktop + # User Environment + inputs.swww.packages.${pkgs.system}.swww + #vesktop helvum easyeffects + ani-cli + + wl-clipboard # clipboard for wayland + + python310 # I use 3.10 since it's in a pretty stable state now + + # fish plugins + grc # colorise command outputs # Pretty necessary - #vim git - # Super duper necessary + # Unix Commands wget tree ]; - # Enable the use of certain programs programs = { - hyprland.enable = true; - fish.enable = true; - zsh.enable = true; + hyprland = { + enable = true; + # set the flake package + package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + # make sure to also set the portal package, so that they are in sync + portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; - git.enable = true; + xwayland.enable = true; + #systemd.enable = true; + }; + + + zsh.enable = true; + fish.enable = true; neovim = { enable = true; @@ -172,9 +191,21 @@ in set tabstop=4 set shiftwidth=4 ''; - # set cc=80 }; }; + + # 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 (^-^) + bash = { + interactiveShellInit = '' + if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi + ''; + }; }; @@ -188,6 +219,7 @@ in "IosevkaTerm" # big nah "CascadiaCode" # potential "FiraCode" # potential + "JetBrainsMono" # for my rofi theme "Hasklig" "Hack"]; }) @@ -206,6 +238,21 @@ in }; + # ----- STYLIX ----- + + #stylix = { + # enable = true; + # image = pkgs.fetchurl { + # url = "https://www.pixelstalk.net/wp-content/uploads/2016/05/Epic-Anime-Awesome-Wallpapers.jpg"; + # sha256 = "enQo3wqhgf0FEPHj2coOCvo7DuZv+x5rL/WIo4qPI50="; + # }; + # + # # Stylix will automatically theme applications + # #autoEnable = true; + # #image = ../../wallpapers/wall.png; + # #image = "/home/me/nixdots/wallpapers/ghibli-esque-valley.png"; + #}; + # Enable the new CLI commands and the flakes as experimental features @@ -225,6 +272,13 @@ in # Enable the OpenSSH daemon. # services.openssh.enable = true; + + # Enable OpenGL + hardware = { + graphics.enable = true; + }; + + # DO NOT MODIFY system.stateVersion = "24.05"; # Did you read the comment? diff --git a/hosts/myputer/hardware-configuration.nix b/hosts/myputer/hardware-configuration.nix index 46551ec..9eb2faf 100644 --- a/hosts/myputer/hardware-configuration.nix +++ b/hosts/myputer/hardware-configuration.nix @@ -18,7 +18,8 @@ fsType = "ext4"; }; - fileSystems."/boot" = + #fileSystems."/boot" = # BIOS + fileSystems."/boot" = # UEFI { device = "/dev/disk/by-uuid/7046-177A"; fsType = "vfat"; options = [ "fmask=0077" "dmask=0077" ]; diff --git a/modules/core/bootloader/default.nix b/modules/core/bootloader/default.nix deleted file mode 100644 index e69de29..0000000 diff --git a/modules/core/bootloader/grub.nix b/modules/core/bootloader/grub.nix index e69de29..5d63dff 100644 --- a/modules/core/bootloader/grub.nix +++ b/modules/core/bootloader/grub.nix @@ -0,0 +1,15 @@ +{...}: + +{ + boot.loader = { + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot/efi"; + }; + grub = { + efiSupport = true; + #efiInstallAsRemovable = true; # in case canTouchEfiVariables doesn't work on your system + device = "nodev"; + }; + }; +} diff --git a/modules/core/bootloader/systemd-boot.nix b/modules/core/bootloader/systemd-boot.nix index e69de29..8557dec 100644 --- a/modules/core/bootloader/systemd-boot.nix +++ b/modules/core/bootloader/systemd-boot.nix @@ -0,0 +1,8 @@ +{...}: + +{ + boot.loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; +} diff --git a/modules/discord/nixcord.nix b/modules/discord/nixcord.nix new file mode 100644 index 0000000..6f65281 --- /dev/null +++ b/modules/discord/nixcord.nix @@ -0,0 +1,29 @@ +{ + lib, + pkgs, + config, + inputs, + outputs, + ... +}: + +{ + imports = [ + inputs.nixcord.homeManagerModules.nixcord + ]; + + programs.nixcord = { + enable = true; + config = { + themeLinks = [ + "" + ]; + + # no surrounding window frame + frameless = true; + + plugins = { + }; + }; + }; +} diff --git a/typescript b/typescript new file mode 100644 index 0000000..c149333 --- /dev/null +++ b/typescript @@ -0,0 +1,7 @@ +Script started on 2024-11-02 18:26:40+10:00 [TERM="rio" TTY="/dev/pts/1" COLUMNS="162" LINES="70"] +You need to install grc! +Welcome weary traveler mmm mm mmm to my shop +[?2004h]0;~/nixdots(B me(B@myputer(B:~/nixdots(B|main⚡*(B?(B +➤ (B e xit exit xit it t  exit   +(B[?2004l]0;exit ~/nixdots(B (B(B[?2004l +Script done on 2024-11-02 18:26:46+10:00 [COMMAND_EXIT_CODE="0"]