Compare commits

...
Author SHA1 Message Date
462c4c4004 add more apps to theme and remove quickshell startup from niri 2026-08-31 18:07:45 +02:00
23b4031d35 add fuzzel file 2026-08-31 17:59:16 +02:00
a172869a4a add quickshell 2026-08-31 17:54:31 +02:00
9d32d57869 add theme file 2026-08-31 17:05:14 +02:00
58ff068589 add foot 2026-08-31 16:45:20 +02:00
33f94bf900 add niri file 2026-08-31 16:18:13 +02:00
15e2687aae get this nix shit out of here 2026-08-31 16:04:56 +02:00
14 changed files with 438 additions and 217 deletions

72
flake.lock generated
View file

@ -18,24 +18,6 @@
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1787559586,
"narHash": "sha256-onL0VLf9vPllmT0H/OlURIU5r5t5WIEl7t4tVNKT0Nw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9d0d87172c374f89da73c1cfe6d81ae62feac1f1",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"fromYaml": {
"flake": false,
"locked": {
@ -86,21 +68,6 @@
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1785031560,
"narHash": "sha256-OmshNvn2vupOFpYinLUu+1Dnpu4n7Q5N3ggGVNHpkUI=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "0e79af5e3d4dcfcd676ab5ba3f95d2e3352e078c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1788039129,
@ -117,30 +84,13 @@
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1786719841,
"narHash": "sha256-QcpQOT0NQEFkI77t+YXPZqDJc35iIodG7zinieOwFUg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8be7bd0c83f12e2e3bbba07c9044d6fed9e66f7f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"base16": "base16",
"flake-parts": "flake-parts",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs_2",
"tt-schemes": "tt-schemes",
"wrappers": "wrappers"
"tt-terminal": "tt-terminal"
}
},
"tt-schemes": {
@ -159,21 +109,19 @@
"type": "github"
}
},
"wrappers": {
"inputs": {
"nixpkgs": "nixpkgs_3"
},
"tt-terminal": {
"flake": false,
"locked": {
"lastModified": 1787722691,
"narHash": "sha256-bWBt7v2FhgG6WTLgSi8nYGi1zXaTdA+vTdCRdvR2vcw=",
"owner": "BirdeeHub",
"repo": "nix-wrapper-modules",
"rev": "04ef216559b18214853879df862f493a9e6bb8cf",
"lastModified": 1786840953,
"narHash": "sha256-R5U9KnrG5cARf90nw5e33Z4A4svwLTRv9qbvFAiAaAY=",
"owner": "tinted-theming",
"repo": "tinted-terminal",
"rev": "993a33342b053b1830e4ccb82448455991dcfd54",
"type": "github"
},
"original": {
"owner": "BirdeeHub",
"repo": "nix-wrapper-modules",
"owner": "tinted-theming",
"repo": "tinted-terminal",
"type": "github"
}
}

View file

@ -1,35 +1,59 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
wrappers.url = "github:BirdeeHub/nix-wrapper-modules";
flake-parts.url = "github:hercules-ci/flake-parts";
base16.url = "github:SenchoPens/base16.nix";
home-manager.url = "github:nix-community/home-manager";
tt-schemes = {
url = "github:tinted-theming/schemes";
flake = false;
};
home-manager.url = "github:nix-community/home-manager";
tt-terminal = {
url = "github:tinted-theming/tinted-terminal";
flake = false;
};
};
outputs =
{
self,
nixpkgs,
wrappers,
flake-parts,
base16,
home-manager,
...
}@inputs:
flake-parts.lib.mkFlake { inherit inputs; } (
let
theme = "catppuccin-mocha";
in
{
imports = [
wrappers.flakeModules.wrappers
(import ./hosts.nix { themeName = theme; })
let
theme = "catppuccin-mocha";
in
{
nixosConfigurations.nerv = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
./theme.nix
({ pkgs, ... }: {
config.theming.theme = "catppuccin-mocha";
config.theming.font = "Iosevka";
config.theming.fontPackage = pkgs.iosevka;
})
base16.nixosModule
({ config, ... }: { scheme = "${config.theming.theme}"; })
./modules/hosts/nerv/configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
imports = [
./modules/home.nix
./modules/programs/emacs.nix
./modules/programs/niri.nix
./modules/programs/foot.nix
./modules/programs/quickshell.nix
./modules/programs/fuzzel.nix
];
}
];
};
};
}
);
}

View file

@ -1,28 +0,0 @@
{themeName}: { inputs, config, self, ... }:
{
flake.nixosConfigurations.nerv = inputs.nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
inputs.base16.nixosModule
{ scheme = "${inputs.tt-schemes}/base16/${themeName}.yaml"; }
./modules/hosts/nerv/configuration.nix
./modules/home.nix
inputs.home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
}
{
imports = [
(inputs.wrappers.lib.getInstallModule {
name = "emacs";
value = inputs.wrappers.lib.wrapperModules.emacs;
})
./modules/programs/emacs/emacs.nix
];
}
];
};
}

View file

@ -8,10 +8,37 @@ let
in
{
home-manager.users.lucy = {
home.packages = with pkgs; [
nixd
nixfmt
clang
kdePackages.qtdeclarative
];
home.stateVersion = "26.05";
home.pointerCursor = {
enable = true;
name = "macOS";
package = pkgs.apple-cursor;
size = 24;
};
gtk = {
enable = true;
colorScheme = "dark";
theme = {
name = "adw-gtk3-dark";
package = pkgs.adw-gtk3;
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
font = {
name = config.theming.font;
package = config.theming.fontPackage;
size = 12;
};
cursorTheme.name = "macOS";
cursorTheme.size = 24;
gtk3.extraCss = ''
@define-color theme_bg_color ${c.base00};
@define-color theme_fg_color ${c.base05};
@ -52,5 +79,6 @@ in
@define-color success_color ${c.base0B};
'';
};
dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
};
}

View file

@ -1,9 +0,0 @@
{ inputs, ... }: {
flake.nixosConfigurations.nerv = inputs.nixpkgs.lib.nixosSystem {
modules = [
./configuration.nix
];
};
}

View file

@ -1 +0,0 @@
lucy@nerv.50314:1788169501

View file

@ -20,7 +20,10 @@
networking.networkmanager.enable = true;
# enable flakes
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
# use proprietary nvidia drivers
hardware.graphics.enable = true;
@ -39,6 +42,10 @@
i18n.defaultLocale = "en_US.UTF-8";
services.desktopManager.gnome.enable = true;
services.displayManager.gdm.enable = true;
programs.niri = {
enable = true;
};
services.xserver.xkb.layout = "us";
services.pipewire = {
enable = true;
@ -62,6 +69,9 @@
git
clang
];
fonts.packages = [
config.theming.fontPackage
];
system.stateVersion = "26.05"; # Did you read the comment?
}

View file

@ -0,0 +1,78 @@
{
config,
...
}:
{
home-manager.users.lucy.programs.emacs = {
enable = true;
extraPackages =
epkgs: with epkgs.melpaPackages; [
corfu
cape
qml-mode
lua-mode
elcord
nix-mode
base16-theme
];
extraConfig = ''
;;; -*- lexical-binding: t; -*-
(setq make-backup-files nil)
(load-theme 'base16-${config.scheme.scheme-slug} t)
(use-package
corfu
:init
(setq
corfu-auto t
corfu-auto-delay 0.2)
(global-corfu-mode))
(setq tab-always-indent 'complete)
(use-package
cape
:bind ("C-c p" . cape-prefix-map) ;; Alternative key: M-<tab>, M-p, M-+
:init (add-hook 'completion-at-point-functions #'cape-file))
(setq corfu-auto-prefix 2)
(use-package qml-mode)
(use-package lua-mode)
(use-package elcord :init (elcord-mode))
(add-to-list
'display-buffer-alist
'("\\*compilation\\*" (display-buffer-reuse-window
display-buffer-below-selected)
(window-height . 0.3)))
;; remove useless shit and set default opts
(setq ring-bell-function 'ignore)
(menu-bar-mode -1)
(tool-bar-mode -1)
(setq display-line-numbers-type 'relative)
(global-display-line-numbers-mode +1)
(global-tab-line-mode 1)
(scroll-bar-mode -1)
(setq inhibit-splash-screen 1)
(setq custom-file "~/.emacs.d/custom.el")
(load custom-file 'noerror)
;; lsp shit
(add-hook 'nix-mode-hook #'eglot-ensure)
(add-hook 'c-mode-hook #'eglot-ensure)
(add-hook 'qml-mode-hook #'eglot-ensure)
(with-eval-after-load 'eglot
(add-to-list 'eglot-server-programs '(nix-mode . ("nixd")))
(add-to-list 'eglot-server-programs '(qml-mode . ("qmlls"))))
;; keybindings
(keymap-global-set "C-c f" 'eglot-format)
(keymap-global-set "C-c t" 'term)
(keymap-global-set "C-c c" 'compile)
(keymap-global-set "C-c k b" 'kill-current-buffer)
(keymap-global-set "C-c k w" 'kill-buffer-and-window)
(windmove-default-keybindings)
'';
};
}

View file

@ -1,101 +0,0 @@
{
inputs,
lib,
config,
...
}:
let
schemeName = config.scheme;
in
{
wrappers.emacs =
{
pkgs,
wlib,
...
}:
let
scheme = (pkgs.callPackage inputs.base16.lib { }).mkSchemeAttrs schemeName;
in
{
enable = true;
imports = [
wlib.wrapperModules.emacs
];
emacsPackages =
epkgs: with epkgs.melpaPackages; [
corfu
cape
qml-mode
lua-mode
elcord
nix-mode
base16-theme
];
runtimePkgs = with pkgs; [
nixd
nixfmt
qt6.qtdeclarative
];
constructFiles.early-init.content = lib.mkBefore ";;; -*- lexical-binding: t; -*-";
configFile = ''
;;; -*- lexical-binding: t; -*-
(setq make-backup-files nil)
(load-theme 'base16-${scheme.scheme-slug} t)
(use-package
corfu
:init
(setq
corfu-auto t
corfu-auto-delay 0.2)
(global-corfu-mode))
(setq tab-always-indent 'complete)
(use-package
cape
:bind ("C-c p" . cape-prefix-map) ;; Alternative key: M-<tab>, M-p, M-+
:init (add-hook 'completion-at-point-functions #'cape-file))
(setq corfu-auto-prefix 2)
(use-package qml-mode)
(use-package lua-mode)
(use-package elcord :init (elcord-mode))
(add-to-list
'display-buffer-alist
'("\\*compilation\\*" (display-buffer-reuse-window
display-buffer-below-selected)
(window-height . 0.3)))
;; remove useless shit and set default opts
(setq ring-bell-function 'ignore)
(menu-bar-mode -1)
(tool-bar-mode -1)
(setq display-line-numbers-type 'relative)
(global-display-line-numbers-mode +1)
(global-tab-line-mode 1)
(scroll-bar-mode -1)
(setq inhibit-splash-screen 1)
(setq custom-file "~/.emacs.d/custom.el")
(load custom-file 'noerror)
;; lsp shit
(add-hook 'nix-mode-hook #'eglot-ensure)
(add-hook 'c-mode-hook #'eglot-ensure)
(add-hook 'qml-mode-hook #'eglot-ensure)
(with-eval-after-load 'eglot
(add-to-list 'eglot-server-programs '(nix-mode . ("nixd")))
(add-to-list 'eglot-server-programs '(qml-mode . ("qmlls"))))
;; keybindings
(keymap-global-set "C-c f" 'eglot-format)
(keymap-global-set "C-c t" 'term)
(keymap-global-set "C-c c" 'compile)
(keymap-global-set "C-c k b" 'kill-current-buffer)
(keymap-global-set "C-c k w" 'kill-buffer-and-window)
(windmove-default-keybindings)
'';
};
}

47
modules/programs/foot.nix Normal file
View file

@ -0,0 +1,47 @@
{
pkgs,
config,
inputs,
...
}:
let
c = config.scheme;
in
{
home-manager.users.lucy.programs.foot = {
enable = true;
settings = {
main = {
font = "${config.theming.font}:size=12";
pad = "15x15";
};
colors-dark = {
background = c.base00;
foreground = c.base05;
regular0 = c.base00;
regular1 = c.base08;
regular2 = c.base0B;
regular3 = c.base0A;
regular4 = c.base0D;
regular5 = c.base0E;
regular6 = c.base0C;
regular7 = c.base05;
bright0 = c.base03;
bright1 = c.base08;
bright2 = c.base0B;
bright3 = c.base0A;
bright4 = c.base0D;
bright5 = c.base0E;
bright6 = c.base0C;
bright7 = c.base07;
selection-foreground = c.base00;
selection-background = c.base05;
};
};
};
}

View file

@ -0,0 +1,24 @@
{ config, ... }:
let
c = config.scheme.withHashtag;
in
{
home-manager.users.lucy = {
programs.fuzzel = {
enable = true;
settings = {
main = {
font = "${config.theming.font}:size=12";
};
border.width = 2;
colors = {
background = "${c.base00}ff";
text = "${c.base05}ff";
match = "${c.base0D}ff";
selection = "${c.base0D}ff";
border = "${c.base0D}ff";
};
};
};
};
}

153
modules/programs/niri.nix Normal file
View file

@ -0,0 +1,153 @@
{ pkgs, config, ... }:
{
home-manager.users.lucy.wayland.windowManager.niri = {
enable = true;
extraConfig = ''
prefer-no-csd
environment {
GTK_THEME "adw-gtk3-dark"
XDG_CURRENT_DESKTOP "niri"
XDG_SESSION_TYPE "wayland"
XDG_SESSION_DESKTOP "niri"
QT_QPA_PLATFORM "wayland;xcb"
OZONE_PLATFORM "wayland"
ELECTRON_OZONE_PLATFORM_HINT "auto"
}
cursor {
xcursor-size 24
xcursor-theme "macOS"
}
input {
keyboard {
xkb {
layout "eu"
}
}
touchpad {
tap
natural-scroll
}
mouse {
accel-speed -0.4
accel-profile "flat"
}
focus-follows-mouse max-scroll-amount="0%"
}
output "PNP(BNQ) BenQ EX2710Q K6R04023019" {
mode "2560x1440@165.002"
scale 1
transform "normal"
position x=1920 y=0
}
output "Dell Inc. DELL P2317H 9KFDW6C533DB" {
position x=0 y=0
}
layout {
gaps 16
center-focused-column "never"
default-column-width { proportion 0.5; }
focus-ring {
off
}
border {
width 4
active-color "${config.scheme.withHashtag.base0D}"
inactive-color "${config.scheme.withHashtag.base02}"
}
}
screenshot-path null
animations {}
window-rule {
geometry-corner-radius 16
clip-to-geometry true
}
binds {
Mod+return { spawn "foot"; }
Mod+space { spawn "fuzzel"; }
Mod+e { spawn "nautilus"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; }
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; }
XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; }
XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; }
XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; }
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
Mod+O repeat=false { toggle-overview; }
Mod+Q repeat=false { close-window; }
Mod+Left { focus-column-left; }
Mod+Down { focus-window-down; }
Mod+Up { focus-window-up; }
Mod+Right { focus-column-right; }
Mod+H { focus-column-left; }
Mod+J { focus-window-down; }
Mod+K { focus-window-up; }
Mod+L { focus-column-right; }
Mod+Ctrl+Left { move-column-left; }
Mod+Ctrl+Down { move-window-down; }
Mod+Ctrl+Up { move-window-up; }
Mod+Ctrl+Right { move-column-right; }
Mod+Ctrl+H { move-column-left; }
Mod+Ctrl+J { move-window-down; }
Mod+Ctrl+K { move-window-up; }
mod+ctrl+l { move-column-right; }
Mod+comma { focus-monitor-left; }
Mod+period { focus-monitor-right; }
Mod+Shift+comma { move-column-to-monitor-left; }
Mod+Shift+period { move-column-to-monitor-right; }
Mod+Shift+WheelScrollDown { focus-column-right; }
Mod+Shift+WheelScrollUp { focus-column-left; }
Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; }
Mod+3 { focus-workspace 3; }
Mod+4 { focus-workspace 4; }
Mod+5 { focus-workspace 5; }
Mod+6 { focus-workspace 6; }
Mod+7 { focus-workspace 7; }
Mod+8 { focus-workspace 8; }
Mod+9 { focus-workspace 9; }
Mod+Ctrl+1 { move-column-to-workspace 1; }
Mod+Ctrl+2 { move-column-to-workspace 2; }
Mod+Ctrl+3 { move-column-to-workspace 3; }
Mod+Ctrl+4 { move-column-to-workspace 4; }
Mod+Ctrl+5 { move-column-to-workspace 5; }
Mod+Ctrl+6 { move-column-to-workspace 6; }
Mod+Ctrl+7 { move-column-to-workspace 7; }
Mod+Ctrl+8 { move-column-to-workspace 8; }
Mod+Ctrl+9 { move-column-to-workspace 9; }
Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; }
Mod+F { maximize-column; }
Mod+Minus { set-column-width "-10%"; }
Mod+Equal { set-column-width "+10%"; }
Mod+V { toggle-window-floating; }
Mod+Shift+S { screenshot; }
Alt+Shift+S { screenshot-screen; }
Alt+Ctrl+S { screenshot-window; }
Mod+Shift+q { quit; }
}
'';
};
}

View file

@ -0,0 +1,36 @@
{ pkgs, config, ... }:
let
c = config.scheme.withHashtag;
in
{
home-manager.users.lucy = {
programs.quickshell.enable = true;
programs.quickshell.systemd.enable = true;
xdg.configFile."quickshell/Colors.js" = {
enable = true;
text = ''
const colors = {
base00: "${c.base00}",
base01: "${c.base01}",
base02: "${c.base02}",
base03: "${c.base03}",
base04: "${c.base04}",
base05: "${c.base05}",
base06: "${c.base06}",
base07: "${c.base07}",
base08: "${c.base08}",
base09: "${c.base09}",
base0A: "${c.base0A}",
base0B: "${c.base0B}",
base0C: "${c.base0C}",
base0D: "${c.base0D}",
base0E: "${c.base0E}",
base0F: "${c.base0F}",
}
'';
force = true;
};
};
}

12
theme.nix Normal file
View file

@ -0,0 +1,12 @@
{ lib, inputs, ...}: {
options.theming.theme = lib.mkOption {
type = lib.types.str;
apply = name: "${inputs.tt-schemes}/base16/${name}.yaml";
};
options.theming.font = lib.mkOption {
type = lib.types.str;
};
options.theming.fontPackage = lib.mkOption {
type = lib.types.package;
};
}