diff --git a/TODO b/TODO index 8fedefc..d91cb7b 100644 --- a/TODO +++ b/TODO @@ -14,15 +14,14 @@ Set a GTK theme & icon theme Get better wallpapers Get hyprcursor working with Bibata-Modern-Ice +Get a GRUB theme working +Get SDDM and a theme working + Get waybar (or another bar) working -Get a GRUB theme working - -Get SDDM and a theme working - Overtime just install more programs that I need regularly: ie - btop/htop/etc @@ -30,8 +29,7 @@ Overtime just install more programs that I need regularly: ie Get a QT theme -Fix pipewire audio is so incredibly low (happens on laptop and PC) - +Fix pipewire audio sometimes working and sometimes not :( Bind new terminal to SUPER+Enter instead of SUPER+Q diff --git a/flake.lock b/flake.lock index b0bac9c..6f70981 100755 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,24 @@ { "nodes": { + "ags": { + "inputs": { + "nixpkgs": "nixpkgs", + "systems": "systems" + }, + "locked": { + "lastModified": 1728326430, + "narHash": "sha256-tV1ABHuA1HItMdCTuNdA8fMB+qw7LpjvI945VwMSABI=", + "owner": "Aylur", + "repo": "ags", + "rev": "60180a184cfb32b61a1d871c058b31a3b9b0743d", + "type": "github" + }, + "original": { + "owner": "Aylur", + "repo": "ags", + "type": "github" + } + }, "aquamarine": { "inputs": { "hyprutils": [ @@ -119,7 +138,7 @@ }, "grub2-themes": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1730004881, @@ -192,9 +211,9 @@ "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems", + "systems": "systems_2", "xdph": "xdph" }, "locked": { @@ -315,10 +334,26 @@ "type": "github" } }, + "nix-flatpak": { + "locked": { + "lastModified": 1711997201, + "narHash": "sha256-J71xzQlVYsjagA4AsVwRazhBh2rZrPpKvxTgs6UzL7c=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "b76fa31346db7fc958a9898f3c594696ca71c4fd", + "type": "github" + }, + "original": { + "owner": "gmodena", + "ref": "v0.4.1", + "repo": "nix-flatpak", + "type": "github" + } + }, "nixcord": { "inputs": { "flake-compat": "flake-compat_2", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1730720546, @@ -336,16 +371,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730808093, - "narHash": "sha256-oOenwoxpzQsBNi7KltgnXqq6e0+CxlfNXKn3k27w6cQ=", + "lastModified": 1725634671, + "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c1a390f74b2c93f69a6805142f11a215a689cec1", + "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "master", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -367,6 +402,22 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1730808093, + "narHash": "sha256-oOenwoxpzQsBNi7KltgnXqq6e0+CxlfNXKn3k27w6cQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c1a390f74b2c93f69a6805142f11a215a689cec1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1730785428, "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", @@ -382,7 +433,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1730768919, "narHash": "sha256-8AKquNnnSaJRXZxc5YmF/WfmxiHX6MMZZasRP6RRQkE=", @@ -398,13 +449,13 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { - "lastModified": 1730531603, - "narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=", + "lastModified": 1730785428, + "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d", + "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", "type": "github" }, "original": { @@ -414,7 +465,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1730200266, "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", @@ -456,11 +507,13 @@ }, "root": { "inputs": { + "ags": "ags", "grub2-themes": "grub2-themes", "home-manager": "home-manager", "hyprland": "hyprland", + "nix-flatpak": "nix-flatpak", "nixcord": "nixcord", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "spicetify-nix": "spicetify-nix", "swww": "swww" } @@ -489,7 +542,7 @@ "swww": { "inputs": { "flake-compat": "flake-compat_4", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_6", "utils": "utils" }, "locked": { @@ -522,6 +575,21 @@ } }, "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -538,7 +606,7 @@ }, "utils": { "inputs": { - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1726560853, diff --git a/flake.nix b/flake.nix index 5ca40a8..f9a840a 100755 --- a/flake.nix +++ b/flake.nix @@ -2,6 +2,7 @@ description = "Emile's Nix Dotfiles"; inputs = { + #nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { @@ -14,16 +15,19 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - nixcord = { - url = "github:kaylorben/nixcord"; - }; + nixcord.url = "github:kaylorben/nixcord"; - 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"; swww.url = "github:LGFae/swww"; + + # TODO: declarative flatpak management + nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1"; + + ags.url = "github:Aylur/ags"; }; outputs = { @@ -63,6 +67,7 @@ modules = [ ./hosts/lolcathost + grub2-themes.nixosModules.default ]; }; }; diff --git a/homes/me/ags/config.js b/homes/me/ags/config.js new file mode 100644 index 0000000..5310091 --- /dev/null +++ b/homes/me/ags/config.js @@ -0,0 +1,15 @@ +const myLabel = Widget.Label({ + label: 'Emillllle', +}) + +const myBar = Widget.Window({ + name: 'bar', + anchor: ['top', 'left', 'right'], + child: myLabel, +}) + +App.config({ + windows: [ + myBar + ] +}) diff --git a/homes/me/default.nix b/homes/me/default.nix index 64de919..19d85d8 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -11,10 +11,19 @@ }; imports = [ - #inputs.nixcord.homeManagerModules.nixcord - # inputs.spicetify-nix.homeManagerModules.default - # ./wofi.nix - #../../modules/discord/nixcord.nix + ../modules/git.nix + ../modules/bat.nix + ../modules/fish.nix + ../modules/editor/helix.nix + + ../modules/rio.nix + ../modules/firefox.nix + ../modules/nixcord.nix + + ../modules/hypr/hypridle.nix + ../modules/hypr/hyprlock.nix + ../modules/kanshi.nix + ../modules/wofi.nix ]; /* @@ -76,418 +85,21 @@ style.name = "gtk2"; }; - services.hypridle = { - enable = true; - settings = { - general = { - ignore_dbus_inhibit = false; - lock_cmd = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock"; - before_sleep_cmd = "loginctl lock-session"; - after_sleep_cmd = "hyprctl dispatch dpms on"; - }; - - listener = [ - { - timeout = 600; - on-timeout = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock"; - } - - { - timeout = 660; - on-timeout = "systemctl suspend"; - } - ]; - }; - }; - - programs.hyprlock = { - enable = true; - settings = { - background = { - monitor = ""; - path = "$HOME/downloads/1.png"; # only png supported for now - # color = $color1 - - # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations - blur_size = 4; - blur_passes = 3; # 0 disables blurring - noise = 0.0117; - contrast = 1.3000; # Vibrant!!! - brightness = 0.8000; - vibrancy = 0.2100; - vibrancy_darkness = 0.0; - }; - label = [ - { - # Hours - monitor = ""; - text = ''cmd[update:1000] echo " $(date +"%H") "''; - color = "rgb(255, 255, 255, 1)"; - font_size = 112; - font_family = "Geist Mono 10"; - shadow_passes = 3; - shadow_size = 4; - - position = "0, 240"; - halign = "center"; - valign = "center"; - } - - { - # Minutes - monitor = ""; - text = ''cmd[update:1000] echo " $(date +"%M") "''; - color = "rgb(255, 255, 255, 1)"; - font_size = 112; - font_family = "Geist Mono 10"; - shadow_passes = 3; - shadow_size = 4; - - position = "0, 120"; - halign = "center"; - valign = "center"; - } - - # Today - { - monitor = ""; - text = ''cmd[update:18000000] echo " "$(date +'%A')" "''; - color = "rgb(255, 255, 255, 1)"; - font_size = 22; - font_family = "JetBrainsMono Nerd Font 10"; - - position = "0, 30"; - halign = "center"; - valign = "center"; - } - - # Week - { - monitor = ""; - text = ''cmd[update:18000000] echo " "$(date +'%d %b')" "''; - color = "rgb(255, 255, 255, 1)"; - font_size = 18; - font_family = "JetBrainsMono Nerd Font 10"; - - position = "0, 6"; - halign = "center"; - valign = "center"; - } - - { - # Degrees - monitor = ""; - # get temperature in Brisbane - text = ''cmd[update:18000000] echo "Feels like $(curl -s 'wttr.in/bne?format=%t' | tr -d '+') "''; - color = "rgb(255, 255, 255, 1)"; - font_size = 18; - font_family = "Geist Mono 10"; - - position = "0, 40"; - halign = "center"; - valign = "bottom"; - } - ]; - - input-field = { - monitor = ""; - size = "300, 50"; - outline_thickness = 3; - - dots_size = 0.26; # Scale of input-field height, 0.2 - 0.8 - dots_spacing = 0.64; # Scale of dots' absolute size, 0.0 - 1.0 - dots_center = true; - dots_rouding = -1; - - rounding = 22; - outer_color = "rgb(255, 0, 0, 1)"; - inner_color = "rgb(0, 255, 0, 1)"; - font_color = "rgb(0, 0, 255, 1)"; - fade_on_empty = true; - placeholder_text = "!!Super Secret!!"; # Text rendered in the input box when it's empty. - - position = "0, 120"; - halign = "center"; - valign = "bottom"; - }; - }; - }; - - /* - programs.hyprlock = { - enable = true; - settings = { - general = { - grace = 5; - no_fade_in = false; - disable_loading_bar = false; - }; - - # BACKGROUND - background = { - monitor = ""; - path = "../../../downloads/1.png"; - blur_passes = 0; - contrast = 0.8916; - brightness = 0.7172; - vibrancy = 0.1696; - vibrancy_darkness = 0.0; - }; - - label = [ - { - # Day-Month-Date - monitor = ""; - text = ''cmd[update:1000] echo -e "$(date +"%A, %B %d")"''; - color = "rgb(255, 255, 255, 1)"; - font_size = 28; - font_family = "JetBrainsMono Nerd Font Bold"; - position = "0, 490"; - halign = "center"; - valign = "center"; - } - # Time - { - monitor = ""; - text = ''cmd[update:1000] echo "$(date +"%I:%M")"''; - color = "rgb(255, 255, 255, 1)"; - font_size = 160; - font_family = "steelfish outline regular"; - position = "0, 370"; - halign = "center"; - valign = "center"; - } - # USER - { - monitor = ""; - text = " $USER"; - color = "rgb(255, 255, 255, 1)"; - outline_thickness = 2; - dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8 - dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0 - dots_center = true; - font_size = 18; - font_family = "JetBrainsMono Nerd Font Bold"; - position = "0, -180"; - halign = "center"; - valign = "center"; - } - ]; - - # INPUT FIELD - input-field = [ - { - monitor = ""; - size = "300, 60"; - outline_thickness = 2; - dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8 - dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0 - dots_center = true; - outer_color = "rgba(255, 255, 255, 0)"; - inner_color = "rgba(255, 255, 255, 0.1)"; - font_color = "rgb(255, 255, 255, 1)"; - fade_on_empty = false; - font_family = "JetBrainsMono Nerd Font Bold"; - placeholder_text = "🔒 Enter Password"; - hide_input = false; - position = "0, -250"; - halign = "center"; - valign = "center"; - } - ]; - }; - }; - */ - programs = { # these are both required for home-manager to work home-manager.enable = true; - git = { + ags = { enable = true; - userName = "Emile Clark-Boman"; - userEmail = "eclarkboman@gmail.com"; - }; + configDir = ./ags; - # 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"; - }; - }; - - #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 - # TODO: make this configurable (enabled on myputer, disabled on lolcathost) - 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" - "spacer" - "version-control" - "spinner" - ]; - center = [ - "file-name" - "read-only-indicator" - "file-modification-indicator" - ]; - right = [ - "position" - "total-line-numbers" - "file-encoding" - "file-line-ending" - "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]; - } + extraPackages = with pkgs; [ + gtksourceview + webkitgtk + accountsservice ]; }; - nixcord = { - enable = true; - config = { - frameless = true; - plugins = { - # TODO: remove this plugin - hideAttachments.enable = true; - }; - }; - }; - - 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 @@ -501,19 +113,6 @@ # ''; #}; - fish = { - enable = true; - interactiveShellInit = '' - set -g fish_greeting "Welcome weary traveler to my shop" - ''; - plugins = [ - { - name = "grc"; - src = pkgs.fishPlugins.grc.src; - } - ]; - }; - /* spicetify = let @@ -530,314 +129,9 @@ 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 = "JetBrainsMono Nerd Font"; # FiraCode - style = "Normal"; - weight = 400; - }; - - bold = { - family = "JetBrainsMono Nerd Font"; - style = "Normal"; - weight = 800; - }; - - 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 = "hx"; # helix - 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 = { - # 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; - } - { - # laptop builtin screen - output.criteria = "eDP-1"; - output.mode = "1920x1080@60.02Hz"; - output.scale = 1.0; - } - - { - # 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"; - } - ]; - } - { - # 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/wofi.nix b/homes/me/wofi.nix deleted file mode 100755 index 8613519..0000000 --- a/homes/me/wofi.nix +++ /dev/null @@ -1,192 +0,0 @@ -{ - lib, - config, - pkgs, - ... -}: - -{ - options = { - #enable = lib.mkEnableOption "Enable wofi and my configuration"; - }; - - config = { - programs = { - wofi = { - enable = true; - settings = { - location = "center"; - allow_markup = true; - width = 250; - }; - style = '' - @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', monospace; - 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; - } - '' - }; - }; - }; -} diff --git a/homes/modules/bat.nix b/homes/modules/bat.nix new file mode 100644 index 0000000..f29f49b --- /dev/null +++ b/homes/modules/bat.nix @@ -0,0 +1,15 @@ +{ + config, + pkgs, + ... +}: { + # like `/bin/cat` but with syntax highlighting + # TODO: change the pager (maybe use Github:sachaos/viddy instead) + programs.bat = { + enable = true; + config = { + pager = "less -FR"; + theme = "Dracula"; + }; + }; +} diff --git a/homes/modules/editor/helix.nix b/homes/modules/editor/helix.nix new file mode 100644 index 0000000..4a66841 --- /dev/null +++ b/homes/modules/editor/helix.nix @@ -0,0 +1,135 @@ +{ + config, + pkgs, + ... +}: { + # read https://docs.helix-editor.com/editor.html + programs.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 + # TODO: make this configurable (enabled on myputer, disabled on lolcathost) + 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" + "spacer" + "version-control" + "spinner" + ]; + center = [ + "file-name" + "read-only-indicator" + "file-modification-indicator" + ]; + right = [ + "position" + "total-line-numbers" + "file-encoding" + "file-line-ending" + "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]; + } + ]; + }; +} diff --git a/homes/modules/editor/nixvim.nix b/homes/modules/editor/nixvim.nix new file mode 100644 index 0000000..9197417 --- /dev/null +++ b/homes/modules/editor/nixvim.nix @@ -0,0 +1,24 @@ +{ + config, + pkgs, + ... +}: { + programs.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; + }; +} diff --git a/homes/modules/firefox.nix b/homes/modules/firefox.nix new file mode 100644 index 0000000..1ad1564 --- /dev/null +++ b/homes/modules/firefox.nix @@ -0,0 +1,13 @@ +{ + config, + pkgs, + ... +}: { + programs.firefox = { + enable = true; + policies = { + #BlockAboutConfig = true; + DefaultDownloadDirectory = "\${home}/downloads"; + }; + }; +} diff --git a/homes/modules/fish.nix b/homes/modules/fish.nix new file mode 100644 index 0000000..3cb9bc7 --- /dev/null +++ b/homes/modules/fish.nix @@ -0,0 +1,18 @@ +{ + config, + pkgs, + ... +}: { + programs.fish = { + enable = true; + interactiveShellInit = '' + set -g fish_greeting "Welcome weary traveler to my shop" + ''; + plugins = [ + { + name = "grc"; + src = pkgs.fishPlugins.grc.src; + } + ]; + }; +} diff --git a/homes/modules/git.nix b/homes/modules/git.nix new file mode 100644 index 0000000..c98ab4e --- /dev/null +++ b/homes/modules/git.nix @@ -0,0 +1,11 @@ +{ + config, + pkgs, + ... +}: { + programs.git = { + enable = true; + userName = "Emile Clark-Boman"; + userEmail = "eclarkboman@gmail.com"; + }; +} diff --git a/homes/modules/hypr/hypridle.nix b/homes/modules/hypr/hypridle.nix new file mode 100644 index 0000000..e31be07 --- /dev/null +++ b/homes/modules/hypr/hypridle.nix @@ -0,0 +1,29 @@ +{ + config, + pkgs, + ... +}: { + services.hypridle = { + enable = true; + settings = { + general = { + ignore_dbus_inhibit = false; + lock_cmd = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock"; + before_sleep_cmd = "loginctl lock-session"; + after_sleep_cmd = "hyprctl dispatch dpms on"; + }; + + listener = [ + { + timeout = 600; + on-timeout = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock"; + } + + { + timeout = 660; + on-timeout = "systemctl suspend"; + } + ]; + }; + }; +} diff --git a/homes/modules/hypr/hyprland.nix b/homes/modules/hypr/hyprland.nix new file mode 100644 index 0000000..e69de29 diff --git a/homes/modules/hypr/hyprlock.nix b/homes/modules/hypr/hyprlock.nix new file mode 100644 index 0000000..50245bc --- /dev/null +++ b/homes/modules/hypr/hyprlock.nix @@ -0,0 +1,118 @@ +{ + config, + pkgs, + ... +}: { + programs.hyprlock = { + enable = true; + settings = { + background = { + monitor = ""; + path = "$HOME/downloads/wallpaper/1380597.png"; # only png supported for now + # color = $color1 + + # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations + blur_size = 4; + blur_passes = 3; # 0 disables blurring + noise = 0.0117; + contrast = 1.3000; # Vibrant!!! + brightness = 0.8000; + vibrancy = 0.2100; + vibrancy_darkness = 0.0; + }; + label = [ + { + # Hours + monitor = ""; + text = ''cmd[update:1000] echo " $(date +"%H") "''; + color = "rgb(255, 255, 255, 1)"; + font_size = 112; + font_family = "Geist Mono 10"; + shadow_passes = 3; + shadow_size = 4; + + position = "0, 240"; + halign = "center"; + valign = "center"; + } + + { + # Minutes + monitor = ""; + text = ''cmd[update:1000] echo " $(date +"%M") "''; + color = "rgb(255, 255, 255, 1)"; + font_size = 112; + font_family = "Geist Mono 10"; + shadow_passes = 3; + shadow_size = 4; + + position = "0, 120"; + halign = "center"; + valign = "center"; + } + + # Today + { + monitor = ""; + text = ''cmd[update:18000000] echo " "$(date +'%A')" "''; + color = "rgb(255, 255, 255, 1)"; + font_size = 22; + font_family = "JetBrainsMono Nerd Font 10"; + + position = "0, 30"; + halign = "center"; + valign = "center"; + } + + # Week + { + monitor = ""; + text = ''cmd[update:18000000] echo " "$(date +'%d %b')" "''; + color = "rgb(255, 255, 255, 1)"; + font_size = 18; + font_family = "JetBrainsMono Nerd Font 10"; + + position = "0, 6"; + halign = "center"; + valign = "center"; + } + + { + # Degrees + monitor = ""; + # get temperature in Brisbane + text = ''cmd[update:18000000] echo "Feels like $(curl -s 'wttr.in/bne?format=%t' | tr -d '+') "''; + color = "rgb(255, 255, 255, 1)"; + font_size = 18; + font_family = "Geist Mono 10"; + + position = "0, 40"; + halign = "center"; + valign = "bottom"; + } + ]; + + input-field = { + monitor = ""; + size = "300, 50"; + outline_thickness = 3; + + dots_size = 0.26; # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.64; # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = true; + dots_rouding = -1; + + rounding = 22; + outer_color = "rgb(255, 0, 0, 1)"; + inner_color = "rgb(0, 255, 0, 1)"; + font_color = "rgb(0, 0, 255, 1)"; + fade_on_empty = true; + placeholder_text = "!!Super Secret!!"; # Text rendered in the input box when it's empty. + + position = "0, 120"; + halign = "center"; + valign = "bottom"; + }; + }; + }; +} diff --git a/homes/modules/kanshi.nix b/homes/modules/kanshi.nix new file mode 100644 index 0000000..906f6a8 --- /dev/null +++ b/homes/modules/kanshi.nix @@ -0,0 +1,60 @@ +{ + config, + pkgs, + ... +}: { + # 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 + services.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; + } + { + # laptop builtin screen + output.criteria = "eDP-1"; + output.mode = "1920x1080@60.02Hz"; + output.scale = 1.0; + } + + { + # 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"; + } + ]; + } + { + # This is my laptop (lolcathost) :) + profile.name = "lolcathost"; + profile.outputs = [ + { + criteria = "eDP-1"; + position = "0,0"; + } + ]; + } + ]; + }; +} diff --git a/homes/modules/nixcord.nix b/homes/modules/nixcord.nix new file mode 100644 index 0000000..a006c0e --- /dev/null +++ b/homes/modules/nixcord.nix @@ -0,0 +1,16 @@ +{ + config, + pkgs, + ... +}: { + programs.nixcord = { + enable = true; + config = { + frameless = true; + plugins = { + # TODO: remove this plugin + hideAttachments.enable = true; + }; + }; + }; +} diff --git a/homes/modules/rio.nix b/homes/modules/rio.nix new file mode 100644 index 0000000..84ea3a2 --- /dev/null +++ b/homes/modules/rio.nix @@ -0,0 +1,68 @@ +{ + config, + pkgs, + ... +}: { + # The terminal I use + # TODO: this is dependent on nvim being installed + # TODO: make this into a module with a configurable editor option + programs.rio = { + enable = true; + # 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 = "JetBrainsMono Nerd Font"; # FiraCode + style = "Normal"; + weight = 400; + }; + + bold = { + family = "JetBrainsMono Nerd Font"; + style = "Normal"; + weight = 800; + }; + + 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 = "hx"; # helix + args = []; + }; + + renderer = { + performance = "High"; + backend = "Automatic"; # Vulkan + }; + }; + }; +} diff --git a/homes/modules/rofi.nix b/homes/modules/rofi.nix new file mode 100644 index 0000000..6d05543 --- /dev/null +++ b/homes/modules/rofi.nix @@ -0,0 +1,13 @@ +{ + config, + pkgs, + ... +}: { + programs.rofi = { + enable = true; + package = pkgs.rofi-wayland; + font = "JetBrains Mono Nerd Font 10"; + location = "center"; + terminal = "${pkgs.rio}/bin/rio"; + }; +} diff --git a/homes/modules/wofi.nix b/homes/modules/wofi.nix new file mode 100755 index 0000000..81a25d3 --- /dev/null +++ b/homes/modules/wofi.nix @@ -0,0 +1,183 @@ +{ + lib, + config, + pkgs, + ... +}: { + programs.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; + } + ''; + }; +} diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index d81e477..806a6a6 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -1,8 +1,13 @@ { pkgs, inputs, + lib, ... }: let + #home-manager = builtins.fetchTarball { + # url = "https://github.com/nix-community/home-manager/archive/release-24.05.tar.gz"; + # sha256 = "00wp0s9b5nm5rsbwpc1wzfrkyxxmqjwsc1kcibjdbfkh69arcpsn"; + #}; home-manager = builtins.fetchTarball { url = "https://github.com/nix-community/home-manager/archive/master.tar.gz"; sha256 = "19w63qccz78v0spx03911z98w1bvlxvd07hb0ma14a4vdzi4ninj"; @@ -38,6 +43,13 @@ in { #efiInstallAsRemovable = true; # in case canTouchEfiVariables doesn't work on this system device = "nodev"; }; + # GitHub: vinceliuice/grub2-themes + grub2-theme = { + enable = true; + theme = "whitesur"; # sylish, vimix, or whitesur + footer = true; + customResolution = "1920x1080"; # Optional: Set a custom resolution + }; }; # Set your time zone. @@ -67,10 +79,11 @@ in { services = { # Set display manager (login screen) displayManager = { + # sddm relies on pkgs.libsForQt5.qt5.qtgraphicaleffects sddm = { enable = true; wayland.enable = true; # enable experimental sddm support for wayland - theme = "${import ./sddm-theme-corners.nix {inherit pkgs;}}"; + theme = "corners"; }; defaultSession = "hyprland"; }; @@ -114,6 +127,11 @@ in { firefox nitch starfetch + + # flatpak requires gnome-software + # for graphical applications + flatpak + gnome.gnome-software ]; }; @@ -126,7 +144,7 @@ in { ]; }; - # # programming/development account + # # This is the user account for servers # dev = { # isNormalUser = true; # extraGroups = ["wheel"]; @@ -149,6 +167,7 @@ in { users.me = import ../../homes/me; sharedModules = [ inputs.nixcord.homeManagerModules.nixcord + inputs.ags.homeManagerModules.default ]; }; @@ -163,6 +182,10 @@ in { wl-clipboard # clipboard for wayland kcalc # TEMP: (FOR TESTING) + (callPackage ./sddm-theme-corners.nix {}).sddm-theme-corners + # dependencies for my sddm theme: + pkgs.libsForQt5.qt5.qtgraphicaleffects + python311 # I use 3.11 since it's in a pretty stable state now poetry # python dependency management and packaging @@ -180,6 +203,7 @@ in { git brightnessctl acpi + vim # Unix Commands wget diff --git a/hosts/lolcathost/sddm-theme-corners.nix b/hosts/lolcathost/sddm-theme-corners.nix index b96abe6..ccc93f0 100755 --- a/hosts/lolcathost/sddm-theme-corners.nix +++ b/hosts/lolcathost/sddm-theme-corners.nix @@ -1,6 +1,6 @@ {pkgs}: { sddm-theme-corners = pkgs.stdenv.mkDerivation rec { - pname = "sddm-theme-corners"; + name = "sddm-theme-corners"; #version = "1.0"; #dontBuild = true; installPhase = '' diff --git a/out.data b/out.data new file mode 100644 index 0000000..fabfd34 --- /dev/null +++ b/out.data @@ -0,0 +1,724 @@ +warning: Git tree '/home/me/nixdots' is dirty +building the system configuration... +warning: Git tree '/home/me/nixdots' is dirty +error: + … while calling anonymous lambda + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1570:24: + 1569| let f = attrPath: + 1570| zipAttrsWith (n: values: + | ^ + 1571| let here = attrPath ++ [n]; in + + … while calling the 'head' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1574:11: + 1573| || pred here (elemAt values 1) (head values) then + 1574| head values + | ^ + 1575| else + + … while calling anonymous lambda + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1204:18: + 1203| mapAttrs + 1204| (name: value: + | ^ + 1205| if isAttrs value && cond value + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1207:18: + 1206| then recurse (path ++ [ name ]) value + 1207| else f (path ++ [ name ]) value); + | ^ + 1208| in + + … while calling anonymous lambda + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:254:72: + 253| # For definitions that have an associated option + 254| declaredConfig = mapAttrsRecursiveCond (v: ! isOption v) (_: v: v.value) options; + | ^ + 255| + + … while evaluating the attribute 'value' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:816:9: + 815| in warnDeprecation opt // + 816| { value = addErrorContext "while evaluating the option `${showOption loc}':" value; + | ^ + 817| inherit (res.defsFinal') highestPrio; + + … while evaluating the option `system.build.toplevel': + + … while evaluating the attribute 'mergedValue' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:851:5: + 850| # Type-check the remaining definitions, and merge them. Or throw if no definitions. + 851| mergedValue = + | ^ + 852| if isDefined then + + … while evaluating a branch condition + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:852:7: + 851| mergedValue = + 852| if isDefined then + | ^ + 853| if all (def: type.check def.value) defsFinal then type.merge loc defsFinal + + … while evaluating the attribute 'values' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:845:9: + 844| in { + 845| values = defs'''; + | ^ + 846| inherit (defs'') highestPrio; + + … while evaluating a branch condition + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:841:11: + 840| # Avoid sorting if we don't have to. + 841| if any (def: def.value._type or "" == "order") defs''.values + | ^ + 842| then sortProperties defs''.values + + … while calling the 'any' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:841:14: + 840| # Avoid sorting if we don't have to. + 841| if any (def: def.value._type or "" == "order") defs''.values + | ^ + 842| then sortProperties defs''.values + + … while evaluating the attribute 'values' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:944:7: + 943| in { + 944| values = concatMap (def: if getPrio def == highestPrio then [(strip def)] else []) defs; + | ^ + 945| inherit highestPrio; + + … while calling the 'concatMap' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:944:16: + 943| in { + 944| values = concatMap (def: if getPrio def == highestPrio then [(strip def)] else []) defs; + | ^ + 945| inherit highestPrio; + + … while calling the 'concatMap' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:831:17: + 830| # Process mkMerge and mkIf properties. + 831| defs' = concatMap (m: + | ^ + 832| map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) + + … while calling anonymous lambda + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:831:28: + 830| # Process mkMerge and mkIf properties. + 831| defs' = concatMap (m: + | ^ + 832| map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) + + … while calling the 'map' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:832:11: + 831| defs' = concatMap (m: + 832| map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) + | ^ + 833| ) defs; + + … while evaluating definitions from `/nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/nixos/modules/system/activation/top-level.nix': + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:832:128: + 831| defs' = concatMap (m: + 832| map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) + | ^ + 833| ) defs; + + … while calling 'dischargeProperties' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:903:25: + 902| */ + 903| dischargeProperties = def: + | ^ + 904| if def._type or "" == "merge" then + + … while evaluating a branch condition + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:904:5: + 903| dischargeProperties = def: + 904| if def._type or "" == "merge" then + | ^ + 905| concatMap dischargeProperties def.contents + + … while evaluating the attribute 'value' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:614:53: + 613| (n: value: + 614| [{ inherit (module) file; inherit value; }] + | ^ + 615| ) + + … while evaluating a branch condition + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/nixos/modules/system/activation/top-level.nix:72:26: + 71| + 72| baseSystemAssertWarn = if failedAssertions != [] + | ^ + 73| then throw "\nFailed assertions:\n${concatStringsSep "\n" (map (x: "- ${x}") failedAssertions)}" + + … while calling the 'map' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/nixos/modules/system/activation/top-level.nix:70:22: + 69| + 70| failedAssertions = map (x: x.message) (filter (x: !x.assertion) config.assertions); + | ^ + 71| + + … while calling the 'filter' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/nixos/modules/system/activation/top-level.nix:70:42: + 69| + 70| failedAssertions = map (x: x.message) (filter (x: !x.assertion) config.assertions); + | ^ + 71| + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/nixos/modules/system/activation/top-level.nix:70:67: + 69| + 70| failedAssertions = map (x: x.message) (filter (x: !x.assertion) config.assertions); + | ^ + 71| + + … while calling anonymous lambda + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1204:18: + 1203| mapAttrs + 1204| (name: value: + | ^ + 1205| if isAttrs value && cond value + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1207:18: + 1206| then recurse (path ++ [ name ]) value + 1207| else f (path ++ [ name ]) value); + | ^ + 1208| in + + … while calling anonymous lambda + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:254:72: + 253| # For definitions that have an associated option + 254| declaredConfig = mapAttrsRecursiveCond (v: ! isOption v) (_: v: v.value) options; + | ^ + 255| + + … while evaluating the attribute 'value' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:816:9: + 815| in warnDeprecation opt // + 816| { value = addErrorContext "while evaluating the option `${showOption loc}':" value; + | ^ + 817| inherit (res.defsFinal') highestPrio; + + … while evaluating the option `assertions': + + (10 duplicate frames omitted) + + … while evaluating definitions from `/nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/nixos/common.nix': + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:832:128: + 831| defs' = concatMap (m: + 832| map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) + | ^ + 833| ) defs; + + … while calling 'dischargeProperties' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:903:25: + 902| */ + 903| dischargeProperties = def: + | ^ + 904| if def._type or "" == "merge" then + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:909:11: + 908| if def.condition then + 909| dischargeProperties def.content + | ^ + 910| else + + … while calling 'dischargeProperties' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:903:25: + 902| */ + 903| dischargeProperties = def: + | ^ + 904| if def._type or "" == "merge" then + + … while evaluating a branch condition + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:904:5: + 903| dischargeProperties = def: + 904| if def._type or "" == "merge" then + | ^ + 905| concatMap dischargeProperties def.contents + + … while evaluating the attribute 'content' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:1008:25: + 1007| { _type = "if"; + 1008| inherit condition content; + | ^ + 1009| }; + + … from call site + at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/nixos/common.nix:110:20: + 109| + 110| assertions = flatten (flip mapAttrsToList cfg.users (user: config: + | ^ + 111| flip map config.assertions (assertion: { + + … while calling 'flatten' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:431:13: + 430| */ + 431| flatten = x: + | ^ + 432| if isList x + + … while calling the 'concatMap' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:433:10: + 432| if isList x + 433| then concatMap (y: flatten y) x + | ^ + 434| else [x]; + + … while calling anonymous lambda + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:433:21: + 432| if isList x + 433| then concatMap (y: flatten y) x + | ^ + 434| else [x]; + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:433:24: + 432| if isList x + 433| then concatMap (y: flatten y) x + | ^ + 434| else [x]; + + … while calling 'flatten' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:431:13: + 430| */ + 431| flatten = x: + | ^ + 432| if isList x + + … while evaluating a branch condition + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:432:5: + 431| flatten = x: + 432| if isList x + | ^ + 433| then concatMap (y: flatten y) x + + … while calling the 'isList' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:432:8: + 431| flatten = x: + 432| if isList x + | ^ + 433| then concatMap (y: flatten y) x + + … while calling anonymous lambda + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1095:10: + 1094| attrs: + 1095| map (name: f name attrs.${name}) (attrNames attrs); + | ^ + 1096| + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1095:16: + 1094| attrs: + 1095| map (name: f name attrs.${name}) (attrNames attrs); + | ^ + 1096| + + … while calling anonymous lambda + at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/nixos/common.nix:110:66: + 109| + 110| assertions = flatten (flip mapAttrsToList cfg.users (user: config: + | ^ + 111| flip map config.assertions (assertion: { + + … from call site + at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/nixos/common.nix:111:9: + 110| assertions = flatten (flip mapAttrsToList cfg.users (user: config: + 111| flip map config.assertions (assertion: { + | ^ + 112| inherit (assertion) assertion; + + … while calling 'flip' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/trivial.nix:317:16: + 316| */ + 317| flip = f: a: b: f b a; + | ^ + 318| + + … while calling the 'map' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/trivial.nix:317:19: + 316| */ + 317| flip = f: a: b: f b a; + | ^ + 318| + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1095:23: + 1094| attrs: + 1095| map (name: f name attrs.${name}) (attrNames attrs); + | ^ + 1096| + + … while calling anonymous lambda + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:577:22: + 576| merge = loc: defs: + 577| mapAttrs (n: v: v.value) (filterAttrs (n: v: v ? value) (zipAttrsWith (name: defs: + | ^ + 578| (mergeDefinitions (loc ++ [name]) elemType defs).optionalValue + + … while evaluating the attribute 'value' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:864:27: + 863| optionalValue = + 864| if isDefined then { value = mergedValue; } + | ^ + 865| else {}; + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:853:59: + 852| if isDefined then + 853| if all (def: type.check def.value) defsFinal then type.merge loc defsFinal + | ^ + 854| else let allInvalid = filter (def: ! type.check def.value) defsFinal; + + … while calling 'merge' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:881:22: + 880| check = x: isAttrs x || isFunction x || path.check x; + 881| merge = loc: defs: + | ^ + 882| (base.extendModules { + + … while evaluating the attribute 'config' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:334:9: + 333| options = checked options; + 334| config = checked (removeAttrs config [ "_module" ]); + | ^ + 335| _module = checked (config._module); + + … while calling the 'seq' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:334:18: + 333| options = checked options; + 334| config = checked (removeAttrs config [ "_module" ]); + | ^ + 335| _module = checked (config._module); + + … while evaluating a branch condition + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:273:9: + 272| checkUnmatched = + 273| if config._module.check && config._module.freeformType == null && merged.unmatchedDefns != [] then + | ^ + 274| let + + … in the left operand of the AND (&&) operator + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:273:72: + 272| checkUnmatched = + 273| if config._module.check && config._module.freeformType == null && merged.unmatchedDefns != [] then + | ^ + 274| let + + … in the left operand of the AND (&&) operator + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:273:33: + 272| checkUnmatched = + 273| if config._module.check && config._module.freeformType == null && merged.unmatchedDefns != [] then + | ^ + 274| let + + … while evaluating a branch condition + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:266:12: + 265| + 266| in if declaredConfig._module.freeformType == null then declaredConfig + | ^ + 267| # Because all definitions that had an associated option ended in + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:254:28: + 253| # For definitions that have an associated option + 254| declaredConfig = mapAttrsRecursiveCond (v: ! isOption v) (_: v: v.value) options; + | ^ + 255| + + … while calling 'mapAttrsRecursiveCond' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1200:5: + 1199| f: + 1200| set: + | ^ + 1201| let + + … while calling the 'mapAttrs' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1209:5: + 1208| in + 1209| recurse [ ] set; + | ^ + 1210| + + … while evaluating the attribute 'matchedOptions' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:692:15: + 691| in { + 692| inherit matchedOptions; + | ^ + 693| + + … while calling the 'mapAttrs' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:683:24: + 682| + 683| matchedOptions = mapAttrs (n: v: v.matchedOptions) resultsByName; + | ^ + 684| + + … while calling the 'mapAttrs' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:636:23: + 635| + 636| resultsByName = mapAttrs (name: decls: + | ^ + 637| # We're descending into attribute ‘name’. + + … while calling the 'zipAttrsWith' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:553:9: + 552| declsByName = + 553| zipAttrsWith + | ^ + 554| (n: concatLists) + + … while calling the 'map' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:555:12: + 554| (n: concatLists) + 555| (map + | ^ + 556| (module: let subtree = module.options; in + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:246:33: + 245| ({ inherit lib options config specialArgs; } // specialArgs); + 246| in mergeModules prefix (reverseList collected); + | ^ + 247| + + … while calling 'reverseList' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:1116:17: + 1115| */ + 1116| reverseList = xs: + | ^ + 1117| let l = length xs; in genList (n: elemAt xs (l - n - 1)) l; + + … while calling the 'genList' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:1117:27: + 1116| reverseList = xs: + 1117| let l = length xs; in genList (n: elemAt xs (l - n - 1)) l; + | ^ + 1118| + + … while evaluating the second argument passed to builtins.genList + + … while calling the 'length' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:1117:13: + 1116| reverseList = xs: + 1117| let l = length xs; in genList (n: elemAt xs (l - n - 1)) l; + | ^ + 1118| + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:241:25: + 240| merged = + 241| let collected = collectModules + | ^ + 242| class + + … while calling anonymous lambda + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:452:37: + 451| + 452| in modulesPath: initialModules: args: + | ^ + 453| filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args); + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:453:7: + 452| in modulesPath: initialModules: args: + 453| filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args); + | ^ + 454| + + … while calling 'filterModules' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:420:36: + 419| # modules recursively. It returns the final list of unique-by-key modules + 420| filterModules = modulesPath: { disabled, modules }: + | ^ + 421| let + + … while calling the 'map' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:447:12: + 446| keyFilter = filter (attrs: ! elem attrs.key disabledKeys); + 447| in map (attrs: attrs.module) (genericClosure { + | ^ + 448| startSet = keyFilter modules; + + … while calling the 'genericClosure' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:447:39: + 446| keyFilter = filter (attrs: ! elem attrs.key disabledKeys); + 447| in map (attrs: attrs.module) (genericClosure { + | ^ + 448| startSet = keyFilter modules; + + … while calling the 'filter' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:448:22: + 447| in map (attrs: attrs.module) (genericClosure { + 448| startSet = keyFilter modules; + | ^ + 449| operator = attrs: keyFilter attrs.modules; + + … while calling anonymous lambda + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:446:31: + 445| disabledKeys = concatMap ({ file, disabled }: map (moduleKey file) disabled) disabled; + 446| keyFilter = filter (attrs: ! elem attrs.key disabledKeys); + | ^ + 447| in map (attrs: attrs.module) (genericClosure { + + … in the argument of the not operator + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:446:40: + 445| disabledKeys = concatMap ({ file, disabled }: map (moduleKey file) disabled) disabled; + 446| keyFilter = filter (attrs: ! elem attrs.key disabledKeys); + | ^ + 447| in map (attrs: attrs.module) (genericClosure { + + … while calling the 'elem' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:446:40: + 445| disabledKeys = concatMap ({ file, disabled }: map (moduleKey file) disabled) disabled; + 446| keyFilter = filter (attrs: ! elem attrs.key disabledKeys); + | ^ + 447| in map (attrs: attrs.module) (genericClosure { + + … while calling the 'concatMap' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:445:26: + 444| + 445| disabledKeys = concatMap ({ file, disabled }: map (moduleKey file) disabled) disabled; + | ^ + 446| keyFilter = filter (attrs: ! elem attrs.key disabledKeys); + + … while calling the 'concatLists' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:402:24: + 401| collectResults = modules: { + 402| disabled = concatLists (catAttrs "disabled" modules); + | ^ + 403| inherit modules; + + … while evaluating the attribute 'disabled' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:402:13: + 401| collectResults = modules: { + 402| disabled = concatLists (catAttrs "disabled" modules); + | ^ + 403| inherit modules; + + … while calling the 'concatLists' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:402:24: + 401| collectResults = modules: { + 402| disabled = concatLists (catAttrs "disabled" modules); + | ^ + 403| inherit modules; + + … while evaluating the attribute 'disabled' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:402:13: + 401| collectResults = modules: { + 402| disabled = concatLists (catAttrs "disabled" modules); + | ^ + 403| inherit modules; + + … while calling the 'concatLists' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:402:24: + 401| collectResults = modules: { + 402| disabled = concatLists (catAttrs "disabled" modules); + | ^ + 403| inherit modules; + + … while evaluating a branch condition + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:413:25: + 412| modules = collectedImports.modules; + 413| disabled = (if module.disabledModules != [] then [{ file = module._file; disabled = module.disabledModules; }] else []) ++ collectedImports.disabled; + | ^ + 414| }) initialModules); + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:407:22: + 406| let + 407| module = checkModule (loadModule args parentFile "${parentKey}:anon-${toString n}" x); + | ^ + 408| collectedImports = collectStructuredModules module._file module.key module.imports args; + + … while calling anonymous lambda + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:366:11: + 365| then + 366| m: + | ^ + 367| if m._class != null -> m._class == class + + … while evaluating a branch condition + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:367:13: + 366| m: + 367| if m._class != null -> m._class == class + | ^ + 368| then m + + … in the left operand of the IMPL (->) operator + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:367:33: + 366| m: + 367| if m._class != null -> m._class == class + | ^ + 368| then m + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:407:35: + 406| let + 407| module = checkModule (loadModule args parentFile "${parentKey}:anon-${toString n}" x); + | ^ + 408| collectedImports = collectStructuredModules module._file module.key module.imports args; + + … while calling 'loadModule' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:348:53: + 347| # Like unifyModuleSyntax, but also imports paths and calls functions if necessary + 348| loadModule = args: fallbackFile: fallbackKey: m: + | ^ + 349| if isFunction m then + + … while evaluating a branch condition + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:349:9: + 348| loadModule = args: fallbackFile: fallbackKey: m: + 349| if isFunction m then + | ^ + 350| unifyModuleSyntax fallbackFile fallbackKey (applyModuleArgs fallbackKey m args) + + … from call site + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:349:12: + 348| loadModule = args: fallbackFile: fallbackKey: m: + 349| if isFunction m then + | ^ + 350| unifyModuleSyntax fallbackFile fallbackKey (applyModuleArgs fallbackKey m args) + + … while calling 'isFunction' + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/trivial.nix:1000:16: + 999| */ + 1000| isFunction = f: builtins.isFunction f || + | ^ + 1001| (f ? __functor && isFunction (f.__functor f)); + + … in the left operand of the OR (||) operator + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/trivial.nix:1000:41: + 999| */ + 1000| isFunction = f: builtins.isFunction f || + | ^ + 1001| (f ? __functor && isFunction (f.__functor f)); + + … while calling the 'isFunction' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/trivial.nix:1000:19: + 999| */ + 1000| isFunction = f: builtins.isFunction f || + | ^ + 1001| (f ? __functor && isFunction (f.__functor f)); + + … while calling the 'elemAt' builtin + at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:334:43: + 333| */ + 334| imap1 = f: list: genList (n: f (n + 1) (elemAt list n)) (length list); + | ^ + 335| + + … while calling the 'import' builtin + at /nix/store/d46k1bziqlp4h2657vc56cmy3llxh4gg-source/homes/me/default.nix:14:7: + 13| imports = [ + 14| (import ./helix.nix { inherit pkgs; } ) + | ^ + 15| # inputs.spicetify-nix.homeManagerModules.default + + error: path '/nix/store/d46k1bziqlp4h2657vc56cmy3llxh4gg-source/homes/me/helix.nix' does not exist