begun making my home-manager config modular

This commit is contained in:
Emile Clark-Boman 2024-11-10 23:10:51 +10:00
parent 97b344eb03
commit 4fcc76a32c
23 changed files with 1586 additions and 947 deletions

10
TODO
View file

@ -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

102
flake.lock generated
View file

@ -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,

View file

@ -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
];
};
};

15
homes/me/ags/config.js Normal file
View file

@ -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
]
})

View file

@ -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 "<b><big> $(date +"%H") </big></b>"'';
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 "<b><big> $(date +"%M") </big></b>"'';
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 "<b><big> "$(date +'%A')" </big></b>"'';
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 "<b> "$(date +'%d %b')" </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 "<b>Feels like<big> $(curl -s 'wttr.in/bne?format=%t' | tr -d '+') </big></b>"'';
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 "<span>$(date +"%I:%M")</span>"'';
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 = "<i>🔒 Enter Password</i>";
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";

View file

@ -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;
}
''
};
};
};
}

15
homes/modules/bat.nix Normal file
View file

@ -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";
};
};
}

View file

@ -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];
}
];
};
}

View file

@ -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;
};
}

13
homes/modules/firefox.nix Normal file
View file

@ -0,0 +1,13 @@
{
config,
pkgs,
...
}: {
programs.firefox = {
enable = true;
policies = {
#BlockAboutConfig = true;
DefaultDownloadDirectory = "\${home}/downloads";
};
};
}

18
homes/modules/fish.nix Normal file
View file

@ -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;
}
];
};
}

11
homes/modules/git.nix Normal file
View file

@ -0,0 +1,11 @@
{
config,
pkgs,
...
}: {
programs.git = {
enable = true;
userName = "Emile Clark-Boman";
userEmail = "eclarkboman@gmail.com";
};
}

View file

@ -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";
}
];
};
};
}

View file

View file

@ -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 "<b><big> $(date +"%H") </big></b>"'';
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 "<b><big> $(date +"%M") </big></b>"'';
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 "<b><big> "$(date +'%A')" </big></b>"'';
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 "<b> "$(date +'%d %b')" </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 "<b>Feels like<big> $(curl -s 'wttr.in/bne?format=%t' | tr -d '+') </big></b>"'';
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";
};
};
};
}

60
homes/modules/kanshi.nix Normal file
View file

@ -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";
}
];
}
];
};
}

16
homes/modules/nixcord.nix Normal file
View file

@ -0,0 +1,16 @@
{
config,
pkgs,
...
}: {
programs.nixcord = {
enable = true;
config = {
frameless = true;
plugins = {
# TODO: remove this plugin
hideAttachments.enable = true;
};
};
};
}

68
homes/modules/rio.nix Normal file
View file

@ -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
};
};
};
}

13
homes/modules/rofi.nix Normal file
View file

@ -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";
};
}

183
homes/modules/wofi.nix Executable file
View file

@ -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;
}
'';
};
}

View file

@ -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

View file

@ -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 = ''

724
out.data Normal file
View file

@ -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