diff --git a/README.md b/README.md index 50c9053..0dd5535 100755 --- a/README.md +++ b/README.md @@ -68,7 +68,8 @@ If their colour scheme was a little less white I'd love it but overall one of my ### Wallpaper Sources 1. https://www.wallpaperflare.com/ 2. https://alphacoders.com - specifically: https://alphacoders.com/lofi + especially this one person: https://alphacoders.com/users/profile/69089/robokoboto + and also the lofi category: https://alphacoders.com/lofi ### Credits diff --git a/TODO b/TODO new file mode 100644 index 0000000..05a5141 --- /dev/null +++ b/TODO @@ -0,0 +1,74 @@ +Get Utilities: +1. httpie +2. curlie +3. zoxide +4. doggo + +1. Get helix editor +2. Custom helix +3. Complete helix tutorial + +Get nixcord working +Get thunar working and configured + + +Get waybar (or another bar) working + +Bind new terminal to SUPER+Enter instead of SUPER+Q + +Get a better wallpapers + +Join Rio Terminal's discord and ask if they support nerdfonts or if I'm doing something wrong + +Figure out how to modularise my dotfiles + +Configure nixcord + + +Change Dell loading screen (Boot Graphics Resource Table, aka BGRT) + + +Get hyprcursor working with Bibata-Modern-Ice + +Install and configure hyprland plugins like hyprlock + +Get a GRUB theme working + +Fix: your 131072x1 screen size is bogus. expect trouble + +Are there plugins for helix? + + +Push nixdots to github + +Create a program that enables/disables passwordless sudo access + (add to github too) + + + + + +Have helix editor look differently depending on language + (specifically don't show indent indicators when editing nix files + + +Learn to package my own home-manager modules + + + + + + +Fork nixcord and fix documentation (the installation is confusing) +But firstly the first code snippet is wrong... +```nix +inputs.nixcord = { + url = "github:kaylorben/nixcord" +}; +``` +Should actually be +```nix +inputs.nixcord = { + url = "github:kaylorben/nixcord"; # dont forget the semicolon +}; +``` diff --git a/flake.nix b/flake.nix index da2e087..7f6c563 100755 --- a/flake.nix +++ b/flake.nix @@ -16,14 +16,16 @@ #stylix.url = "github:danth/stylix"; - nixcord = { url = "github:kaylorben/nixcord"; }; + nixcord = { + url = "github:kaylorben/nixcord"; + }; nixvim = { url = "github:nix-community/nixvim"; inputs.nixpkgs.follows = "nixpkgs"; }; - grub2-themes = { url = "github:vinceliuice/grub2-themes"; }; + grub2-themes = {url = "github:vinceliuice/grub2-themes";}; # is this necessary? (aren't I enabling it in `configuration.nix` anyways?) hyprland.url = "github:hyprwm/Hyprland"; @@ -31,53 +33,62 @@ swww.url = "github:LGFae/swww"; }; - outputs = { self, nixpkgs, home-manager, hyprland, grub2-themes, nixvim - , nixcord, + outputs = { + self, + nixpkgs, + home-manager, + hyprland, + grub2-themes, + nixvim, + nixcord, #stylix, - ... }@inputs: - let - system = "x86_64-linux"; + ... + } @ inputs: let + system = "x86_64-linux"; - pkgs = import nixpkgs { - inherit system; - config.allowUnfree = true; + pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; + }; + + # this is just something I'm experimenting with + PROJECT_ROOT = builtins.toString ./.; + in { + nixosConfigurations = { + # i be on my puter fr + myputer = nixpkgs.lib.nixosSystem { + # nix passes these to every single module above + specialArgs = {inherit inputs pkgs;}; + + modules = [ + ./hosts/myputer + grub2-themes.nixosModules.default + #stylix.nixosModules.stylix + ]; }; - # this is just something I'm experimenting with - PROJECT_ROOT = builtins.toString ./.; + # my laptop 0w0 + lolcathost = nixpkgs.lib.nixosSystem { + specialArgs = {inherit inputs pkgs;}; - in { - nixosConfigurations = { - # i be on my puter fr - myputer = nixpkgs.lib.nixosSystem { - # nix passes these to every single module above - specialArgs = { inherit inputs pkgs; }; - - modules = [ - ./hosts/myputer - grub2-themes.nixosModules.default - #stylix.nixosModules.stylix - ]; - }; - - # my laptop 0w0 - lolcathost = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs pkgs; }; - - modules = [ ./hosts/lolcathost ]; - }; - }; - - homeConfigurations = { - me = home-manager.lib.homeManagerConfiguration { - specialArgs = { inherit inputs; }; - - modules = [ - ./home/me - #nixcord.homeManagerModules.nixcord - #nixvim.homeManagerModules.nixvim - ]; - }; + modules = [ + ./hosts/lolcathost + ]; }; }; + + /* + homeConfigurations = { + me = home-manager.lib.homeManagerConfiguration { + specialArgs = {inherit inputs;}; + + modules = [ + ./home/me + #nixcord.homeManagerModules.nixcord + #nixvim.homeManagerModules.nixvim + ]; + }; + }; + */ + }; } diff --git a/homes/me/TODO b/homes/me/TODO deleted file mode 100644 index c4bfdc8..0000000 --- a/homes/me/TODO +++ /dev/null @@ -1,31 +0,0 @@ -Get Utilities: -1. httpie -2. curlie -3. zoxide -4. doggo - -1. Get helix editor -2. Custom helix -3. Complete helix tutorial - - - -Get waybar (or another bar) working - - -Get a better wallpaper - -Get a GRUB theme working - -Fix: your 131072x1 screen size is bogus. expect trouble - - -Push nixdots to github - - - -Have helix editor look differently depending on language - (specifically don't show indent indicators when editing nix files - - -Learn to package my own home-manager modules diff --git a/homes/me/default.nix b/homes/me/default.nix index dfeeb2e..41f231f 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -236,7 +236,16 @@ ]; }; - #nixcord.enable = true; + nixcord = { + enable = true; + config = { + frameless = true; + plugins = { + # TODO: remove this plugin + hideAttachments.enable = true; + }; + }; + }; firefox = { enable = true; diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 1581a81..f4185d5 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -48,6 +48,9 @@ in { console = { font = "Lat2-Terminus16"; keyMap = "us"; + #packages = with pkgs; [ + # nerdfonts + #]; }; # ----- NETWORKING SECTION ----- @@ -81,6 +84,9 @@ in { # Enable touchpad support libinput.enable = true; + + tumbler.enable = true; # Thunar image thumbnail support + gvfs.enable = true; # Thunar mount, trash, and other functionality }; # allow wheel group to use passwordless sudo @@ -92,7 +98,7 @@ in { defaultUserShell = pkgs.bash; users = { - # just me fr (personal account) + # literally me fr (personal account) me = { isNormalUser = true; extraGroups = ["wheel"]; @@ -128,7 +134,7 @@ in { home-manager = { users.me = import ../../homes/me; sharedModules = [ - #inputs.nixcord.homeManagerModules.nixcord + inputs.nixcord.homeManagerModules.nixcord #inputs.nixvim.homeManagerModules.nixvim ]; }; @@ -180,22 +186,6 @@ in { zsh.enable = true; fish.enable = true; - neovim = { - enable = true; - defaultEditor = true; - viAlias = true; - vimAlias = true; - configure = { - customRC = '' - set number - set tabstop=4 - set shiftwidth=4 - - set mouse=a - ''; - }; - }; - # 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 (^-^) @@ -208,24 +198,30 @@ in { fi ''; }; + + # Thunar also uses: `services.tumbler` & `services.gvfs` + thunar = { + enable = true; + plugins = with pkgs.xfce; [ + thunar-volman # for removable drives (ie USBs) + thunar-archive-plugin # create and extract archives + thunar-media-tags-plugin # change metadata for media files + ]; + }; }; # ----- FONTS ----- fonts = { enableDefaultPackages = true; # no clue what this line does tbh packages = with pkgs; [ - (nerdfonts.override { - fonts = [ - "Cousine" # its already i guess - "Iosevka" # nah nah - "IosevkaTerm" # big nah - "CascadiaCode" # potential - "FiraCode" # potential - "JetBrainsMono" # for my rofi theme - "Hasklig" - "Hack" - ]; - }) + #(nerdfonts.override { + # fonts = [ + # "Cousine" + # "Iosevka" + # "JetBrainsMono" + # ]; + # }) + nerdfonts # texlive maintains a noto-emoji flake texlivePackages.noto-emoji diff --git a/hosts/lolcathost/default.nix.bak b/hosts/lolcathost/default.nix.bak new file mode 100755 index 0000000..c7f703e --- /dev/null +++ b/hosts/lolcathost/default.nix.bak @@ -0,0 +1,280 @@ +{ + pkgs, + inputs, + ... +}: let + home-manager = builtins.fetchTarball { + url = "https://github.com/nix-community/home-manager/archive/master.tar.gz"; + sha256 = "19w63qccz78v0spx03911z98w1bvlxvd07hb0ma14a4vdzi4ninj"; + }; +in { + imports = [ + ./hardware-configuration.nix + (import "${home-manager}/nixos") + inputs.spicetify-nix.nixosModules.default + ]; + + 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"; + }; + + # Use the systemd-boot EFI boot loader. + 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"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + console.packages = with pkgs; [ + nerdfonts + ]; + }; + + # ----- NETWORKING SECTION ----- + networking.hostName = "lolcathost"; + networking.networkmana + + # Open ports in the fi + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + networking.firewall.enable = true; + + # ----- SERVICES ----- + services = { + # Set display manager (login screen) + #displayManager = { + # sddm = { + # enable = true; + # #theme = "${import ./sddm-theme.nix { inherit pkgs; }}"; + # wayland.enable = true; # enable experimental sddm support for wayland + # }; + # defaultSession = "hyprland"; + #}; + + # Enable sound + # TODO: use the modules/core/pipewire.nix module instead :) + pipewire = { + enable = true; + pulse.enable = true; + }; + + # Enable touchpad support + libinput.enable = true; + }; + + # allow wheel group to use passwordless sudo + 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 = { + # just me fr (personal account) + me = { + isNormalUser = true; + extraGroups = ["wheel"]; + shell = pkgs.bash; #pkgs.fish + packages = with pkgs; [ + firefox + nitch + starfetch + tldr + ]; + }; + + # programming/development account + dev = { + isNormalUser = true; + extraGroups = ["wheel"]; + shell = pkgs.bash; #pkgs.zsh + packages = with pkgs; [ + ]; + }; + + # user for my professional jobs and stuff + ae = { + isNormalUser = true; + extraGroups = ["wheel"]; + shell = pkgs.bash; #pkgs.fish + packages = with pkgs; [ + ]; + }; + }; + }; + + home-manager = { + users.me = import ../../homes/me; + sharedModules = [ + #inputs.nixcord.homeManagerModules.nixcord + #inputs.nixvim.homeManagerModules.nixvim + ]; + }; + + # ---- SYSTEM PACKAGES ----- + environment.systemPackages = with pkgs; [ + # User Environment + inputs.swww.packages.${pkgs.system}.swww + #vesktop + helvum + easyeffects + ani-cli + wl-clipboard # clipboard for wayland + + python311 # I use 3.11 since it's in a pretty stable state now + poetry # python dependency management and packaging + + # fish plugins + grc # colorise command outputs + + httpie + curlie + zoxide + doggo + + # Pretty necessary + git + brightnessctl + acpi + + # Unix Commands + wget + tree + ]; + + # Enable the use of certain programs + programs = { + 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; + + xwayland.enable = true; + #systemd.enable = true; + }; + + zsh.enable = true; + fish.enable = true; + + neovim = { + enable = true; + defaultEditor = true; + viAlias = true; + vimAlias = true; + configure = { + customRC = '' + set number + set tabstop=4 + set shiftwidth=4 + + set mouse=a + ''; + }; + }; + + # 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 + ''; + }; + }; + + # ----- FONTS ----- + fonts = { + enableDefaultPackages = true; # no clue what this line does tbh + packages = with pkgs; [ + (nerdfonts.override { + fonts = [ + "Cousine" + "Iosevka" + ]; + }) + + # texlive maintains a noto-emoji flake + texlivePackages.noto-emoji + ]; + + fontconfig = { + defaultFonts = { + serif = ["Iosevka"]; # TODO: package Iosevka Etoile since Iosevka isn't a serif font + sansSerif = ["Iosevka "]; + monospace = ["Cousine"]; + emoji = ["Noto Emoji"]; + }; + }; + }; + + # ----- 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 + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # 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/result b/result new file mode 120000 index 0000000..9f9ebca --- /dev/null +++ b/result @@ -0,0 +1 @@ +/nix/store/8fhj8clwhgkf9yqbsjvvyf5hzgnmd98g-nixos-system-lolcathost-24.11.20241102.7ffd9ae \ No newline at end of file diff --git a/try-this b/try-this new file mode 100644 index 0000000..6287e39 --- /dev/null +++ b/try-this @@ -0,0 +1 @@ +nixos-rebuild build --flake .# --cores 8 -j 1