Compare commits

..

No commits in common. "c0c919be76a3c056e585c19417abd9d2638425ec" and "8ea0b0cd87eb5e7ee63295002b6ecd6088b02b7c" have entirely different histories.

13 changed files with 60 additions and 153 deletions

14
flake.lock generated
View file

@ -374,11 +374,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1749657143, "lastModified": 1749540031,
"narHash": "sha256-3MiuAUQBo9Luk0lNzNSuomx1WMMBua2feVjXNfg9Dws=", "narHash": "sha256-11k6hq/4Tao2PNBFQpSNTlFFKmKGswL17caKuZIE0sM=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland", "repo": "hyprland",
"rev": "412c7dc7f79cb6b04af41692504e82d4417e6e13", "rev": "6bdb1f413e4c592f73d91bef33dfb202503ef7ab",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -760,11 +760,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749674850, "lastModified": 1749533342,
"narHash": "sha256-5V6Jmiyg820PCLwskW6gp1sojo0F8hze6eR/xgp2d4U=", "narHash": "sha256-cQzKzqsPQmDBRDjcX4UFEQKNeAyibLIKkF+BBhE2JnI=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "2a8479d635958e6c2ced68767001da4638b6f197", "rev": "2b01a75679a03bd6557cf11c20b1588f436d6b94",
"revCount": 572, "revCount": 571,
"type": "git", "type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell" "url": "https://git.outfoxxed.me/outfoxxed/quickshell"
}, },

View file

@ -28,6 +28,7 @@
modules = { modules = {
wms.wayland.enable = true; wms.wayland.enable = true;
desktops.hyprland.enable = false; desktops.hyprland.enable = false;
desktops.niri.enable = true;
theming = { theming = {
gtk.enable = true; gtk.enable = true;
@ -35,8 +36,6 @@
}; };
system = { system = {
systemType = "laptop";
boot = { boot = {
systemd-boot.enable = true; systemd-boot.enable = true;
lanzaboote.enable = true; lanzaboote.enable = true;

View file

@ -23,6 +23,7 @@
fselect fselect
gcc gcc
gh gh
ghostty
grc grc
gparted gparted
git git

View file

@ -1,4 +1,5 @@
{pkgs, ...}: { {pkgs, ...}: let
in {
environment.systemPackages = builtins.attrValues { environment.systemPackages = builtins.attrValues {
inherit inherit
(pkgs) (pkgs)
@ -16,9 +17,11 @@
difftastic difftastic
dnsutils dnsutils
devenv devenv
element-desktop
evince evince
gcc gcc
gh gh
ghostty
gnumake gnumake
gparted gparted
halloy halloy

View file

@ -5,10 +5,7 @@
}: let }: let
inherit (builtins) elemAt; inherit (builtins) elemAt;
inherit (lib.options) mkOption mkEnableOption; inherit (lib.options) mkOption mkEnableOption;
inherit (lib.types) enum listOf str nullOr bool oneOf; inherit (lib.types) enum listOf str nullOr bool package;
inherit (lib.lists) elem;
inherit (config.modules.system) systemType;
in { in {
imports = [ imports = [
# configuration options for nixos activation scripts # configuration options for nixos activation scripts
@ -47,7 +44,7 @@ in {
users = mkOption { users = mkOption {
type = listOf str; type = listOf str;
default = ["cr"]; default = ["charlie"];
description = "A list of users on the system."; description = "A list of users on the system.";
}; };
@ -60,23 +57,6 @@ in {
''; '';
}; };
systemType = mkOption {
type = nullOr (enum ["desktop" "laptop" "server"]);
default = null;
description = ''
The type of the current system. This is used to determine whether things like graphical
environments and power-saving programs should be installed or not.
'';
};
isGraphical = mkOption {
type = bool;
default = elem systemType ["desktop" "laptop"];
description = ''
Whether the current system is a graphical system.
'';
};
yubikeySupport = { yubikeySupport = {
enable = mkEnableOption "yubikey support"; enable = mkEnableOption "yubikey support";
deviceType = mkOption { deviceType = mkOption {
@ -92,7 +72,6 @@ in {
impermanence = { impermanence = {
enable = mkEnableOption "Enable Impermanence"; enable = mkEnableOption "Enable Impermanence";
}; };
video = { video = {
enable = mkEnableOption "video drivers and programs that require a graphical user interface"; enable = mkEnableOption "video drivers and programs that require a graphical user interface";
nvidia = mkEnableOption "Nvidia graphics drivers"; nvidia = mkEnableOption "Nvidia graphics drivers";
@ -113,6 +92,15 @@ in {
default = []; default = [];
description = "A list of extra drivers to enable for printing"; description = "A list of extra drivers to enable for printing";
}; };
"3d" = {
enable = mkEnableOption "3D printing suite";
extraPrograms = mkOption {
type = listOf package;
default = [];
description = "A list of extra programs to enable for 3D printing";
};
};
}; };
}; };
} }

View file

@ -7,7 +7,7 @@
}: let }: let
inherit (builtins) elemAt; inherit (builtins) elemAt;
inherit (lib.options) mkOption; inherit (lib.options) mkOption;
inherit (lib.types) listOf str package; inherit (lib.types) listOf str;
inherit (config.meta.mainUser) username; inherit (config.meta.mainUser) username;
in { in {
@ -27,7 +27,6 @@ in {
The main user for each system. This is the first element of the list of users by default. The main user for each system. This is the first element of the list of users by default.
''; '';
}; };
gitSigningKey = mkOption { gitSigningKey = mkOption {
type = str; type = str;
description = '' description = ''
@ -37,28 +36,9 @@ in {
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw== ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw==
''; '';
}; };
# TODO: clean this up and move it somewhere else.
defaultShell = {
name = mkOption {
type = str;
default = "nushell";
description = ''
The default shell of a user. This is not the main system shell, but the shell used in terminals.
'';
};
package = mkOption {
type = package;
default = pkgs.nushell;
};
};
}; };
}; };
config = { config = {
programs.zsh = {
enable = true;
enableBashCompletion = true;
};
users = { users = {
mutableUsers = true; mutableUsers = true;
users = { users = {
@ -73,7 +53,6 @@ in {
"nix" "nix"
"docker" "docker"
]; ];
# shell = self.packages.${pkgs.stdenv.system}.fish;
shell = pkgs.zsh; shell = pkgs.zsh;
# hashedPasswordFile = "/etc/passwords/cr"; # hashedPasswordFile = "/etc/passwords/cr";
}; };

View file

@ -1,47 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
inherit (lib.lists) elem;
inherit (lib.meta) getExe;
inherit (config.meta.mainUser.defaultShell) name package;
inherit (config.modules.style.colorScheme) slug;
# Shell integration for ghostty only supports
# bash, fish and zsh for now.
shell-integration =
if elem name ["bash" "fish" "zsh"]
then name
else "none";
ghostty-settings = pkgs.writeText "config" ''
font-family = JetBrainsMono Nerd Font Mono
window-padding-x = 8
window-padding-y = 8
background-opacity = 0.85
gtk-single-instance = true
font-size = 14
theme = ${slug}
resize-overlay-duration = 0s
cursor-style-blink = false
shell-integration = ${shell-integration}
command = ${getExe package}
'';
ghostty-wrapped = pkgs.symlinkJoin {
name = "ghostty-wrapped";
paths = [pkgs.ghostty];
nativeBuildInputs = [pkgs.makeWrapper];
postBuild = ''
wrapProgram $out/bin/ghostty --add-flags "--config-file=${ghostty-settings}"
'';
};
in {
environment.systemPackages = builtins.attrValues {
inherit ghostty-wrapped;
};
}

View file

@ -24,7 +24,7 @@ in {
}; };
keyboards.dell-keyboard = { keyboards.dell-keyboard = {
devices = ["/dev/input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd"]; devices = ["/dev/input/by-path/usb-Dell_Dell_USB_Keyboard-event-kbd "];
config = builtins.readFile (./. + "/main.kbd"); config = builtins.readFile (./. + "/main.kbd");
}; };
}; };

View file

@ -79,6 +79,8 @@ environment {
} }
// prefer no client side decorations // prefer no client side decorations
prefer-no-csd prefer-no-csd
// no saving screenshots
screenshot-path null
switch-events { switch-events {
lid-close { lid-close {
spawn "swaylock" spawn "swaylock"
@ -106,12 +108,7 @@ window-rule {
open-on-workspace "browser" open-on-workspace "browser"
} }
window-rule { window-rule {
match app-id="org.keepassxc.KeePassXC" match app-id="^org\\.keepassxc\\.KeePassXC$"
block-out-from "screen-capture"
open-on-workspace "keepassxc"
}
window-rule {
match app-id="thunderbird"
block-out-from "screen-capture" block-out-from "screen-capture"
open-on-workspace "keepassxc" open-on-workspace "keepassxc"
} }
@ -172,7 +169,7 @@ binds {
close-window close-window
} }
Mod+H { Mod+H {
focus-column-or-monitor-left focus-column-left
} }
Mod+J { Mod+J {
focus-window-or-workspace-down focus-window-or-workspace-down
@ -181,10 +178,10 @@ binds {
focus-window-or-workspace-up focus-window-or-workspace-up
} }
Mod+L { Mod+L {
focus-column-or-monitor-right focus-column-right
} }
Mod+Shift+H { Mod+Shift+H {
move-column-left-or-to-monitor-left move-column-left
} }
Mod+Shift+J { Mod+Shift+J {
move-window-down-or-to-workspace-down move-window-down-or-to-workspace-down
@ -193,7 +190,7 @@ binds {
move-window-up-or-to-workspace-up move-window-up-or-to-workspace-up
} }
Mod+Shift+L { Mod+Shift+L {
move-column-right-or-to-monitor-right move-column-right
} }
Mod+Home { Mod+Home {
focus-column-first focus-column-first
@ -408,13 +405,13 @@ binds {
toggle-overview toggle-overview
} }
Print { Print {
screenshot write-to-disk=false screenshot
} }
Ctrl+Print { Ctrl+Print {
screenshot-screen screenshot-screen
} }
Alt+Print { Alt+Print {
screenshot write-to-disk=true screenshot-window
} }
Mod+Escape allow-inhibiting=false { Mod+Escape allow-inhibiting=false {
toggle-keyboard-shortcuts-inhibit toggle-keyboard-shortcuts-inhibit

View file

@ -7,15 +7,10 @@
inherit (lib.modules) mkForce mkIf; inherit (lib.modules) mkForce mkIf;
inherit (lib.options) mkEnableOption; inherit (lib.options) mkEnableOption;
inherit (config.modules.system) isGraphical;
cfg = config.modules.desktops.niri; cfg = config.modules.desktops.niri;
in { in {
options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor"; options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor";
config = mkIf cfg.enable {
config =
mkIf (cfg.enable
|| isGraphical)
{
programs.niri = { programs.niri = {
enable = true; enable = true;
package = pkgs.niri; package = pkgs.niri;
@ -24,6 +19,7 @@ in {
# which is something I direly want to avoid. # which is something I direly want to avoid.
services.gnome.gnome-keyring.enable = mkForce false; services.gnome.gnome-keyring.enable = mkForce false;
# set niri's config location to /etc/niri/config.kdl.
environment.etc."niri/config.kdl".source = ./config.kdl; environment.etc."niri/config.kdl".source = ./config.kdl;
environment.systemPackages = builtins.attrValues { environment.systemPackages = builtins.attrValues {

View file

@ -8,16 +8,7 @@ pkgs.writeTextDir "${vendorConf}/blox_config.fish"
'' ''
# source ${pkgs.fishPlugins.sponge}/share/zsh-defer/zsh-defer.plugin.zsh # source ${pkgs.fishPlugins.sponge}/share/zsh-defer/zsh-defer.plugin.zsh
${pkgs.atuin}/bin/atuin init fish | source ${pkgs.atuin}/bin/atuin init fish | source
bind up _atuin_bind_up
${pkgs.zoxide}/bin/zoxide init fish | source ${pkgs.zoxide}/bin/zoxide init fish | source
# abbr --erase cd &>/dev/null
# alias cd=__zoxide_z
# abbr --erase ci &>/dev/null
# alias ci=__zoxide_zi
${pkgs.starship}/bin/starship init fish | source ${pkgs.starship}/bin/starship init fish | source
${pkgs.direnv}/bin/direnv hook fish | source ${pkgs.direnv}/bin/direnv hook fish | source
${pkgs.pay-respects}/bin/pay-respects fish --alias f --nocnf | source ${pkgs.pay-respects}/bin/pay-respects fish --alias f --nocnf | source

View file

@ -50,7 +50,7 @@ builtins.attrValues {
wget wget
cpufetch cpufetch
watchman watchman
# yt-dlp # borked check phase yt-dlp
tealdeer tealdeer
hyperfine hyperfine
imagemagick imagemagick

View file

@ -162,7 +162,7 @@
config = { config = {
check = { check = {
command = "clippy"; command = "clippy";
extraArgs = ["--" "-D" "clippy::pedantic" "-W" "clippy::nursery" "-W" "clippy::perf"]; extraArgs = ["--" "-W" "clippy::pedantic" "-W" "clippy::nursery" "-W" "clippy::perf"];
}; };
cargo.features = "all"; cargo.features = "all";
}; };