Compare commits

..

No commits in common. "39aa431b1d67324737d724d57eda2f0b359e000b" and "7e2ab5a6401fe796ff76f1a4dd3dfbdad9961a79" have entirely different histories.

20 changed files with 353 additions and 115 deletions

View file

@ -5,11 +5,11 @@
"fromYaml": "fromYaml" "fromYaml": "fromYaml"
}, },
"locked": { "locked": {
"lastModified": 1708890466, "lastModified": 1721224776,
"narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=", "narHash": "sha256-iakVQHg2DSmdOc5dNBwrDt9JLRxX5MT+IIbxfZEpGdo=",
"owner": "SenchoPens", "owner": "SenchoPens",
"repo": "base16.nix", "repo": "base16.nix",
"rev": "665b3c6748534eb766c777298721cece9453fdae", "rev": "c89c8123310257f3ddc04cc59aa4b5573c6d515f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -114,6 +114,24 @@
"type": "github" "type": "github"
} }
}, },
"base16_2": {
"inputs": {
"fromYaml": "fromYaml_2"
},
"locked": {
"lastModified": 1708890466,
"narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=",
"owner": "SenchoPens",
"repo": "base16.nix",
"rev": "665b3c6748534eb766c777298721cece9453fdae",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "base16.nix",
"type": "github"
}
},
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -152,6 +170,22 @@
} }
}, },
"fromYaml": { "fromYaml": {
"flake": false,
"locked": {
"lastModified": 1721222302,
"narHash": "sha256-5vL4w9+tS9yd8WpIiDUtxN1IuxCVK2nebZMs/hCXXis=",
"owner": "SenchoPens",
"repo": "fromYaml",
"rev": "93bad85d1633b8b27287b438c0bd394094c24d06",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "fromYaml",
"type": "github"
}
},
"fromYaml_2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1689549921, "lastModified": 1689549921,
@ -277,16 +311,18 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"base16": "base16",
"home-manager": "home-manager", "home-manager": "home-manager",
"iosevka-custom": "iosevka-custom", "iosevka-custom": "iosevka-custom",
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"stylix": "stylix" "stylix": "stylix",
"tt-schemes": "tt-schemes"
} }
}, },
"stylix": { "stylix": {
"inputs": { "inputs": {
"base16": "base16", "base16": "base16_2",
"base16-fish": "base16-fish", "base16-fish": "base16-fish",
"base16-foot": "base16-foot", "base16-foot": "base16-foot",
"base16-helix": "base16-helix", "base16-helix": "base16-helix",
@ -332,6 +368,22 @@
"repo": "default", "repo": "default",
"type": "github" "type": "github"
} }
},
"tt-schemes": {
"flake": false,
"locked": {
"lastModified": 1725273692,
"narHash": "sha256-XOxESrzdIpcYMLS+s4D16M4c8gAk3sLyAQUvsb+lQLk=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "992b6c372a00e284a7dc26b19a0d11b7afcba1f1",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "schemes",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -24,6 +24,11 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git"; iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git";
base16.url = "github:SenchoPens/base16.nix";
tt-schemes = {
url = "github:tinted-theming/schemes";
flake = false;
};
}; };
outputs = outputs =

View file

@ -142,6 +142,23 @@
}; };
extraSpecialArgs = { extraSpecialArgs = {
inherit inputs; inherit inputs;
accentColourName = "base0E";
# Emulating stylix behaviour, rewrite at some point
fonts =
let
monospace.name = inputs.iosevka-custom.outputs.names.iosevka-custom-nerdfont;
serif.name = inputs.iosevka-custom.outputs.names.iosevka-custom-aile;
sansSerif.name = serif.name;
in
{
inherit monospace serif sansSerif;
sizes = {
applications = 12;
desktop = 14;
popups = 16;
terminal = 12;
};
};
}; };
}; };
environment = { environment = {
@ -197,7 +214,7 @@
stylix = { stylix = {
enable = true; enable = true;
image = ./home/wallpapers/landscapes/tropic_island_day.jpg; image = ./home/wallpapers/landscapes/tropic_island_day.jpg;
base16Scheme = "${pkgs.base16-schemes}/share/themes/one-light.yaml"; base16Scheme = "${inputs.tt-schemes}/base16/one-light.yaml";
opacity.popups = 0.8; opacity.popups = 0.8;
cursor = { cursor = {
package = pkgs.volantes-cursors; package = pkgs.volantes-cursors;
@ -219,12 +236,6 @@
inherit monospace; inherit monospace;
serif = proportional; serif = proportional;
sansSerif = proportional; sansSerif = proportional;
sizes = {
applications = 12;
desktop = 14;
popups = 16;
terminal = 12;
};
}; };
}; };
fonts = { fonts = {

View file

@ -1,12 +1,17 @@
{ config, pkgs, ... }: {
config,
pkgs,
fonts,
accentColourName,
...
}:
{ {
home.packages = [ pkgs.nyxt ]; home.packages = [ pkgs.nyxt ];
xdg = { xdg = {
configFile = { configFile = {
"nyxt/config.lisp".text = "nyxt/config.lisp".text =
let let
fonts = config.stylix.fonts; sc = config.scheme.withHashtag;
scheme = config.lib.stylix.scheme;
in in
'' ''
;; Import custom configuration ;; Import custom configuration
@ -17,24 +22,24 @@
:dark-p t :dark-p t
:font-family "${fonts.sansSerif.name}" :font-family "${fonts.sansSerif.name}"
:monospace-font-family "${fonts.monospace.name}" :monospace-font-family "${fonts.monospace.name}"
:background-color "${scheme.withHashtag.base00}" :background-color "${sc.base00}"
:on-background-color "${scheme.withHashtag.base05}" :on-background-color "${sc.base05}"
:primary-color "${scheme.withHashtag.base02}" :primary-color "${sc.base02}"
:on-primary-color "${scheme.withHashtag.base05}" :on-primary-color "${sc.base05}"
:secondary-color "${scheme.withHashtag.base03}" :secondary-color "${sc.base03}"
:on-secondary-color "${scheme.withHashtag.base05}" :on-secondary-color "${sc.base05}"
:accent-color "${scheme.withHashtag.base0D}" :accent-color "${sc.${accentColourName}}"
:on-accent-color "${scheme.withHashtag.base01}" :on-accent-color "${sc.base01}"
:action-color "${scheme.withHashtag.cyan}" :action-color "${sc.cyan}"
:on-action-color "${scheme.withHashtag.base01}" :on-action-color "${sc.base01}"
:success-color "${scheme.withHashtag.green}" :success-color "${sc.green}"
:on-success-color "${scheme.withHashtag.base01}" :on-success-color "${sc.base01}"
:highlight-color "${scheme.withHashtag.magenta}" :highlight-color "${sc.magenta}"
:on-highlight-color "${scheme.withHashtag.base01}" :on-highlight-color "${sc.base01}"
:warning-color "${scheme.withHashtag.yellow}" :warning-color "${sc.yellow}"
:on-warning-color "${scheme.withHashtag.base01}" :on-warning-color "${sc.base01}"
:codeblock-color "${scheme.withHashtag.base02}" :codeblock-color "${sc.base02}"
:on-codeblock-color "${scheme.withHashtag.base05}")))) :on-codeblock-color "${sc.base05}"))))
''; '';
}; };
dataFile."nyxt/bookmarks.lisp".text = dataFile."nyxt/bookmarks.lisp".text =

View file

@ -1,10 +1,16 @@
{ inputs, ... }: { inputs, osConfig, ... }:
{ {
imports = [ imports = [
inputs.base16.homeManagerModule
inputs.nix-index-database.hmModules.nix-index inputs.nix-index-database.hmModules.nix-index
./shell/default.nix ./shell/default.nix
./services/password-store/default.nix ./services/password-store/default.nix
./scripts/default.nix ./scripts/default.nix
]; ];
programs.home-manager.enable = true; programs.home-manager.enable = true;
scheme = "${inputs.tt-schemes}/base16/one-light.yaml";
fonts.fontconfig = {
enable = true;
inherit (osConfig.fonts.fontconfig) defaultFonts;
};
} }

View file

@ -1,4 +1,9 @@
{ config, pkgs, ... }: {
config,
pkgs,
fonts,
...
}:
{ {
imports = [ ../shell/default.nix ]; imports = [ ../shell/default.nix ];
stylix.targets.emacs.enable = false; stylix.targets.emacs.enable = false;
@ -17,11 +22,9 @@
package = pkgs.emacs29-pgtk; package = pkgs.emacs29-pgtk;
extraConfig = extraConfig =
let let
fixed-font-family = "${config.stylix.fonts.monospace.name}"; fixed-font-family = "${fonts.monospace.name}";
variable-font-family = "${config.stylix.fonts.sansSerif.name}"; variable-font-family = "${fonts.sansSerif.name}";
font-height = builtins.toString ( font-height = builtins.toString (builtins.floor (builtins.mul fonts.sizes.applications 10));
builtins.floor (builtins.mul config.stylix.fonts.sizes.applications 10)
);
custom-theme-name = "nix"; custom-theme-name = "nix";
custom-theme = pkgs.writeTextFile { custom-theme = pkgs.writeTextFile {
name = "custom-emacs-theme"; name = "custom-emacs-theme";

View file

@ -2,6 +2,8 @@
config, config,
lib, lib,
pkgs, pkgs,
fonts,
accentColourName,
... ...
}: }:
{ {
@ -23,8 +25,8 @@
{ {
clickItemTo = "open"; clickItemTo = "open";
theme = "default"; theme = "default";
colorScheme = "Breeze${toCapital config.lib.stylix.scheme.variant}"; colorScheme = "Breeze${toCapital config.scheme.variant}";
iconTheme = "Papirus-${toCapital config.lib.stylix.scheme.variant}"; iconTheme = "Papirus-${toCapital config.scheme.variant}";
windowDecorations = { windowDecorations = {
library = "org.kde.breeze"; library = "org.kde.breeze";
theme = "Breeze"; theme = "Breeze";
@ -39,7 +41,7 @@
fonts = fonts =
let let
general = { general = {
family = config.stylix.fonts.sansSerif.name; family = fonts.sansSerif.name;
pointSize = 12; pointSize = 12;
}; };
small = { small = {
@ -47,7 +49,7 @@
pointSize = general.pointSize - 2; pointSize = general.pointSize - 2;
}; };
fixedWidth = { fixedWidth = {
family = config.stylix.fonts.monospace.name; family = fonts.monospace.name;
pointSize = 12; pointSize = 12;
}; };
in in
@ -284,9 +286,9 @@
let let
AccentColor = AccentColor =
let let
r = config.lib.stylix.scheme."base0D-rgb-r"; r = config.scheme."${accentColourName}-rgb-r";
g = config.lib.stylix.scheme."base0D-rgb-g"; g = config.scheme."${accentColourName}-rgb-g";
b = config.lib.stylix.scheme."base0D-rgb-b"; b = config.scheme."${accentColourName}-rgb-b";
in in
"${r}, ${g}, ${b}"; "${r}, ${g}, ${b}";
in in

View file

@ -1,4 +1,9 @@
{ config, pkgs, ... }: {
config,
pkgs,
fonts,
...
}:
{ {
home.packages = [ pkgs.yakuake ]; home.packages = [ pkgs.yakuake ];
programs.konsole = { programs.konsole = {
@ -10,8 +15,8 @@
colorScheme = "onelight"; colorScheme = "onelight";
command = "${config.programs.fish.package}/bin/fish"; command = "${config.programs.fish.package}/bin/fish";
font = { font = {
inherit (config.stylix.fonts.monospace) name; name = fonts.monospace.name;
size = config.stylix.fonts.sizes.terminal; size = fonts.sizes.terminal;
}; };
extraConfig = { extraConfig = {
"Interaction Options" = { "Interaction Options" = {

10
system/home/shell/bat.nix Normal file
View file

@ -0,0 +1,10 @@
{ ... }:
{
programs.bat = {
enable = true;
config = {
theme = "OneHalfLight";
style = "plain,numbers,changes";
};
};
}

View file

@ -0,0 +1,51 @@
{ config, accentColourName, ... }:
{
programs.bottom = {
enable = true;
settings = {
flags = {
group_processes = true;
temperature_type = "celsius";
battery = true;
enable_gpu = true;
enable_cache_memory = true;
};
colors =
let
sc = config.scheme.withHashtag;
rainbow = with sc; [
red
yellow
green
cyan
blue
magenta
];
in
{
table_header_color = sc.base05;
all_cpu_color = sc.base05;
avg_cpu_color = sc.base05;
cpu_core_colors = rainbow;
ram_color = sc.red;
cache_color = sc.green;
swap_color = sc.blue;
rx_color = sc.green;
tx_color = sc.blue;
widget_title_color = sc.${accentColourName};
border_color = sc.base02;
highlighted_border_color = sc.${accentColourName};
text_color = sc.base05;
graph_color = sc.base04;
cursor_color = sc.base02;
selected_text_color = sc.base05;
selected_bg_color = sc.base01;
high_battery_color = sc.green;
medium_battery_color = sc.yellow;
low_battery_color = sc.red;
gpu_core_colors = rainbow;
arc_color = sc.cyan;
};
};
};
}

View file

@ -39,7 +39,7 @@
}; };
colors = colors =
let let
rainbow = with config.lib.stylix.scheme.withHashtag; [ rainbow = with config.scheme.withHashtag; [
red red
yellow yellow
green green
@ -96,36 +96,5 @@
copy_on_select = true; copy_on_select = true;
}; };
}; };
zsh = {
enable = true;
enableCompletion = true;
autocd = true;
autosuggestion.enable = true;
defaultKeymap = "emacs";
syntaxHighlighting = {
enable = true;
highlighters = [
"brackets"
"cursor"
];
};
historySubstringSearch.enable = true;
history = {
extended = true;
share = true;
ignoreDups = true;
ignoreAllDups = true;
ignoreSpace = true;
expireDuplicatesFirst = true;
};
initExtra = ''
## completion config and styling
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' menu 'select=long-list'
## transient prompt
source ${./transient.zsh}
'';
};
}; };
} }

View file

@ -0,0 +1,7 @@
{ ... }:
{
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
}

View file

@ -0,0 +1,9 @@
{ ... }:
{
programs.eza = {
enable = true;
git = true;
icons = true;
extraOptions = [ "--octal-permissions" ];
};
}

View file

@ -0,0 +1,7 @@
{ ... }:
{
programs.fastfetch = {
enable = true;
settings = { };
};
}

View file

@ -0,0 +1,9 @@
{ pkgs, ... }:
{
programs.fzf = {
enable = true;
defaultCommand = "${pkgs.fd}/bin/fd --type f";
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
};
}

View file

@ -0,0 +1,20 @@
{ ... }:
{
programs.readline = {
enable = true;
variables = {
bell-style = "visible";
blink-matching-paren = "On";
colored-completion-prefix = "On";
colored-stats = "On";
completion-ignore-case = "On";
completion-map-case = "On";
editing-mode = "emacs";
expand-tilde = "On";
horizontal-scroll-mode = "On";
mark-directories = "On";
mark-symlinked-directories = "On";
visible-stats = "On";
};
};
}

View file

@ -0,0 +1,28 @@
{ config, lib, ... }:
{
programs.zellij = {
enable = true;
settings = {
themes.base16 = with config.scheme.withHashtag; rec {
inherit
red
green
yellow
blue
magenta
cyan
orange
;
black = base00;
bg = black;
white = base05;
fg = white;
};
theme = "base16";
default_mode = "locked";
mouse_mode = true;
copy_command = lib.mkIf config.wayland.windowManager.sway.enable "wl-copy";
copy_on_select = true;
};
};
}

34
system/home/shell/zsh.nix Normal file
View file

@ -0,0 +1,34 @@
{ ... }:
{
programs.zsh = {
enable = true;
enableCompletion = true;
autocd = true;
autosuggestion.enable = true;
defaultKeymap = "emacs";
syntaxHighlighting = {
enable = true;
highlighters = [
"brackets"
"cursor"
];
};
historySubstringSearch.enable = true;
history = {
extended = true;
share = true;
ignoreDups = true;
ignoreAllDups = true;
ignoreSpace = true;
expireDuplicatesFirst = true;
};
initExtra = ''
## completion config and styling
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' menu 'select=long-list'
## transient prompt
source ${./transient.zsh}
'';
};
}

View file

@ -112,7 +112,7 @@
enable = true; enable = true;
iconTheme = { iconTheme = {
package = pkgs.papirus-icon-theme.override { color = "violet"; }; package = pkgs.papirus-icon-theme.override { color = "violet"; };
name = "Papirus-${(import ../lib/to_capital.nix lib) config.lib.stylix.scheme.variant}"; name = "Papirus-${(import ../lib/to_capital.nix lib) config.scheme.variant}";
}; };
}; };
wayland.windowManager.sway = { wayland.windowManager.sway = {

View file

@ -1,6 +1,11 @@
{ config, pkgs, ... }:
{ {
stylix.targets.waybar.enable = false; config,
pkgs,
fonts,
accentColourName,
...
}:
{
systemd.user.targets.tray.Unit = { systemd.user.targets.tray.Unit = {
Description = "Home Manager System Tray"; Description = "Home Manager System Tray";
Requires = [ "graphical-session.target" ]; Requires = [ "graphical-session.target" ];
@ -184,14 +189,14 @@
on-scroll = 1; on-scroll = 1;
format = format =
let let
scheme = config.lib.stylix.scheme.withHashtag; sc = config.scheme.withHashtag;
in in
{ {
months = "<span color='${scheme.red}'><b>{}</b></span>"; months = "<span color='${sc.red}'><b>{}</b></span>";
weeks = "<span color='${scheme.cyan}'><b>W{}</b></span>"; weeks = "<span color='${sc.cyan}'><b>W{}</b></span>";
weekdays = "<span color='${scheme.orange}'><b>{}</b></span>"; weekdays = "<span color='${sc.orange}'><b>{}</b></span>";
days = "<span color='${scheme.base05}'><b>{}</b></span>"; days = "<span color='${sc.base05}'><b>{}</b></span>";
today = "<span color='${scheme.base0D}'><b><i>{}</i></b></span>"; today = "<span color='${sc.${accentColourName}}'><b><i>{}</i></b></span>";
}; };
}; };
actions = { actions = {
@ -272,14 +277,14 @@
}; };
style = style =
let let
scheme = config.lib.stylix.scheme.withHashtag; sc = config.scheme.withHashtag;
alpha = "0.8"; alpha = "0.8";
in in
'' ''
* { * {
all: unset; all: unset;
font-family: ${config.stylix.fonts.monospace.name}; font-size: ${toString (fonts.sizes.popups + 2)}px;
font-size: ${toString config.stylix.fonts.sizes.popups}px; font-family: ${fonts.monospace.name};
} }
window { window {
@ -289,23 +294,23 @@
} }
window > box { window > box {
color: ${scheme.base05}; color: ${sc.base05};
background: ${scheme.base00}; background: ${sc.base00};
margin: 5px 5px 0px; margin: 5px 5px 0px;
padding: 0px; padding: 0px;
border-top: 1px solid ${scheme.base04}; border-top: 1px solid ${sc.base04};
border-radius: 5px; border-radius: 5px;
} }
tooltip { tooltip {
background: alpha(${scheme.base00}, ${alpha}); background: alpha(${sc.base00}, ${alpha});
border: 1px solid ${scheme.base0D}; border: 1px solid ${sc.${accentColourName}};
border-radius: 5px; border-radius: 5px;
box-shadow: none; box-shadow: none;
} }
tooltip label { tooltip label {
color: ${scheme.base05}; color: ${sc.base05};
border: none; border: none;
padding: 5px; padding: 5px;
margin: 0px; margin: 0px;
@ -333,57 +338,57 @@
#backlight, #backlight,
#battery, #battery,
#custom-weather { #custom-weather {
color: ${scheme.base05}; color: ${sc.base05};
} }
#workspaces button { #workspaces button {
background: transparent; background: transparent;
color: ${scheme.base05}; color: ${sc.base05};
margin: 0px; margin: 0px;
padding: 0px 5px; padding: 0px 5px;
} }
#workspaces button.persistent { #workspaces button.persistent {
color: ${scheme.base03}; color: ${sc.base03};
} }
#workspaces button.focused { #workspaces button.focused {
color: ${scheme.base0D}; color: ${sc.${accentColourName}};
} }
#workspaces button.urgent { #workspaces button.urgent {
color: ${scheme.base09}; color: ${sc.base09};
} }
#mpris { #mpris {
color: ${scheme.base04}; color: ${sc.base04};
} }
#custom-notification { #custom-notification {
color: ${scheme.base08}; color: ${sc.base08};
} }
#pulseaudio { #pulseaudio {
color: ${scheme.base09}; color: ${sc.base09};
} }
#network { #network {
color: ${scheme.base0A}; color: ${sc.base0A};
} }
#bluetooth { #bluetooth {
color: ${scheme.base0B}; color: ${sc.base0B};
} }
#clock.calendar { #clock.calendar {
color: ${scheme.base0C}; color: ${sc.base0C};
} }
#clock { #clock {
color: ${scheme.base0D}; color: ${sc.base0D};
} }
#battery.warning { #battery.warning {
color: ${scheme.base09}; color: ${sc.base09};
} }
#battery.critical { #battery.critical {
color: ${scheme.base08}; color: ${sc.base08};
} }
#battery.charging, #battery.charging,
#battery.plugged { #battery.plugged {
color: ${scheme.base0B}; color: ${sc.base0B};
} }
''; '';
}; };