From be6926fb0fdda21c026c7b30f653fa970936d378 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Thu, 7 Nov 2024 17:37:15 +1000 Subject: [PATCH] added host: lolcathost --- .gitignore | 0 README.md | 6 + flake.lock | 370 +++++++-- flake.nix | 64 +- homes/me/TODO | 31 + homes/me/default.nix | 782 ++++++++++++-------- homes/me/default.nix.bak | 207 ------ homes/me/default.nix.bak13 | 410 ---------- homes/me/theme.rasi | 0 homes/me/wofi.nix | 0 hosts/lolcathost/default.nix | 315 ++++++-- hosts/lolcathost/hardware-configuration.nix | 41 +- hosts/myputer/default.nix | 25 +- hosts/myputer/hardware-configuration.nix | 0 hosts/myputer/sddm-theme.nix | 0 modules/core/bluetooth.nix | 0 modules/core/bootloader/grub.nix | 0 modules/core/bootloader/systemd-boot.nix | 0 modules/core/garbage-collector.nix | 0 modules/core/sound/default.nix | 0 modules/core/sound/pipewire.nix | 0 modules/discord/nixcord.nix | 8 +- modules/hyprland/default.nix | 0 typescript | 7 - 24 files changed, 1176 insertions(+), 1090 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 README.md mode change 100644 => 100755 flake.lock mode change 100644 => 100755 flake.nix create mode 100644 homes/me/TODO mode change 100644 => 100755 homes/me/default.nix delete mode 100644 homes/me/default.nix.bak delete mode 100644 homes/me/default.nix.bak13 mode change 100644 => 100755 homes/me/theme.rasi mode change 100644 => 100755 homes/me/wofi.nix mode change 100644 => 100755 hosts/lolcathost/default.nix mode change 100644 => 100755 hosts/lolcathost/hardware-configuration.nix mode change 100644 => 100755 hosts/myputer/default.nix mode change 100644 => 100755 hosts/myputer/hardware-configuration.nix mode change 100644 => 100755 hosts/myputer/sddm-theme.nix mode change 100644 => 100755 modules/core/bluetooth.nix mode change 100644 => 100755 modules/core/bootloader/grub.nix mode change 100644 => 100755 modules/core/bootloader/systemd-boot.nix mode change 100644 => 100755 modules/core/garbage-collector.nix mode change 100644 => 100755 modules/core/sound/default.nix mode change 100644 => 100755 modules/core/sound/pipewire.nix mode change 100644 => 100755 modules/discord/nixcord.nix mode change 100644 => 100755 modules/hyprland/default.nix delete mode 100644 typescript diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 7a3953a..50c9053 --- a/README.md +++ b/README.md @@ -65,6 +65,12 @@ 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 +### Wallpaper Sources +1. https://www.wallpaperflare.com/ +2. https://alphacoders.com + specifically: https://alphacoders.com/lofi + + ### 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. diff --git a/flake.lock b/flake.lock old mode 100644 new mode 100755 index eb4fc3d..adee7a7 --- a/flake.lock +++ b/flake.lock @@ -33,6 +33,27 @@ "type": "github" } }, + "devshell": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1728330715, + "narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=", + "owner": "numtide", + "repo": "devshell", + "rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -64,19 +85,17 @@ } }, "flake-compat_3": { - "flake": false, "locked": { "lastModified": 1696426674, "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" + "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": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" } }, "flake-compat_4": { @@ -95,6 +114,91 @@ "type": "github" } }, + "flake-compat_5": { + "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-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1730504689, + "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "506278e768c2a08bec68eb62932193e341f55c90", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-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" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": [ + "nixvim", + "flake-compat" + ], + "gitignore": "gitignore_2", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ], + "nixpkgs-stable": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1730302582, + "narHash": "sha256-W1MIJpADXQCgosJZT8qBYLRuZls2KSiKdpnTVdKBuvU=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "af8a16fe5c264f5e9e18bcee2859b40a656876cf", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -117,6 +221,28 @@ "type": "github" } }, + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "nixvim", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "grub2-themes": { "inputs": { "nixpkgs": "nixpkgs" @@ -142,11 +268,32 @@ ] }, "locked": { - "lastModified": 1729551526, - "narHash": "sha256-7LAGY32Xl14OVQp3y6M43/0AtHYYvV6pdyBcp3eoz0s=", + "lastModified": 1730633670, + "narHash": "sha256-ZFJqIXpvVKvzOVFKWNRDyIyAo+GYdmEPaYi1bZB6uf0=", "owner": "nix-community", "repo": "home-manager", - "rev": "5ec753a1fc4454df9285d8b3ec0809234defb975", + "rev": "8f6ca7855d409aeebe2a582c6fd6b6a8d0bf5661", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1730633670, + "narHash": "sha256-ZFJqIXpvVKvzOVFKWNRDyIyAo+GYdmEPaYi1bZB6uf0=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "8f6ca7855d409aeebe2a582c6fd6b6a8d0bf5661", "type": "github" }, "original": { @@ -198,11 +345,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1729657195, - "narHash": "sha256-YGk7oeyyfvZs4d8qAyMBPg2J/euYK48hPiI6PLKEa30=", + "lastModified": 1730800743, + "narHash": "sha256-DmlaerjZowNAc/NCrVHKwvAMBJYPVFx4YLs0Ad2Jo5g=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "6e0aadc585c6d9fdaaebfa5853adbf9610897c82", + "rev": "e3882b23d09aad7f5c3a708536c87b062f3b0d8d", "type": "github" }, "original": { @@ -315,17 +462,66 @@ "type": "github" } }, + "ixx": { + "inputs": { + "flake-utils": [ + "nixvim", + "nuschtosSearch", + "flake-utils" + ], + "nixpkgs": [ + "nixvim", + "nuschtosSearch", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729544999, + "narHash": "sha256-YcyJLvTmN6uLEBGCvYoMLwsinblXMkoYkNLEO4WnKus=", + "owner": "NuschtOS", + "repo": "ixx", + "rev": "65c207c92befec93e22086da9456d3906a4e999c", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "ref": "v0.0.5", + "repo": "ixx", + "type": "github" + } + }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1730600078, + "narHash": "sha256-BoyFmE59HDF3uybBySsWVoyjNuHvz3Wv8row/mSb958=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "4652874d014b82cb746173ffc64f6a70044daa7e", + "type": "github" + }, + "original": { + "owner": "lnl7", + "repo": "nix-darwin", + "type": "github" + } + }, "nixcord": { "inputs": { "flake-compat": "flake-compat_2", "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1730107956, - "narHash": "sha256-Ohwk5/RGhGjDXaD4v0Yc40J/79gHRcD92mKWY+6qHJU=", + "lastModified": 1730720546, + "narHash": "sha256-5147A6X0MH6u/YDxLe+Nnva3oxfLQanC716LarG/uoo=", "owner": "kaylorben", "repo": "nixcord", - "rev": "5dcb476b924ad08ffd8521cca812052605cb5974", + "rev": "e3e27c77316f7526b1a846778ae9c759c9377611", "type": "github" }, "original": { @@ -336,11 +532,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730370246, - "narHash": "sha256-UD2XmS6IWT+G/scUpPItb0dNijT5Dxa7WMuVqRhiaxU=", + "lastModified": 1730808093, + "narHash": "sha256-oOenwoxpzQsBNi7KltgnXqq6e0+CxlfNXKn3k27w6cQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "88f31ac8837ab15748102da8bbc6e96a9330be0d", + "rev": "c1a390f74b2c93f69a6805142f11a215a689cec1", "type": "github" }, "original": { @@ -368,11 +564,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1729413321, - "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", + "lastModified": 1730531603, + "narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26", + "rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d", "type": "github" }, "original": { @@ -384,11 +580,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1730170245, - "narHash": "sha256-PRq4vJjDa+m1mNwkV9H7zVzMhuMqsHJrTGx0iJZ0e0w=", + "lastModified": 1730768919, + "narHash": "sha256-8AKquNnnSaJRXZxc5YmF/WfmxiHX6MMZZasRP6RRQkE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30c9efeef01e2ad4880bff6a01a61dd99536b3c9", + "rev": "a04d33c0c3f1a59a2c1cb0c6e34cd24500e5a1dc", "type": "github" }, "original": { @@ -400,11 +596,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1729413321, - "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", + "lastModified": 1730531603, + "narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26", + "rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d", "type": "github" }, "original": { @@ -416,11 +612,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1727634051, - "narHash": "sha256-S5kVU7U82LfpEukbn/ihcyNt2+EvG7Z5unsKW9H/yFA=", + "lastModified": 1730200266, + "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "06cf0e1da4208d3766d898b7fdab6513366d45b9", + "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd", "type": "github" }, "original": { @@ -430,6 +626,57 @@ "type": "github" } }, + "nixvim": { + "inputs": { + "devshell": "devshell", + "flake-compat": "flake-compat_3", + "flake-parts": "flake-parts", + "git-hooks": "git-hooks", + "home-manager": "home-manager_2", + "nix-darwin": "nix-darwin", + "nixpkgs": [ + "nixpkgs" + ], + "nuschtosSearch": "nuschtosSearch", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1730792264, + "narHash": "sha256-Ue3iywjyaNOxXgw7esVSBX3bZzM2bSPubZamYsBKIG8=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "3d24cb72618738130e6af9c644c81fe42aa34ebc", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "nuschtosSearch": { + "inputs": { + "flake-utils": "flake-utils", + "ixx": "ixx", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1730515563, + "narHash": "sha256-8lklUZRV7nwkPLF3roxzi4C2oyLydDXyAzAnDvjkOms=", + "owner": "NuschtOS", + "repo": "search", + "rev": "9e22bd742480916ff5d0ab20ca2522eaa3fa061e", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "type": "github" + } + }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", @@ -461,23 +708,24 @@ "hyprland": "hyprland", "nixcord": "nixcord", "nixpkgs": "nixpkgs_4", + "nixvim": "nixvim", "spicetify-nix": "spicetify-nix", "swww": "swww" } }, "spicetify-nix": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_4", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1730261837, - "narHash": "sha256-syeN2dLFxJ9bhsG1YnwWpwMgCttBY1S60KUrqLIrmMo=", + "lastModified": 1730780158, + "narHash": "sha256-ZJkCFn4PL49rINz7xrjlBqw9nF8wWJE7fSVqbHlCWSA=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "1c482c8baffd494119b7f61735d35c62a0a22244", + "rev": "2791c6662002731d3dfc00312307aef547e1c8be", "type": "github" }, "original": { @@ -488,16 +736,16 @@ }, "swww": { "inputs": { - "flake-compat": "flake-compat_4", + "flake-compat": "flake-compat_5", "nixpkgs": "nixpkgs_5", "utils": "utils" }, "locked": { - "lastModified": 1730050836, - "narHash": "sha256-6xCp6rTJ5MWxfUXUYxWRZz1CA5V9/gGqgb0+34BMF6U=", + "lastModified": 1730424990, + "narHash": "sha256-+8YUJsNzvgAeZYLfbHYfYlad/iS+6Eec/LWzL1ZIGfY=", "owner": "LGFae", "repo": "swww", - "rev": "36808dfd90223e648fcc45075ca57392b3d6a297", + "rev": "0db3f4eb192f1c9bf914efcc1d2aba809da5d78a", "type": "github" }, "original": { @@ -536,9 +784,45 @@ "type": "github" } }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1730321837, + "narHash": "sha256-vK+a09qq19QNu2MlLcvN4qcRctJbqWkX7ahgPZ/+maI=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "746901bb8dba96d154b66492a29f5db0693dbfcc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "utils": { "inputs": { - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1726560853, @@ -582,11 +866,11 @@ ] }, "locked": { - "lastModified": 1728166987, - "narHash": "sha256-w6dVTguAn9zJ+7aPOhBQgDz8bn6YZ7b56cY8Kg5HJRI=", + "lastModified": 1730743262, + "narHash": "sha256-iTLqj3lU8kFehPm5tXpctzkD274t/k1nwSSq3qCWXeg=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "fb9c8d665af0588bb087f97d0f673ddf0d501787", + "rev": "09b23cef06fe248e61cec8862c04b9bcb62f4b6d", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix old mode 100644 new mode 100755 index 3f56093..da2e087 --- a/flake.nix +++ b/flake.nix @@ -3,42 +3,38 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - + home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; - spicetify-nix = { + spicetify-nix = { url = "github:Gerg-L/spicetify-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; - - #stylix.url = "github:danth/stylix"; - nixcord = { - url = "github:kaylorben/nixcord"; - }; + #stylix.url = "github:danth/stylix"; - grub2-themes = { - url = "github:vinceliuice/grub2-themes"; - }; + nixcord = { url = "github:kaylorben/nixcord"; }; - # is this necessary? (aren't I enabling it in `configuration.nix` anyways?) + nixvim = { + url = "github:nix-community/nixvim"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + 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"; + swww.url = "github:LGFae/swww"; }; - outputs = { - self, - nixpkgs, - home-manager, - hyprland, - grub2-themes, - #stylix, - ... - }@inputs: + outputs = { self, nixpkgs, home-manager, hyprland, grub2-themes, nixvim + , nixcord, + #stylix, + ... }@inputs: let system = "x86_64-linux"; @@ -54,38 +50,32 @@ nixosConfigurations = { # i be on my puter fr myputer = nixpkgs.lib.nixosSystem { - # nix passes these to every single module above - specialArgs = { - inherit inputs pkgs; - }; + # nix passes these to every single module above + specialArgs = { inherit inputs pkgs; }; modules = [ ./hosts/myputer - grub2-themes.nixosModules.default - #stylix.nixosModules.stylix + grub2-themes.nixosModules.default + #stylix.nixosModules.stylix ]; }; # my laptop 0w0 lolcathost = nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs; - }; + specialArgs = { inherit inputs pkgs; }; - modules = [ - ./hosts/lolcathost - ]; + modules = [ ./hosts/lolcathost ]; }; }; homeConfigurations = { me = home-manager.lib.homeManagerConfiguration { - specialArgs = { - inherit inputs; - }; + specialArgs = { inherit inputs; }; - modules = [ + modules = [ ./home/me + #nixcord.homeManagerModules.nixcord + #nixvim.homeManagerModules.nixvim ]; }; }; diff --git a/homes/me/TODO b/homes/me/TODO new file mode 100644 index 0000000..c4bfdc8 --- /dev/null +++ b/homes/me/TODO @@ -0,0 +1,31 @@ +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 old mode 100644 new mode 100755 index 806471c..dfeeb2e --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -5,17 +5,16 @@ config, pkgs, ... -}: - -{ +}: { nixpkgs = { config.allowUnfree = true; }; imports = [ - # inputs.nixcord.homeManagerModules.nixcord + #inputs.nixcord.homeManagerModules.nixcord # inputs.spicetify-nix.homeManagerModules.default # ./wofi.nix + #../../modules/discord/nixcord.nix ]; /* @@ -36,7 +35,7 @@ */ # ----- STYLIX ----- - + #stylix = { # enable = true; # @@ -44,7 +43,7 @@ # 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 = { @@ -56,332 +55,489 @@ home = { username = "me"; - homeDirectory = "/home/me"; + homeDirectory = "/home/me"; + + pointerCursor = { + gtk.enable = true; + # x11.enable = true # dont enable since im on hyprland + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Ice"; + size = 16; + }; }; programs = { # these are both required for home-manager to work home-manager.enable = true; - - git = { - enable = true; - userName = "emileclarkb"; - userEmail = "eclarkboman@gmail.com"; - }; + + git = { + enable = true; + userName = "Emile Clark-Boman"; + userEmail = "eclarkboman@gmail.com"; + }; # like `/bin/cat` but with syntax highlighting - # TODO: change the pager (maybe use Github:sachaos/viddy instead) - bat = { - enable = true; + # TODO: change the pager (maybe use Github:sachaos/viddy instead) + bat = { + enable = true; config = { - pager = "less -FR"; - # let Stylix control the theme - #theme = "Dracula"; - }; - }; + pager = "less -FR"; + # let Stylix control the theme + #theme = "Dracula"; + }; + }; - firefox = { - enable = true; + #nixvim = { + # enable = true; + # # TODO: allow clipboard to be configurable based on system clipboard + # colorschemes.dracula.enable = true; + # plugins = { + # lualine.enable = true; + # treesitter.enable = true; + # }; + + # opts = { + # number = true; + # tabstop = 4; + # softtabstop = 4; + # shiftwidth = 4; + # }; + + # clipboard.providers.wl-copy.enable = true; + #}; + + # read https://docs.helix-editor.com/editor.html + helix = { + enable = true; + settings = { + theme = "dracula"; + editor = { + line-number = "absolute"; + popup-border = "all"; + scroll-lines = 3; + color-modes = true; # colour the mode indicator depending on mode + shell = ["zsh" "-c"]; + + auto-format = true; + auto-completion = true; # enable popup for autocomplete + completion-timeout = 250; # time before completions display + preview-completion-insert = true; + completion-trigger-len = 2; # min word length to trigger completions + completion-replace = true; # completions replace entire word + + indent-heuristic = "tree-sitter"; # how indentation is computed + middle-click-paste = true; + insert-final-newline = true; # append newline to file on write + + gutters = [ + "diagnostics" + "spacer" + "line-numbers" + "spacer" + "diff" + ]; + + whitespace = { + render = { + space = "none"; # "all" + tab = "none"; #"all" + nbsp = "none"; + nnbsp = "none"; + newline = "none"; + }; + characters = { + space = "·"; + nbsp = "⍽"; + nnbsp = "␣"; + tab = "→"; + newline = "⤶"; + tabpad = "·"; # Tabs will look like "→···" (depending on tab width) + }; + }; + + indent-guides = { + render = true; + character = "▏"; # "|" + skip-levels = 1; + }; + + lsp = { + enable = true; + auto-signature-help = true; # hints for function parameters + display-inlay-hints = true; # inline hints + snippets = true; + }; + + cursor-shape = { + normal = "block"; + insert = "bar"; + select = "block"; + }; + + file-picker = { + hidden = true; # show hidden files + follow-symlinks = true; + deduplicate-links = true; + git-ignore = false; # dont read .gitignore files + ignore = true; # use .ignore for helix instead of .gitignore + }; + + statusline = { + left = [ + "mode" + "version-control" + "spinner" + ]; + center = [ + "file-name" + "read-only-indicator" + "file-modification-indicator" + ]; + right = [ + "position" + "total-line-numbers" + "separator" + "file-encoding" + "file-line-ending" + "separator" + "file-type" + ]; + separator = "|"; + mode.normal = "NORMAL"; + mode.insert = "INSERT"; + mode.select = "SELECT"; + }; + }; + }; + + languages.language = [ + { + name = "nix"; + indent = { + tab-width = 2; + unit = " "; + }; + block-comment-tokens = { + start = "/*"; + end = "*/"; + }; + auto-format = true; + formatter.command = "${pkgs.alejandra}/bin/alejandra"; + } + { + name = "python"; + indent = { + tab-width = 4; + unit = " "; + }; + auto-format = false; # my python is beautiful ^_^ + rulers = [80]; + } + ]; + }; + + #nixcord.enable = true; + + firefox = { + enable = true; policies = { - #BlockAboutConfig = true; - DefaultDownloadDirectory = "\${home}/downloads"; - }; - }; + #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} ]] + # 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 - # ''; - #}; + # fi + # ''; + #}; - fish = { - enable = true; - interactiveShellInit = '' + fish = { + enable = true; + interactiveShellInit = '' set -g fish_greeting "Welcome weary traveler to my shop" - ''; - plugins = [ - { - name = "grc"; - src = pkgs.fishPlugins.grc.src; - } - ]; - }; + ''; + plugins = [ + { + name = "grc"; + src = pkgs.fishPlugins.grc.src; + } + ]; + }; - /* - 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"; - }; - */ + /* + 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; + # 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 + use-fork = true; # fork (dont spawn) Rio padding-x = 10; - padding-y = [ 15 10 ]; # top, left + padding-y = [15 10]; # top, left - # lines = (accumulated scroll * multiplier / divider) + # lines = (accumulated scroll * multiplier / divider) scroll = { - multiplier = 3.0; - divider = 1.0; - }; + multiplier = 3.0; + divider = 1.0; + }; - fonts = { - size = 15; - features = []; + 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; - }; - }; + regular = { + family = "JetBrainsMono Nerd Font"; # FiraCode + style = "Normal"; + weight = 400; + }; - # Run when the `OpenConfigEditor` keybinding is triggered - editor = { - program = "nvim"; - args = []; - }; + bold = { + family = "JetBrainsMono Nerd Font"; + style = "Normal"; + weight = 800; + }; - renderer = { - performance = "High"; - backend = "Automatic"; # Vulkan - }; - }; - }; + italic = { + family = "JetBrainsMono Nerd Font"; + style = "Italic"; + weight = 400; + }; + + bold-italic = { + family = "JetBrainsMono 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); + 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; - } + * { + 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; - } + /* 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; - } + /* Slide In */ + @keyframes slideIn { + 0% { + opacity: 0; + } - 100% { - opacity: 1; - } - } + 100% { + opacity: 1; + } + } - /* Inner Box */ - #inner-box { - margin: 5px; - padding: 10px; - border: none; - background-color: @base; - /*animation: fadeIn 0.5s ease-in-out both;*/ - } + /* 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; - } + /* Fade In */ + @keyframes fadeIn { + 0% { + opacity: 0; + } - 100% { - opacity: 1; - } - } + 100% { + opacity: 1; + } + } - /* Outer Box */ - #outer-box { - margin: 5px; - padding: 10px; - border: none; - background-color: @base; - } + /* Outer Box */ + #outer-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; + } - /* Scroll */ - #scroll { - margin: 0px; - 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 */ + #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 image { + border: none; + color: @red; + } - #input * { - outline: 4px solid @red!important; - } + #input * { + outline: 4px solid @red!important; + } - /* Text */ - #text { - margin: 5px; - border: none; - color: @text; - animation: fadeIn 0.5s ease-in-out both; - } + /* Text */ + #text { + margin: 5px; + border: none; + color: @text; + animation: fadeIn 0.5s ease-in-out both; + } - #entry { - background-color: @base; - } + #entry { + background-color: @base; + } - #entry arrow { - border: none; - color: @teal; - } + #entry arrow { + border: none; + color: @teal; + } - /* Selected Entry */ - #entry:selected { - border: 0.10em solid @teal; - border-radius: 0.25em; - } + /* Selected Entry */ + #entry:selected { + border: 0.10em solid @teal; + border-radius: 0.25em; + } - #entry:selected #text { - color: @teal; - } + #entry:selected #text { + color: @teal; + } - #entry:drop(active) { - background-color: @lavender!important; - } - ''; - }; + #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"; - }; - + rofi = { + enable = true; + package = pkgs.rofi-wayland; + font = "JetBrains Mono Nerd Font 10"; + location = "center"; + terminal = "${pkgs.rio}/bin/rio"; + }; }; - # ----- SERVICES ----- services = { # Change monitor positions @@ -392,36 +548,54 @@ 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; - } + { + # 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; + } + { + # laptop builtin screen + output.criteria = "eDP-1"; + output.mode = "1920x1080@60.02Hz"; + output.scale = 1.0; + } - { # This is my default setup - profile.name = "default"; + { + # This is my dual-monitor desktop setup + profile.name = "myputer"; profile.outputs = [ - { - criteria = "DP-2"; - position = "0,0"; - } - { - criteria = "HDMI-A-1"; - position = "3840,0"; - } - ]; - } + { + criteria = "DP-2"; + position = "0,0"; + } + { + criteria = "HDMI-A-1"; + position = "3840,0"; + } + ]; + } + { + # This is my laptop (lolcathost) :) + profile.name = "lolcathost"; + profile.outputs = [ + { + criteria = "eDP-1"; + position = "0,0"; + } + ]; + } ]; }; }; - # Nicely reload system units when changing configs systemd.user.startServices = "sd-switch"; diff --git a/homes/me/default.nix.bak b/homes/me/default.nix.bak deleted file mode 100644 index 3573995..0000000 --- a/homes/me/default.nix.bak +++ /dev/null @@ -1,207 +0,0 @@ -{ - 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 deleted file mode 100644 index f5b3589..0000000 --- a/homes/me/default.nix.bak13 +++ /dev/null @@ -1,410 +0,0 @@ -{ - 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 old mode 100644 new mode 100755 diff --git a/homes/me/wofi.nix b/homes/me/wofi.nix old mode 100644 new mode 100755 diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix old mode 100644 new mode 100755 index 93ee8e1..1581a81 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -1,32 +1,44 @@ -{ +{ 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 + ./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. - # 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"; - # }; - #}; - - networking.hostName = "myputer"; - # Pick only one of the below networking options. - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + 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"; @@ -36,33 +48,218 @@ console = { font = "Lat2-Terminus16"; keyMap = "us"; - #useXkbConfig = true; # use xkb.options in tty. }; - # Enable sound. - #services.pipewire = { - # enable = true; - # pulse.enable = true; - #}; + # ----- NETWORKING SECTION ----- + networking.hostName = "lolcathost"; + networking.networkmanager.enable = true; - # Enable touchpad support (enabled default in most desktopManager). - # services.libinput.enable = true; + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + networking.firewall.enable = true; - # Define a user account. Don't forget to set a password with ‘passwd’. - users.users.emile = { - isNormalUser = true; - extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. - packages = with pkgs; [ - #firefox - tree + # ----- 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 ]; }; - # List packages installed in system profile. To search, run: - # $ nix search wget + # ---- SYSTEM PACKAGES ----- environment.systemPackages = with pkgs; [ - vim + # 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" # its already i guess + "Iosevka" # nah nah + "IosevkaTerm" # big nah + "CascadiaCode" # potential + "FiraCode" # potential + "JetBrainsMono" # for my rofi theme + "Hasklig" + "Hack" + ]; + }) + + # 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 @@ -73,40 +270,14 @@ # enableSSHSupport = true; # }; - # List services that you want to enable: - # Enable the OpenSSH daemon. # services.openssh.enable = true; - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; + # Enable OpenGL + hardware = { + graphics.enable = true; + }; - # Copy the NixOS configuration file and link it from the resulting system - # (/run/current-system/configuration.nix). This is useful in case you - # accidentally delete configuration.nix. - # system.copySystemConfiguration = true; - - # This option defines the first version of NixOS you have installed on this particular machine, - # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. - # - # Most users should NEVER change this value after the initial install, for any reason, - # even if you've upgraded your system to a new NixOS release. - # - # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, - # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how - # to actually do that. - # - # This value being lower than the current NixOS release does NOT mean your system is - # out of date, out of support, or vulnerable. - # - # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, - # and migrated your data accordingly. - # - # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + # DO NOT MODIFY system.stateVersion = "24.05"; # Did you read the comment? - } - diff --git a/hosts/lolcathost/hardware-configuration.nix b/hosts/lolcathost/hardware-configuration.nix old mode 100644 new mode 100755 index 9892c37..1be6ce5 --- a/hosts/lolcathost/hardware-configuration.nix +++ b/hosts/lolcathost/hardware-configuration.nix @@ -1 +1,40 @@ -# TODO: (i haven't put NixOS on lolcathost yet) +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/4bf649ce-047b-472d-b392-4c2c326362d9"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/D97A-5260"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/bfa29193-4f83-46c3-bcb7-0d2b8323b6e0"; } + ]; + + # 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 + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp2s0f4u1.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix old mode 100644 new mode 100755 index a4e6f6a..a557b9e --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -96,6 +96,8 @@ in }; }; + # allow wheel group to use passwordless sudo + security.sudo.wheelNeedsPassword = false; users = { # using fish as the login shell tends # to go very poorly because it isn't @@ -137,8 +139,14 @@ in }; }; - home-manager.users.me = import ../../homes/me; - + home-manager = { + users.me = import ../../homes/me; + sharedModules = [ + #inputs.nixcord.homeManagerModules.nixcord + #inputs.nixvim.homeManagerModules.nixvim + ]; + }; + # ---- SYSTEM PACKAGES ----- environment.systemPackages = with pkgs; [ # User Environment @@ -147,17 +155,24 @@ in helvum easyeffects ani-cli - wl-clipboard # clipboard for wayland - python310 # I use 3.10 since it's in a pretty stable state now + 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 diff --git a/hosts/myputer/hardware-configuration.nix b/hosts/myputer/hardware-configuration.nix old mode 100644 new mode 100755 diff --git a/hosts/myputer/sddm-theme.nix b/hosts/myputer/sddm-theme.nix old mode 100644 new mode 100755 diff --git a/modules/core/bluetooth.nix b/modules/core/bluetooth.nix old mode 100644 new mode 100755 diff --git a/modules/core/bootloader/grub.nix b/modules/core/bootloader/grub.nix old mode 100644 new mode 100755 diff --git a/modules/core/bootloader/systemd-boot.nix b/modules/core/bootloader/systemd-boot.nix old mode 100644 new mode 100755 diff --git a/modules/core/garbage-collector.nix b/modules/core/garbage-collector.nix old mode 100644 new mode 100755 diff --git a/modules/core/sound/default.nix b/modules/core/sound/default.nix old mode 100644 new mode 100755 diff --git a/modules/core/sound/pipewire.nix b/modules/core/sound/pipewire.nix old mode 100644 new mode 100755 diff --git a/modules/discord/nixcord.nix b/modules/discord/nixcord.nix old mode 100644 new mode 100755 index 6f65281..a347405 --- a/modules/discord/nixcord.nix +++ b/modules/discord/nixcord.nix @@ -9,15 +9,15 @@ { imports = [ - inputs.nixcord.homeManagerModules.nixcord + config.nixcord.homeManagerModules.nixcord ]; programs.nixcord = { enable = true; config = { - themeLinks = [ - "" - ]; + #themeLinks = [ + # "" + #]; # no surrounding window frame frameless = true; diff --git a/modules/hyprland/default.nix b/modules/hyprland/default.nix old mode 100644 new mode 100755 diff --git a/typescript b/typescript deleted file mode 100644 index c149333..0000000 --- a/typescript +++ /dev/null @@ -1,7 +0,0 @@ -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"]