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