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: on:
schedule: schedule:
# Run every Sunday at 2 AM UTC - cron: "30 09 * * 1,5"
- cron: "0 2 * * 0"
workflow_dispatch: # Allow manual trigger workflow_dispatch: # Allow manual trigger
jobs: jobs:
@ -53,6 +52,12 @@ jobs:
echo "Building server configuration..." echo "Building server configuration..."
nix build .#nixosConfigurations.server.config.system.build.toplevel --quiet 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 - name: Push to cache
if: steps.check_changes.outputs.changes == 'true' if: steps.check_changes.outputs.changes == 'true'
run: | run: |
@ -65,6 +70,7 @@ jobs:
# Push the specific system derivations we just built # 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.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 .#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 - name: Commit updated flake.lock
if: steps.check_changes.outputs.changes == 'true' if: steps.check_changes.outputs.changes == 'true'

View File

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

View File

@ -1,5 +1,6 @@
{ pkgs }: { pkgs, inputs }:
let let
inherit (inputs) wallpapers;
mkScheme = mkScheme =
{ {
color ? null, color ? null,
@ -26,12 +27,12 @@ in
name = "mocha"; name = "mocha";
color = "brown"; color = "brown";
polarity = "dark"; polarity = "dark";
image = ../wallpapers/la_fragua_de_vulcano.jpg; image = "${wallpapers}/la_fragua_de_vulcano.jpg";
}; };
who = mkScheme { who = mkScheme {
name = "catppuccin-frappe"; name = "catppuccin-frappe";
polarity = "dark"; polarity = "dark";
image = ../wallpapers/Nikolay_Kasatkin_Who.jpeg; image = "${wallpapers}/Nikolay_Kasatkin_Who.jpeg";
iconPackage = pkgs.catppuccin-papirus-folders.override { iconPackage = pkgs.catppuccin-papirus-folders.override {
flavor = "frappe"; flavor = "frappe";
accent = "peach"; accent = "peach";
@ -41,25 +42,25 @@ in
name = "solarflare"; name = "solarflare";
color = "darkcyan"; color = "darkcyan";
polarity = "dark"; polarity = "dark";
image = ../wallpapers/space.jpg; image = "${wallpapers}/space.jpg";
}; };
jesus = mkScheme { jesus = mkScheme {
color = "red"; color = "red";
name = "equilibrium-light"; name = "equilibrium-light";
polarity = "light"; polarity = "light";
image = ../wallpapers/jesus.png; image = "${wallpapers}/jesus.png";
}; };
ballerinas = mkScheme { ballerinas = mkScheme {
color = "brown"; color = "brown";
name = "mocha"; name = "mocha";
polarity = "dark"; polarity = "dark";
image = ../wallpapers/Waay-Ballerinas.jpeg; image = "${wallpapers}/Waay-Ballerinas.jpeg";
}; };
paul = mkScheme { paul = mkScheme {
color = "green"; color = "green";
name = "valua"; name = "valua";
polarity = "light"; polarity = "light";
image = ../wallpapers/paul1.jpg; image = "${wallpapers}/paul1.jpg";
base16Scheme = { base16Scheme = {
base00 = "#1a1f16"; # dark forest floor (was deep green-black) base00 = "#1a1f16"; # dark forest floor (was deep green-black)
base01 = "#23291a"; # bark shadow base01 = "#23291a"; # bark shadow
@ -79,12 +80,11 @@ in
base0F = "#5c8b55"; # swamp olive base0F = "#5c8b55"; # swamp olive
}; };
}; };
};
cheems = mkScheme { cheems = mkScheme {
color = "yellow"; color = "yellow";
name = "equilibrium-light"; name = "equilibrium-light";
polarity = "light"; polarity = "light";
image = ../wallpapers/cheems.png; image = "${wallpapers}/cheems.png";
base16Scheme = { base16Scheme = {
base00 = "#f5f0e9"; # very light cream base00 = "#f5f0e9"; # very light cream
base01 = "#e8ddd4"; # light beige base01 = "#e8ddd4"; # light beige
@ -104,4 +104,5 @@ in
base0F = "#dc143c"; # crimson base0F = "#dc143c"; # crimson
}; };
}; };
};
} }

View File

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

View File

@ -1,6 +1,5 @@
{ {
pkgs, pkgs,
inputs,
... ...
}: }:
let let
@ -8,22 +7,102 @@ let
${pkgs.waybar}/bin/waybar & ${pkgs.waybar}/bin/waybar &
${pkgs.swww}/bin/swww init & ${pkgs.swww}/bin/swww init &
sleep 1 sleep 1
${pkgs.swww}/bin/swww img ${./wallpaper.jpeg} &
''; '';
in in
{ {
config = { programs.hyprland.enable = true;
home-manager.users.jawz = { services.greetd = {
programs = { enable = true;
kitty.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 = { wayland.windowManager.hyprland = {
enable = true; enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
systemd.variables = [ "--all" ];
settings = { settings = {
"$mainMod" = "SUPER";
exec-once = "${startupScript}/bin/start"; 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" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1759076381, "lastModified": 1759094452,
"narHash": "sha256-ZWAsJnJvjjLMjH6hl5o4zVOTEuL3tmBzaJcoQYJE+aE=", "narHash": "sha256-j7IOTFnQRDjX4PzYb2p6CPviAc8cDrcorzGpM8J89uM=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "Hyprland", "repo": "Hyprland",
"rev": "c30036bdacbe5e87b49d6de6df652d56681ef457", "rev": "f854b5bffbdd13cfe7edad0ee157d6947ff99619",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -655,11 +655,11 @@
"rev": "64a81ca78d03816ddcbbdc8a7b6186c975c6653a", "rev": "64a81ca78d03816ddcbbdc8a7b6186c975c6653a",
"revCount": 104, "revCount": 104,
"type": "git", "type": "git",
"url": "https://git.servidos.lat/lebubu/scripts.git" "url": "https://git.servidos.lat/jawz/scripts.git"
}, },
"original": { "original": {
"type": "git", "type": "git",
"url": "https://git.servidos.lat/lebubu/scripts.git" "url": "https://git.servidos.lat/jawz/scripts.git"
} }
}, },
"nix-gaming": { "nix-gaming": {
@ -845,11 +845,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1759084735, "lastModified": 1759091793,
"narHash": "sha256-G0m1drJGmQS2okeT6j33NzVKBbKPgb6+B786kzCjSiI=", "narHash": "sha256-BBeGZR3lbAp9x1CJxjQ2FkUZX4iOf5UIRvwUPQrSfFw=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nur", "repo": "nur",
"rev": "1eac073db3f04be9eca753c8f0bf54b341e85e14", "rev": "e88fd7766e9b1af996a438341cbbd51d6ca1c621",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -922,7 +922,8 @@
"nur": "nur", "nur": "nur",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"stylix": "stylix", "stylix": "stylix",
"ucodenix": "ucodenix" "ucodenix": "ucodenix",
"wallpapers": "wallpapers"
} }
}, },
"sops-nix": { "sops-nix": {
@ -1178,6 +1179,22 @@
"type": "github" "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": { "xdph": {
"inputs": { "inputs": {
"hyprland-protocols": [ "hyprland-protocols": [

View File

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

View File

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

View File

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

View File

@ -1,32 +1,50 @@
{ let
emacs.enable = true; mkEnabled = name: {
apps.dictionaries.enable = true; inherit name;
websites.portfolio.enableProxy = true; value.enable = true;
services.network.enable = true;
enableProxy = true;
shell = {
tools.enable = true;
multimedia.enable = true;
}; };
dev = { mkEnabledWithProxy = name: {
nix.enable = true; inherit name;
python.enable = true; value = {
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 = {
enable = true; enable = true;
enableProxy = 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"; hostName = "workstation";
system = "x86_64-linux"; system = "x86_64-linux";
sshUser = "nixremote"; sshUser = "nixremote";
maxJobs = 12; maxJobs = 8;
speedFactor = 1; speedFactor = 2;
supportedFeatures = config.my.nix.features; supportedFeatures = config.my.nix.features;
} }
]; ];

View File

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

View File

@ -1,20 +1,5 @@
{ lib, config, ... }: { lib, config, ... }:
let 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"; filterNames = file: file != "librewolf.nix";
autoImport = autoImport =
dir: dir:
@ -182,7 +167,7 @@ in
virtualisation = { virtualisation = {
containers.enable = true; containers.enable = true;
oci-containers.backend = "podman"; oci-containers.backend = "podman";
podman = lib.mkIf (enableContainers || config.my.enableContainers) { podman = lib.mkIf config.my.enableContainers {
enable = true; enable = true;
dockerCompat = true; dockerCompat = true;
dockerSocket.enable = true; dockerSocket.enable = true;