Implemented custom system for creating and distributing color schemes based on wallpapers, and also cycling through wallpapers.

nixfmt'd the codebase
This commit is contained in:
2026-03-09 22:02:46 -04:00
parent 4308b8eb16
commit 8ee748a997
145 changed files with 2776 additions and 1125 deletions

View File

@@ -0,0 +1,187 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="535"
height="535"
viewBox="0 0 501.56251 501.56249"
id="svg2"
version="1.1"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
sodipodi:docname="nix-snowflake-colours.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient5562">
<stop
style="stop-color:#699ad7;stop-opacity:1"
offset="0"
id="stop5564" />
<stop
id="stop5566"
offset="0.24345198"
style="stop-color:#7eb1dd;stop-opacity:1" />
<stop
style="stop-color:#7ebae4;stop-opacity:1"
offset="1"
id="stop5568" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient5053">
<stop
style="stop-color:#415e9a;stop-opacity:1"
offset="0"
id="stop5055" />
<stop
id="stop5057"
offset="0.23168644"
style="stop-color:#4a6baf;stop-opacity:1" />
<stop
style="stop-color:#5277c3;stop-opacity:1"
offset="1"
id="stop5059" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5562"
id="linearGradient4328"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(70.650339,-1055.1511)"
x1="200.59668"
y1="351.41116"
x2="290.08701"
y2="506.18814" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5053"
id="linearGradient4330"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(864.69589,-1491.3405)"
x1="-584.19934"
y1="782.33563"
x2="-496.29703"
y2="937.71399" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.70904368"
inkscape:cx="99.429699"
inkscape:cy="195.33352"
inkscape:document-units="px"
inkscape:current-layer="layer3"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1050"
inkscape:window-x="1920"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:snap-global="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:showpageshadow="2"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="gradient-logo"
style="display:inline;opacity:1"
transform="translate(-156.41121,933.30685)">
<g
id="g2"
transform="matrix(0.99994059,0,0,0.99994059,-0.06321798,33.188377)"
style="stroke-width:1.00006">
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="path3336-6"
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8257 z"
style="opacity:1;fill:url(#linearGradient4328);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.00018;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<use
height="100%"
width="100%"
transform="rotate(60,407.11155,-715.78724)"
id="use3439-6"
inkscape:transform-center-y="151.59082"
inkscape:transform-center-x="124.43045"
xlink:href="#path3336-6"
y="0"
x="0"
style="stroke-width:1.00006" />
<use
height="100%"
width="100%"
transform="rotate(-60,407.31177,-715.70016)"
id="use3445-0"
inkscape:transform-center-y="75.573958"
inkscape:transform-center-x="-168.20651"
xlink:href="#path3336-6"
y="0"
x="0"
style="stroke-width:1.00006" />
<use
height="100%"
width="100%"
transform="rotate(180,407.41868,-715.7565)"
id="use3449-5"
inkscape:transform-center-y="-139.94592"
inkscape:transform-center-x="59.669705"
xlink:href="#path3336-6"
y="0"
x="0"
style="stroke-width:1.00006" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4330);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.00018;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8256 z"
id="path4260-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<use
height="100%"
width="100%"
transform="rotate(120,407.33916,-716.08356)"
id="use4354-5"
xlink:href="#path4260-0"
y="0"
x="0"
style="display:inline;stroke-width:1.00006" />
<use
height="100%"
width="100%"
transform="rotate(-120,407.28823,-715.86995)"
id="use4362-2"
xlink:href="#path4260-0"
y="0"
x="0"
style="display:inline;stroke-width:1.00006" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@@ -14,6 +14,11 @@ def watch_hyprland():
threading.Thread(target=watch_hyprland, daemon=True).start() threading.Thread(target=watch_hyprland, daemon=True).start()
dev = None
def is_target_window():
return active_class == "kitty" or active_class == "neovide" or active_class == "discord" or active_class == "vesktop" or active_class == "firefox"
for path in evdev.list_devices(): for path in evdev.list_devices():
d = evdev.InputDevice(path) d = evdev.InputDevice(path)
if 'keyd virtual keyboard' in d.name: if 'keyd virtual keyboard' in d.name:
@@ -21,10 +26,9 @@ for path in evdev.list_devices():
break break
d.close() d.close()
print(dev) if dev != None:
for event in dev.read_loop():
for event in dev.read_loop(): if event.type == 1 and event.value == 1 and is_target_window():
if event.type == 1 and event.value == 1 and active_class == "kitty":
if event.code == 28: if event.code == 28:
subprocess.Popen(['pw-play', '/home/pagedmov/.sysflake/assets/sound/msg_finish.wav']) subprocess.Popen(['pw-play', '/home/pagedmov/.sysflake/assets/sound/msg_finish.wav'])
elif event.code == 14: elif event.code == 14:

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1008 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

50
flake.lock generated
View File

@@ -107,11 +107,11 @@
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1772928715, "lastModified": 1773005383,
"narHash": "sha256-Z7qGN/5v7oBc6wjNtSR7YI/JneEzPvCqd+P6RAxMltA=", "narHash": "sha256-Nlln9sKJa1q5lYX4xXS34Lt1oREwgQbT59Aa37nBGkU=",
"owner": "9001", "owner": "9001",
"repo": "copyparty", "repo": "copyparty",
"rev": "ffe6a9aa6fb7d49a4a1be3007c8d3297f88f4bc8", "rev": "266d6e0ae6a6eecac7bc863bd8f746d16686e61a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -125,11 +125,11 @@
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1772867152, "lastModified": 1773025010,
"narHash": "sha256-RIFgZ4O6Eg+5ysZ8Tqb3YvcqiRaNy440GEY22ltjRrs=", "narHash": "sha256-khlHllTsovXgT2GZ0WxT4+RvuMjNeR5OW0UYeEHPYQo=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "eaafb89b56e948661d618eefd4757d9ea8d77514", "rev": "7b9f7f88ab3b339f8142dc246445abb3c370d3d3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -309,11 +309,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772845525, "lastModified": 1773093840,
"narHash": "sha256-Dp5Ir2u4jJDGCgeMRviHvEQDe+U37hMxp6RSNOoMMPc=", "narHash": "sha256-u/96NoAyN8BSRuM3ZimGf7vyYgXa3pLx4MYWjokuoH4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "27b93804fbef1544cb07718d3f0a451f4c4cd6c0", "rev": "bb014746edb2a98d975abde4dd40fa240de4cf86",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -415,11 +415,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1772913214, "lastModified": 1773082851,
"narHash": "sha256-/tzDJr3CcM73Y4ZQmoFYSzNDs7RV7+enE72tvl+Fm0E=", "narHash": "sha256-4zkUP+gZF6zveHFN0W3oX750mpVgxfiShL+ZcvcH244=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "a4ecae91600d7e8ceb31610176d6b40cb816711b", "rev": "e32eeb1d454b029a24ca71f410896bf52839085d",
"revCount": 7006, "revCount": 7010,
"submodules": true, "submodules": true,
"type": "git", "type": "git",
"url": "https://github.com/hyprwm/Hyprland" "url": "https://github.com/hyprwm/Hyprland"
@@ -749,11 +749,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1772173633, "lastModified": 1772771118,
"narHash": "sha256-MOH58F4AIbCkh6qlQcwMycyk5SWvsqnS/TCfnqDlpj4=", "narHash": "sha256-xWzaTvmmACR/SRWtABgI/Z97lcqwJAeoSd5QW1KdK1s=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c0f3d81a7ddbc2b1332be0d8481a672b4f6004d6", "rev": "e38213b91d3786389a446dfce4ff5a8aaf6012f2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -813,11 +813,11 @@
}, },
"nixpkgs_6": { "nixpkgs_6": {
"locked": { "locked": {
"lastModified": 1772736753, "lastModified": 1772956932,
"narHash": "sha256-au/m3+EuBLoSzWUCb64a/MZq6QUtOV8oC0D9tY2scPQ=", "narHash": "sha256-M0yS4AafhKxPPmOHGqIV0iKxgNO8bHDWdl1kOwGBwRY=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "917fec990948658ef1ccd07cef2a1ef060786846", "rev": "608d0cadfed240589a7eea422407a547ad626a14",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -964,11 +964,11 @@
"nixpkgs": "nixpkgs_8" "nixpkgs": "nixpkgs_8"
}, },
"locked": { "locked": {
"lastModified": 1772939073, "lastModified": 1773107703,
"narHash": "sha256-Fl451e4T94L1dUPjs5HEAbh/gP3vXFQBk9b52tW486Y=", "narHash": "sha256-Zf2Z7p2tEC+HjIqVoEyd/bLypqUdNdkNCuAg4OnNcIg=",
"owner": "km-clay", "owner": "km-clay",
"repo": "shed", "repo": "shed",
"rev": "07d7015dd4950833671f2b795e2559295601e5af", "rev": "85e5fc28754849ce690ff583249381f9c7a91fb9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -985,11 +985,11 @@
"systems": "systems_5" "systems": "systems_5"
}, },
"locked": { "locked": {
"lastModified": 1772494187, "lastModified": 1773007504,
"narHash": "sha256-6ksgNAFXVK+Cg/6ww7bB2nJUPZlnS75UwZC7G+L03EE=", "narHash": "sha256-4NtiCDH3RunKbrlWvPCB6dyTjCwqdrHaBDeMCzG6gIA=",
"owner": "gerg-l", "owner": "gerg-l",
"repo": "spicetify-nix", "repo": "spicetify-nix",
"rev": "915ab06b046d05613041780c575c62a32fe67cea", "rev": "434e63b851f9139aaeddc3b8de44d47992828b3b",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -30,7 +30,8 @@
}; };
}; };
outputs = { ... }@inputs: outputs =
{ ... }@inputs:
let let
movLib = import ./lib { movLib = import ./lib {
inherit inputs; inherit inputs;
@@ -73,7 +74,8 @@
]; ];
} }
]; ];
in { in
{
inherit (hosts) nixosConfigurations homeConfigurations; inherit (hosts) nixosConfigurations homeConfigurations;
}; };
} }

View File

@@ -1,4 +1,9 @@
{ inputs, pkgs, username, ... }: {
inputs,
pkgs,
username,
...
}:
let let
shed = inputs.shed.packages.${pkgs.stdenv.hostPlatform.system}.default; shed = inputs.shed.packages.${pkgs.stdenv.hostPlatform.system}.default;
@@ -31,8 +36,14 @@ in
}; };
environment = { environment = {
variables = { PATH = "${pkgs.clang-tools}/bin:$PATH"; }; variables = {
shells = [ pkgs.myPkgs.slash pkgs.zsh pkgs.bash ]; PATH = "${pkgs.clang-tools}/bin:$PATH";
};
shells = [
pkgs.myPkgs.slash
pkgs.zsh
pkgs.bash
];
}; };
users = { users = {
@@ -43,7 +54,12 @@ in
isNormalUser = true; isNormalUser = true;
initialPassword = "1234"; initialPassword = "1234";
shell = shed; shell = shed;
extraGroups = [ "input" "wheel" "persist" "libvirtd" ]; extraGroups = [
"input"
"wheel"
"persist"
"libvirtd"
];
}; };
}; };
}; };

View File

@@ -1,27 +1,43 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }: {
config,
lib,
pkgs,
modulesPath,
...
}:
{ {
imports = imports = [
[ (modulesPath + "/profiles/qemu-guest.nix") (modulesPath + "/profiles/qemu-guest.nix")
]; ];
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sr_mod" "virtio_blk" ]; boot.initrd.availableKernelModules = [
"ahci"
"xhci_pci"
"virtio_pci"
"virtio_scsi"
"sr_mod"
"virtio_blk"
];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/5d8dd8ba-6c4c-4227-adc5-f33bf0022fff"; device = "/dev/disk/by-uuid/5d8dd8ba-6c4c-4227-adc5-f33bf0022fff";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot" = fileSystems."/boot" = {
{ device = "/dev/disk/by-uuid/6A3C-0A12"; device = "/dev/disk/by-uuid/6A3C-0A12";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ]; options = [
"fmask=0022"
"dmask=0022"
];
}; };
swapDevices = [ ]; swapDevices = [ ];

View File

@@ -1,7 +1,7 @@
{ username, ... }: { { username, ... }:
{
home.username = "${username}"; home.username = "${username}";
home.homeDirectory = home.homeDirectory = "/home/${username}";
"/home/${username}";
home.stateVersion = "25.05"; home.stateVersion = "25.05";
programs.home-manager.enable = true; programs.home-manager.enable = true;
@@ -14,7 +14,10 @@
envConfig = { envConfig = {
hyprlandConfig = { hyprlandConfig = {
enable = true; enable = true;
monitorNames = [ "HDMI-A-1" "DP-1" ]; monitorNames = [
"HDMI-A-1"
"DP-1"
];
workspaceLayout = "dualmonitor"; workspaceLayout = "dualmonitor";
}; };
userPkgs.enable = true; userPkgs.enable = true;

View File

@@ -1,10 +1,21 @@
{ username, pkgs, config, ... }: { {
username,
pkgs,
config,
...
}:
{
imports = [ ./hardware.nix ]; imports = [ ./hardware.nix ];
boot = { boot = {
kernelModules = [ "acpi_call" ]; kernelModules = [ "acpi_call" ];
extraModulePackages = with config.boot.kernelPackages; extraModulePackages =
[ acpi_call cpupower ] ++ [ pkgs.cpupower-gui ]; with config.boot.kernelPackages;
[
acpi_call
cpupower
]
++ [ pkgs.cpupower-gui ];
}; };
movOpts = { movOpts = {
@@ -27,9 +38,19 @@
}; };
environment = { environment = {
variables = { PATH = "${pkgs.clang-tools}/bin:$PATH"; }; variables = {
shells = with pkgs; [ zsh bash ]; PATH = "${pkgs.clang-tools}/bin:$PATH";
systemPackages = with pkgs; [ acpi brightnessctl cpupower-gui powertop ]; };
shells = with pkgs; [
zsh
bash
];
systemPackages = with pkgs; [
acpi
brightnessctl
cpupower-gui
powertop
];
}; };
users = { users = {
@@ -40,7 +61,11 @@
isNormalUser = true; isNormalUser = true;
initialPassword = "1234"; initialPassword = "1234";
shell = pkgs.zsh; shell = pkgs.zsh;
extraGroups = [ "wheel" "persist" "libvirtd" ]; extraGroups = [
"wheel"
"persist"
"libvirtd"
];
}; };
}; };
}; };

View File

@@ -1,11 +1,24 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }: { {
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules = boot.initrd.availableKernelModules = [
[ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; "nvme"
"xhci_pci"
"ahci"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
@@ -23,7 +36,10 @@
fileSystems."/boot" = { fileSystems."/boot" = {
device = "/dev/sda2"; device = "/dev/sda2";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ]; options = [
"fmask=0077"
"dmask=0077"
];
}; };
fileSystems."/home" = { fileSystems."/home" = {
@@ -42,6 +58,5 @@
# networking.interfaces.wlp15s0.useDHCP = lib.mkDefault true; # networking.interfaces.wlp15s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
lib.mkDefault config.hardware.enableRedistributableFirmware;
} }

View File

@@ -1,9 +1,17 @@
{ host, pkgs, self, inputs, username, lib, config, ... }: { {
host,
pkgs,
self,
inputs,
username,
lib,
config,
...
}:
{
home.username = "${username}"; # Replace with your actual username home.username = "${username}"; # Replace with your actual username
home.homeDirectory = home.homeDirectory = "/home/${username}"; # Replace with your actual home directory
"/home/${username}"; # Replace with your actual home directory home.stateVersion = "24.05"; # Adjust this based on your system's NixOS version
home.stateVersion =
"24.05"; # Adjust this based on your system's NixOS version
programs.home-manager.enable = true; programs.home-manager.enable = true;

View File

@@ -1,4 +1,5 @@
{ pkgs, username, ... }: { { pkgs, username, ... }:
{
imports = [ ./hardware.nix ]; imports = [ ./hardware.nix ];
movOpts = { movOpts = {
sysEnv = { sysEnv = {
@@ -22,7 +23,12 @@
caddyConfig.enable = true; caddyConfig.enable = true;
}; };
}; };
networking.firewall = { allowedTCPPorts = [ 443 8920 ]; }; networking.firewall = {
allowedTCPPorts = [
443
8920
];
};
environment = { environment = {
etc."tmpfiles.d/home-permissions.conf".text = '' etc."tmpfiles.d/home-permissions.conf".text = ''
d /home/pagedmov 0750 pagedmov users - d /home/pagedmov 0750 pagedmov users -
@@ -31,7 +37,10 @@
PATH = "${pkgs.clang-tools}/bin:$PATH"; PATH = "${pkgs.clang-tools}/bin:$PATH";
TERM = "kitty"; TERM = "kitty";
}; };
shells = with pkgs; [ zsh bash ]; shells = with pkgs; [
zsh
bash
];
}; };
users = { users = {
@@ -42,7 +51,11 @@
isNormalUser = true; isNormalUser = true;
initialPassword = "1234"; initialPassword = "1234";
shell = pkgs.zsh; shell = pkgs.zsh;
extraGroups = [ "wheel" "persist" "libvirtd" ]; extraGroups = [
"wheel"
"persist"
"libvirtd"
];
}; };
}; };
}; };

View File

@@ -1,13 +1,25 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }: {
config,
lib,
pkgs,
modulesPath,
...
}:
{ {
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules = boot.initrd.availableKernelModules = [
[ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; "nvme"
"xhci_pci"
"ahci"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
@@ -25,7 +37,10 @@
fileSystems."/boot" = { fileSystems."/boot" = {
device = "/dev/disk/by-uuid/357E-BCCD"; device = "/dev/disk/by-uuid/357E-BCCD";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ]; options = [
"fmask=0077"
"dmask=0077"
];
}; };
fileSystems."/home" = { fileSystems."/home" = {
@@ -44,6 +59,5 @@
# networking.interfaces.wlp11s0.useDHCP = lib.mkDefault true; # networking.interfaces.wlp11s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
lib.mkDefault config.hardware.enableRedistributableFirmware;
} }

View File

@@ -1,10 +1,18 @@
{ host, pkgs, self, inputs, lib, username, config, ... }: { {
host,
pkgs,
self,
inputs,
lib,
username,
config,
...
}:
{
home.username = "${username}"; home.username = "${username}";
home.homeDirectory = home.homeDirectory = "/home/${username}";
"/home/${username}"; home.stateVersion = "24.05";
home.stateVersion =
"24.05";
programs.home-manager.enable = true; programs.home-manager.enable = true;

View File

@@ -1,4 +1,9 @@
{ inputs, pkgs, username, ... }: {
inputs,
pkgs,
username,
...
}:
let let
shed = inputs.shed.packages.${pkgs.stdenv.hostPlatform.system}.default; shed = inputs.shed.packages.${pkgs.stdenv.hostPlatform.system}.default;
@@ -33,8 +38,14 @@ in
}; };
environment = { environment = {
variables = { PATH = "${pkgs.clang-tools}/bin:$PATH"; }; variables = {
shells = [ pkgs.myPkgs.slash pkgs.zsh pkgs.bash ]; PATH = "${pkgs.clang-tools}/bin:$PATH";
};
shells = [
pkgs.myPkgs.slash
pkgs.zsh
pkgs.bash
];
}; };
programs.shed.enable = true; programs.shed.enable = true;
@@ -52,7 +63,13 @@ in
isNormalUser = true; isNormalUser = true;
initialPassword = "1234"; initialPassword = "1234";
shell = pkgs.shed; shell = pkgs.shed;
extraGroups = [ "davfs2" "input" "wheel" "persist" "libvirtd" ]; extraGroups = [
"davfs2"
"input"
"wheel"
"persist"
"libvirtd"
];
}; };
}; };
}; };

View File

@@ -1,4 +1,9 @@
{ slash, pkgs, username, ... }: {
slash,
pkgs,
username,
...
}:
let let
kickstartServer = kickstartServer =
@@ -40,7 +45,8 @@ let
in in
pkgs.buildFHSEnv { pkgs.buildFHSEnv {
name = "srcds-env"; name = "srcds-env";
targetPkgs = pkgs: with pkgs; [ targetPkgs =
pkgs: with pkgs; [
steamcmd steamcmd
glibc glibc
zlib zlib
@@ -53,7 +59,8 @@ let
# Optional: link compat # Optional: link compat
stdenv.cc.cc.lib stdenv.cc.cc.lib
]; ];
multiPkgs = pkgs: with pkgs.pkgsi686Linux; [ multiPkgs =
pkgs: with pkgs.pkgsi686Linux; [
glibc glibc
zlib zlib
ncurses5 ncurses5
@@ -71,7 +78,7 @@ in
networking = { networking = {
nat = { nat = {
enable = true; enable = true;
internalInterfaces = ["ve-+"]; internalInterfaces = [ "ve-+" ];
externalInterface = "enp8s0"; externalInterface = "enp8s0";
}; };
}; };
@@ -84,7 +91,6 @@ in
imports = [ ]; imports = [ ];
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
services.openssh.enable = true; services.openssh.enable = true;
users.users.root.password = "root"; # For quick login, remove in prod users.users.root.password = "root"; # For quick login, remove in prod
@@ -114,11 +120,19 @@ in
}; };
}; };
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [
"nix-command"
"flakes"
];
# Optional: open ports on the container # Optional: open ports on the container
networking.firewall.allowedTCPPorts = [ 25565 ]; networking.firewall.allowedTCPPorts = [ 25565 ];
networking.firewall.allowedUDPPorts = [ 25565 27005 27015 27020 ]; networking.firewall.allowedUDPPorts = [
25565
27005
27015
27020
];
system.stateVersion = "25.11"; # or your NixOS version system.stateVersion = "25.11"; # or your NixOS version
}; };

View File

@@ -1,40 +1,67 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }: {
config,
lib,
pkgs,
modulesPath,
...
}:
{ {
imports = imports = [
[ (modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "ahci" "uas" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.availableKernelModules = [
"xhci_pci"
"nvme"
"ahci"
"uas"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/9a98748d-1953-4316-9788-07d11c5d0af6"; device = "/dev/disk/by-uuid/9a98748d-1953-4316-9788-07d11c5d0af6";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=root" "compress=zstd:3" "noatime" ]; options = [
"subvol=root"
"compress=zstd:3"
"noatime"
];
}; };
fileSystems."/boot" = fileSystems."/boot" = {
{ device = "/dev/disk/by-uuid/5BA1-A9F8"; device = "/dev/disk/by-uuid/5BA1-A9F8";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ]; options = [
"fmask=0022"
"dmask=0022"
];
}; };
fileSystems."/home" = fileSystems."/home" = {
{ device = "/dev/disk/by-uuid/00fd7a7c-d916-4a61-abc1-8dde26b4413b"; device = "/dev/disk/by-uuid/00fd7a7c-d916-4a61-abc1-8dde26b4413b";
fsType = "btrfs"; fsType = "btrfs";
options = [ "compress=zstd:3" "noatime" ]; options = [
"compress=zstd:3"
"noatime"
];
}; };
fileSystems."/nix" = fileSystems."/nix" = {
{ device = "/dev/disk/by-uuid/7c03499c-e2a7-4352-8797-a21f094ef90b"; device = "/dev/disk/by-uuid/7c03499c-e2a7-4352-8797-a21f094ef90b";
fsType = "btrfs"; fsType = "btrfs";
options = [ "compress=zstd:3" "noatime" ]; options = [
"compress=zstd:3"
"noatime"
];
}; };
swapDevices = [ ]; swapDevices = [ ];

View File

@@ -1,7 +1,7 @@
{ username, ... }: { { username, ... }:
{
home.username = "${username}"; home.username = "${username}";
home.homeDirectory = home.homeDirectory = "/home/${username}";
"/home/${username}";
home.stateVersion = "25.05"; home.stateVersion = "25.05";
programs.home-manager.enable = true; programs.home-manager.enable = true;
@@ -14,7 +14,10 @@
envConfig = { envConfig = {
hyprlandConfig = { hyprlandConfig = {
enable = true; enable = true;
monitorNames = [ "DP-3" "DP-1" ]; monitorNames = [
"DP-3"
"DP-1"
];
workspaceLayout = "dualmonitor"; workspaceLayout = "dualmonitor";
}; };
userPkgs.enable = true; userPkgs.enable = true;

View File

@@ -1,14 +1,29 @@
{ inputs, username, nixpkgsConfig ? { allowUnfree = true; } }: {
inputs,
username,
nixpkgsConfig ? {
allowUnfree = true;
},
}:
rec { rec {
mkHost = import ./mk_host.nix; mkHost = import ./mk_host.nix;
foldHosts = hosts: inputs.nixpkgs.lib.foldl' foldHosts =
(acc: host: hosts:
let result = mkHost ({ inherit inputs username nixpkgsConfig; } // host); inputs.nixpkgs.lib.foldl'
in { (
acc: host:
let
result = mkHost ({ inherit inputs username nixpkgsConfig; } // host);
in
{
nixosConfigurations = acc.nixosConfigurations // result.nixosConfigurations; nixosConfigurations = acc.nixosConfigurations // result.nixosConfigurations;
homeConfigurations = acc.homeConfigurations // result.homeConfigurations; homeConfigurations = acc.homeConfigurations // result.homeConfigurations;
}) }
{ nixosConfigurations = {}; homeConfigurations = {}; } )
{
nixosConfigurations = { };
homeConfigurations = { };
}
hosts; hosts;
} }

View File

@@ -1,15 +1,17 @@
{ {
inputs, inputs,
username, username,
nixpkgsConfig ? { allowUnfree = true; }, nixpkgsConfig ? {
allowUnfree = true;
},
host, host,
hostDir, hostDir,
system ? "x86_64-linux", system ? "x86_64-linux",
kind, kind,
extraNixosModules ? [], extraNixosModules ? [ ],
extraHomeModules ? [], extraHomeModules ? [ ],
extraOverlays ? [], extraOverlays ? [ ],
overlay ? true overlay ? true,
}: }:
let let
@@ -17,19 +19,31 @@ let
../hosts/${hostDir}/config.nix ../hosts/${hostDir}/config.nix
../modules/sys ../modules/sys
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
] ++ extraNixosModules; ]
++ extraNixosModules;
homeModules = [ homeModules = [
../hosts/${hostDir}/home.nix ../hosts/${hostDir}/home.nix
../modules/home ../modules/home
inputs.stylix.homeModules.stylix inputs.stylix.homeModules.stylix
inputs.nixvim.homeModules.nixvim inputs.nixvim.homeModules.nixvim
] ++ extraHomeModules; ]
++ extraHomeModules;
pkgs = import inputs.nixpkgs { pkgs = import inputs.nixpkgs {
inherit system; inherit system;
config = nixpkgsConfig; config = nixpkgsConfig;
overlays = extraOverlays ++ (if overlay then [ overlays =
(import ../overlay/overlay.nix { inherit host; root = inputs.self; }) extraOverlays
] else []); ++ (
if overlay then
[
(import ../overlay/overlay.nix {
inherit host;
root = inputs.self;
})
]
else
[ ]
);
}; };
specialArgs = { specialArgs = {
inherit inputs username host; inherit inputs username host;
@@ -55,7 +69,8 @@ let
else else
null; null;
in in
{ {
nixosConfigurations = if kind == "nixos" || kind == "both" then { ${host} = nixosCfg; } else {}; nixosConfigurations = if kind == "nixos" || kind == "both" then { ${host} = nixosCfg; } else { };
homeConfigurations = if kind == "home" || kind == "both" then { ${host + "Home"} = homeCfg; } else {}; homeConfigurations =
} if kind == "home" || kind == "both" then { ${host + "Home"} = homeCfg; } else { };
}

View File

@@ -1,3 +1,18 @@
{ env, inputs, nixpkgs, config, self, username, host, lib, ... }: { {
imports = [ ./programs ./environment ./files.nix ]; env,
inputs,
nixpkgs,
config,
self,
username,
host,
lib,
...
}:
{
imports = [
./programs
./environment
./files.nix
];
} }

View File

@@ -1,4 +1,14 @@
{ host, nixvim, self, inputs, username, config, home-manager, ... }: { {
host,
nixvim,
self,
inputs,
username,
config,
home-manager,
...
}:
{
imports = [ imports = [
./gtk.nix ./gtk.nix
./spicetify.nix ./spicetify.nix
@@ -6,10 +16,11 @@
./userservices.nix ./userservices.nix
./starship.nix ./starship.nix
./userpkgs.nix ./userpkgs.nix
./zsh
./shed
./swaync.nix ./swaync.nix
./hyprland.nix ./hyprland.nix
./waybar.nix ./waybar.nix
./zsh
./shed
./paperd
]; ];
} }

View File

@@ -1,12 +1,16 @@
{ lib, config, pkgs, ... }: { {
lib,
config,
pkgs,
...
}:
{
options = { options = {
movOpts.envConfig.gtkConfig.enable = movOpts.envConfig.gtkConfig.enable = lib.mkEnableOption "enable my gtk options";
lib.mkEnableOption "enable my gtk options";
}; };
config = lib.mkIf config.movOpts.envConfig.gtkConfig.enable { config = lib.mkIf config.movOpts.envConfig.gtkConfig.enable {
fonts.fontconfig.enable = true; fonts.fontconfig.enable = true;
home.packages = with pkgs; home.packages = with pkgs; [
[
nerd-fonts.jetbrains-mono nerd-fonts.jetbrains-mono
nerd-fonts.symbols-only nerd-fonts.symbols-only
cascadia-code cascadia-code

View File

@@ -1,7 +1,16 @@
{ inputs, pkgs, lib, config, self, host, ... }: {
inputs,
pkgs,
lib,
config,
self,
host,
...
}:
let let
desktop = host == "oganesson" || host == "phosphorous"; desktop = host == "oganesson" || host == "phosphorous";
screenshot_bind = if desktop then screenshot_bind =
if desktop then
[ [
"super, print, exec, grimblast copy area" "super, print, exec, grimblast copy area"
"super shift, print, exec, grimblast --freeze copy area" "super shift, print, exec, grimblast --freeze copy area"
@@ -13,22 +22,25 @@ let
]; ];
scheme = config.lib.stylix.colors; scheme = config.lib.stylix.colors;
mons = config.movOpts.envConfig.hyprlandConfig.monitorNames; mons = config.movOpts.envConfig.hyprlandConfig.monitorNames;
smartGapsWorkspaces = [ #smartGapsWorkspaces = [
"w[tv1], gapsout:0, gapsin:0" #"w[tv1], gapsout:0, gapsin:0"
"f[1], gapsout:0, gapsin:0" #"f[1], gapsout:0, gapsin:0"
]; #];
smartGapsWindowrules = [ #smartGapsWindowrules = [
"border_size 0, match:float 0, match:workspace w[tv1]" #"border_size 0, match:float 0, match:workspace w[tv1]"
"rounding 0, match:float 0, match:workspace w[tv1]" #"rounding 0, match:float 0, match:workspace w[tv1]"
"border_size 0, match:float 0, match:workspace f[1]" #"border_size 0, match:float 0, match:workspace f[1]"
"rounding 0, match:float 0, match:workspace f[1]" #"rounding 0, match:float 0, match:workspace f[1]"
]; #];
hostWorkspaces = if (host == "phosphorous") then hostWorkspaces =
if (host == "phosphorous") then
[ [
"m[DP-3], layoutopt:orientation:top" "m[DP-3], layoutopt:orientation:top"
] ]
else []; else
in { [ ];
in
{
options = { options = {
movOpts.envConfig.hyprlandConfig = { movOpts.envConfig.hyprlandConfig = {
@@ -41,7 +53,10 @@ in {
type = lib.types.listOf lib.types.str; type = lib.types.listOf lib.types.str;
# The order of the monitor names matters for the purpose of workspace assignment # The order of the monitor names matters for the purpose of workspace assignment
# For instance, in a dual monitor setup, index 0 gets 4,5 and 6, while index 1 gets 1,2 and 3 # For instance, in a dual monitor setup, index 0 gets 4,5 and 6, while index 1 gets 1,2 and 3
default = [ "DP-1" "HDMI-A-1" ]; default = [
"DP-1"
"HDMI-A-1"
];
}; };
}; };
}; };
@@ -58,22 +73,31 @@ in {
wayland wayland
direnv direnv
]; ];
systemd.user.targets.hyprland-session.Unit.Wants = systemd.user.targets.hyprland-session.Unit.Wants = [ "xdg-desktop-autostart.target" ];
[ "xdg-desktop-autostart.target" ];
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
xwayland = { enable = true; }; xwayland = {
enable = true;
};
systemd.enable = true; systemd.enable = true;
extraConfig = ''
source = ~/.local/state/sysflake/hyprland-colors.conf
'';
}; };
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
settings = { settings = {
monitor = if (host == "oganesson") then [ monitor =
if (host == "oganesson") then
[
"DP-1, 1920x1080@144, 1920x0, 1" "DP-1, 1920x1080@144, 1920x0, 1"
"HDMI-A-1, 1920x1080, 0x0, 1" "HDMI-A-1, 1920x1080, 0x0, 1"
] else if (host == "phosphorous") then [ ]
else if (host == "phosphorous") then
[
"DP-1, highrr, 0x0, 1" "DP-1, highrr, 0x0, 1"
"DP-3, highrr, -1080x-420, 1, transform, 3" "DP-3, highrr, -1080x-420, 1, transform, 3"
] else ]
else
[ "eDP-1, 1600x900, 0x0, 1" ]; [ "eDP-1, 1600x900, 0x0, 1" ];
exec-once = [ exec-once = [
@@ -87,26 +111,37 @@ in {
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &" "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &"
]; ];
workspace = hostWorkspaces ++ (if (config.movOpts.envConfig.hyprlandConfig.workspaceLayout == "dualmonitor") then [ workspace =
hostWorkspaces
++ (
if (config.movOpts.envConfig.hyprlandConfig.workspaceLayout == "dualmonitor") then
[
"1,persistent=true,monitor:${builtins.elemAt mons 0}" "1,persistent=true,monitor:${builtins.elemAt mons 0}"
"2,persistent=true,monitor:${builtins.elemAt mons 0}" "2,persistent=true,monitor:${builtins.elemAt mons 0}"
"3,persistent=true,monitor:${builtins.elemAt mons 0}" "3,persistent=true,monitor:${builtins.elemAt mons 0}"
"4,persistent=true,monitor:${builtins.elemAt mons 1}" "4,persistent=true,monitor:${builtins.elemAt mons 1}"
"5,persistent=true,monitor:${builtins.elemAt mons 1}" "5,persistent=true,monitor:${builtins.elemAt mons 1}"
"6,persistent=true,monitor:${builtins.elemAt mons 1}" "6,persistent=true,monitor:${builtins.elemAt mons 1}"
] else if (config.movOpts.envConfig.hyprlandConfig.workspaceLayout == "singlemonitor") then [ ]
else if (config.movOpts.envConfig.hyprlandConfig.workspaceLayout == "singlemonitor") then
[
"1,persistent=true,monitor:${builtins.elemAt mons 0} " "1,persistent=true,monitor:${builtins.elemAt mons 0} "
"2,persistent=true,monitor:${builtins.elemAt mons 0}" "2,persistent=true,monitor:${builtins.elemAt mons 0}"
"3,persistent=true,monitor:${builtins.elemAt mons 0}" "3,persistent=true,monitor:${builtins.elemAt mons 0}"
"4,persistent=true,monitor:${builtins.elemAt mons 0}" "4,persistent=true,monitor:${builtins.elemAt mons 0}"
] else if (config.movOpts.envConfig.hyprlandConfig.workspaceLayout == "trimonitor") then [ ]
else if (config.movOpts.envConfig.hyprlandConfig.workspaceLayout == "trimonitor") then
[
"1,persistent=true,monitor:${builtins.elemAt mons 2}" "1,persistent=true,monitor:${builtins.elemAt mons 2}"
"2,persistent=true,monitor:${builtins.elemAt mons 2}" "2,persistent=true,monitor:${builtins.elemAt mons 2}"
"3,persistent=true,monitor:${builtins.elemAt mons 1}" "3,persistent=true,monitor:${builtins.elemAt mons 1}"
"4,persistent=true,monitor:${builtins.elemAt mons 1}" "4,persistent=true,monitor:${builtins.elemAt mons 1}"
"5,persistent=true,monitor:${builtins.elemAt mons 0}" "5,persistent=true,monitor:${builtins.elemAt mons 0}"
"6,persistent=true,monitor:${builtins.elemAt mons 0}" "6,persistent=true,monitor:${builtins.elemAt mons 0}"
] else [ ]) ++ smartGapsWorkspaces; ]
else
[ ]
);
env = [ env = [
"XDG_CONFIG_HOME,$HOME/.config" "XDG_CONFIG_HOME,$HOME/.config"
@@ -114,8 +149,7 @@ in {
"XDG_CACHE_HOME,$HOME/.cache" "XDG_CACHE_HOME,$HOME/.cache"
]; ];
layerrule = [ layerrule = [
"match:namespace = waybar, blur 1" "blur on, ignore_alpha 0, match:namespace waybar"
"match:namespace = waybar, ignore_alpha 0"
"match:namespace = launcher, blur 1" "match:namespace = launcher, blur 1"
]; ];
windowrule = [ windowrule = [
@@ -143,9 +177,10 @@ in {
"no_focus on, match:title ^(Firefox )$" "no_focus on, match:title ^(Firefox )$"
"float true, match:class ^(firefox)$, match:title ^(Sign in - Google Accounts Mozilla Firefox)$" "float true, match:class ^(firefox)$, match:title ^(Sign in - Google Accounts Mozilla Firefox)$"
"size 0 0, match:title ^(Firefox )$" "size 0 0, match:title ^(Firefox )$"
"opacity 0.8, match:title ^(Neovide)$"
"move 100%-470 15, match:title ^(Firefox Sharing Indicator)$" "move 100%-470 15, match:title ^(Firefox Sharing Indicator)$"
"move 100%-470 15, match:title ^(Firefox )$" "move 100%-470 15, match:title ^(Firefox )$"
] ++ smartGapsWindowrules; ];
cursor = { cursor = {
no_hardware_cursors = true; no_hardware_cursors = true;
@@ -154,7 +189,7 @@ in {
input = { input = {
kb_layout = "us"; kb_layout = "us";
follow_mouse = 1; follow_mouse = 1;
accel_profile = "flat"; follow_mouse_threshold = 5;
force_no_accel = 1; force_no_accel = 1;
sensitivity = 0; sensitivity = 0;
}; };
@@ -188,7 +223,6 @@ in {
}; };
dwindle = { dwindle = {
force_split = 2;
pseudotile = "yes"; pseudotile = "yes";
preserve_split = "yes"; preserve_split = "yes";
}; };
@@ -203,10 +237,16 @@ in {
decoration = { decoration = {
rounding = 4; rounding = 4;
blur = {
enabled = true;
size = 8;
passes = 2;
};
shadow = { shadow = {
enabled = true; enabled = true;
ignore_window = true; ignore_window = true;
range = 80; range = 20;
render_power = 50; render_power = 50;
}; };
}; };
@@ -245,8 +285,8 @@ in {
"super, m, exec, fuzzel" "super, m, exec, fuzzel"
"super, r, exec, neovide" "super, r, exec, neovide"
"super, b, layoutmsg, togglesplit, # dwindle" "super, b, layoutmsg, togglesplit, # dwindle"
"super, comma, layoutmsg, rollnext" # comma "super, comma, exec, hyprctl dispatch layoutmsg rollnext; hyprctl dispatch layoutmsg focusmaster"
"super, period, layoutmsg, rollprev" "super, period, exec, hyprctl dispatch layoutmsg rollprev; hyprctl dispatch layoutmsg focusmaster"
"super, n, layoutmsg, swapwithmaster" "super, n, layoutmsg, swapwithmaster"
"super, f, togglefloating" "super, f, togglefloating"
"super, g, fullscreen" "super, g, fullscreen"
@@ -277,9 +317,12 @@ in {
"super shift, 6, movetoworkspace, 6" "super shift, 6, movetoworkspace, 6"
"super, s, togglespecialworkspace, magic" "super, s, togglespecialworkspace, magic"
"super shift, s, movetoworkspace, special:magic" "super shift, s, movetoworkspace, special:magic"
] ++ screenshot_bind; ]
bindm = ++ screenshot_bind;
[ "super, mouse:272, movewindow" "super, mouse:273, resizewindow" ]; bindm = [
"super, mouse:272, movewindow"
"super, mouse:273, resizewindow"
];
}; };
}; };
}; };

View File

@@ -0,0 +1,6 @@
{ ... }:
{
imports = [
./paperd.nix
];
}

View File

@@ -0,0 +1,35 @@
{
self,
pkgs,
lib,
...
}:
let
paperdScript = import ./paperd_script.nix { inherit pkgs; };
in
{
home.file.".config/paperd/config.toml".text = ''
wallpaper_dir = "${self}/assets/wallpapers/selective_color"
interval = 1800
[transition]
type = "fade"
duration = 3
fps = 60
'';
systemd.user.services = {
paperd = {
Unit = {
Description = "Paperd Wallpaper Daemon";
After = [ "swww-daemon.service" ];
Requires = [ "swww-daemon.service" ];
};
Install.WantedBy = [ "hyprland-session.target" ];
Service = {
Environment = "PYTHONUNBUFFERED=1";
ExecStart = "${pkgs.myPython}/bin/python3 ${paperdScript}";
};
};
};
}

View File

@@ -0,0 +1,89 @@
{ pkgs }:
let
themeBuilder = import ./theme_builder.nix { inherit pkgs; };
in
pkgs.writeText "paperd.py" /* python */ ''
import tomllib
import sys
import time
from pathlib import Path
from collections import deque
import subprocess
from pynvim import attach
config = None
with open(Path("~/.config/paperd/config.toml").expanduser(), "rb") as f:
config = tomllib.load(f)
interval = config["interval"]
paper_dir = Path(config["wallpaper_dir"])
transition = config.get("transition", {})
transition_type = transition.get("type")
transition_fps = transition.get("fps")
transition_duration = transition.get("duration")
transition_angle = transition.get("angle")
transition_step = transition.get("step")
exts = {".jpg", ".jpeg", ".png", ".webp"}
images = deque([f for f in Path(paper_dir).iterdir() if f.suffix.lower() in exts])
if len(images) == 0:
print("No images found in the specified directory.")
sys.exit(1)
def get_command():
command = ["${pkgs.swww}/bin/swww", "img"]
if transition_type:
command.append("--transition-type")
command.append(transition_type)
if transition_fps:
command.append("--transition-fps")
command.append(str(transition_fps))
if transition_duration:
command.append("--transition-duration")
command.append(str(transition_duration))
if transition_angle:
command.append("--transition-angle")
command.append(str(transition_angle))
if transition_step:
command.append("--transition-step")
command.append(str(transition_step))
command.append(str(images[0]))
return command
print(f"Found {len(images)} images. Starting wallpaper rotation every {interval} seconds.")
current_time = int(time.time())
initial_idx = (current_time // interval) % len(images)
command = get_command()
subprocess.run(command)
subprocess.run(["${pkgs.myPython}/bin/python3", "${themeBuilder}", str(images[0])])
print(f"Setting wallpaper to {images[0]} with transition {transition_type} (fps: {transition_fps}, duration: {transition_duration}, angle: {transition_angle}, step: {transition_step})")
images.rotate(-1)
last_check = current_time % interval
time.sleep(5)
while True:
current_time = int(time.time())
if (current_time % interval) >= last_check:
last_check = current_time % interval
time.sleep(5)
continue
command = get_command()
print(f"Setting wallpaper to {images[0]} with transition {transition_type} (fps: {transition_fps}, duration: {transition_duration}, angle: {transition_angle}, step: {transition_step})")
subprocess.run(command)
subprocess.run(["${pkgs.myPython}/bin/python3", "${themeBuilder}", str(images[0])])
images.rotate(-1)
last_check = current_time % interval
time.sleep(5)
''

View File

@@ -0,0 +1,474 @@
{ pkgs }:
pkgs.writeText "theme-builder.py" ''
from colorsys import rgb_to_hls, hls_to_rgb
from collections import Counter
from pathlib import Path
from PIL import Image
from pynvim import attach
import subprocess
import math
import os
import sys
STATE_DIR = Path(os.path.expanduser("~/.local/state/sysflake"))
MULT = 2.5
GRAYSCALE = {
"base00": "1a1a1a",
"base01": "2a2a2a",
"base02": "3a3a3a",
"base03": "5a5a5a",
"base04": "8a8a8a",
"base05": "b0b0b0",
"base06": "d0d0d0",
"base07": "e8e8e8",
"base08": "4a4a4a",
"base09": "555555",
"base0A": "606060",
"base0B": "6b6b6b",
"base0C": "767676",
"base0D": "818181",
"base0E": None, # accent slot
"base0F": "8c8c8c",
}
KITTY_MAP = {
"background": "00", "foreground": "05", "cursor": "05",
"selection_background": "02", "selection_foreground": "05",
"color0": "00", "color1": "08", "color2": "0E", "color3": "0A",
"color4": "0D", "color5": "0E", "color6": "0E", "color7": "05",
"color8": "03", "color9": "08", "color10": "0E", "color11": "0A",
"color12": "0D", "color13": "0E", "color14": "0E", "color15": "07",
}
def extract_accent(image_path):
img = Image.open(image_path).resize((200, 200)).quantize(colors=32).convert("RGB")
pixels = list(img.get_flattened_data())
counts = Counter(pixels)
total = len(pixels)
def score(color):
_, l, s = rgb_to_hls(color[0] / 255, color[1] / 255, color[2] / 255)
vibrancy = s * (1 - abs(l - 0.5) * 2)
frequency = counts[color] / total
return vibrancy * frequency
best = max(counts.keys(), key=score)
h, l, s = rgb_to_hls(best[0] / 255, best[1] / 255, best[2] / 255)
new_s = min(max(s * MULT, 0.6), 0.7)
# Blue hues are perceptually darker gradually boost lightness floor
blue_center = 0.63
blue_width = 0.09
blue_factor = max(0, 1 - abs(h - blue_center) / blue_width)
min_l = 0.45 + 0.2 * blue_factor
new_l = max(min_l, min(0.7, l))
r, g, b = hls_to_rgb(h, new_l, new_s)
return f"{int(r * 255):02x}{int(g * 255):02x}{int(b * 255):02x}"
def build_scheme(accent):
scheme = dict(GRAYSCALE)
scheme["base0E"] = accent
return scheme
def write_scheme(scheme):
path = STATE_DIR / "scheme.txt"
with open(path, "w") as f:
for key, val in scheme.items():
f.write(f"{key} {val}\n")
def write_kitty(scheme):
path = STATE_DIR / "kitty-colors.conf"
with open(path, "w") as f:
for name, base in KITTY_MAP.items():
f.write(f"{name} #{scheme['base' + base]}\n")
VESKTOP_DIR = Path(os.path.expanduser("~/.config/vesktop/themes"))
def hex_to_oklch(hex_color):
"""Convert hex color to oklch (lightness, chroma, hue) values."""
r = int(hex_color[0:2], 16) / 255
g = int(hex_color[2:4], 16) / 255
b = int(hex_color[4:6], 16) / 255
# sRGB to linear
def to_linear(c):
return c / 12.92 if c <= 0.04045 else ((c + 0.055) / 1.055) ** 2.4
lr, lg, lb = to_linear(r), to_linear(g), to_linear(b)
# Linear RGB to OKLab
l_ = 0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb
m_ = 0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb
s_ = 0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb
l_ = l_ ** (1/3) if l_ >= 0 else -((-l_) ** (1/3))
m_ = m_ ** (1/3) if m_ >= 0 else -((-m_) ** (1/3))
s_ = s_ ** (1/3) if s_ >= 0 else -((-s_) ** (1/3))
L = 0.2104542553 * l_ + 0.7936177850 * m_ - 0.0040720468 * s_
a = 1.9779984951 * l_ - 2.4285922050 * m_ + 0.4505937099 * s_
bv = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.8086757660 * s_
C = math.sqrt(a ** 2 + bv ** 2)
H = math.degrees(math.atan2(bv, a)) % 360
return L, C, H
def write_vesktop(scheme):
VESKTOP_DIR.mkdir(parents=True, exist_ok=True)
accent = scheme["base0E"]
_, chroma, hue = hex_to_oklch(accent)
path = VESKTOP_DIR / "system24-dynamic.css"
with open(path, "w") as f:
f.write("""\
/**
* system24 dynamic theme generated by theme-engine
*/
@import url('https://refact0r.github.io/system24/build/system24.css');
:root {
--colors: on;
/* override purple (accent) with extracted color */
""")
for i, lightness in enumerate([75, 70, 65, 60, 55], start=1):
f.write(f" --purple-{i}: oklch({lightness}% {chroma:.4f} {hue:.1f});\n")
f.write("}\n")
def write_nvim(scheme):
accent = scheme["base0E"]
path = STATE_DIR / "nvim-colors.lua"
with open(path, "w") as f:
f.write("require('base16-colorscheme').setup({\n")
for key, val in scheme.items():
f.write(f" {key} = '#{val}',\n")
f.write("})\n\n")
f.write(f"local accent = '#{accent}'\n")
f.write(f"local light_gray = '#{scheme['base05']}'\n")
for group in ["Statement", "Conditional", "Repeat", "Macro", "Function", "Exception",
"TSMethod", "@lsp.type.method", "@lsp.type.function", "@lsp.type.macro",
"DiagnosticUnderlineHint", "Boolean"]:
f.write(f"vim.api.nvim_set_hl(0, '{group}', {{ fg = accent }})\n")
for group in ["@lsp.type.variable", "@lsp.type.parameter", "@lsp.type.struct", "@lsp.type.class",
"@lsp.type.selfTypeKeyword", "Identifier"]:
f.write(f"vim.api.nvim_set_hl(0, '{group}', {{ fg = light_gray }})\n")
for group in ["@lsp.type.enumMember", "@lsp.type.enum", "Number", "Integer"]:
f.write(f"vim.api.nvim_set_hl(0, '{group}', {{ fg = '#{scheme['base04']}' }})\n")
def write_swaync(scheme):
accent = scheme["base0E"]
path = STATE_DIR / "swaync-colors.css"
with open(path, "w") as f:
f.write(f"""\
@define-color base #{scheme['base00']};
@define-color mantle #{scheme['base01']};
@define-color crust #{scheme['base00']};
@define-color text #{scheme['base05']};
@define-color subtext0 #{scheme['base04']};
@define-color subtext1 #{scheme['base05']};
@define-color surface0 #{scheme['base01']};
@define-color surface1 #{scheme['base02']};
@define-color surface2 #{scheme['base03']};
@define-color overlay0 #{scheme['base03']};
@define-color overlay1 #{scheme['base04']};
@define-color overlay2 #{scheme['base04']};
@define-color lavender #{accent};
""")
EZA_DIR = Path(os.path.expanduser("~/.config/eza"))
def write_eza(scheme):
EZA_DIR.mkdir(parents=True, exist_ok=True)
accent = f'"#{scheme["base0E"]}"'
file_color = f'"#{scheme["base05"]}"'
dim = f'"#{scheme["base04"]}"'
dimmer = f'"#{scheme["base03"]}"'
dark = f'"#{scheme["base02"]}"'
path = EZA_DIR / "theme.yml"
with open(path, "w") as f:
f.write(f"""\
filekinds:
normal:
foreground: {file_color}
directory:
foreground: {accent}
is_bold: true
is_underline: true
symlink:
foreground: {dim}
pipe:
foreground: {dimmer}
block_device:
foreground: {dim}
char_device:
foreground: {dim}
socket:
foreground: {dimmer}
special:
foreground: {dim}
executable:
foreground: {accent}
is_bold: true
mount_point:
foreground: {accent}
perms:
user_read:
foreground: {file_color}
user_write:
foreground: {dim}
user_execute_file:
foreground: {accent}
user_execute_other:
foreground: {accent}
group_read:
foreground: {dim}
group_write:
foreground: {dimmer}
group_execute:
foreground: {dim}
other_read:
foreground: {dimmer}
other_write:
foreground: {dimmer}
other_execute:
foreground: {dimmer}
special_user_file:
foreground: {accent}
special_other:
foreground: {dimmer}
attribute:
foreground: {dimmer}
size:
number_byte:
foreground: {file_color}
number_kilo:
foreground: {dim}
number_mega:
foreground: {dim}
number_giga:
foreground: {accent}
number_huge:
foreground: {accent}
unit_byte:
foreground: {dimmer}
unit_kilo:
foreground: {dimmer}
unit_mega:
foreground: {dimmer}
unit_giga:
foreground: {dimmer}
unit_huge:
foreground: {dimmer}
users:
user_you:
foreground: {file_color}
user_root:
foreground: {accent}
user_other:
foreground: {dim}
group_yours:
foreground: {dim}
group_other:
foreground: {dimmer}
group_root:
foreground: {accent}
links:
normal:
foreground: {dim}
multi_link_file:
foreground: {accent}
git:
new:
foreground: {accent}
modified:
foreground: {dim}
deleted:
foreground: {dimmer}
renamed:
foreground: {dim}
typechange:
foreground: {dim}
ignored:
foreground: {dark}
conflicted:
foreground: {accent}
git_repo:
branch_main:
foreground: {file_color}
branch_other:
foreground: {dim}
git_clean:
foreground: {accent}
git_dirty:
foreground: {dim}
file_type:
image:
foreground: {dim}
video:
foreground: {dim}
music:
foreground: {dim}
lossless:
foreground: {dim}
crypto:
foreground: {dimmer}
document:
foreground: {file_color}
compressed:
foreground: {dimmer}
temp:
foreground: {dark}
compiled:
foreground: {dimmer}
build:
foreground: {dimmer}
source:
foreground: {file_color}
punctuation:
foreground: {dimmer}
date:
foreground: {dim}
inode:
foreground: {dimmer}
blocks:
foreground: {dimmer}
header:
foreground: {file_color}
octal:
foreground: {dimmer}
flags:
foreground: {dim}
symlink_path:
foreground: {dim}
control_char:
foreground: {dimmer}
broken_symlink:
foreground: {accent}
broken_path_overlay:
foreground: {dark}
""")
def write_waybar(scheme):
accent = scheme["base0E"]
bg = scheme["base00"]
fg = scheme["base05"]
path = STATE_DIR / "waybar-colors.css"
with open(path, "w") as f:
f.write(f"@define-color accent #{accent};\n")
f.write(f"@define-color bg-dark #{bg};\n")
f.write(f"@define-color fg-text #{fg};\n")
def write_hyprland(scheme):
accent = scheme["base0E"]
inactive = scheme["base03"]
path = STATE_DIR / "hyprland-colors.conf"
with open(path, "w") as f:
f.write(f"general:col.active_border = rgba({accent}ff)\n")
f.write(f"general:col.inactive_border = rgba({inactive}ff)\n")
def reload_apps():
print("Reloading applications with new theme...")
subprocess.run(["pkill", "-SIGUSR1", "kitty"], capture_output=True)
print("Sent reload signal to Kitty.")
nvim_colors = STATE_DIR / "nvim-colors.lua"
for sock in Path("/run/user/1000").glob("nvim.*.0"):
try:
nvim = attach('socket', path=str(sock))
nvim.command(f"luafile {nvim_colors}")
print(f"Sent reload command to Neovim instance at {sock}.")
except Exception as e:
print(f"Failed to connect to Neovim instance at {sock}: {e}")
# Live-update hyprland borders
scheme = {}
for line in open(STATE_DIR / "scheme.txt"):
k, v = line.split()
scheme[k] = v
subprocess.run(["hyprctl", "keyword", "general:col.active_border", f"rgba({scheme['base0E']}ff)"], capture_output=True)
subprocess.run(["hyprctl", "keyword", "general:col.inactive_border", f"rgba({scheme['base03']}ff)"], capture_output=True)
print("Updated Hyprland border colors.")
# Reload swaync styles
subprocess.run(["swaync-client", "-rs"], capture_output=True)
print("Sent reload signal to Swaync.")
# Reload waybar
subprocess.run(["pkill", "-SIGUSR2", "waybar"], capture_output=True)
print("Sent reload signal to Waybar.")
def main():
if len(sys.argv) < 2:
print("Usage: theme-engine.py <image-path>", file=sys.stderr)
sys.exit(1)
STATE_DIR.mkdir(parents=True, exist_ok=True)
accent = extract_accent(sys.argv[1])
scheme = build_scheme(accent)
print(f"Extracted accent color: #{accent}")
write_scheme(scheme)
print("Scheme written to state directory.")
write_kitty(scheme)
print("Kitty config written.")
write_vesktop(scheme)
print("Vesktop theme written.")
write_nvim(scheme)
print("Neovim colors written.")
write_hyprland(scheme)
print("Hyprland colors written.")
write_swaync(scheme)
print("Swaync colors written.")
write_eza(scheme)
print("Eza theme written.")
write_waybar(scheme)
print("Waybar colors written.")
reload_apps()
print("Sent reload signals to applications.")
print(f"Accent: #{accent}")
print(f"Scheme written to {STATE_DIR / 'scheme.txt'}")
print(f"Kitty config written to {STATE_DIR / 'kitty-colors.conf'}")
print(f"Vesktop theme written to {VESKTOP_DIR / 'system24-dynamic.css'}")
print(f"Neovim colors written to {STATE_DIR / 'nvim-colors.lua'}")
print(f"Hyprland colors written to {STATE_DIR / 'hyprland-colors.conf'}")
print(f"Swaync colors written to {STATE_DIR / 'swaync-colors.css'}")
print(f"Eza theme written to {EZA_DIR / 'theme.yml'}")
print(f"Waybar colors written to {STATE_DIR / 'waybar-colors.css'}")
if __name__ == "__main__":
main()
''

View File

@@ -1,4 +1,10 @@
{ lib, config, pkgs, self, ... }: {
lib,
config,
pkgs,
self,
...
}:
{ {
programs.shed = { programs.shed = {
aliases = { aliases = {
@@ -20,7 +26,7 @@
mkexe = "chmod +x"; mkexe = "chmod +x";
shortdate = "date +%m-%d-%y"; shortdate = "date +%m-%d-%y";
suvi = "sudoedit"; suvi = "sudoedit";
suvide = "EDITOR=neovide; suvi"; suvide = "EDITOR=neovide suvi";
rustdev = "nix develop github:km-clay/devshells#rust"; rustdev = "nix develop github:km-clay/devshells#rust";
y = "yazi"; y = "yazi";
@@ -29,6 +35,8 @@
gpush = "gitpush_sfx"; gpush = "gitpush_sfx";
gpull = "gitpull_sfx"; gpull = "gitpull_sfx";
grebase = "gitrebase_sfx"; grebase = "gitrebase_sfx";
videconf = "EDITOR=neovide viconf";
nix-shell = "command nix-shell --command 'exec shed'";
}; };
}; };
} }

View File

@@ -1,4 +1,10 @@
{ lib, config, self, pkgs, ... }: {
lib,
config,
self,
pkgs,
...
}:
let let
shellsound = "${pkgs.myScripts.playshellsound}/bin/playshellsound"; shellsound = "${pkgs.myScripts.playshellsound}/bin/playshellsound";
color-commit = "${pkgs.myScripts.color-commit}/bin/color-commit"; color-commit = "${pkgs.myScripts.color-commit}/bin/color-commit";
@@ -15,6 +21,8 @@ in
if [ "$0" = "-shed" ]; then if [ "$0" = "-shed" ]; then
${shellsound} $FLAKEPATH/assets/sound/login.wav ${shellsound} $FLAKEPATH/assets/sound/login.wav
fi fi
if [ -n "$LS_COLORS" ]; then unset LS_COLORS; fi
''; '';
}; };
} }

View File

@@ -276,7 +276,6 @@ in
ls = /* bash */ '' ls = /* bash */ ''
eza -1 --group-directories-first --icons "$@" eza -1 --group-directories-first --icons "$@"
${shellsound} ${sndpath}/ls.wav
''; '';
mkcd = /* bash */ '' mkcd = /* bash */ ''
@@ -286,7 +285,6 @@ in
cd = /* bash */ '' cd = /* bash */ ''
eza -1 --group-directories-first --icons "$@" 2> /dev/null eza -1 --group-directories-first --icons "$@" 2> /dev/null
builtin cd "$@" builtin cd "$@"
${shellsound} ${sndpath}/cd.wav
''; '';
hyprsock = /* bash */ '' hyprsock = /* bash */ ''

View File

@@ -2,7 +2,7 @@
{ {
programs.shed = { programs.shed = {
functions = { functions = {
_read_obj= /* bash */ '' _read_obj = /* bash */ ''
_obj="" _obj=""
while read_key -v key; do while read_key -v key; do
if [[ "''${#_obj}" -ge 3 ]]; then return 1; fi if [[ "''${#_obj}" -ge 3 ]]; then return 1; fi

View File

@@ -1,16 +1,21 @@
{ lib, config, pkgs, inputs, ... }: {
lib,
config,
pkgs,
inputs,
...
}:
let let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
scheme = config.lib.stylix.colors; scheme = config.lib.stylix.colors;
in { in
{
imports = [ inputs.spicetify-nix.homeManagerModules.default ]; imports = [ inputs.spicetify-nix.homeManagerModules.default ];
options = { options = {
movOpts.envConfig.spicetifyConfig.enable = movOpts.envConfig.spicetifyConfig.enable = lib.mkEnableOption "enable my spicetify options";
lib.mkEnableOption "enable my spicetify options";
}; };
config = lib.mkIf config.movOpts.envConfig.spicetifyConfig.enable { config = lib.mkIf config.movOpts.envConfig.spicetifyConfig.enable {
nixpkgs.config.allowUnfreePredicate = pkg: nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "spotify" ];
builtins.elem (lib.getName pkg) [ "spotify" ];
programs.spicetify = { programs.spicetify = {
enable = true; enable = true;

View File

@@ -1,7 +1,12 @@
{ config, lib, inputs, ... }: { {
config,
lib,
inputs,
...
}:
{
options = { options = {
movOpts.envConfig.starshipConfig.enable = movOpts.envConfig.starshipConfig.enable = lib.mkEnableOption "enables my starship configuration";
lib.mkEnableOption "enables my starship configuration";
}; };
config = lib.mkIf config.movOpts.envConfig.starshipConfig.enable { config = lib.mkIf config.movOpts.envConfig.starshipConfig.enable {
programs.starship = { programs.starship = {

View File

@@ -1,19 +1,24 @@
{ lib, self, config, host, pkgs, ... }: {
lib,
self,
config,
host,
pkgs,
...
}:
let let
scheme = "seti"; scheme = "seti";
wallpaper = "${self}/assets/wallpapers/dark-waves.jpg";
server = (host == "xenon"); server = (host == "xenon");
in { in
{
options = { options = {
movOpts.envConfig.stylixHomeConfig.enable = movOpts.envConfig.stylixHomeConfig.enable = lib.mkEnableOption "enables my stylix Home-Manager options";
lib.mkEnableOption "enables my stylix Home-Manager options";
}; };
config = lib.mkIf config.movOpts.envConfig.stylixHomeConfig.enable { config = lib.mkIf config.movOpts.envConfig.stylixHomeConfig.enable {
stylix = { stylix = {
enable = true; enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/${scheme}.yaml"; base16Scheme = "${pkgs.base16-schemes}/share/themes/${scheme}.yaml";
image = wallpaper;
polarity = "dark"; polarity = "dark";
autoEnable = true; autoEnable = true;
targets = { targets = {

View File

@@ -1,7 +1,12 @@
{ lib, config, pkgs, ... }: { {
lib,
config,
pkgs,
...
}:
{
options = { options = {
movOpts.envConfig.swayncConfig.enable = movOpts.envConfig.swayncConfig.enable = lib.mkEnableOption "enables my swaync configuration";
lib.mkEnableOption "enables my swaync configuration";
}; };
config = lib.mkIf config.movOpts.envConfig.swayncConfig.enable { config = lib.mkIf config.movOpts.envConfig.swayncConfig.enable {
home.packages = with pkgs; [ swaynotificationcenter ]; home.packages = with pkgs; [ swaynotificationcenter ];
@@ -608,6 +613,8 @@
.right.overlay-indicator { .right.overlay-indicator {
all: unset; all: unset;
} }
@import url("file:///home/pagedmov/.local/state/sysflake/swaync-colors.css");
''; '';
xdg.configFile."swaync/config.json".text = '' xdg.configFile."swaync/config.json".text = ''
{ {

View File

@@ -1,4 +1,11 @@
{ inputs, lib, config, pkgs, self, ... }: {
inputs,
lib,
config,
pkgs,
self,
...
}:
let let
scripts = with pkgs; [ scripts = with pkgs; [
@@ -25,14 +32,15 @@ let
myScripts.color-commit myScripts.color-commit
myScripts.mntstack myScripts.mntstack
]; ];
pythonWithStuff = pkgs.python3.withPackages(ps: with ps; [ requests ]); in
in { {
options = { options = {
movOpts.envConfig.userPkgs.enable = movOpts.envConfig.userPkgs.enable = lib.mkEnableOption "enables my default user packages";
lib.mkEnableOption "enables my default user packages";
}; };
config = lib.mkIf config.movOpts.envConfig.userPkgs.enable { config = lib.mkIf config.movOpts.envConfig.userPkgs.enable {
home.packages = with pkgs; [ home.packages =
with pkgs;
[
cargo cargo
rustc rustc
clippy clippy
@@ -72,7 +80,7 @@ in {
sox sox
neovide neovide
claude-code claude-code
pythonWithStuff myPython
monero-cli monero-cli
protonup-qt protonup-qt
piper piper
@@ -93,6 +101,7 @@ in {
nodejs_latest nodejs_latest
myPkgs.noto-sans-jp myPkgs.noto-sans-jp
myPkgs.billy-font myPkgs.billy-font
] ++ scripts; ]
++ scripts;
}; };
} }

View File

@@ -1,27 +1,37 @@
{ pkgs, self, ... }: { pkgs, self, ... }:
let let
pythonWithPkgs = pkgs.python3.withPackages (p: [ p.evdev ]);
keyboardSfxScript = "${self}/assets/scripts/keyboard_sound_thing.py"; keyboardSfxScript = "${self}/assets/scripts/keyboard_sound_thing.py";
in in
{ {
systemd.user = { systemd.user = {
timers = { timers = {
maintenanceCheck = { maintenanceCheck = {
Unit = { Description = "Timer for package maintenance check"; }; Unit = {
Description = "Timer for package maintenance check";
};
Timer = { Timer = {
OnCalendar = "hourly"; OnCalendar = "hourly";
Persistent = true; Persistent = true;
}; };
Install = { WantedBy = [ "timers.target" ]; }; Install = {
WantedBy = [ "timers.target" ];
};
}; };
}; };
services = { services = {
swww-daemon = {
Unit.Description = "Daemon for swww (sway wayland wallpaper manager)";
Install.WantedBy = [ "hyprland-session.target" ];
Service = {
ExecStart = "${pkgs.swww}/bin/swww-daemon";
};
};
kitty-keyboard-sounds = { kitty-keyboard-sounds = {
description = "Keyboard sound effects for kitty"; Unit.Description = "Keyboard sound effects for kitty";
wantedBy = [ "hyprland-session.target" ]; Install.WantedBy = [ "hyprland-session.target" ];
serviceConfig = { Service = {
ExecStart = "${pythonWithPkgs}/bin/python3 ${keyboardSfxScript}"; ExecStart = "${pkgs.myPython}/bin/python3 ${keyboardSfxScript}";
}; };
}; };
}; };

View File

@@ -1,4 +1,10 @@
{ pkgs, lib, config, ... }: {
pkgs,
lib,
config,
self,
...
}:
let let
layout = config.movOpts.envConfig.hyprlandConfig.workspaceLayout; layout = config.movOpts.envConfig.hyprlandConfig.workspaceLayout;
@@ -27,226 +33,245 @@ let
"20" = "20"; "20" = "20";
}; };
persistent-workspaces = persistent-workspaces =
if (layout == "singlemonitor") then { if (layout == "singlemonitor") then
"${builtins.elemAt monitors 0}" = [ 1 2 3 4 ]; {
} else if (layout == "dualmonitor") then { "${builtins.elemAt monitors 0}" = [
"${builtins.elemAt monitors 0}" = [ 1 2 3 ]; 1
"${builtins.elemAt monitors 1}" = [ 4 5 6 ]; 2
} else if (layout == "trimonitor") then { 3
"${builtins.elemAt monitors 2}" = [ 1 2 ]; 4
"${builtins.elemAt monitors 1}" = [ 3 4 ]; ];
"${builtins.elemAt monitors 0}" = [ 5 6 ]; }
} else else if (layout == "dualmonitor") then
{
"${builtins.elemAt monitors 0}" = [
1
2
3
];
"${builtins.elemAt monitors 1}" = [
4
5
6
];
}
else if (layout == "trimonitor") then
{
"${builtins.elemAt monitors 2}" = [
1
2
];
"${builtins.elemAt monitors 1}" = [
3
4
];
"${builtins.elemAt monitors 0}" = [
5
6
];
}
else
{ }; { };
}; };
scheme = config.lib.stylix.colors;
bg = {
darkester = scheme.base00;
darkest = scheme.base01;
darker = scheme.base02;
dark = scheme.base03;
};
fg = {
lightester = scheme.base07;
lightest = scheme.base06;
lighter = scheme.base05;
light = scheme.base04;
};
monitors = config.movOpts.envConfig.hyprlandConfig.monitorNames; monitors = config.movOpts.envConfig.hyprlandConfig.monitorNames;
bar-gauge = [ in
"" {
""
""
""
""
""
""
""
""
];
bar-gauge-critical = [
""
""
""
""
""
""
""
"<span color='#F07178'>!!!!!!!!</span>"
"<span color='#F07178'>CRITICAL</span>"
];
in {
options = { options = {
movOpts.envConfig.waybarConfig.enable = movOpts.envConfig.waybarConfig.enable = lib.mkEnableOption "enables my waybar configuration";
lib.mkEnableOption "enables my waybar configuration";
}; };
config = { config = {
programs.waybar = { programs.waybar = {
enable = true; enable = true;
package = pkgs.waybar.overrideAttrs (oa: {
mesonFlags = (oa.mesonFlags or [ ]) ++ [ "-Dexperimental=true" ];
});
settings = { settings = {
mainBar = { mainBar = {
layer = "top"; layer = "top";
output = if layout == "singlemonitor" then builtins.elemAt monitors 0 output = monitors;
else builtins.elemAt monitors 1;
position = "top"; position = "top";
name = "mainBar"; name = "waybar";
margin-left = 0; margin-left = 0;
margin-top = 0; margin-top = 0;
margin-right = 0; margin-right = 0;
mode = "dock";
exclusive = true; exclusive = true;
passthrough = false; passthrough = false;
"gtk-layer-shell" = true; "gtk-layer-shell" = true;
modules-left = [ "clock" "hyprland/workspaces" "tray" ]; modules-left = [
modules-center = []; "tray"
modules-right = [ "cpu" "memory" "pulseaudio" "network" ]; "hyprland/workspaces"
];
modules-center = [ "hyprland/window" ];
"hyprland/window" = {
format = "<span color='#aaaaaa'>{title}</span>";
};
modules-right = [
"cpu"
"memory"
"pulseaudio"
"network"
"clock"
"image#nixicon"
];
"hyprland/workspaces" = workspaces; "hyprland/workspaces" = workspaces;
clock = { clock = {
format = "[ CLK: {:%H.%M <span size='8pt'> %a %b %d</span>} ]"; format = "󱑍 <span color='#aaaaaa'>{:%H:%M}</span>";
tooltip-format = "<tt>{calendar}</tt>";
calendar = {
mode = "month";
weeks-pos = "";
on-scroll = 1;
format = {
months = "<span size='16pt'><b>CAL: {}\n</b></span>";
days = "<span size='16pt'><b>{}</b></span>";
weeks = "<span size='16pt'><b>{}</b></span>";
weekdays = "<span size='16pt'><b>{}</b></span>";
today = "<span color='#E6E1CF'><b>{}</b></span>";
};
};
actions = {
on-scroll-up = "shift_down";
on-scroll-down = "shift_up";
};
}; };
pulseaudio = { pulseaudio = {
format = "VOL: [ <span color='#272D38'>{icon}</span> ] <span size='8pt'>{volume}%</span>"; format = " <span color='#aaaaaa'>{volume}%</span>";
tooltip = true; tooltip = true;
tooltip-format = "DEVICE: {desc}"; tooltip-format = "{desc}";
format-muted = "VOL: <span color='#F07178'>[ XXXXXXXX ] <span size='8pt'>{volume}%</span></span>"; format-muted = " <span color='#aaaaaa'>{volume}%</span>";
on-click = "if [ $(pamixer --get-mute) == true ]; then pamixer --unmute; else pamixer --mute; fi"; on-click = "if [ $(pamixer --get-mute) == true ]; then pamixer --unmute; else pamixer --mute; fi";
on-scroll-up = "pamixer -i 2"; on-scroll-up = "pamixer -i 2";
on-scroll-down = "pamixer -d 2"; on-scroll-down = "pamixer -d 2";
scroll-step = 2; scroll-step = 2;
reverse-scrolling = true; reverse-scrolling = true;
format-icons = bar-gauge;
}; };
network = { network = {
format-wifi = "[ <span color='#B8CC52'>ONLINE</span> ]"; format-wifi = "󰖩 <span color='#aaaaaa'>{essid}</span>";
format-ethernet = "[ <span color='#B8CC52'>ONLINE</span> ]"; format-ethernet = " <span color='#aaaaaa'>{ifname}</span>";
tooltip-format-wifi = "ESSID\t: {essid}\nSTRNGTH\t: {signaldBm}\n\nADDRESS\t: {ipaddr}\nGATE\t: {gwaddr}\nMASK\t: {netmask} | {cidr}"; tooltip-format-wifi = "ESSID\t: {essid}\nSTRNGTH\t: {signaldBm}\n\nADDRESS\t: {ipaddr}\nGATE\t: {gwaddr}\nMASK\t: {netmask} | {cidr}";
tooltip-format-ethernet = "IFNAME: {ifname}\nADDRESS: {ipaddr}"; tooltip-format-ethernet = "IFNAME: {ifname}\nADDRESS: {ipaddr}";
format-disconnected = "[ <span color='#F07178'>XXXXXX</span> ]"; format-disconnected = "󱚼";
on-click = "nm-connection-editor"; on-click = "nm-connection-editor";
}; };
"image#nixicon" = {
path = "/home/pagedmov/.sysflake/assets/images/nix-snowflake-colours.svg";
size = 28;
};
memory = { memory = {
interval = 20; interval = 20;
format = "MEM: [ <span color='#272D38'>{icon}</span> ] <span size='8pt'>{percentage}%</span>"; format = " <span color='#aaaaaa'>{percentage}%</span>";
tooltip-format = "MEM_TOT\t: {total}GiB\nSWP_TOT\t: {swapTotal}GiB\n\nMEM_USD\t: {used:0.1f}GiB\nSWP_USD\t: {swapUsed:0.1f}GiB"; tooltip-format = "MEM_TOT\t: {total}GiB\nSWP_TOT\t: {swapTotal}GiB\n\nMEM_USD\t: {used:0.1f}GiB\nSWP_USD\t: {swapUsed:0.1f}GiB";
format-icons = bar-gauge-critical;
}; };
cpu = { cpu = {
interval = 1; interval = 1;
format = "CPU: [ <span color='#272D38'>{icon}</span> ] <span size='8pt'>{usage}%</span>"; format = "󰍛 <span color='#aaaaaa'>{usage}%</span>";
tooltip = true; tooltip = true;
format-icons = bar-gauge-critical;
}; };
}; };
}; };
style = '' style = ''
@define-color accent #CF1B30;
@define-color bg-dark #1a1a1a;
@define-color bg-island #2a2a2a;
@define-color fg-dim #aaaaaa;
@define-color fg-text #d0d0d0;
* { * {
font-size: 16px; font-size: 20px;
border: none; border: none;
font-family: EnvyCodeR Nerd Font Mono; font-family: EnvyCodeR Nerd Font Mono;
font-weight: Bold; font-weight: bold;
min-height: 0; min-height: 0;
border-radius: 0px; border-radius: 0;
padding: 2px;
} }
window#waybar { window#waybar {
color: #${fg.lightest}; background: rgba(0, 0, 0, 0.05);
background: #${bg.darkester}; color: @fg-text;
} }
tooltip { tooltip {
background: #${bg.darkester}; background: @bg-dark;
border: 2px solid @accent;
border-radius: 8px;
}
/* Tray island (far left) */
#tray {
background-color: @bg-dark;
color: @accent;
border: 2px solid @accent;
border-radius: 8px;
padding: 4px 8px;
margin: 6px 4px 6px 10px;
}
/* Workspaces island */
#workspaces {
background-color: @bg-dark;
border: 2px solid @accent;
border-radius: 8px;
margin: 6px 4px;
padding: 0 4px;
} }
#workspaces button { #workspaces button {
color: #${fg.lightest}; color: @fg-dim;
background: #${bg.darkester}; background: transparent;
padding: 4px 8px;
border-radius: 6px;
margin: 2px;
} }
#workspaces button.active { #workspaces button.active {
color: #${bg.darker}; color: @bg-dark;
background: #${bg.darkester}; background-color: @accent;
}
#workspaces button.focused {
color: #${bg.dark};
background: #${bg.darkester};
}
#workspaces button.urgent {
color: #${fg.lightest};
background: #${bg.darkester};
} }
#workspaces button:hover { #workspaces button:hover {
color: #${fg.lightest}; color: @bg-dark;
background: #${bg.darkester}; background-color: alpha(@accent, 0.5);
} }
#window, /* Right info modules island */
#clock, #cpu,
#memory,
#pulseaudio, #pulseaudio,
#network, #network,
#workspaces, #window,
#tray,
#cpu {
padding: 0px 10px;
margin: 0px;
}
#tray {
margin-right: 10px;
}
#workspaces {
color: #${fg.lightest};
}
#window {
color: #${fg.lightest};
}
#clock { #clock {
color: #${fg.lightest}; background-color: @bg-dark;
color: @accent;
border-top: 2px solid @accent;
border-bottom: 2px solid @accent;
padding: 4px 10px;
margin: 6px 0;
} }
#network { /* Window title island (center) */
color: #${fg.lightest}; #window {
border-radius: 8px;
border-left: 2px solid @accent;
border-right: 2px solid @accent;
margin: 6px 4px;
} }
#pulseaudio { /* round left edge of first module in the group */
color: #${fg.lightest}; #cpu {
border-radius: 8px 0 0 8px;
border-left: 2px solid @accent;
margin-left: 4px;
} }
/* round right edge of last module before nixicon */
#clock {
border-radius: 0 8px 8px 0;
border-right: 2px solid @accent;
margin-right: 4px;
}
/* NixOS icon island (far right, outlined) */
#image {
background-color: @bg-dark;
color: @accent;
border: 2px solid @accent;
border-radius: 8px;
padding: 4px 10px;
margin: 6px 10px 6px 4px;
}
@import url("file:///home/pagedmov/.local/state/sysflake/waybar-colors.css");
''; '';
}; };
}; };

View File

@@ -1,6 +1,12 @@
{ lib, config, self, ... }:
{ {
options.movOpts.envConfig.zshConfig.shellAliases.enable = lib.mkEnableOption "enables my zsh aliases"; lib,
config,
self,
...
}:
{
options.movOpts.envConfig.zshConfig.shellAliases.enable =
lib.mkEnableOption "enables my zsh aliases";
config = lib.mkIf config.movOpts.envConfig.zshConfig.shellAliases.enable { config = lib.mkIf config.movOpts.envConfig.zshConfig.shellAliases.enable {
programs.zsh = { programs.zsh = {
shellAliases = { shellAliases = {

View File

@@ -1,4 +1,9 @@
{ lib, config, self, ... }: {
lib,
config,
self,
...
}:
{ {
imports = [ imports = [

View File

@@ -2,7 +2,8 @@
{ {
options = { options = {
movOpts.envConfig.zshConfig.envVariables.enable = lib.mkEnableOption "enables my default session variables"; movOpts.envConfig.zshConfig.envVariables.enable =
lib.mkEnableOption "enables my default session variables";
}; };
config = lib.mkIf config.movOpts.envConfig.zshConfig.envVariables.enable { config = lib.mkIf config.movOpts.envConfig.zshConfig.envVariables.enable {
programs.zsh = { programs.zsh = {

View File

@@ -1,4 +1,10 @@
{ lib, config, self, pkgs, ... }: {
lib,
config,
self,
pkgs,
...
}:
let let
shellsound = "${pkgs.myScripts.playshellsound}/bin/playshellsound"; shellsound = "${pkgs.myScripts.playshellsound}/bin/playshellsound";
@@ -8,7 +14,8 @@ let
in in
{ {
options = { options = {
movOpts.envConfig.zshConfig.extraConfig.enable = lib.mkEnableOption "enables my extra shell configurations"; movOpts.envConfig.zshConfig.extraConfig.enable =
lib.mkEnableOption "enables my extra shell configurations";
}; };
config = lib.mkIf config.movOpts.envConfig.zshConfig.extraConfig.enable { config = lib.mkIf config.movOpts.envConfig.zshConfig.extraConfig.enable {
programs.zsh = { programs.zsh = {

View File

@@ -2,7 +2,8 @@
{ {
options = { options = {
movOpts.envConfig.zshConfig.shellOptions.enable = lib.mkEnableOption "enables my default shell settings"; movOpts.envConfig.zshConfig.shellOptions.enable =
lib.mkEnableOption "enables my default shell settings";
}; };
config = lib.mkIf config.movOpts.envConfig.zshConfig.shellOptions.enable { config = lib.mkIf config.movOpts.envConfig.zshConfig.shellOptions.enable {
programs.zoxide = { programs.zoxide = {

View File

@@ -1,17 +1,26 @@
{ pkgs, lib, self, config, ... }: {
pkgs,
lib,
self,
config,
...
}:
# This folder is for programs that do not have existing configuration modules in NixOS. # This folder is for programs that do not have existing configuration modules in NixOS.
# Basically a to-do list for stuff I need to write my own modules for. # Basically a to-do list for stuff I need to write my own modules for.
let let
# Extract color scheme from base_16 yaml file # Extract color scheme from base_16 yaml file
extractSchemeFromYaml = base16_scheme: let extractSchemeFromYaml =
base16_scheme:
let
scheme_path = "${pkgs.base16-schemes}/share/themes/${base16_scheme}.yaml"; scheme_path = "${pkgs.base16-schemes}/share/themes/${base16_scheme}.yaml";
scheme_string = builtins.readFile scheme_path; scheme_string = builtins.readFile scheme_path;
scheme_list = lib.splitString "\n" scheme_string; # Split into a list scheme_list = lib.splitString "\n" scheme_string; # Split into a list
colors = colors =
lib.filter (line: builtins.match "^ *base[0-9A-F]{2}: .*" line != null) # Get raw hex values from scheme list lib.filter (line: builtins.match "^ *base[0-9A-F]{2}: .*" line != null) # Get raw hex values from scheme list
scheme_list; scheme_list;
parsed_scheme = lib.lists.foldl' (acc: line: # Initialize attribute set and begin folding values into it parsed_scheme = lib.lists.foldl' (
acc: line: # Initialize attribute set and begin folding values into it
let let
splitLine = lib.splitString ": " line; # Split into keys (base00, base01, etc.) and values splitLine = lib.splitString ": " line; # Split into keys (base00, base01, etc.) and values
key = builtins.elemAt splitLine 0; key = builtins.elemAt splitLine 0;
@@ -19,22 +28,24 @@ let
trimmedKey = lib.trim key; # Start cleaning values trimmedKey = lib.trim key; # Start cleaning values
cleanValue_step1 = lib.splitString " " value; cleanValue_step1 = lib.splitString " " value;
cleanValue_step2 = builtins.elemAt cleanValue_step1 0; # Get just the hex value, ignore comments etc. cleanValue_step2 = builtins.elemAt cleanValue_step1 0; # Get just the hex value, ignore comments etc.
cleanValue_final = cleanValue_final = builtins.substring 1 (
builtins.substring 1 (builtins.stringLength cleanValue_step2 - 2) builtins.stringLength cleanValue_step2 - 2
cleanValue_step2; ) cleanValue_step2;
in acc // { "${trimmedKey}" = cleanValue_final; }) { } colors; # Accumulate keys/values into attribute set in
in parsed_scheme; # Return parsed color scheme acc // { "${trimmedKey}" = cleanValue_final; }
) { } colors; # Accumulate keys/values into attribute set
in
parsed_scheme; # Return parsed color scheme
ssh_scheme = extractSchemeFromYaml "atelier-cave" ; ssh_scheme = extractSchemeFromYaml "atelier-cave";
nix-shell_scheme = extractSchemeFromYaml "blueish"; nix-shell_scheme = extractSchemeFromYaml "blueish";
def_scheme = config.lib.stylix.colors; def_scheme = config.lib.stylix.colors;
# Custom theme for nix-shell # Custom theme for nix-shell
in { in
{
options = { options = {
movOpts.homeFiles.enable = movOpts.homeFiles.enable = lib.mkEnableOption "enables declared custom files";
lib.mkEnableOption "enables declared custom files";
}; };
config = { config = {
home.file = { home.file = {

View File

@@ -1,7 +1,7 @@
{ lib, config, ... }: { { lib, config, ... }:
{
options = { options = {
movOpts.programConfigs.autojumpConfig.enable = movOpts.programConfigs.autojumpConfig.enable = lib.mkEnableOption "enables my autojump options";
lib.mkEnableOption "enables my autojump options";
}; };
config = lib.mkIf config.movOpts.programConfigs.autojumpConfig.enable { config = lib.mkIf config.movOpts.programConfigs.autojumpConfig.enable {
programs.autojump = { programs.autojump = {

View File

@@ -1,12 +1,19 @@
{ lib, config, inputs, ... }: { {
lib,
config,
inputs,
...
}:
{
options = { options = {
movOpts.programConfigs.batConfig.enable = movOpts.programConfigs.batConfig.enable = lib.mkEnableOption "enables my bat options";
lib.mkEnableOption "enables my bat options";
}; };
config = lib.mkIf config.movOpts.programConfigs.batConfig.enable { config = lib.mkIf config.movOpts.programConfigs.batConfig.enable {
programs.bat = { programs.bat = {
enable = true; enable = true;
config = { pager = "less -FR"; }; config = {
pager = "less -FR";
};
}; };
}; };
} }

View File

@@ -1,7 +1,12 @@
{ lib, config, pkgs, ... }: { {
lib,
config,
pkgs,
...
}:
{
options = { options = {
movOpts.programConfigs.btopConfig.enable = movOpts.programConfigs.btopConfig.enable = lib.mkEnableOption "enables my btop config";
lib.mkEnableOption "enables my btop config";
}; };
config = lib.mkIf config.movOpts.programConfigs.btopConfig.enable { config = lib.mkIf config.movOpts.programConfigs.btopConfig.enable {
programs.btop = { programs.btop = {
@@ -10,8 +15,7 @@
settings = { settings = {
update_ms = 500; update_ms = 500;
vim_keys = true; vim_keys = true;
color_theme = "nord"; color_theme = "TTY";
theme_background = true;
temp_scale = "fahrenheit"; temp_scale = "fahrenheit";
graph_symbol = "block"; graph_symbol = "block";
disks_filter = "exclude=/boot /"; disks_filter = "exclude=/boot /";

View File

@@ -1,9 +1,17 @@
{ lib, config, inputs, pkgs, ... }: { {
lib,
config,
inputs,
pkgs,
...
}:
{
options = { options = {
movOpts.programConfigs.cavaConfig.enable = movOpts.programConfigs.cavaConfig.enable = lib.mkEnableOption "enables my cava settings";
lib.mkEnableOption "enables my cava settings";
}; };
config = lib.mkIf config.movOpts.programConfigs.cavaConfig.enable { config = lib.mkIf config.movOpts.programConfigs.cavaConfig.enable {
programs.cava = { enable = true; }; programs.cava = {
enable = true;
};
}; };
} }

View File

@@ -1,8 +1,27 @@
{ env, host, nixvim, self, inputs, username, config, home-manager, ... }: { {
imports = [ (import ./btop.nix) ] ++ [ (import ./yazi.nix) ] env,
++ [ (import ./kitty.nix) ] ++ [ (import ./fuzzel.nix) ] host,
++ [ (import ./eza.nix) ] ++ [ (import ./cava.nix) ] nixvim,
++ [ (import ./bat.nix) ] ++ [ (import ./fzf.nix) ] self,
++ [ (import ./git.nix) ] ++ [ (import ./password-store.nix) ] inputs,
++ [ (import ./autojump.nix) ] ++ [ (import ./nixvim) ]; username,
config,
home-manager,
...
}:
{
imports = [
(import ./btop.nix)
]
++ [ (import ./yazi.nix) ]
++ [ (import ./kitty.nix) ]
++ [ (import ./fuzzel.nix) ]
++ [ (import ./eza.nix) ]
++ [ (import ./cava.nix) ]
++ [ (import ./bat.nix) ]
++ [ (import ./fzf.nix) ]
++ [ (import ./git.nix) ]
++ [ (import ./password-store.nix) ]
++ [ (import ./autojump.nix) ]
++ [ (import ./nixvim) ];
} }

View File

@@ -1,13 +1,17 @@
{ lib, config, ... }: { { lib, config, ... }:
{
options = { options = {
movOpts.programConfigs.ezaConfig.enable = movOpts.programConfigs.ezaConfig.enable = lib.mkEnableOption "enables my eza options";
lib.mkEnableOption "enables my eza options";
}; };
config = lib.mkIf config.movOpts.programConfigs.ezaConfig.enable { config = lib.mkIf config.movOpts.programConfigs.ezaConfig.enable {
programs.eza = { programs.eza = {
enable = true; enable = true;
enableZshIntegration = false; enableZshIntegration = false;
extraOptions = [ "-1" "-h" "--group-directories-first" ]; extraOptions = [
"-1"
"-h"
"--group-directories-first"
];
icons = "auto"; icons = "auto";
git = true; git = true;
}; };

View File

@@ -1,7 +1,7 @@
{ config, lib, ... }: { { config, lib, ... }:
{
options = { options = {
movOpts.programConfigs.fuzzelConfig.enable = movOpts.programConfigs.fuzzelConfig.enable = lib.mkEnableOption "enables my fuzzel configuration";
lib.mkEnableOption "enables my fuzzel configuration";
}; };
config = lib.mkIf config.movOpts.programConfigs.fuzzelConfig.enable { config = lib.mkIf config.movOpts.programConfigs.fuzzelConfig.enable {
programs.fuzzel = { programs.fuzzel = {

View File

@@ -1,7 +1,7 @@
{ lib, config, ... }: { { lib, config, ... }:
{
options = { options = {
movOpts.programConfigs.fzfConfig.enable = movOpts.programConfigs.fzfConfig.enable = lib.mkEnableOption "enables my fzf options";
lib.mkEnableOption "enables my fzf options";
}; };
config = lib.mkIf config.movOpts.programConfigs.fzfConfig.enable { config = lib.mkIf config.movOpts.programConfigs.fzfConfig.enable {
programs.fzf = { programs.fzf = {

View File

@@ -1,7 +1,13 @@
{ lib, config, username, pkgs, ... }: { {
lib,
config,
username,
pkgs,
...
}:
{
options = { options = {
movOpts.programConfigs.gitConfig.enable = movOpts.programConfigs.gitConfig.enable = lib.mkEnableOption "enables my git configuration";
lib.mkEnableOption "enables my git configuration";
}; };
config = lib.mkIf config.movOpts.programConfigs.gitConfig.enable { config = lib.mkIf config.movOpts.programConfigs.gitConfig.enable {
programs.git = { programs.git = {

View File

@@ -1,7 +1,13 @@
{ self, lib, config, pkgs, ... }: { {
self,
lib,
config,
pkgs,
...
}:
{
options = { options = {
movOpts.programConfigs.kittyConfig.enable = movOpts.programConfigs.kittyConfig.enable = lib.mkEnableOption "enables my kitty configuration";
lib.mkEnableOption "enables my kitty configuration";
}; };
config = lib.mkIf config.movOpts.programConfigs.kittyConfig.enable { config = lib.mkIf config.movOpts.programConfigs.kittyConfig.enable {
programs.kitty = { programs.kitty = {
@@ -14,7 +20,7 @@
settings = { settings = {
confirm_os_window_close = 0; confirm_os_window_close = 0;
background_opacity = lib.mkForce 0.5; background_opacity = lib.mkForce 0.65;
window_padding_width = 4; window_padding_width = 4;
scrollback_lines = 10000; scrollback_lines = 10000;
enable_audio_bell = true; enable_audio_bell = true;
@@ -31,6 +37,8 @@
tab_powerline_style = "round"; tab_powerline_style = "round";
}; };
extraConfig = "include ~/.local/state/sysflake/kitty-colors.conf";
keybindings = { keybindings = {
"ctrl+shift+l" = "next_tab"; "ctrl+shift+l" = "next_tab";
"ctrl+shift+h" = "previous_tab"; "ctrl+shift+h" = "previous_tab";

View File

@@ -1,19 +1,18 @@
{ pkgs, self, ... }: { { pkgs, self, ... }:
{
programs.nixvim = { programs.nixvim = {
autoCmd = [ autoCmd = [
{ {
command = "silent! mkview"; command = "silent! mkview";
event = [ "BufWinLeave" ]; event = [ "BufWinLeave" ];
pattern = [ "*" ]; pattern = [ "*" ];
desc = desc = "Save session window settings to be loaded next time the file is opened";
"Save session window settings to be loaded next time the file is opened";
} }
{ {
command = "silent! loadview"; command = "silent! loadview";
event = [ "BufWinEnter" ]; event = [ "BufWinEnter" ];
pattern = [ "*" ]; pattern = [ "*" ];
desc = desc = "Load previous session window settings for the opened file (folds, cursor pos, etc)";
"Load previous session window settings for the opened file (folds, cursor pos, etc)";
} }
{ {
command = "silent! FloatermNew --name=def_term --width=0.8 --height=0.8 --wintype=topright --silent"; command = "silent! FloatermNew --name=def_term --width=0.8 --height=0.8 --wintype=topright --silent";

View File

@@ -1,6 +1,19 @@
{ env, config, pkgs, host, self, ... }: { {
env,
config,
pkgs,
host,
self,
...
}:
{
programs.nixvim = { programs.nixvim = {
nixpkgs.useGlobalPackages = true; nixpkgs.useGlobalPackages = true;
}; };
imports = [ ./plugins ./options.nix ./keymaps.nix ./autocmd.nix ]; imports = [
./plugins
./options.nix
./keymaps.nix
./autocmd.nix
];
} }

View File

@@ -49,7 +49,10 @@
{ {
action = "<cmd>FloatermToggle def_term<CR>"; action = "<cmd>FloatermToggle def_term<CR>";
key = "<F2>"; key = "<F2>";
mode = [ "n" "t" ]; mode = [
"n"
"t"
];
} }
{ {
action = "<cmd>lua require('treesj').toggle()<CR>"; action = "<cmd>lua require('treesj').toggle()<CR>";
@@ -64,82 +67,127 @@
{ {
action = ''"+y''; action = ''"+y'';
key = "<space>y"; key = "<space>y";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action = ''"+p''; action = ''"+p'';
key = "<space>p"; key = "<space>p";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action.__raw = /*lua*/''function() require('opencode').prompt('test', {submit=true}) end''; action.__raw = /* lua */ "function() require('opencode').prompt('test', {submit=true}) end";
key = "<space>at"; key = "<space>at";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action.__raw = /*lua*/''function() require('opencode').select() end''; action.__raw = /* lua */ "function() require('opencode').select() end";
key = "<space>as"; key = "<space>as";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action.__raw = /*lua*/''function() require('opencode').prompt('document', {submit=true}) end''; action.__raw = /* lua */ "function() require('opencode').prompt('document', {submit=true}) end";
key = "<space>ad"; key = "<space>ad";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action.__raw = /*lua*/''function() require('opencode').prompt('review', {submit=true}) end''; action.__raw = /* lua */ "function() require('opencode').prompt('review', {submit=true}) end";
key = "<space>ar"; key = "<space>ar";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action.__raw = /*lua*/''function() require('opencode').prompt('fix', {submit=true}) end''; action.__raw = /* lua */ "function() require('opencode').prompt('fix', {submit=true}) end";
key = "<space>af"; key = "<space>af";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action.__raw = /*lua*/''function() require('opencode').ask("@this ", {submit=true}) end''; action.__raw = /* lua */ ''function() require('opencode').ask("@this ", {submit=true}) end'';
key = "<space>aa"; key = "<space>aa";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action.__raw = /*lua*/''function() require('opencode').explain("@this ") end''; action.__raw = /* lua */ ''function() require('opencode').explain("@this ") end'';
key = "<space>ae"; key = "<space>ae";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action.__raw = /*lua*/''function() require('opencode').command("session.half.page.up") end''; action.__raw = /* lua */ ''function() require('opencode').command("session.half.page.up") end'';
key = "<C-S-u>"; key = "<C-S-u>";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action.__raw = /*lua*/''function() require('opencode').command("session.half.page.down") end''; action.__raw = /* lua */ ''function() require('opencode').command("session.half.page.down") end'';
key = "<C-S-d>"; key = "<C-S-d>";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action.__raw = /*lua*/''function() require('opencode').command("prompt.clear") end''; action.__raw = /* lua */ ''function() require('opencode').command("prompt.clear") end'';
key = "<C-c>"; key = "<C-c>";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action.__raw = /*lua*/''function() require('opencode').operator("@this ") end''; action.__raw = /* lua */ ''function() require('opencode').operator("@this ") end'';
key = "go"; key = "go";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
{ {
action.__raw = /*lua*/''function() return require('opencode').operator("@this ") .. "_" end''; action.__raw = /* lua */ ''function() return require('opencode').operator("@this ") .. "_" end'';
key = "goo"; key = "goo";
mode = [ "n" ]; mode = [ "n" ];
} }
{ {
action = "<cmd>lua require('opencode').toggle()<CR>"; action = "<cmd>lua require('opencode').toggle()<CR>";
key = "<C-.>"; key = "<C-.>";
mode = [ "n" "t" ]; mode = [
"n"
"t"
];
} }
{ {
action = "<cmd>lua require('opencode').select()<CR>"; action = "<cmd>lua require('opencode').select()<CR>";
key = "<C-n>"; key = "<C-n>";
mode = [ "n" "x" ]; mode = [
"n"
"x"
];
} }
]; ];
}; };

View File

@@ -1,7 +1,9 @@
{ config, ... }: { config, ... }:
let scheme = config.lib.stylix.colors; let
in { scheme = config.lib.stylix.colors;
in
{
programs.nixvim = { programs.nixvim = {
colorschemes.base16 = { colorschemes.base16 = {
enable = true; enable = true;
@@ -31,14 +33,17 @@ in {
signs = false; signs = false;
}; };
extraConfigLua = /* lua */ '' extraConfigLua = /* lua */ ''
local theme_file = vim.fn.expand("~/.local/state/sysflake/nvim-colors.lua")
if vim.fn.filereadable(theme_file) == 1 then
dofile(theme_file)
end
if vim.g.started_by_firenvim == true then if vim.g.started_by_firenvim == true then
vim.o.laststatus = 0 vim.o.laststatus = 0
end end
if vim.g.neovide then if vim.g.neovide then
vim.g.neovide_refresh_rate = 144 vim.g.neovide_refresh_rate = 144
vim.g.neovide_cursor_animate_in_insert_mode = true vim.g.neovide_cursor_animate_in_insert_mode = true
vim.g.neovide_opacity = 0.5;
vim.g.neovide_normal_opacity = 1.0;
end end
vim.g.vimwiki_list = {{path = '~/vimwiki/', syntax = 'markdown', ext = '.md'}} vim.g.vimwiki_list = {{path = '~/vimwiki/', syntax = 'markdown', ext = '.md'}}

View File

@@ -1,7 +1,7 @@
{ {
programs.nixvim = { programs.nixvim = {
plugins.airline = { plugins.airline = {
enable = false; enable = true;
settings = { settings = {
left_sep = ""; left_sep = "";
right_sep = ""; right_sep = "";

View File

@@ -2,7 +2,9 @@
programs.nixvim = { programs.nixvim = {
plugins.barbar = { plugins.barbar = {
enable = false; enable = false;
settings = { auto_hide = 1; }; settings = {
auto_hide = 1;
};
}; };
}; };
} }

View File

@@ -2,7 +2,9 @@
programs.nixvim = { programs.nixvim = {
plugins.coq-nvim = { plugins.coq-nvim = {
enable = true; enable = true;
settings = { auto_start = false; }; settings = {
auto_start = false;
};
}; };
}; };
} }

View File

@@ -1,4 +1,10 @@
{ host, self, pkgs, env, ... }: {
host,
self,
pkgs,
env,
...
}:
{ {
imports = [ imports = [

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }: { { pkgs, ... }:
{
programs.nixvim = { programs.nixvim = {
extraPlugins = [ extraPlugins = [
(pkgs.vimUtils.buildVimPlugin { (pkgs.vimUtils.buildVimPlugin {

View File

@@ -4,7 +4,9 @@
settings = { settings = {
notification = { notification = {
overrideVimNotify = true; overrideVimNotify = true;
window = { border = "rounded"; }; window = {
border = "rounded";
};
}; };
}; };
}; };

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }: { { pkgs, ... }:
{
programs.nixvim = { programs.nixvim = {
#extraPlugins = [ #extraPlugins = [
#(pkgs.vimUtils.buildVimPlugin { #(pkgs.vimUtils.buildVimPlugin {

View File

@@ -61,7 +61,9 @@
}) })
''; '';
}; };
window = { completion.border = "rounded"; }; window = {
completion.border = "rounded";
};
}; };
}; };
lsp = { lsp = {
@@ -98,10 +100,8 @@
}; };
options = { options = {
# uses Xenon config because it has every option exposed to it # uses Xenon config because it has every option exposed to it
nixos.expr = '' nixos.expr = ''(builtins.getFlake "github:pagedMov/nixos-config").nixosConfigurations.phosphorous.options'';
(builtins.getFlake "github:pagedMov/nixos-config").nixosConfigurations.phosphorous.options''; home.expr = ''(builtins.getFlake "github:pagedMov/nixos-config").homeConfigurations.phospohorousHome.options'';
home.expr = ''
(builtins.getFlake "github:pagedMov/nixos-config").homeConfigurations.phospohorousHome.options'';
}; };
}; };
}; };

View File

@@ -1,42 +1,100 @@
let
colors = {
blue = "#80a0ff";
cyan = "#79dac8";
black = "#080808";
white = "#c6c6c6";
red = "#ff5189";
violet = "#d183e8";
grey = "#303030";
bg_grey = "#202020";
};
bubbles_theme = {
normal = {
a = {
fg = colors.black;
bg = colors.violet;
gui = "bold";
};
b = {
fg = colors.white;
bg = colors.grey;
};
c = {
fg = colors.white;
bg = colors.bg_grey;
};
};
insert = {
a = {
fg = colors.black;
bg = colors.blue;
};
};
visual = {
a = {
fg = colors.black;
bg = colors.cyan;
};
};
replace = {
a = {
fg = colors.black;
bg = colors.red;
};
};
inactive = {
a = {
fg = colors.white;
bg = colors.grey;
};
b = {
fg = colors.white;
bg = colors.black;
};
c = {
fg = colors.white;
};
z = {
fg = colors.white;
bg = colors.grey;
};
};
};
in
{ {
programs.nixvim = { programs.nixvim = {
plugins.lualine = { plugins.lualine = {
enable = true; enable = false;
settings = { settings = {
options = { options = {
icons_enabled = true; icons_enabled = true;
theme = "auto"; theme = bubbles_theme;
component_separators = { component_separators = {
left = ""; left = "|";
right = ""; right = "|";
}; };
section_separators = { section_separators = {
left = ""; left = "";
right = ""; right = "";
}; };
always_divide_middle = true;
globalstatus = true;
refresh = {
statusline = 1000;
tabline = 1000;
winbar = 1000;
};
}; };
sections = { sections = {
lualine_a = [ "mode" ]; lualine_a.__raw = "{ { 'mode', separator = { left = '' }, right_padding = 2 } }";
lualine_b = [ "buffers" ]; lualine_b.__raw = "{ 'filename', 'branch' }";
lualine_c = [ ]; lualine_c.__raw = "{}";
lualine_x = [ "searchcount" "fileformat" "filetype" ]; lualine_x.__raw = "{}";
lualine_y = [ "branch" "diff" "diagnostics" ]; lualine_y.__raw = "{ 'filetype', 'progress' }";
lualine_z = [ "location" ]; lualine_z.__raw = "{ { 'location', separator = { right = '' }, left_padding = 2 } }";
}; };
inactive_sections = { inactive_sections = {
lualine_a = [ ]; lualine_a.__raw = "{ { 'mode', separator = { left = '' }, right_padding = 2 } }";
lualine_b = [ ]; lualine_b.__raw = "{ 'filename', 'branch' }";
lualine_c = [ "filename" ]; lualine_c.__raw = "{}";
lualine_x = [ "location" ]; lualine_x.__raw = "{}";
lualine_y = [ ]; lualine_y.__raw = "{ 'filetype', 'progress' }";
lualine_z = [ ]; lualine_z.__raw = "{ { 'location', separator = { right = '' }, left_padding = 2 } }";
}; };
}; };
}; };

View File

@@ -1,8 +1,12 @@
{ {
programs.nixvim = { programs.nixvim = {
plugins = { plugins = {
mini-align = { enable = true; }; mini-align = {
mini-clue = { enable = true; }; enable = true;
};
mini-clue = {
enable = true;
};
}; };
}; };
} }

View File

@@ -2,8 +2,7 @@
programs.nixvim.plugins.neocord = { programs.nixvim.plugins.neocord = {
enable = true; enable = true;
settings = { settings = {
logo = logo = "https://styles.redditmedia.com/t5_30kix/styles/communityIcon_n2hvyn96zwk81.png";
"https://styles.redditmedia.com/t5_30kix/styles/communityIcon_n2hvyn96zwk81.png";
logo_tooltip = "Neovim"; logo_tooltip = "Neovim";
buttons = [ buttons = [
{ {

View File

@@ -2,7 +2,9 @@
programs.nixvim.plugins.nvim-lightbulb = { programs.nixvim.plugins.nvim-lightbulb = {
enable = true; enable = true;
settings = { settings = {
virtual_text = { enable = true; }; virtual_text = {
enable = true;
};
autocmd.enabled = true; autocmd.enabled = true;
sign.enabled = false; sign.enabled = false;
}; };

View File

@@ -15,7 +15,7 @@
markdown-preview.enable = true; markdown-preview.enable = true;
marks.enable = true; marks.enable = true;
nvim-surround.enable = true; nvim-surround.enable = true;
rainbow-delimiters.enable = true; # rainbow-delimiters.enable = true;
render-markdown.enable = true; render-markdown.enable = true;
treesitter.enable = true; treesitter.enable = true;
trim.enable = true; trim.enable = true;

View File

@@ -1 +1,5 @@
{ programs.nixvim.plugins.chatgpt = { enable = true; }; } {
programs.nixvim.plugins.chatgpt = {
enable = true;
};
}

View File

@@ -8,7 +8,9 @@
motion_enabled = 1; motion_enabled = 1;
motion_cursor_end = 1; motion_cursor_end = 1;
matchparen_deferred_hi_surround_always = true; matchparen_deferred_hi_surround_always = true;
matchparen_offscreen = { method = "popup"; }; matchparen_offscreen = {
method = "popup";
};
treesitter = { treesitter = {
enable = true; enable = true;
include_match_words = true; include_match_words = true;

View File

@@ -1,14 +1,22 @@
{ lib, config, username, ... }: {
let home = "/home/${username}"; lib,
in { config,
username,
...
}:
let
home = "/home/${username}";
in
{
options = { options = {
movOpts.programConfigs.passConfig.enable = movOpts.programConfigs.passConfig.enable = lib.mkEnableOption "enables my pass config";
lib.mkEnableOption "enables my pass config";
}; };
config = lib.mkIf config.movOpts.programConfigs.passConfig.enable { config = lib.mkIf config.movOpts.programConfigs.passConfig.enable {
programs.password-store = { programs.password-store = {
enable = true; enable = true;
settings = { PASSWORD_STORE_DIR = "${home}/.password-store"; }; settings = {
PASSWORD_STORE_DIR = "${home}/.password-store";
};
}; };
}; };
} }

View File

@@ -1,7 +1,7 @@
{ lib, config, ... }: { { lib, config, ... }:
{
options = { options = {
movOpts.programConfigs.yaziConfig.enable = movOpts.programConfigs.yaziConfig.enable = lib.mkEnableOption "enables my yazi config";
lib.mkEnableOption "enables my yazi config";
}; };
config = lib.mkIf config.movOpts.programConfigs.yaziConfig.enable { config = lib.mkIf config.movOpts.programConfigs.yaziConfig.enable {
programs.yazi = { programs.yazi = {

View File

@@ -1,4 +1,14 @@
{ inputs, nixpkgs, config, self, username, host, lib, ... }: { {
inputs,
nixpkgs,
config,
self,
username,
host,
lib,
...
}:
{
imports = [ imports = [
./environment/starship.nix ./environment/starship.nix
./environment/userpkgs.nix ./environment/userpkgs.nix

View File

@@ -1,4 +1,9 @@
{ pkgs, lib, config, ... }: {
pkgs,
lib,
config,
...
}:
{ {
imports = [ ./jellyfin.nix ]; imports = [ ./jellyfin.nix ];

View File

@@ -1,9 +1,13 @@
{ pkgs, lib, config, ... }: {
pkgs,
lib,
config,
...
}:
{ {
options = { options = {
movOpts.serverCfg.jellyfinConfig.enable = movOpts.serverCfg.jellyfinConfig.enable = lib.mkEnableOption "Enables the server's jellyfin config";
lib.mkEnableOption "Enables the server's jellyfin config";
}; };
config = lib.mkIf config.movOpts.serverCfg.jellyfinConfig.enable { config = lib.mkIf config.movOpts.serverCfg.jellyfinConfig.enable {
services.jellyfin = { services.jellyfin = {

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }: { pkgs, lib, ... }:
{ {
imports = [ ./cdn ./glasshaus ]; imports = [
./cdn
./glasshaus
];
} }

View File

@@ -1,9 +1,13 @@
{ lib, config, pkgs, ... }: {
lib,
config,
pkgs,
...
}:
{ {
options = { options = {
movOpts.serverCfg.caddyConfig.enable = lib.mkEnableOption movOpts.serverCfg.caddyConfig.enable = lib.mkEnableOption "Enable my caddy config for the glasshaus.info domain name";
"Enable my caddy config for the glasshaus.info domain name";
}; };
config = lib.mkIf config.movOpts.serverCfg.caddyConfig.enable { config = lib.mkIf config.movOpts.serverCfg.caddyConfig.enable {
services.caddy = { services.caddy = {

View File

@@ -1,4 +1,9 @@
{ pkgs, lib, config, ... }: {
pkgs,
lib,
config,
...
}:
{ {
imports = [ ./caddy.nix ]; imports = [ ./caddy.nix ];

View File

@@ -1,3 +1,17 @@
{ inputs, nixpkgs, config, self, username, host, lib, ... }: { {
imports = [ ./hardware ./software ./sysenv ]; inputs,
nixpkgs,
config,
self,
username,
host,
lib,
...
}:
{
imports = [
./hardware
./software
./sysenv
];
} }

View File

@@ -1,7 +1,12 @@
{ pkgs, lib, config, ... }: { {
pkgs,
lib,
config,
...
}:
{
options = { options = {
movOpts.hardwareCfg.bootLoader.enable = movOpts.hardwareCfg.bootLoader.enable = lib.mkEnableOption "enables bootloader config";
lib.mkEnableOption "enables bootloader config";
}; };
config = lib.mkIf config.movOpts.hardwareCfg.bootLoader.enable { config = lib.mkIf config.movOpts.hardwareCfg.bootLoader.enable {
boot = { boot = {

View File

@@ -1,5 +1,18 @@
{ inputs, nixpkgs, nixvim, config, self, username, host, ... }: { {
imports = [ (import ./bootloader.nix) ] ++ [ (import ./network.nix) ] inputs,
nixpkgs,
nixvim,
config,
self,
username,
host,
...
}:
{
imports = [
(import ./bootloader.nix)
]
++ [ (import ./network.nix) ]
++ [ (import ./powerprofiles.nix) ] ++ [ (import ./powerprofiles.nix) ]
++ [ (import ./kernel.nix) ] ++ [ (import ./kernel.nix) ]
++ [ (import ./input.nix) ]; ++ [ (import ./input.nix) ];

View File

@@ -1,4 +1,5 @@
{ config, pkgs, ... }: { { config, pkgs, ... }:
{
i18n.inputMethod = { i18n.inputMethod = {
type = "fcitx5"; type = "fcitx5";
enable = true; enable = true;

Some files were not shown because too many files have changed in this diff Show More