Compare commits

...

10 Commits

13 changed files with 221 additions and 108 deletions

View File

@ -2,8 +2,7 @@ name: Weekly NixOS Build & Cache
on:
schedule:
# Run every Sunday at 2 AM UTC
- cron: "0 2 * * 0"
- cron: "30 09 * * 1,5"
workflow_dispatch: # Allow manual trigger
jobs:
@ -53,6 +52,12 @@ jobs:
echo "Building server configuration..."
nix build .#nixosConfigurations.server.config.system.build.toplevel --quiet
- name: Build emacs-vm configuration
if: steps.check_changes.outputs.changes == 'true'
run: |
echo "Building emacs-vm configuration..."
nix build .#emacs-vm --quiet
- name: Push to cache
if: steps.check_changes.outputs.changes == 'true'
run: |
@ -65,6 +70,7 @@ jobs:
# Push the specific system derivations we just built
nix build .#nixosConfigurations.workstation.config.system.build.toplevel --print-out-paths | attic push servidos:nixos --stdin
nix build .#nixosConfigurations.server.config.system.build.toplevel --print-out-paths | attic push servidos:nixos --stdin
nix build .#emacs-vm --print-out-paths | attic push servidos:nixos --stdin
- name: Commit updated flake.lock
if: steps.check_changes.outputs.changes == 'true'

View File

@ -35,5 +35,8 @@ _final: prev: {
withVencord = true;
withOpenASAR = true;
};
waybar = prev.waybar.overrideAttrs (old: {
mesonFlags = old.mesonFlags ++ [ "-Dexperimental=true" ];
});
inherit (pkgsU) symbola mealie flaresolver;
}

View File

@ -1,5 +1,6 @@
{ pkgs }:
{ pkgs, inputs }:
let
inherit (inputs) wallpapers;
mkScheme =
{
color ? null,
@ -26,12 +27,12 @@ in
name = "mocha";
color = "brown";
polarity = "dark";
image = ../wallpapers/la_fragua_de_vulcano.jpg;
image = "${wallpapers}/la_fragua_de_vulcano.jpg";
};
who = mkScheme {
name = "catppuccin-frappe";
polarity = "dark";
image = ../wallpapers/Nikolay_Kasatkin_Who.jpeg;
image = "${wallpapers}/Nikolay_Kasatkin_Who.jpeg";
iconPackage = pkgs.catppuccin-papirus-folders.override {
flavor = "frappe";
accent = "peach";
@ -41,25 +42,25 @@ in
name = "solarflare";
color = "darkcyan";
polarity = "dark";
image = ../wallpapers/space.jpg;
image = "${wallpapers}/space.jpg";
};
jesus = mkScheme {
color = "red";
name = "equilibrium-light";
polarity = "light";
image = ../wallpapers/jesus.png;
image = "${wallpapers}/jesus.png";
};
ballerinas = mkScheme {
color = "brown";
name = "mocha";
polarity = "dark";
image = ../wallpapers/Waay-Ballerinas.jpeg;
image = "${wallpapers}/Waay-Ballerinas.jpeg";
};
paul = mkScheme {
color = "green";
name = "valua";
polarity = "light";
image = ../wallpapers/paul1.jpg;
image = "${wallpapers}/paul1.jpg";
base16Scheme = {
base00 = "#1a1f16"; # dark forest floor (was deep green-black)
base01 = "#23291a"; # bark shadow
@ -79,29 +80,29 @@ in
base0F = "#5c8b55"; # swamp olive
};
};
};
cheems = mkScheme {
color = "yellow";
name = "equilibrium-light";
polarity = "light";
image = ../wallpapers/cheems.png;
base16Scheme = {
base00 = "#f5f0e9"; # very light cream
base01 = "#e8ddd4"; # light beige
base02 = "#d4c4b0"; # warm tan
base03 = "#b8a082"; # golden brown
base04 = "#9c7c5a"; # medium brown
base05 = "#7a5f3f"; # darker brown
base06 = "#5c4328"; # dark brown
base07 = "#3e2d1a"; # very dark brown
base08 = "#d2691e"; # golden orange
base09 = "#cd853f"; # peru
base0A = "#daa520"; # goldenrod
base0B = "#228b22"; # forest green
base0C = "#20b2aa"; # light sea green
base0D = "#4169e1"; # royal blue
base0E = "#8b008b"; # dark magenta
base0F = "#dc143c"; # crimson
cheems = mkScheme {
color = "yellow";
name = "equilibrium-light";
polarity = "light";
image = "${wallpapers}/cheems.png";
base16Scheme = {
base00 = "#f5f0e9"; # very light cream
base01 = "#e8ddd4"; # light beige
base02 = "#d4c4b0"; # warm tan
base03 = "#b8a082"; # golden brown
base04 = "#9c7c5a"; # medium brown
base05 = "#7a5f3f"; # darker brown
base06 = "#5c4328"; # dark brown
base07 = "#3e2d1a"; # very dark brown
base08 = "#d2691e"; # golden orange
base09 = "#cd853f"; # peru
base0A = "#daa520"; # goldenrod
base0B = "#228b22"; # forest green
base0C = "#20b2aa"; # light sea green
base0D = "#4169e1"; # royal blue
base0E = "#8b008b"; # dark magenta
base0F = "#dc143c"; # crimson
};
};
};
}

View File

@ -2,11 +2,14 @@
pkgs,
lib,
config,
inputs,
...
}:
let
schemesFile = import ./schemes.nix { inherit pkgs; };
scheme = schemesFile.schemes.who;
schemesFile = import ./schemes.nix {
inherit pkgs inputs;
};
scheme = schemesFile.schemes.cheems;
cfg = config.my.stylix;
in
{

View File

@ -1,6 +1,5 @@
{
pkgs,
inputs,
...
}:
let
@ -8,22 +7,102 @@ let
${pkgs.waybar}/bin/waybar &
${pkgs.swww}/bin/swww init &
sleep 1
${pkgs.swww}/bin/swww img ${./wallpaper.jpeg} &
'';
in
{
config = {
home-manager.users.jawz = {
programs = {
kitty.enable = true;
};
wayland.windowManager.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
systemd.variables = [ "--all" ];
settings = {
exec-once = "${startupScript}/bin/start";
programs.hyprland.enable = true;
services.greetd = {
enable = true;
settings.default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland";
user = "greeter";
};
};
xdg.portal = {
enable = true;
extraPortals = [
pkgs.xdg-desktop-portal-hyprland
pkgs.xdg-desktop-portal-gtk
];
};
users.users.jawz.packages = builtins.attrValues {
inherit (pkgs)
# Wayland utilities
wl-clipboard
wf-recorder
grim
slurp
wofi # Application launcher
mako # Notification daemon
libnotify # dependency of mako
swaylock-effects # Screen locker
nautilus # File manager
;
};
home-manager.users.jawz = {
programs.kitty.enable = true;
wayland.windowManager.hyprland = {
enable = true;
settings = {
"$mainMod" = "SUPER";
exec-once = "${startupScript}/bin/start";
general = {
gaps_in = 5;
gaps_out = 10;
border_size = 2;
layout = "dwindle";
};
dwindle = {
pseudotile = true;
preserve_split = true;
force_split = 2;
};
bind = [
"$mainMod, return, exec, kitty"
"$mainMod, Q, killactive,"
"$mainMod SHIFT, F, togglefloating,"
"$mainMod, F, fullscreen,"
"$mainMod, T, pin,"
"$mainMod, G, togglegroup,"
"$mainMod, bracketleft, changegroupactive, b"
"$mainMod, bracketright, changegroupactive, f"
"$mainMod, S, exec, wofi --show drun icons"
"$mainMod, P, pin, active"
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%+"
",XF86AudioLowerVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%-"
"$mainMod, left, movefocus, l"
"$mainMod, right, movefocus, r"
"$mainMod, up, movefocus, u"
"$mainMod, down, movefocus, d"
"$mainMod, h, movefocus, l"
"$mainMod, l, movefocus, r"
"$mainMod, k, movefocus, u"
"$mainMod, j, movefocus, d"
"$mainMod SHIFT, h, movewindow, l"
"$mainMod SHIFT, l, movewindow, r"
"$mainMod SHIFT, k, movewindow, u"
"$mainMod SHIFT, j, movewindow, d"
];
binde = [
"$mainMod SHIFT, h, moveactive, -20 0"
"$mainMod SHIFT, l, moveactive, 20 0"
"$mainMod SHIFT, k, moveactive, 0 -20"
"$mainMod SHIFT, j, moveactive, 0 20"
"$mainMod CTRL, l, resizeactive, 30 0"
"$mainMod CTRL, h, resizeactive, -30 0"
"$mainMod CTRL, k, resizeactive, 0 -10"
"$mainMod CTRL, j, resizeactive, 0 10"
];
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
};
};
};

35
flake.lock generated
View File

@ -456,11 +456,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1759076381,
"narHash": "sha256-ZWAsJnJvjjLMjH6hl5o4zVOTEuL3tmBzaJcoQYJE+aE=",
"lastModified": 1759094452,
"narHash": "sha256-j7IOTFnQRDjX4PzYb2p6CPviAc8cDrcorzGpM8J89uM=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "c30036bdacbe5e87b49d6de6df652d56681ef457",
"rev": "f854b5bffbdd13cfe7edad0ee157d6947ff99619",
"type": "github"
},
"original": {
@ -655,11 +655,11 @@
"rev": "64a81ca78d03816ddcbbdc8a7b6186c975c6653a",
"revCount": 104,
"type": "git",
"url": "https://git.servidos.lat/lebubu/scripts.git"
"url": "https://git.servidos.lat/jawz/scripts.git"
},
"original": {
"type": "git",
"url": "https://git.servidos.lat/lebubu/scripts.git"
"url": "https://git.servidos.lat/jawz/scripts.git"
}
},
"nix-gaming": {
@ -845,11 +845,11 @@
]
},
"locked": {
"lastModified": 1759084735,
"narHash": "sha256-G0m1drJGmQS2okeT6j33NzVKBbKPgb6+B786kzCjSiI=",
"lastModified": 1759091793,
"narHash": "sha256-BBeGZR3lbAp9x1CJxjQ2FkUZX4iOf5UIRvwUPQrSfFw=",
"owner": "nix-community",
"repo": "nur",
"rev": "1eac073db3f04be9eca753c8f0bf54b341e85e14",
"rev": "e88fd7766e9b1af996a438341cbbd51d6ca1c621",
"type": "github"
},
"original": {
@ -922,7 +922,8 @@
"nur": "nur",
"sops-nix": "sops-nix",
"stylix": "stylix",
"ucodenix": "ucodenix"
"ucodenix": "ucodenix",
"wallpapers": "wallpapers"
}
},
"sops-nix": {
@ -1178,6 +1179,22 @@
"type": "github"
}
},
"wallpapers": {
"flake": false,
"locked": {
"lastModified": 1759117171,
"narHash": "sha256-Oyp4MKcld+tlZISm2HvuRErgHUb2mztpOH6v3g8B9uA=",
"ref": "refs/heads/main",
"rev": "0bc27e282a4c13d43139c4794e80a5951e4787b8",
"revCount": 1,
"type": "git",
"url": "https://git.servidos.lat/jawz/wallpapers.git"
},
"original": {
"type": "git",
"url": "https://git.servidos.lat/jawz/wallpapers.git"
}
},
"xdph": {
"inputs": {
"hyprland-protocols": [

View File

@ -10,9 +10,13 @@
inputs.nixpkgs.follows = "";
};
jawz-scripts = {
url = "git+https://git.servidos.lat/lebubu/scripts.git";
url = "git+https://git.servidos.lat/jawz/scripts.git";
inputs.nixpkgs.follows = "nixpkgs";
};
wallpapers = {
url = "git+https://git.servidos.lat/jawz/wallpapers.git";
flake = false;
};
nur = {
url = "github:nix-community/nur";
inputs.nixpkgs.follows = "nixpkgs";

View File

@ -6,6 +6,7 @@
imports = [
../../config/base.nix
../../config/stylix.nix
../../environments/hyprland.nix
];
virtualisation.vmVariant.virtualisation = {
memorySize = 4096;
@ -44,10 +45,5 @@
];
};
networking.hostName = "emacs";
services.xserver = {
enable = true;
displayManager.lightdm.enable = true;
windowManager.i3.enable = true;
};
environment.systemPackages = [ ];
}

View File

@ -24,8 +24,8 @@
};
in
[
(buildMachine "workstation" 16 40)
(buildMachine "server" 16 17)
(buildMachine "workstation" 8 40)
(buildMachine "server" 6 17)
];
networking = {
hostName = "miniserver";

View File

@ -1,32 +1,50 @@
{
emacs.enable = true;
apps.dictionaries.enable = true;
websites.portfolio.enableProxy = true;
services.network.enable = true;
enableProxy = true;
shell = {
tools.enable = true;
multimedia.enable = true;
let
mkEnabled = name: {
inherit name;
value.enable = true;
};
dev = {
nix.enable = true;
python.enable = true;
sh.enable = true;
};
units = {
download.enable = true;
stream-dl.enable = true;
};
scripts = {
split-dir.enable = true;
pika-list.enable = true;
update-dns.enable = true;
};
servers = {
audiobookshelf = {
mkEnabledWithProxy = name: {
inherit name;
value = {
enable = true;
enableProxy = true;
};
qbittorrent.enable = true;
};
enableList = func: list: list |> map func |> builtins.listToAttrs;
in
{
emacs.enable = true;
enableProxy = true;
websites.portfolio.enableProxy = true;
apps = enableList mkEnabled [
"dictionaries"
];
services = enableList mkEnabled [
"network"
];
shell = enableList mkEnabled [
"tools"
"multimedia"
];
dev = enableList mkEnabled [
"nix"
"python"
"sh"
];
units = enableList mkEnabled [
"download"
"stream-dl"
];
scripts = enableList mkEnabled [
"split-dir"
"pika-list"
"update-dns"
];
servers =
enableList mkEnabled [
"qbittorrent"
]
// enableList mkEnabledWithProxy [
"audiobookshelf"
];
}

View File

@ -31,8 +31,8 @@
hostName = "workstation";
system = "x86_64-linux";
sshUser = "nixremote";
maxJobs = 12;
speedFactor = 1;
maxJobs = 8;
speedFactor = 2;
supportedFeatures = config.my.nix.features;
}
];

View File

@ -18,6 +18,7 @@ in
emacs.enable = true;
stylix.enable = true;
enableProxy = true;
enableContainers = true;
apps.dictionaries.enable = true;
shell = enableList mkEnabled [
"tools"

View File

@ -1,20 +1,5 @@
{ lib, config, ... }:
let
enableContainers = lib.any (opt: opt) [
config.my.servers.collabora.enable
config.my.servers.ryot.enable
config.my.servers.lidarr.enable
config.my.servers.prowlarr.enable
config.my.servers.maloja.enable
config.my.servers.multi-scrobbler.enable
config.my.servers.flame.enable
config.my.servers.flameSecret.enable
config.my.servers.metube.enable
config.my.servers.go-vod.enable
config.my.servers.tranga.enable
config.my.servers.drpp.enable
config.my.servers.plex-discord-bot.enable
];
filterNames = file: file != "librewolf.nix";
autoImport =
dir:
@ -182,7 +167,7 @@ in
virtualisation = {
containers.enable = true;
oci-containers.backend = "podman";
podman = lib.mkIf (enableContainers || config.my.enableContainers) {
podman = lib.mkIf config.my.enableContainers {
enable = true;
dockerCompat = true;
dockerSocket.enable = true;