Modularize teams sops yazi

This commit is contained in:
DashieTM 2024-08-24 13:25:08 +02:00
parent 7730cbef59
commit c73cb37278
75 changed files with 3023 additions and 3573 deletions

View file

@ -42,3 +42,6 @@ For package lists, please check the individual modules, as the lists can be long
- nextcloud : Handles synchronization via nextcloud cmd. (requires config.sops.secrets.nextcloud) - nextcloud : Handles synchronization via nextcloud cmd. (requires config.sops.secrets.nextcloud)
- firefox: Enables and configures firefox (extensions and settings) - firefox: Enables and configures firefox (extensions and settings)
- Hyprland: Installs and configures Hyprland with various additional packages - Hyprland: Installs and configures Hyprland with various additional packages
- yazi: Installs yazi and sets custom keybinds
- teams: For the poor souls that have to use this....
- sops: Enables sops-nix

View file

@ -1,20 +1,20 @@
{ pkgs, config, lib, modulesPath, ... }: { pkgs, config, lib, modulesPath, ... }:
let let username = config.conf.username;
username = config.conf.username; in {
in imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
{ boot = {
imports = [ extraModulePackages =
(modulesPath + "/installer/scan/not-detected.nix") [ pkgs.linuxKernel.packages.linux_xanmod_latest.v4l2loopback ];
]; kernelModules = [ "v4l2loopback" ];
};
# Bootloader. # Bootloader.
boot.loader.systemd-boot = { boot.loader.systemd-boot = {
enable = true; enable = true;
configurationLimit = 5; configurationLimit = 5;
}; };
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
boot.plymouth = { boot.plymouth = { enable = true; };
enable = true;
};
# Enable networking # Enable networking
networking.useDHCP = lib.mkDefault true; networking.useDHCP = lib.mkDefault true;
@ -40,9 +40,7 @@ in
options = "--delete-older-than 7d --delete-generations +5"; options = "--delete-older-than 7d --delete-generations +5";
}; };
settings = { settings = {
trusted-users = [ trusted-users = [ username ];
username
];
auto-optimise-store = true; auto-optimise-store = true;
experimental-features = "nix-command flakes"; experimental-features = "nix-command flakes";
@ -51,7 +49,8 @@ in
# Enable sound with pipewire. # Enable sound with pipewire.
hardware.pulseaudio.enable = false; hardware.pulseaudio.enable = false;
hardware.cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.${config.conf.cpu}.updateMicrocode =
lib.mkDefault config.hardware.enableRedistributableFirmware;
services.fstrim.enable = lib.mkDefault true; services.fstrim.enable = lib.mkDefault true;
security.rtkit.enable = true; security.rtkit.enable = true;
@ -68,55 +67,48 @@ in
}; };
boot.kernelPackages = config.conf.kernel; boot.kernelPackages = config.conf.kernel;
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.availableKernelModules =
boot.kernelParams = [ [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
"resume=\"PARTLABEL=SWAP\"" boot.kernelParams = [ ''resume="PARTLABEL=SWAP"'' ]
] ++ config.conf.boot_params; ++ config.conf.boot_params;
# allows user change later on # allows user change later on
users.mutableUsers = true; users.mutableUsers = true;
users.users.${username} = { users.users.${username} = {
isNormalUser = true; isNormalUser = true;
description = username; description = username;
extraGroups = [ "networkmanager" "wheel" "gamemode" "docker" "vboxusers" ]; extraGroups = [
packages = with pkgs; [ "networkmanager"
home-manager "wheel"
xdg-desktop-portal-gtk "gamemode"
"docker"
"vboxusers"
"video"
"audio"
]; ];
packages = with pkgs; [ home-manager xdg-desktop-portal-gtk ];
# this password will only last for the first login # this password will only last for the first login
# e.g. login, then change to whatever else, this also ensures no public hash is available # e.g. login, then change to whatever else, this also ensures no public hash is available
password = "firstlogin"; password = "firstlogin";
}; };
fileSystems."/" = fileSystems."/" = {
{
device = "/dev/disk/by-label/ROOT"; device = "/dev/disk/by-label/ROOT";
fsType = "btrfs"; fsType = "btrfs";
options = [ options = [ "noatime" "nodiratime" "discard" ];
"noatime"
"nodiratime"
"discard"
];
}; };
fileSystems."/boot" = fileSystems."/boot" = {
{
device = "/dev/disk/by-label/BOOT"; device = "/dev/disk/by-label/BOOT";
fsType = "vfat"; fsType = "vfat";
options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ];
}; };
fileSystems."/home" = fileSystems."/home" = {
{
device = "/dev/disk/by-label/HOME"; device = "/dev/disk/by-label/HOME";
fsType = "btrfs"; fsType = "btrfs";
options = [ options = [ "noatime" "nodiratime" "discard" ];
"noatime"
"nodiratime"
"discard"
];
}; };
swapDevices = swapDevices = [{ device = "/dev/disk/by-label/SWAP"; }];
[{ device = "/dev/disk/by-label/SWAP"; }];
} }

View file

@ -1,7 +1 @@
{ { imports = [ ./env.nix ./xkb_layout.nix ./common_hardware.nix ]; }
imports = [
./env.nix
./xkb_layout.nix
./common_hardware.nix
];
}

View file

@ -1,6 +1,7 @@
{ pkgs, config, ... }: { { pkgs, config, ... }: {
environment.variables = { environment.variables = {
GSETTINGS_SCHEMA_DIR = "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; GSETTINGS_SCHEMA_DIR =
"${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}";
NEOVIDE_MAXIMIZED = "0"; NEOVIDE_MAXIMIZED = "0";
GPG_TTY = "$(tty)"; GPG_TTY = "$(tty)";
EDITOR = "neovide --no-fork"; EDITOR = "neovide --no-fork";

View file

@ -10,8 +10,7 @@ let
key <AD07> { [ u, U, udiaeresis, Udiaeresis ] }; key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
}; };
''; '';
in in {
{
environment.systemPackages = [ pkgs.xorg.xkbcomp ]; environment.systemPackages = [ pkgs.xorg.xkbcomp ];
services.xserver.xkb.extraLayouts.dashie = { services.xserver.xkb.extraLayouts.dashie = {
description = "US layout with 'umlaut'"; description = "US layout with 'umlaut'";

108
flake.lock generated
View file

@ -40,11 +40,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1723920171, "lastModified": 1724273991,
"narHash": "sha256-dVCMrAe+D/5S91erhwQj2DSzHOVzAanWqoy+vPWB9DY=", "narHash": "sha256-+aUSOXKGpS5CRm1oTitgNAr05ThQNbKIXalZHl3nC6Y=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "aquamarine", "repo": "aquamarine",
"rev": "71d49670fe246cdaff4860b0effba0ab9f163b72", "rev": "9a3161ad4c78dc420d1cbb3aae638222608c7de4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -218,11 +218,11 @@
"nixvim": "nixvim" "nixvim": "nixvim"
}, },
"locked": { "locked": {
"lastModified": 1724091718, "lastModified": 1724498597,
"narHash": "sha256-v5gx+y+cVEk1e0QsVVVhoINd3L+y2UW9XRr7/6jjORo=", "narHash": "sha256-rq3CS7CpkC5lLn/eDqmftyA2C7McUm+sYGUMpH2oJU4=",
"owner": "DashieTM", "owner": "DashieTM",
"repo": "DashVim", "repo": "DashVim",
"rev": "b319fb44c1095a42c50ec1297f051ce6311c21fa", "rev": "02e646467e4454633a7d248dfda7a7a7ecb4bf6b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -656,6 +656,27 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils_9": {
"inputs": {
"systems": [
"stylix",
"systems"
]
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"fromYaml": { "fromYaml": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -790,11 +811,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1723986931, "lastModified": 1724435763,
"narHash": "sha256-Fy+KEvDQ+Hc8lJAV3t6leXhZJ2ncU5/esxkgt3b8DEY=", "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "2598861031b78aadb4da7269df7ca9ddfc3e1671", "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -884,11 +905,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1723969407, "lastModified": 1724442134,
"narHash": "sha256-COChiv/1EsfN0aVQcDBPXqNR/T5sUXtalsuO1RGvwcY=", "narHash": "sha256-RpA3GmcBvd6DLssIWfYKdDfiumLv8w4KIhDaI+//6ls=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "1006663b6eaa55149e9a21aa8a34e41c85eb08ca", "rev": "688fe5c14781c63a1db23d4d02bf239283068ff6",
"revCount": 5103, "revCount": 5131,
"submodules": true, "submodules": true,
"type": "git", "type": "git",
"url": "https://github.com/hyprwm/Hyprland" "url": "https://github.com/hyprwm/Hyprland"
@ -942,11 +963,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1721324361, "lastModified": 1724174162,
"narHash": "sha256-BiJKO0IIdnSwHQBSrEJlKlFr753urkLE48wtt0UhNG4=", "narHash": "sha256-fOOBLwil6M9QWMCiSULwjMQzrXhHXUnEqmjHX5ZHeVI=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprlang", "repo": "hyprlang",
"rev": "adbefbf49664a6c2c8bf36b6487fd31e3eb68086", "rev": "16e5c9465f04477d8a3dd48a0a26bf437986336c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1368,11 +1389,11 @@
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1723637854, "lastModified": 1724224976,
"narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1414,11 +1435,11 @@
}, },
"nixpkgs_7": { "nixpkgs_7": {
"locked": { "locked": {
"lastModified": 1723637854, "lastModified": 1724224976,
"narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=",
"owner": "NixOs", "owner": "NixOs",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1488,11 +1509,11 @@
}, },
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1723992327, "lastModified": 1724486206,
"narHash": "sha256-w0DhauBqGC7zBlsm0i0IXVvhBGqBvsJPGnc5b9jffvA=", "narHash": "sha256-AktI2GKW4DnVwj3WS+mTmYjtL2qug8H46IN0Rtf4O+Q=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nur", "repo": "nur",
"rev": "adee26fc0c486560152c814b963ae27851eef658", "rev": "8feee883ff50c836e711bb7e08f91b34f31feb84",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1844,11 +1865,11 @@
}, },
"stable": { "stable": {
"locked": { "locked": {
"lastModified": 1723688146, "lastModified": 1724316499,
"narHash": "sha256-sqLwJcHYeWLOeP/XoLwAtYjr01TISlkOfz+NG82pbdg=", "narHash": "sha256-Qb9MhKBUTCfWg/wqqaxt89Xfi6qTD3XpTzQ9eXi3JmE=",
"owner": "NixOs", "owner": "NixOs",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c3d4ac725177c030b1e289015989da2ad9d56af0", "rev": "797f7dc49e0bc7fab4b57c021cdf68f595e47841",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1868,16 +1889,18 @@
"base16-tmux": "base16-tmux", "base16-tmux": "base16-tmux",
"base16-vim": "base16-vim", "base16-vim": "base16-vim",
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_2",
"flake-utils": "flake-utils_9",
"gnome-shell": "gnome-shell", "gnome-shell": "gnome-shell",
"home-manager": "home-manager_3", "home-manager": "home-manager_3",
"nixpkgs": "nixpkgs_22" "nixpkgs": "nixpkgs_22",
"systems": "systems_11"
}, },
"locked": { "locked": {
"lastModified": 1723834469, "lastModified": 1724444244,
"narHash": "sha256-PkJTr9DWBQcR5Ru1fJpG80dtw0MLSxAZlKnhHHFAGIA=", "narHash": "sha256-fH1lyJvJjUhZ8xMlmiI18EZNzodDSe74rFuwlZDL0aQ=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "6858d08ed012bc6491cc92c13142104e56badf31", "rev": "d042af478ce87e188139480922a3085218194106",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1916,6 +1939,21 @@
"type": "github" "type": "github"
} }
}, },
"systems_11": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": { "systems_2": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1681028828,
@ -2075,11 +2113,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1722365976, "lastModified": 1724073926,
"narHash": "sha256-Khdm+mDzYA//XaU0M+hftod+rKr5q9SSHSEuiQ0/9ow=", "narHash": "sha256-nWlUL43jOFHf+KW6Hqrx+W/r1XdXuDyb0wC/SrHsOu4=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland", "repo": "xdg-desktop-portal-hyprland",
"rev": "7f2a77ddf60390248e2a3de2261d7102a13e5341", "rev": "a08ecbbf33598924e93542f737fc6169a26b481e",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -1,14 +1,11 @@
{ {
description = "Dashie dots"; description = "Dashie dots";
inputs = inputs = {
{
nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable";
stable.url = "github:NixOs/nixpkgs/nixos-24.05"; stable.url = "github:NixOs/nixpkgs/nixos-24.05";
nix-flatpak = { nix-flatpak = { url = "github:gmodena/nix-flatpak"; };
url = "github:gmodena/nix-flatpak";
};
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
@ -26,7 +23,8 @@
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
ironbar = { ironbar = {
url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; url =
"github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048";
}; };
stylix.url = "github:danth/stylix"; stylix.url = "github:danth/stylix";
@ -53,26 +51,24 @@
let let
stable = import inputs.stable { stable = import inputs.stable {
system = "x86_64-linux"; system = "x86_64-linux";
config = { config = { allowUnfree = true; };
allowUnfree = true;
};
}; };
pkgs = import inputs.nixpkgs { pkgs = import inputs.nixpkgs {
system = "x86_64-linux"; system = "x86_64-linux";
overlays = [ overlays = [ inputs.nur.overlay ];
inputs.nur.overlay
];
config = { config = {
permittedInsecurePackages = [ "olm-3.2.16" ];
allowUnfree = true; allowUnfree = true;
}; };
}; };
dashielib = import ./lib { inherit inputs pkgs; }; dashielib = import ./lib { inherit inputs pkgs; };
in in {
{ nixosConfigurations =
nixosConfigurations = (dashielib.build_systems [ "marmo" "overheating" "spaceship" ]) // { (dashielib.build_systems [ "marmo" "overheating" "spaceship" ]) // {
server = inputs.stable.lib.nixosSystem { server = inputs.stable.lib.nixosSystem {
specialArgs = { specialArgs = {
inherit inputs; pkgs = stable; inherit inputs;
pkgs = stable;
}; };
modules = [ modules = [
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops

View file

@ -1,7 +1,5 @@
{ config, ... }: { { config, ... }: {
imports = [ imports = [ ../../modules ];
../../modules
];
# variables for system # variables for system
conf = { conf = {
monitor = "DP-1"; monitor = "DP-1";
@ -22,17 +20,13 @@
amdgpu.enable = true; amdgpu.enable = true;
kde_connect.enable = true; kde_connect.enable = true;
xone.enable = true; xone.enable = true;
greetd = { greetd = { resolution = "3440x1440@180"; };
resolution = "3440x1440@180";
};
nextcloud = { nextcloud = {
synclist = [ synclist = [{
{
name = "pw_sync"; name = "pw_sync";
remote = "/PWs"; remote = "/PWs";
local = "/home/${config.conf.username}/Music"; local = "/home/${config.conf.username}/Music";
} }];
];
}; };
}; };
} }

View file

@ -1,15 +1,14 @@
{ config, ... }: { { config, ... }: {
imports = [ imports = [ ../../modules ];
../../modules
];
conf = { conf = {
monitor = "eDP-1"; monitor = "eDP-1";
scale = "2.0"; scale = "2.0";
hostname = "overheating"; hostname = "overheating";
boot_params = [ "rtc_cmos.use_acpi_alarm=1" ]; boot_params = [ "rtc_cmos.use_acpi_alarm=1" ];
ironbar.modules = [ ironbar.modules = [{
{ type = "upower"; class = "memory-usage"; } type = "upower";
]; class = "memory-usage";
}];
}; };
mods = { mods = {
stylix.colorscheme = "catppuccin-mocha"; stylix.colorscheme = "catppuccin-mocha";
@ -27,9 +26,7 @@
kde_connect.enable = true; kde_connect.enable = true;
bluetooth.enable = true; bluetooth.enable = true;
acpid.enable = true; acpid.enable = true;
greetd = { greetd = { resolution = "3440x1440@180"; };
resolution = "3440x1440@180";
};
nextcloud = { nextcloud = {
synclist = [ synclist = [
{ {

View file

@ -12,9 +12,8 @@ let
echo kernel/firmware/acpi/ssdt6.aml | bsdcpio -v -o -H newc -R 0:0 > $out/lenotrolli-ssdt.img echo kernel/firmware/acpi/ssdt6.aml | bsdcpio -v -o -H newc -R 0:0 > $out/lenotrolli-ssdt.img
''; '';
}; };
in
{ in {
boot.kernelParams = [ "mem_sleep_default=deep" ]; boot.kernelParams = [ "mem_sleep_default=deep" ];
boot.initrd.prepend = [ "${patched_ssdt}/lenotrolli-ssdt.img" ]; boot.initrd.prepend = [ "${patched_ssdt}/lenotrolli-ssdt.img" ];
} }

View file

@ -1,5 +1,4 @@
{ pkgs, ... }: { pkgs, ... }: {
{
hardware.firmware = [ hardware.firmware = [
( (
# lenovo is such a good manufacturer!!1!11! # lenovo is such a good manufacturer!!1!11!
@ -12,7 +11,6 @@
cp ${./firmware/TAS2XXX38BB.bin} $out/lib/firmware/TAS2XXX38BB.bin cp ${./firmware/TAS2XXX38BB.bin} $out/lib/firmware/TAS2XXX38BB.bin
cp ${./firmware/TIAS2781RCA4.bin} $out/lib/firmware/TIAS2781RCA4.bin cp ${./firmware/TIAS2781RCA4.bin} $out/lib/firmware/TIAS2781RCA4.bin
''; '';
} })
)
]; ];
} }

View file

@ -1,9 +1,5 @@
{ {
# special hardware modules # special hardware modules
# mostly to fix firmare and dsts # mostly to fix firmare and dsts
imports = imports = [ ./dsdt.nix ./firmware.nix ];
[
./dsdt.nix
./firmware.nix
];
} }

View file

@ -16,8 +16,7 @@ let
add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Origin *;
return 200 '${builtins.toJSON data}'; return 200 '${builtins.toJSON data}';
''; '';
in in {
{
networking.hostName = "server"; networking.hostName = "server";
networking.domain = "dashie.org"; networking.domain = "dashie.org";
imports = [ imports = [
@ -45,9 +44,7 @@ in
pkgs.ntfs3g pkgs.ntfs3g
pkgs.rsync pkgs.rsync
]; ];
openssh.authorizedKeys.keyFiles = [ openssh.authorizedKeys.keyFiles = [ /home/dashie/server.pub ];
/home/dashie/server.pub
];
}; };
services.openssh = { services.openssh = {
@ -68,28 +65,25 @@ in
enable_registration_without_verification = true; enable_registration_without_verification = true;
suppress_key_server_warning = true; suppress_key_server_warning = true;
max_upload_size = "1G"; max_upload_size = "1G";
listeners = [ listeners = [{
{
port = 8008; port = 8008;
bind_addresses = [ "::1" ]; bind_addresses = [ "::1" ];
type = "http"; type = "http";
tls = false; tls = false;
x_forwarded = true; x_forwarded = true;
resources = [ resources = [{
{
names = [ "client" "federation" ]; names = [ "client" "federation" ];
compress = true; compress = true;
} }];
]; }];
}
];
}; };
services.mautrix-whatsapp-dashie.settings = { services.mautrix-whatsapp-dashie.settings = {
appservice = { appservice = {
id = "whatsapp"; id = "whatsapp";
database = { database = {
type = "postgres"; type = "postgres";
uri = "postgresql:///mautrix_whatsapp?host=/run/postgresql&sslmode=disable&user=mautrix_whatsapp&password=${mautrix_whatsapp_pw}"; uri =
"postgresql:///mautrix_whatsapp?host=/run/postgresql&sslmode=disable&user=mautrix_whatsapp&password=${mautrix_whatsapp_pw}";
}; };
}; };
bridge = { bridge = {
@ -98,7 +92,8 @@ in
default = true; default = true;
required = true; required = true;
}; };
displayname_template = "{{if .BusinessName}}{{.BusinessName}}{{else if .PushName}}{{.PushName}}{{else}}{{.JID}}{{end}}"; displayname_template =
"{{if .BusinessName}}{{.BusinessName}}{{else if .PushName}}{{.PushName}}{{else}}{{.JID}}{{end}}";
permissions = { permissions = {
"@fabio.lenherr:matrix.org" = "admin"; "@fabio.lenherr:matrix.org" = "admin";
"@dashie:matrix.dashie.org" = "admin"; "@dashie:matrix.dashie.org" = "admin";
@ -110,7 +105,8 @@ in
id = "signal"; id = "signal";
database = { database = {
type = "postgres"; type = "postgres";
uri = "postgresql:///mautrix_signal?host=/run/postgresql&sslmode=disable&user=mautrix_signal&password=${mautrix_signal_pw}"; uri =
"postgresql:///mautrix_signal?host=/run/postgresql&sslmode=disable&user=mautrix_signal&password=${mautrix_signal_pw}";
}; };
}; };
bridge = { bridge = {
@ -119,7 +115,8 @@ in
default = true; default = true;
required = true; required = true;
}; };
displayname_template = "{{or .ProfileName .PhoneNumber \"Unknown user\"}}"; displayname_template =
''{{or .ProfileName .PhoneNumber "Unknown user"}}'';
permissions = { permissions = {
"@fabio.lenherr:matrix.org" = "admin"; "@fabio.lenherr:matrix.org" = "admin";
"@dashie:matrix.dashie.org" = "admin"; "@dashie:matrix.dashie.org" = "admin";
@ -131,11 +128,13 @@ in
id = "discord"; id = "discord";
database = { database = {
type = "postgres"; type = "postgres";
uri = "postgresql:///mautrix_discord?host=/run/postgresql&sslmode=disable&user=mautrix_discord&password=${mautrix_discord_pw}"; uri =
"postgresql:///mautrix_discord?host=/run/postgresql&sslmode=disable&user=mautrix_discord&password=${mautrix_discord_pw}";
}; };
}; };
bridge = { bridge = {
displayname_template = "{{or .GlobalName .Username}}{{if .Bot}} (bot){{end}}"; displayname_template =
"{{or .GlobalName .Username}}{{if .Bot}} (bot){{end}}";
permissions = { permissions = {
"@fabio.lenherr:matrix.org" = "admin"; "@fabio.lenherr:matrix.org" = "admin";
"@dashie:matrix.dashie.org" = "admin"; "@dashie:matrix.dashie.org" = "admin";
@ -154,7 +153,12 @@ in
enableACME = true; enableACME = true;
root = "/var/www/dashie.org/"; root = "/var/www/dashie.org/";
}; };
security.acme.certs."dashie.org".extraDomainNames = [ "cloud.dashie.org" "matrix.dashie.org" "git.dashie.org" "navi.dashie.org" ]; security.acme.certs."dashie.org".extraDomainNames = [
"cloud.dashie.org"
"matrix.dashie.org"
"git.dashie.org"
"navi.dashie.org"
];
services.nginx.virtualHosts."cloud.dashie.org" = { services.nginx.virtualHosts."cloud.dashie.org" = {
addSSL = true; addSSL = true;
enableACME = true; enableACME = true;
@ -172,12 +176,10 @@ in
}; };
services.nginx.virtualHosts."localhost" = { services.nginx.virtualHosts."localhost" = {
listen = [ listen = [{
{
addr = "0.0.0.0"; addr = "0.0.0.0";
port = 8448; port = 8448;
} }];
];
locations."/".proxyPass = "http://[::1]:8008"; locations."/".proxyPass = "http://[::1]:8008";
}; };
@ -187,19 +189,17 @@ in
locations."/".extraConfig = '' locations."/".extraConfig = ''
return 404; return 404;
''; '';
locations."/_matrix" = { locations."/_matrix" = { proxyPass = "http://[::1]:8008"; };
proxyPass = "http://[::1]:8008";
};
locations."/_synapse/client".proxyPass = "http://[::1]:8008"; locations."/_synapse/client".proxyPass = "http://[::1]:8008";
locations."= /.well-known/matrix/server".extraConfig = mkWellKnown serverConfig; locations."= /.well-known/matrix/server".extraConfig =
mkWellKnown serverConfig;
# This is usually needed for homeserver discovery (from e.g. other Matrix clients). # This is usually needed for homeserver discovery (from e.g. other Matrix clients).
# Further reference can be found in the upstream docs at # Further reference can be found in the upstream docs at
# https://spec.matrix.org/latest/client-server-api/#getwell-knownmatrixclient # https://spec.matrix.org/latest/client-server-api/#getwell-knownmatrixclient
locations."= /.well-known/matrix/client".extraConfig = mkWellKnown clientConfig; locations."= /.well-known/matrix/client".extraConfig =
extraConfig = mkWellKnown clientConfig;
"client_max_body_size 2G;" extraConfig = "client_max_body_size 2G;";
;
}; };
services.nextcloud.enable = true; services.nextcloud.enable = true;
@ -325,9 +325,7 @@ in
system.stateVersion = "24.05"; system.stateVersion = "24.05";
nix = { nix = {
settings = { settings = { experimental-features = "nix-command flakes"; };
experimental-features = "nix-command flakes";
};
extraOptions = '' extraOptions = ''
!include ${config.sops.secrets.access.path} !include ${config.sops.secrets.access.path}
''; '';

View file

@ -1,47 +1,40 @@
{ config, lib, modulesPath, ... }: { { config, lib, modulesPath, ... }: {
imports = [ imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.availableKernelModules =
[ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ]; boot.kernelModules = [ ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" = {
{
device = "/dev/disk/by-uuid/678ecbd1-a5ce-4530-a959-ffb48f76aa43"; device = "/dev/disk/by-uuid/678ecbd1-a5ce-4530-a959-ffb48f76aa43";
fsType = "btrfs"; fsType = "btrfs";
}; };
fileSystems."/var/lib/nextcloud" = fileSystems."/var/lib/nextcloud" = {
{
device = "/dev/disk/by-label/nextcloud"; device = "/dev/disk/by-label/nextcloud";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/mnt/dump3" = fileSystems."/mnt/dump3" = {
{
device = "/dev/disk/by-label/backup"; device = "/dev/disk/by-label/backup";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/mnt/dump1" = fileSystems."/mnt/dump1" = {
{
device = "/dev/disk/by-uuid/CC60532860531912"; device = "/dev/disk/by-uuid/CC60532860531912";
fsType = "ntfs-3g"; fsType = "ntfs-3g";
options = [ "rw" "uid=1000" ]; options = [ "rw" "uid=1000" ];
}; };
fileSystems."/mnt/dump2" = fileSystems."/mnt/dump2" = {
{
device = "/dev/disk/by-uuid/F46896AE68966EDC"; device = "/dev/disk/by-uuid/F46896AE68966EDC";
fsType = "ntfs-3g"; fsType = "ntfs-3g";
options = [ "rw" "uid=1000" ]; options = [ "rw" "uid=1000" ];
}; };
fileSystems."/boot" = fileSystems."/boot" = {
{
device = "/dev/disk/by-uuid/B7BE-AB1C"; device = "/dev/disk/by-uuid/B7BE-AB1C";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ]; options = [ "fmask=0022" "dmask=0022" ];
@ -58,5 +51,6 @@
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode =
lib.mkDefault config.hardware.enableRedistributableFirmware;
} }

View file

@ -1,15 +1,13 @@
# derived from mautrix signal on nixpkgs -> https://github.com/NixOS/nixpkgs/blob/nixos-24.05/pkgs/servers/mautrix-signal/default.nix#L27 # derived from mautrix signal on nixpkgs -> https://github.com/NixOS/nixpkgs/blob/nixos-24.05/pkgs/servers/mautrix-signal/default.nix#L27
{ lib { lib, config, pkgs, ... }:
, config
, pkgs
, ...
}:
let let
cfg = config.services.mautrix-discord-dashie; cfg = config.services.mautrix-discord-dashie;
dataDir = "/var/lib/mautrix-discord"; dataDir = "/var/lib/mautrix-discord";
registrationFile = "${dataDir}/discord-registration.yaml"; registrationFile = "${dataDir}/discord-registration.yaml";
settingsFile = "${dataDir}/config.yaml"; settingsFile = "${dataDir}/config.yaml";
settingsFileUnsubstituted = settingsFormat.generate "mautrix-discord-config-unsubstituted.json" cfg.settings; settingsFileUnsubstituted =
settingsFormat.generate "mautrix-discord-config-unsubstituted.json"
cfg.settings;
settingsFormat = pkgs.formats.json { }; settingsFormat = pkgs.formats.json { };
appservicePort = 29334; appservicePort = 29334;
@ -33,7 +31,8 @@ let
}; };
bridge = { bridge = {
username_template = "discord_{{.}}"; username_template = "discord_{{.}}";
displayname_template = "{{or .ProfileName .PhoneNumber \"Unknown user\"}}"; displayname_template =
''{{or .ProfileName .PhoneNumber "Unknown user"}}'';
double_puppet_server_map = { }; double_puppet_server_map = { };
login_shared_secret_map = { }; login_shared_secret_map = { };
command_prefix = "!discord"; command_prefix = "!discord";
@ -50,10 +49,10 @@ let
}; };
}; };
in in {
{
options.services.mautrix-discord-dashie = { options.services.mautrix-discord-dashie = {
enable = lib.mkEnableOption "mautrix-discord, a Matrix-Discord puppeting bridge."; enable =
lib.mkEnableOption "mautrix-discord, a Matrix-Discord puppeting bridge.";
settings = lib.mkOption { settings = lib.mkOption {
apply = lib.recursiveUpdate defaultConfig; apply = lib.recursiveUpdate defaultConfig;
@ -76,9 +75,7 @@ in
ephemeral_events = false; ephemeral_events = false;
}; };
bridge = { bridge = {
history_sync = { history_sync = { request_full_sync = true; };
request_full_sync = true;
};
private_chat_portal_meta = true; private_chat_portal_meta = true;
mute_bridging = true; mute_bridging = true;
encryption = { encryption = {
@ -86,12 +83,8 @@ in
default = true; default = true;
require = true; require = true;
}; };
provisioning = { provisioning = { shared_secret = "disable"; };
shared_secret = "disable"; permissions = { "example.com" = "user"; };
};
permissions = {
"example.com" = "user";
};
}; };
}; };
}; };
@ -112,8 +105,10 @@ in
serviceDependencies = lib.mkOption { serviceDependencies = lib.mkOption {
type = with lib.types; listOf str; type = with lib.types; listOf str;
default = (lib.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) default = (lib.optional config.services.matrix-synapse.enable
++ (lib.optional config.services.matrix-conduit.enable "conduit.service"); config.services.matrix-synapse.serviceUnit)
++ (lib.optional config.services.matrix-conduit.enable
"conduit.service");
defaultText = lib.literalExpression '' defaultText = lib.literalExpression ''
(optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) (optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit)
++ (optional config.services.matrix-conduit.enable "conduit.service") ++ (optional config.services.matrix-conduit.enable "conduit.service")
@ -155,13 +150,14 @@ in
}; };
# Note: this is defined here to avoid the docs depending on `config` # Note: this is defined here to avoid the docs depending on `config`
services.mautrix-discord-dashie.settings.homeserver = optOneOf (with config.services; [ services.mautrix-discord-dashie.settings.homeserver = optOneOf
(lib.mkIf matrix-synapse.enable (mkDefaults { (with config.services; [
domain = matrix-synapse.settings.server_name; (lib.mkIf matrix-synapse.enable
})) (mkDefaults { domain = matrix-synapse.settings.server_name; }))
(lib.mkIf matrix-conduit.enable (mkDefaults { (lib.mkIf matrix-conduit.enable (mkDefaults {
domain = matrix-conduit.settings.global.server_name; domain = matrix-conduit.settings.global.server_name;
address = "http://localhost:${toString matrix-conduit.settings.global.port}"; address =
"http://localhost:${toString matrix-conduit.settings.global.port}";
})) }))
]); ]);
@ -241,7 +237,7 @@ in
SystemCallErrorNumber = "EPERM"; SystemCallErrorNumber = "EPERM";
SystemCallFilter = [ "@system-service" ]; SystemCallFilter = [ "@system-service" ];
Type = "simple"; Type = "simple";
UMask = 0027; UMask = 27;
}; };
restartTriggers = [ settingsFileUnsubstituted ]; restartTriggers = [ settingsFileUnsubstituted ];
}; };

View file

@ -1,15 +1,13 @@
# derived from mautrix signal on nixpkgs -> https://github.com/NixOS/nixpkgs/blob/nixos-24.05/pkgs/servers/mautrix-signal/default.nix#L27 # derived from mautrix signal on nixpkgs -> https://github.com/NixOS/nixpkgs/blob/nixos-24.05/pkgs/servers/mautrix-signal/default.nix#L27
{ lib { lib, config, pkgs, ... }:
, config
, pkgs
, ...
}:
let let
cfg = config.services.mautrix-whatsapp-dashie; cfg = config.services.mautrix-whatsapp-dashie;
dataDir = "/var/lib/mautrix-whatsapp"; dataDir = "/var/lib/mautrix-whatsapp";
registrationFile = "${dataDir}/whatsapp-registration.yaml"; registrationFile = "${dataDir}/whatsapp-registration.yaml";
settingsFile = "${dataDir}/config.yaml"; settingsFile = "${dataDir}/config.yaml";
settingsFileUnsubstituted = settingsFormat.generate "mautrix-whatsapp-config-unsubstituted.json" cfg.settings; settingsFileUnsubstituted =
settingsFormat.generate "mautrix-whatsapp-config-unsubstituted.json"
cfg.settings;
settingsFormat = pkgs.formats.json { }; settingsFormat = pkgs.formats.json { };
appservicePort = 29318; appservicePort = 29318;
@ -33,7 +31,8 @@ let
}; };
bridge = { bridge = {
username_template = "whatsapp_{{.}}"; username_template = "whatsapp_{{.}}";
displayname_template = "{{or .ProfileName .PhoneNumber \"Unknown user\"}}"; displayname_template =
''{{or .ProfileName .PhoneNumber "Unknown user"}}'';
double_puppet_server_map = { }; double_puppet_server_map = { };
login_shared_secret_map = { }; login_shared_secret_map = { };
command_prefix = "!whatsapp"; command_prefix = "!whatsapp";
@ -50,10 +49,10 @@ let
}; };
}; };
in in {
{
options.services.mautrix-whatsapp-dashie = { options.services.mautrix-whatsapp-dashie = {
enable = lib.mkEnableOption "mautrix-whatsapp, a Matrix-Whatsapp puppeting bridge."; enable = lib.mkEnableOption
"mautrix-whatsapp, a Matrix-Whatsapp puppeting bridge.";
settings = lib.mkOption { settings = lib.mkOption {
apply = lib.recursiveUpdate defaultConfig; apply = lib.recursiveUpdate defaultConfig;
@ -76,9 +75,7 @@ in
ephemeral_events = false; ephemeral_events = false;
}; };
bridge = { bridge = {
history_sync = { history_sync = { request_full_sync = true; };
request_full_sync = true;
};
private_chat_portal_meta = true; private_chat_portal_meta = true;
mute_bridging = true; mute_bridging = true;
encryption = { encryption = {
@ -86,12 +83,8 @@ in
default = true; default = true;
require = true; require = true;
}; };
provisioning = { provisioning = { shared_secret = "disable"; };
shared_secret = "disable"; permissions = { "example.com" = "user"; };
};
permissions = {
"example.com" = "user";
};
}; };
}; };
}; };
@ -112,8 +105,10 @@ in
serviceDependencies = lib.mkOption { serviceDependencies = lib.mkOption {
type = with lib.types; listOf str; type = with lib.types; listOf str;
default = (lib.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) default = (lib.optional config.services.matrix-synapse.enable
++ (lib.optional config.services.matrix-conduit.enable "conduit.service"); config.services.matrix-synapse.serviceUnit)
++ (lib.optional config.services.matrix-conduit.enable
"conduit.service");
defaultText = lib.literalExpression '' defaultText = lib.literalExpression ''
(optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) (optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit)
++ (optional config.services.matrix-conduit.enable "conduit.service") ++ (optional config.services.matrix-conduit.enable "conduit.service")
@ -155,13 +150,14 @@ in
}; };
# Note: this is defined here to avoid the docs depending on `config` # Note: this is defined here to avoid the docs depending on `config`
services.mautrix-whatsapp-dashie.settings.homeserver = optOneOf (with config.services; [ services.mautrix-whatsapp-dashie.settings.homeserver = optOneOf
(lib.mkIf matrix-synapse.enable (mkDefaults { (with config.services; [
domain = matrix-synapse.settings.server_name; (lib.mkIf matrix-synapse.enable
})) (mkDefaults { domain = matrix-synapse.settings.server_name; }))
(lib.mkIf matrix-conduit.enable (mkDefaults { (lib.mkIf matrix-conduit.enable (mkDefaults {
domain = matrix-conduit.settings.global.server_name; domain = matrix-conduit.settings.global.server_name;
address = "http://localhost:${toString matrix-conduit.settings.global.port}"; address =
"http://localhost:${toString matrix-conduit.settings.global.port}";
})) }))
]); ]);
@ -241,7 +237,7 @@ in
SystemCallErrorNumber = "EPERM"; SystemCallErrorNumber = "EPERM";
SystemCallFilter = [ "@system-service" ]; SystemCallFilter = [ "@system-service" ];
Type = "simple"; Type = "simple";
UMask = 0027; UMask = 27;
}; };
restartTriggers = [ settingsFileUnsubstituted ]; restartTriggers = [ settingsFileUnsubstituted ];
}; };

View file

@ -1,11 +1,7 @@
{ config, ... }: { config, ... }:
let let username = config.conf.username;
username = config.conf.username; in {
in imports = [ ../../modules ];
{
imports = [
../../modules
];
# config variables # config variables
conf = { conf = {
@ -14,10 +10,10 @@ in
hostname = "spaceship"; hostname = "spaceship";
}; };
mods = { mods = {
# f to pay respect
teams.enable = true;
coding = { jetbrains = true; }; coding = { jetbrains = true; };
gaming = { gaming = { enable = true; };
enable = true;
};
stylix.colorscheme = "catppuccin-mocha"; stylix.colorscheme = "catppuccin-mocha";
hyprland = { hyprland = {
monitor = [ monitor = [
@ -63,21 +59,14 @@ in
''; '';
extra_autostart = [ "flatpak run com.core447.StreamController -b" ]; extra_autostart = [ "flatpak run com.core447.StreamController -b" ];
}; };
extraDrives = [ extraDrives = [{
{
name = "drive2"; name = "drive2";
drive = drive = {
{
device = "/dev/disk/by-label/DRIVE2"; device = "/dev/disk/by-label/DRIVE2";
fsType = "ext4"; fsType = "ext4";
options = [ options = [ "noatime" "nodiratime" "discard" ];
"noatime"
"nodiratime"
"discard"
];
}; };
} }];
];
virtualbox.enable = true; virtualbox.enable = true;
kde_connect.enable = true; kde_connect.enable = true;
xone.enable = true; xone.enable = true;
@ -88,9 +77,7 @@ in
enable = true; enable = true;
rocm.enable = true; rocm.enable = true;
}; };
greetd = { greetd = { resolution = "3440x1440@180"; };
resolution = "3440x1440@180";
};
nextcloud = { nextcloud = {
synclist = [ synclist = [
{ {

View file

@ -1,37 +0,0 @@
self: { lib
, config
, pkgs
, options
, ...
}:
let
cfg = config.programs.dashvim;
system = pkgs.stdenv.hostPlatform.system;
# dashvim = (import ../lib { inherit system pkgs; inputs = self.inputs; config' = cfg; });
in
{
imports = [ ../modules ];
meta.maintainers = with lib.maintainers; [ DashieTM ];
options.programs.dashnix = with lib; {
enable = mkEnableOption "dashvim";
package = mkOption {
type = with types; nullOr package;
default = dashvim.build_dashvim;
defaultText = literalExpression ''
ReSet.packages.''${pkgs.stdenv.hostPlatform.system}.default
'';
description = mdDoc ''
Package to run
'';
};
};
config = lib.mkIf cfg.enable
(lib.optionalAttrs (options?home.packages)
{
home.packages = lib.optional (cfg.package != null) cfg.package;
} //
lib.optionalAttrs (options?environment.systemPackages) {
environment.systemPackages = lib.optional (cfg.package != null) cfg.package;
});
}

View file

@ -1,24 +1,20 @@
{ inputs, pkgs, ... }: { { inputs, pkgs, ... }: {
build_systems = systems: builtins.listToAttrs (map build_systems = systems:
(name: { builtins.listToAttrs (map (name: {
name = name; name = name;
value = value = let mod = ../hardware/${name}/configuration.nix;
let in inputs.nixpkgs.lib.nixosSystem {
mod = ../hardware/${name}/configuration.nix; specialArgs = { inherit inputs pkgs mod; };
in
inputs.nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs pkgs mod;
};
modules = [ modules = [
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
../base ../base
../programs ../programs
mod mod
] ++ inputs.nixpkgs.lib.optional (builtins.pathExists ../hardware/${name}/${name}.nix) ../hardware/${name}/${name}.nix ] ++ inputs.nixpkgs.lib.optional
(builtins.pathExists ../hardware/${name}/${name}.nix)
../hardware/${name}/${name}.nix
++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod;
}; };
}) }) systems);
systems);
} }

View file

@ -4,7 +4,8 @@
system = lib.mkOption { system = lib.mkOption {
default = "x86_64-linux"; default = "x86_64-linux";
# no fisherprice unix support # no fisherprice unix support
type = with lib.types; (enum [ "x86_64-linux" "aarch64-linux" "aarch64-linux-android" ]); type = with lib.types;
(enum [ "x86_64-linux" "aarch64-linux" "aarch64-linux-android" ]);
example = "aarch64-linux"; example = "aarch64-linux";
description = '' description = ''
System architecture. System architecture.
@ -42,9 +43,10 @@
ironbar = { ironbar = {
modules = lib.mkOption { modules = lib.mkOption {
default = [ ]; default = [ ];
example = [ example = [{
{ type = "upower"; class = "memory-usage"; } type = "upower";
]; class = "memory-usage";
}];
type = with lib.types; listOf attrs; type = with lib.types; listOf attrs;
description = '' description = ''
Adds modules to ironbar. Adds modules to ironbar.
@ -138,10 +140,10 @@
}; };
config = { config = {
conf.kernel = lib.mkIf (config.mods.gaming.enable && config.mods.gaming.kernel) pkgs.linuxPackages_xanmod_latest; conf.kernel =
} // (lib.optionalAttrs (options?system.stateVersion) lib.mkIf (config.mods.gaming.enable && config.mods.gaming.kernel)
{ pkgs.linuxPackages_xanmod_latest;
} // (lib.optionalAttrs (options ? system.stateVersion) {
system.stateVersion = "unstable"; system.stateVersion = "unstable";
} });
);
} }

View file

@ -1,6 +1 @@
{ { imports = [ ./programs ./conf.nix ]; }
imports = [
./programs
./conf.nix
];
}

View file

@ -11,7 +11,8 @@
}; };
}; };
config = lib.mkIf config.mods.acpid.enable (lib.optionalAttrs (options?virtualisation.virtualbox.host) { config = lib.mkIf config.mods.acpid.enable
(lib.optionalAttrs (options ? virtualisation.virtualbox.host) {
services.acpid.enable = true; services.acpid.enable = true;
}); });
} }

View file

@ -21,16 +21,11 @@
}; };
}; };
config = (lib.optionalAttrs (options ? environment.systemPackages) {
config = environment.systemPackages =
(lib.optionalAttrs (options?environment.systemPackages) config.mods.default_base_packages.additional_packages;
{
environment.systemPackages = config.mods.default_base_packages.additional_packages;
} // (lib.mkIf config.mods.default_base_packages.enable } // (lib.mkIf config.mods.default_base_packages.enable
( (lib.optionalAttrs (options ? environment.systemPackages) {
lib.optionalAttrs
(options?environment.systemPackages)
{
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
openssl openssl
dbus dbus
@ -62,9 +57,7 @@
gtk.iconCache.enable = false; gtk.iconCache.enable = false;
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [ cantarell-fonts ];
cantarell-fonts
];
virtualisation = { virtualisation = {
containers.enable = true; containers.enable = true;
@ -77,9 +70,7 @@
services.upower.enable = true; services.upower.enable = true;
services.dbus.enable = true; services.dbus.enable = true;
services.dbus.packages = with pkgs; [ services.dbus.packages = with pkgs; [ gnome2.GConf ];
gnome2.GConf
];
services.avahi = { services.avahi = {
enable = true; enable = true;
nssmdns4 = true; nssmdns4 = true;
@ -91,10 +82,7 @@
${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source
''; '';
programs.nix-ld.enable = true; programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [ programs.nix-ld.libraries = with pkgs; [ jdk zlib ];
jdk
zlib
];
programs.direnv = { programs.direnv = {
package = pkgs.direnv; package = pkgs.direnv;
silent = false; silent = false;

View file

@ -10,7 +10,8 @@
}; };
}; };
config = lib.mkIf config.mods.bluetooth.enable (lib.optionalAttrs (options?hardware.bluetooth) { config = lib.mkIf config.mods.bluetooth.enable
(lib.optionalAttrs (options ? hardware.bluetooth) {
hardware.bluetooth = { hardware.bluetooth = {
enable = true; enable = true;
powerOnBoot = true; powerOnBoot = true;

View file

@ -28,7 +28,8 @@
}; };
}; };
config = lib.mkIf config.mods.coding.enable (lib.optionalAttrs (options?home.packages) { config = lib.mkIf config.mods.coding.enable
(lib.optionalAttrs (options ? home.packages) {
programs.dashvim = lib.mkIf config.mods.coding.dashvim { programs.dashvim = lib.mkIf config.mods.coding.dashvim {
enable = true; enable = true;
colorscheme = config.mods.stylix.colorscheme; colorscheme = config.mods.stylix.colorscheme;
@ -81,16 +82,14 @@
haskellPackages.haskell-language-server haskellPackages.haskell-language-server
#html #html
html-tidy # html-tidy
#json #json
jq jq
nodePackages.vscode-json-languageserver
#css #css
tailwindcss tailwindcss
tailwindcss-language-server tailwindcss-language-server
vscode-langservers-extracted
#editors #editors
neovide neovide
@ -137,6 +136,9 @@
#zig #zig
zig zig
zls zls
tmux
tmate
]; ];
}); });

View file

@ -1,29 +1,32 @@
{ {
imports = [ imports = [
./virtualbox.nix
./kde_connect.nix
./gpu.nix
./xone.nix
./drives.nix
./bluetooth.nix
./acpid.nix ./acpid.nix
./piper.nix
./greetd.nix
./gnome_services.nix
./printing.nix
./layout.nix
./base_packages.nix ./base_packages.nix
./home_packages.nix ./bluetooth.nix
./media.nix
./coding.nix ./coding.nix
./flatpak.nix ./drives.nix
./nextcloud.nix
./starship.nix
./git.nix
./keepassxc.nix
./gaming.nix
./stylix.nix
./firefox.nix ./firefox.nix
./flatpak.nix
./gaming.nix
./git.nix
./gnome_services.nix
./gpu.nix
./greetd.nix
./home_packages.nix
./hyprland ./hyprland
./kde_connect.nix
./keepassxc.nix
./layout.nix
./media.nix
./nextcloud.nix
./piper.nix
./printing.nix
./sops.nix
./starship.nix
./stylix.nix
./teams.nix
./virtualbox.nix
./yazi
./xone.nix
]; ];
} }

View file

@ -19,35 +19,23 @@ let
example = { example = {
device = "/dev/disk/by-label/DRIVE2"; device = "/dev/disk/by-label/DRIVE2";
fsType = "ext4"; fsType = "ext4";
options = [ options = [ "noatime" "nodiratime" "discard" ];
"noatime"
"nodiratime"
"discard"
];
}; };
}; };
}; };
}; };
in in {
{
options.mods = { options.mods = {
extraDrives = extraDrives = lib.mkOption {
lib.mkOption {
default = [ ]; default = [ ];
example = [ example = [{
{
name = "drive2"; name = "drive2";
drive = { drive = {
device = "/dev/disk/by-label/DRIVE2"; device = "/dev/disk/by-label/DRIVE2";
fsType = "ext4"; fsType = "ext4";
options = [ options = [ "noatime" "nodiratime" "discard" ];
"noatime"
"nodiratime"
"discard"
];
}; };
} }];
];
# TODO: how to make this work # TODO: how to make this work
# type = with lib.types; listOf (attrsOf driveModule); # type = with lib.types; listOf (attrsOf driveModule);
type = with lib.types; listOf (attrsOf anything); type = with lib.types; listOf (attrsOf anything);
@ -58,12 +46,9 @@ in
}; };
config = (lib.optionalAttrs (options ? fileSystems) { config = (lib.optionalAttrs (options ? fileSystems) {
fileSystems = builtins.listToAttrs fileSystems = builtins.listToAttrs (map ({ name, drive }: {
(map
({ name, drive }: {
name = "/" + name; name = "/" + name;
value = drive; value = drive;
}) }) config.mods.extraDrives);
config.mods.extraDrives);
}); });
} }

View file

@ -62,6 +62,13 @@
enable = true; enable = true;
policies = config.mods.firefox.configuration; policies = config.mods.firefox.configuration;
profiles.${config.conf.username} = { profiles.${config.conf.username} = {
isDefault = true;
id = 0;
extensions = config.mods.firefox.extensions;
};
profiles."special" = {
isDefault = false;
id = 1;
extensions = config.mods.firefox.extensions; extensions = config.mods.firefox.extensions;
}; };
}; };

View file

@ -14,8 +14,7 @@
}; };
}; };
config = lib.mkIf config.mods.flatpak.enable config = lib.mkIf config.mods.flatpak.enable
(lib.optionalAttrs (options?services.flatpak.remote) (lib.optionalAttrs (options ? services.flatpak.remote) {
{
services.flatpak.remotes = lib.mkOptionDefault [{ services.flatpak.remotes = lib.mkOptionDefault [{
name = "flathub-stable"; name = "flathub-stable";
location = "https://dl.flathub.org/repo/flathub.flatpakrepo"; location = "https://dl.flathub.org/repo/flathub.flatpakrepo";

View file

@ -7,14 +7,7 @@
description = "Enabled gaming related features."; description = "Enabled gaming related features.";
}; };
tools = lib.mkOption { tools = lib.mkOption {
default = with pkgs; [ default = with pkgs; [ gamemode steam lutris wine adwsteamgtk heroic ];
gamemode
steam
lutris
wine
adwsteamgtk
heroic
];
example = [ ]; example = [ ];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = "Install gaming related packages"; description = "Install gaming related packages";
@ -41,7 +34,8 @@
default = true; default = true;
example = false; example = false;
type = lib.types.bool; type = lib.types.bool;
description = "Whether to use GPU performance setting. NOTE: this is at your own risk!"; description =
"Whether to use GPU performance setting. NOTE: this is at your own risk!";
}; };
gpu_device = lib.mkOption { gpu_device = lib.mkOption {
default = 0; default = 0;
@ -59,9 +53,7 @@
programs.gamemode = { programs.gamemode = {
enableRenice = true; enableRenice = true;
settings = { settings = {
general = { general = { governor = "performance"; };
governor = "performance";
};
gpu = lib.mkIf config.mods.gaming.gpu_optimization { gpu = lib.mkIf config.mods.gaming.gpu_optimization {
apply_gpu_optimisations = "accept-responsibility"; apply_gpu_optimisations = "accept-responsibility";
gpu_device = config.mods.gaming.gpu_device; gpu_device = config.mods.gaming.gpu_device;

View file

@ -1,5 +1,4 @@
{ lib, config, options, pkgs, ... }: { lib, config, options, pkgs, ... }: {
{
options.mods.git = { options.mods.git = {
username = lib.mkOption { username = lib.mkOption {
default = "DashieTM"; default = "DashieTM";
@ -16,13 +15,28 @@
ssh_config = lib.mkOption { ssh_config = lib.mkOption {
default = '' default = ''
Host github.com Host github.com
${if (config.sops.secrets?hub.path) then "IdentityFile ${config.sops.secrets.hub.path}" else ""} ${
if (config.sops.secrets ? hub.path) then
"IdentityFile ${config.sops.secrets.hub.path}"
else
""
}
Host gitlab.com Host gitlab.com
${if (config.sops.secrets?lab.path) then "IdentityFile ${config.sops.secrets.lab.path}" else ""} ${
if (config.sops.secrets ? lab.path) then
"IdentityFile ${config.sops.secrets.lab.path}"
else
""
}
Host dashie.org Host dashie.org
${if (config.sops.secrets?dashie.path) then "IdentityFile ${config.sops.secrets.dashie.path}" else ""} ${
if (config.sops.secrets ? dashie.path) then
"IdentityFile ${config.sops.secrets.dashie.path}"
else
""
}
''; '';
example = ''''; example = "";
type = lib.types.lines; type = lib.types.lines;
description = "ssh configuration (keys for git)"; description = "ssh configuration (keys for git)";
}; };
@ -33,12 +47,8 @@
userName = config.mods.git.username; userName = config.mods.git.username;
userEmail = config.mods.git.email; userEmail = config.mods.git.email;
extraConfig = { extraConfig = {
merge = { merge = { tool = "nvimdiff"; };
tool = "nvimdiff"; diff = { tool = "nvimdiff"; };
};
diff = {
tool = "nvimdiff";
};
}; };
}; };
home.file.".ssh/config".text = config.mods.git.ssh_config; home.file.".ssh/config".text = config.mods.git.ssh_config;

View file

@ -11,24 +11,17 @@
}; };
}; };
config = lib.mkIf config.mods.gnome_services.enable (lib.optionalAttrs (options?services.gnome.gnome-keyring) config = lib.mkIf config.mods.gnome_services.enable
{ (lib.optionalAttrs (options ? services.gnome.gnome-keyring) {
programs.dconf.enable = true; programs.dconf.enable = true;
services = { services = {
# needed for GNOME services outside of GNOME Desktop # needed for GNOME services outside of GNOME Desktop
dbus.packages = with pkgs; [ dbus.packages = with pkgs; [ gcr gnome.gnome-settings-daemon ];
gcr
gnome.gnome-settings-daemon
];
gnome.gnome-keyring.enable = true; gnome.gnome-keyring.enable = true;
gvfs.enable = true; gvfs.enable = true;
}; };
} // lib.optionalAttrs (options ? home.packages) { } // lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ home.packages = with pkgs; [ nautilus sushi nautilus-python ];
nautilus
sushi
nautilus-python
];
}); });
} }

View file

@ -38,38 +38,28 @@
}; };
config = lib.mkIf config.mods.vapi.enable config = lib.mkIf config.mods.vapi.enable
(lib.optionalAttrs (lib.optionalAttrs (options ? hardware.graphics) {
(options?hardware.graphics)
{
boot = lib.mkIf config.mods.amdgpu.enable { boot = lib.mkIf config.mods.amdgpu.enable {
kernelModules = [ "kvm-amd" ]; kernelModules = [ "kvm-amd" ];
initrd.kernelModules = [ "amdgpu" ]; initrd.kernelModules = [ "amdgpu" ];
kernelParams = [ kernelParams = [ "amdgpu.ppfeaturemask=0xffffffff" ];
"amdgpu.ppfeaturemask=0xffffffff"
];
}; };
hardware = { hardware = {
graphics = graphics = let
let base_packages =
base_packages = [ [ pkgs.libvdpau-va-gl pkgs.vaapiVdpau pkgs.mesa.drivers ];
pkgs.libvdpau-va-gl rocm_packages =
pkgs.vaapiVdpau [ pkgs.rocmPackages.clr.icd pkgs.rocm-opencl-runtime ];
pkgs.mesa.drivers in {
];
rocm_packages = [
pkgs.rocmPackages.clr.icd
pkgs.rocm-opencl-runtime
];
in
{
enable = true; enable = true;
enable32Bit = lib.mkDefault true; enable32Bit = lib.mkDefault true;
extraPackages = base_packages ++ extraPackages = base_packages
(lib.lists.optionals config.mods.vapi.rocm.enable rocm_packages); ++ (lib.lists.optionals config.mods.vapi.rocm.enable rocm_packages);
}; };
}; };
} // lib.optionalAttrs (options?hardware.graphics) (lib.mkIf config.mods.nvidia.enable { } // lib.optionalAttrs (options ? hardware.graphics)
(lib.mkIf config.mods.nvidia.enable {
hardware.nvidia = { hardware.nvidia = {
modesetting.enable = true; modesetting.enable = true;
# powerManagement.enable = false; # powerManagement.enable = false;

View file

@ -38,25 +38,23 @@
}; };
}; };
config = config = let
let
username = config.conf.username; username = config.conf.username;
session = { session = {
command = "${lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland} --config /etc/greetd/hyprgreet.conf"; command = "${
lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland
} --config /etc/greetd/hyprgreet.conf";
user = username; user = username;
}; };
in in lib.mkIf config.mods.greetd.enable
lib.mkIf config.mods.greetd.enable
(lib.optionalAttrs (options ? environment) { (lib.optionalAttrs (options ? environment) {
services.xserver.displayManager.session = [ services.xserver.displayManager.session = [{
{
manage = "desktop"; manage = "desktop";
name = "Hyprland"; name = "Hyprland";
start = '' start = ''
${lib.getExe pkgs.hyprland} & waitPID=$! ${lib.getExe pkgs.hyprland} & waitPID=$!
''; '';
} }];
];
# greetd display manager # greetd display manager
programs.hyprland.enable = true; programs.hyprland.enable = true;

View file

@ -16,14 +16,10 @@
''; '';
}; };
}; };
config = config = (lib.optionalAttrs (options ? home.packages) {
let
callPackage = lib.callPackageWith pkgs;
in
(lib.optionalAttrs (options?home.packages)
{
home.packages = config.mods.home_packages.additional_packages; home.packages = config.mods.home_packages.additional_packages;
} // (lib.mkIf config.mods.home_packages.enable (lib.optionalAttrs (options?home.packages) { } // (lib.mkIf config.mods.home_packages.enable
(lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ home.packages = with pkgs; [
nheko nheko
nextcloud-client nextcloud-client
@ -60,14 +56,10 @@
poppler_utils poppler_utils
brave brave
greetd.regreet greetd.regreet
sops
flake-checker flake-checker
ffmpeg ffmpeg
system-config-printer system-config-printer
brightnessctl brightnessctl
(callPackage
../../override/cambalache.nix
{ })
]; ];
#my own programs #my own programs

View file

@ -15,9 +15,7 @@
}; };
monitor = lib.mkOption { monitor = lib.mkOption {
default = [ ]; default = [ ];
example = [ example = [ "DP-1,3440x1440@180,2560x0,1,vrr,0" ];
"DP-1,3440x1440@180,2560x0,1,vrr,0"
];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = '' description = ''
The monitor configuration for hyprland. The monitor configuration for hyprland.
@ -25,9 +23,7 @@
}; };
workspace = lib.mkOption { workspace = lib.mkOption {
default = [ ]; default = [ ];
example = [ example = [ "2,monitor:DP-1, default:true" ];
"2,monitor:DP-1, default:true"
];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = '' description = ''
The workspace configuration for hyprland. The workspace configuration for hyprland.
@ -62,8 +58,7 @@
}; };
config = lib.mkIf config.mods.hyprland.enable config = lib.mkIf config.mods.hyprland.enable
(lib.optionalAttrs (options?wayland.windowManager.hyprland) (lib.optionalAttrs (options ? wayland.windowManager.hyprland) {
{
# install Hyprland related packages # install Hyprland related packages
home.packages = with pkgs; [ home.packages = with pkgs; [
xorg.xprop xorg.xprop
@ -79,25 +74,27 @@
]; ];
wayland.windowManager.hyprland.enable = true; wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.settings = lib.mkIf config.mods.hyprland.use_default_config wayland.windowManager.hyprland.settings =
{ lib.mkIf config.mods.hyprland.use_default_config {
"$mod" = "SUPER"; "$mod" = "SUPER";
"source" = "/home/${config.conf.username}/.config/reset/keyboard.conf"; "source" =
"/home/${config.conf.username}/.config/reset/keyboard.conf";
bindm = [ bindm =
"$mod, mouse:272, movewindow" [ "$mod, mouse:272, movewindow" "$mod, mouse:273, resizewindow" ];
"$mod, mouse:273, resizewindow"
];
bind = [ bind = [
# screenshots # screenshots
"$mod SUPER,S,exec,grim -g \"$(slurp)\" - | wl-copy" ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy''
"$mod SUPERSHIFTALT,S,exec, grim -g \"$(slurp)\" $HOME/gits/ost-5semester/Screenshots/$(date +'%Y_%m_%d_%I_%M_%S.png') && (date +'%Y_%m_%d_%I_%M_%S.png') | wl-copy" ''
"$mod SUPERSHIFT,S,exec,grim -g \"$(slurp)\" - | satty -f -" $mod SUPERSHIFTALT,S,exec, grim -g "$(slurp)" $HOME/gits/ost-5semester/Screenshots/$(date +'%Y_%m_%d_%I_%M_%S.png') && (date +'%Y_%m_%d_%I_%M_%S.png') | wl-copy''
"$mod SUPERCONTROLSHIFT,S,exec,grim -c -g \"2560,0 3440x1440\" - | wl-copy" ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -''
''
$mod SUPERCONTROLSHIFT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy''
# regular programs # regular programs
"$mod SUPER,F,exec,firefox" "$mod SUPER,F,exec,firefox"
"$mod SUPERSHIFT,F,exec,firefox -p special"
"$mod SUPER,T,exec,kitty -1" "$mod SUPER,T,exec,kitty -1"
"$mod SUPER,E,exec,nautilus -w" "$mod SUPER,E,exec,nautilus -w"
"$mod SUPER,N,exec,neovide" "$mod SUPER,N,exec,neovide"
@ -159,7 +156,6 @@
"$mod SUPERSHIFT,9,movetoworkspace,9" "$mod SUPERSHIFT,9,movetoworkspace,9"
"$mod SUPERSHIFT,0,movetoworkspace,10" "$mod SUPERSHIFT,0,movetoworkspace,10"
# move to workspace silent # move to workspace silent
"$mod SUPERSHIFTALT,1,movetoworkspacesilent,1" "$mod SUPERSHIFTALT,1,movetoworkspacesilent,1"
"$mod SUPERSHIFTALT,2,movetoworkspacesilent,2" "$mod SUPERSHIFTALT,2,movetoworkspacesilent,2"
@ -198,14 +194,13 @@
general = { general = {
gaps_out = "3,5,5,5"; gaps_out = "3,5,5,5";
border_size = 3; border_size = 3;
"col.active_border" = lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; "col.active_border" =
lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg";
# "col.inactive_border" = "0x66333333"; # "col.inactive_border" = "0x66333333";
allow_tearing = true; allow_tearing = true;
}; };
decoration = { decoration = { rounding = 4; };
rounding = 4;
};
animations = { animations = {
bezier = "penguin,0.05,0.9,0.1,1.0"; bezier = "penguin,0.05,0.9,0.1,1.0";
@ -254,16 +249,14 @@
# no_break_fs_vrr = true; # no_break_fs_vrr = true;
}; };
gestures = { gestures = { workspace_swipe = true; };
workspace_swipe = true;
};
monitor = config.mods.hyprland.monitor; monitor = config.mods.hyprland.monitor;
workspace = config.mods.hyprland.workspace; workspace = config.mods.hyprland.workspace;
env = [ env = [
"GTK_CSD,0" "GTK_CSD,0"
"TERM,\"kitty /bin/fish\"" ''TERM,"kitty /bin/fish"''
"XDG_CURRENT_DESKTOP=Hyprland" "XDG_CURRENT_DESKTOP=Hyprland"
"XDG_SESSION_TYPE=wayland" "XDG_SESSION_TYPE=wayland"
"XDG_SESSION_DESKTOP=Hyprland" "XDG_SESSION_DESKTOP=Hyprland"
@ -277,7 +270,7 @@
"QT_AUTO_SCREEN_SCALE_FACTOR,0" "QT_AUTO_SCREEN_SCALE_FACTOR,0"
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1" "QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
"QT_SCALE_FACTOR,1" "QT_SCALE_FACTOR,1"
"EDITOR,\"neovide --novsync --nofork\"" ''EDITOR,"neovide --novsync --nofork"''
"WLR_DRM_NO_ATOMIC,1" "WLR_DRM_NO_ATOMIC,1"
"GTK_USE_PORTAL, 1" "GTK_USE_PORTAL, 1"
]; ];

View file

@ -16,32 +16,26 @@
programs.hyprlock = lib.mkIf config.mods.hyprland.hyprlock.enable { programs.hyprlock = lib.mkIf config.mods.hyprland.hyprlock.enable {
enable = true; enable = true;
settings = { settings = {
background = [ background = [{
{
monitor = ""; monitor = "";
path = ""; path = "";
color = "rgba(26, 27, 38, 1.0)"; color = "rgba(26, 27, 38, 1.0)";
} }];
];
input-field = [ input-field = [{
{
monitor = "${config.conf.monitor}"; monitor = "${config.conf.monitor}";
placeholder_text = "password or something"; placeholder_text = "password or something";
} }];
];
label = [ label = [{
{
monitor = "${config.conf.monitor}"; monitor = "${config.conf.monitor}";
text = "$TIME"; text = "$TIME";
font_size = 50; font_size = 50;
position = "0, 200"; position = "0, 200";
valign = "center"; valign = "center";
halign = "center"; halign = "center";
} }];
];
}; };
}; };
}); });

View file

@ -8,7 +8,7 @@
description = "Enables Hyprpaper"; description = "Enables Hyprpaper";
}; };
config = lib.mkOption { config = lib.mkOption {
default = ''''; default = "";
example = '' example = ''
Hyprpaper config Hyprpaper config
''; '';
@ -21,10 +21,10 @@
}; };
config = lib.mkIf config.mods.hyprland.hyprpaper.enable config = lib.mkIf config.mods.hyprland.hyprpaper.enable
(lib.optionalAttrs (options?xdg.configFile) (lib.optionalAttrs (options ? xdg.configFile) {
{
home.packages = with pkgs; [ hyprpaper ]; home.packages = with pkgs; [ hyprpaper ];
xdg.configFile."hypr/hyprpaper.conf" = lib.mkIf config.mods.hyprland.hyprpaper.enable { xdg.configFile."hypr/hyprpaper.conf" =
lib.mkIf config.mods.hyprland.hyprpaper.enable {
text = config.mods.hyprland.hyprpaper.config; text = config.mods.hyprland.hyprpaper.config;
}; };
}); });

View file

@ -1,8 +1,6 @@
{ lib, config, pkgs, options, ... }: { lib, config, pkgs, options, ... }:
let let username = config.conf.username;
username = config.conf.username; in {
in
{
options.mods = { options.mods = {
hyprland.ironbar = { hyprland.ironbar = {
enable = lib.mkOption { enable = lib.mkOption {
@ -14,8 +12,7 @@
}; };
}; };
config = lib.mkIf config.mods.hyprland.ironbar.enable config = lib.mkIf config.mods.hyprland.ironbar.enable
(lib.optionalAttrs (options?programs.ironbar) (lib.optionalAttrs (options ? programs.ironbar) {
{
programs.ironbar = { programs.ironbar = {
enable = true; enable = true;
@ -161,25 +158,20 @@
end = config.conf.ironbar.modules ++ [ end = config.conf.ironbar.modules ++ [
{ {
type = "sys_info"; type = "sys_info";
format = [ format = [ " {memory_percent}" ];
" {memory_percent}"
];
interval.memory = 30; interval.memory = 30;
class = "memory-usage"; class = "memory-usage";
} }
{ {
type = "custom"; type = "custom";
bar = [ bar = [{
{
type = "button"; type = "button";
class = "popup-button"; class = "popup-button";
label = ""; label = "";
on_click = "popup:toggle"; on_click = "popup:toggle";
} }];
];
class = "popup-button-box"; class = "popup-button-box";
popup = [ popup = [{
{
type = "box"; type = "box";
orientation = "vertical"; orientation = "vertical";
class = "audio-box"; class = "audio-box";
@ -192,13 +184,15 @@
type = "button"; type = "button";
class = "audio-button"; class = "audio-button";
label = ""; label = "";
on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth"; on_click =
"!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth";
} }
{ {
type = "button"; type = "button";
class = "audio-button"; class = "audio-button";
label = "󰋋"; label = "󰋋";
on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh internal"; on_click =
"!/home/${username}/.config/eww/scripts/audio_control.sh internal";
} }
]; ];
class = "audio-button-box"; class = "audio-button-box";
@ -212,7 +206,8 @@
class = "audio-slider"; class = "audio-slider";
step = 1.0; step = 1.0;
length = 200; length = 200;
value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; value =
"pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%";
} }
{ {
@ -224,23 +219,23 @@
class = "audio-slider"; class = "audio-slider";
step = 1.0; step = 1.0;
length = 200; length = 200;
value = "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; value =
on_change = "!pactl set-source-volume @DEFAULT_SOURCE@ $0%"; "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
} on_change =
]; "!pactl set-source-volume @DEFAULT_SOURCE@ $0%";
} }
]; ];
}];
} }
{ {
type = "custom"; type = "custom";
bar = [ bar = [{
{
type = "button"; type = "button";
class = "popup-button"; class = "popup-button";
label = ""; label = "";
on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css"; on_click =
} "!oxidash --css /home/${username}/gits/oxidash/style.css";
]; }];
class = "popup-button-box"; class = "popup-button-box";
} }
{ {
@ -258,15 +253,13 @@
type = "workspaces"; type = "workspaces";
all_monitors = true; all_monitors = true;
}]; }];
center = [ center = [{
{
type = "focused"; type = "focused";
show_icon = true; show_icon = true;
show_title = true; show_title = true;
icon_size = 20; icon_size = 20;
truncate = "end"; truncate = "end";
} }];
];
}; };
}; };
}; };

View file

@ -12,19 +12,20 @@
}; };
config = lib.mkIf config.mods.kde_connect.enable config = lib.mkIf config.mods.kde_connect.enable
(lib.optionalAttrs (options?networking.firewall) (lib.optionalAttrs (options ? networking.firewall) {
{
networking.firewall = { networking.firewall = {
allowedTCPPortRanges = [ allowedTCPPortRanges = [{
{ from = 1714; to = 1764; } # KDE Connect from = 1714;
to = 1764;
} # KDE Connect
]; ];
allowedUDPPortRanges = [ allowedUDPPortRanges = [{
{ from = 1714; to = 1764; } # KDE Connect from = 1714;
to = 1764;
} # KDE Connect
]; ];
}; };
} // lib.optionalAttrs (options ? home.packages) { } // lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ home.packages = with pkgs; [ kdeconnect ];
kdeconnect
];
}); });
} }

View file

@ -10,7 +10,8 @@
default = true; default = true;
example = false; example = false;
type = lib.types.bool; type = lib.types.bool;
description = "Whether to overwrite the cache config of keepassxc. Note, this means that changes can't be applied via the program anymore!"; description =
"Whether to overwrite the cache config of keepassxc. Note, this means that changes can't be applied via the program anymore!";
}; };
cache_config = lib.mkOption { cache_config = lib.mkOption {
default = '' default = ''
@ -20,7 +21,7 @@
LastOpenedDatabases=/home/dashie/Music/Passwords.kdbx LastOpenedDatabases=/home/dashie/Music/Passwords.kdbx
LastKeyFiles=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x42\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0M\0u\0s\0i\0\x63\0/\0P\0\x61\0s\0s\0w\0o\0r\0\x64\0s\0.\0k\0\x64\0\x62\0x\0\0\0\n\0\0\0\x42\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0M\0u\0s\0i\0\x63\0/\0l\0o\0g\0i\0n\0_\0k\0\x65\0y\0.\0k\0\x65\0y\0x) LastKeyFiles=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x42\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0M\0u\0s\0i\0\x63\0/\0P\0\x61\0s\0s\0w\0o\0r\0\x64\0s\0.\0k\0\x64\0\x62\0x\0\0\0\n\0\0\0\x42\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0M\0u\0s\0i\0\x63\0/\0l\0o\0g\0i\0n\0_\0k\0\x65\0y\0.\0k\0\x65\0y\0x)
''; '';
example = ''''; example = "";
type = lib.types.lines; type = lib.types.lines;
description = "Cache config to be used."; description = "Cache config to be used.";
}; };
@ -29,8 +30,7 @@
(lib.optionalAttrs (options ? home.file) { (lib.optionalAttrs (options ? home.file) {
home.packages = [ pkgs.keepassxc ]; home.packages = [ pkgs.keepassxc ];
xdg.configFile."keepassxc/keepassxc.ini" = { xdg.configFile."keepassxc/keepassxc.ini" = {
text = text = ''
''
[General] [General]
ConfigVersion=2 ConfigVersion=2
@ -53,7 +53,8 @@
''; '';
}; };
home.file.".cache/keepassxc/keepassxc.ini" = lib.mkIf config.mods.keepassxc.use_cache_config { home.file.".cache/keepassxc/keepassxc.ini" =
lib.mkIf config.mods.keepassxc.use_cache_config {
text = config.mods.keepassxc.cache_config; text = config.mods.keepassxc.cache_config;
}; };
}); });

View file

@ -16,11 +16,10 @@
''; '';
}; };
}; };
config = config = (lib.optionalAttrs (options ? home.packages) {
(lib.optionalAttrs (options?home.packages)
{
home.packages = config.mods.media_packages.additional_packages; home.packages = config.mods.media_packages.additional_packages;
} // (lib.mkIf config.mods.media_packages.enable (lib.optionalAttrs (options?home.packages) { } // (lib.mkIf config.mods.media_packages.enable
(lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ home.packages = with pkgs; [
# base audio # base audio
pipewire pipewire
@ -49,8 +48,6 @@
yt-dlp yt-dlp
]; ];
programs.obs-studio.enable = true; programs.obs-studio.enable = true;
programs.obs-studio.plugins = with pkgs; [ programs.obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ];
obs-studio-plugins.obs-vaapi
];
}))); })));
} }

View file

@ -21,13 +21,11 @@
}; };
synclist = lib.mkOption { synclist = lib.mkOption {
default = [ ]; default = [ ];
example = [ example = [{
{
name = "sync globi folder"; name = "sync globi folder";
remote = "globi"; remote = "globi";
local = "/home/globi"; local = "/home/globi";
} }];
];
description = '' description = ''
A list of folders to synchronize. A list of folders to synchronize.
This has to be an attribute list with the name, remote and local field (all strings). This has to be an attribute list with the name, remote and local field (all strings).

View file

@ -8,12 +8,9 @@
}; };
}; };
config = lib.mkIf config.mods.piper.enable config = lib.mkIf config.mods.piper.enable
(lib.optionalAttrs (options?services.ratbagd) (lib.optionalAttrs (options ? services.ratbagd) {
{
services.ratbagd.enable = true; services.ratbagd.enable = true;
} // lib.optionalAttrs (options ? home.packages) { } // lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ home.packages = with pkgs; [ piper ];
piper
];
}); });
} }

View file

@ -8,8 +8,7 @@
}; };
}; };
config = lib.mkIf config.mods.printing.enable config = lib.mkIf config.mods.printing.enable
(lib.optionalAttrs (options?services.printing) (lib.optionalAttrs (options ? services.printing) {
{
# Enable CUPS to print documents. # Enable CUPS to print documents.
services.printing.enable = true; services.printing.enable = true;
services.printing.browsing = true; services.printing.browsing = true;

30
modules/programs/sops.nix Normal file
View file

@ -0,0 +1,30 @@
{ lib, pkgs, config, options, ... }: {
options.mods.sops = {
enable = lib.mkOption {
default = true;
example = false;
type = lib.types.bool;
description = "Enable sops secrets";
};
};
config = lib.mkIf config.mods.sops.enable
(lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ sops ];
sops = {
gnupg = {
home = "~/.gnupg";
sshKeyPaths = [ ];
};
defaultSopsFile = ../../secrets/secrets.yaml;
secrets = {
hub = { };
lab = { };
${config.conf.username} = { };
nextcloud = { };
access = { };
};
};
systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ];
});
}

View file

@ -30,22 +30,24 @@
}; };
# environment.systemPackages needed in order to configure systemwide # environment.systemPackages needed in order to configure systemwide
config = lib.mkIf config.mods.starship.enable (lib.optionalAttrs (options?environment.systemPackages) { config = lib.mkIf config.mods.starship.enable
programs.starship = (lib.optionalAttrs (options ? environment.systemPackages) {
let programs.starship = let
base16 = pkgs.callPackage inputs.base16.lib { }; base16 = pkgs.callPackage inputs.base16.lib { };
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme);
code_format = "[](bg:prev_bg fg:#5256c3)[ $symbol ($version)](bg:#5256c3)"; code_format =
in "[](bg:prev_bg fg:#5256c3)[ $symbol ($version)](bg:#5256c3)";
{ in {
enable = true; enable = true;
interactiveOnly = true; interactiveOnly = true;
presets = lib.mkIf config.mods.starship.use_default_prompt [ "pastel-powerline" ]; presets = lib.mkIf config.mods.starship.use_default_prompt
settings = lib.mkIf config.mods.starship.use_default_prompt [ "pastel-powerline" ];
{ settings = lib.mkIf config.mods.starship.use_default_prompt {
# derived from https://starship.rs/presets/pastel-powerline # derived from https://starship.rs/presets/pastel-powerline
format = ''$username$directory$git_branch$git_status$git_metrics[ ](bg:none fg:prev_bg)''; format =
right_format = ''$c$elixir$elm$golang$gradle$haskell$java$julia$nodejs$nim$rust$scala$python$ocaml$opa$perl$zig$dart$dotnet$nix_shell$shell$solidity[](bg:prev_bg fg:#3465A4)$time$os''; "$username$directory$git_branch$git_status$git_metrics[ ](bg:none fg:prev_bg)";
right_format =
"$c$elixir$elm$golang$gradle$haskell$java$julia$nodejs$nim$rust$scala$python$ocaml$opa$perl$zig$dart$dotnet$nix_shell$shell$solidity[](bg:prev_bg fg:#3465A4)$time$os";
username = { username = {
show_always = false; show_always = false;
style_user = "bg:#5277C3 fg:#${scheme.base05}"; style_user = "bg:#5277C3 fg:#${scheme.base05}";
@ -68,7 +70,8 @@
always_show_remote = true; always_show_remote = true;
symbol = ""; symbol = "";
style = "bg:#5256c3 fg:#${scheme.base05}"; style = "bg:#5256c3 fg:#${scheme.base05}";
format = "[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)"; format =
"[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)";
}; };
git_status = { git_status = {
staged = "+\${count} (fg:#C4A000)"; staged = "+\${count} (fg:#C4A000)";
@ -86,7 +89,8 @@
}; };
git_metrics = { git_metrics = {
disabled = false; disabled = false;
format = "([| ](bg:#5256c3)[+$added]($added_style bg:#5256c3)[ -$deleted]($deleted_style bg:#5256c3))"; format =
"([| ](bg:#5256c3)[+$added]($added_style bg:#5256c3)[ -$deleted]($deleted_style bg:#5256c3))";
}; };
c = { format = code_format; }; c = { format = code_format; };
elixir = { format = code_format; }; elixir = { format = code_format; };
@ -98,7 +102,10 @@
julia = { format = code_format; }; julia = { format = code_format; };
nodejs = { format = code_format; }; nodejs = { format = code_format; };
nim = { format = code_format; }; nim = { format = code_format; };
nix_shell = { symbol = ""; format = code_format; }; nix_shell = {
symbol = "";
format = code_format;
};
rust = { format = code_format; }; rust = { format = code_format; };
scala = { format = code_format; }; scala = { format = code_format; };
typst = { format = code_format; }; typst = { format = code_format; };

View file

@ -75,8 +75,10 @@
size = 24; size = 24;
}; };
base16Scheme = base16Scheme = (if builtins.isAttrs config.mods.stylix.colorscheme then
(if builtins.isAttrs config.mods.stylix.colorscheme then config.mods.stylix.colorscheme else "${pkgs.base16-schemes}/share/themes/${config.mods.stylix.colorscheme}.yaml"); config.mods.stylix.colorscheme
else
"${pkgs.base16-schemes}/share/themes/${config.mods.stylix.colorscheme}.yaml");
}; };
}); });
} }

View file

@ -0,0 +1,17 @@
{ lib, config, options, pkgs, ... }:
let callPackage = lib.callPackageWith pkgs;
in {
options.mods.teams = {
enable = lib.mkOption {
default = false;
example = true;
type = lib.types.bool;
description =
"Enables teams via a chromium pwa (for the poor souls that have to use this for work)";
};
};
config = lib.mkIf config.mods.teams.enable
(lib.optionalAttrs (options ? home.packages) {
home.packages = [ (callPackage ../../override/teams.nix { }) ];
});
}

View file

@ -12,6 +12,7 @@
}; };
config = lib.optionalAttrs (options ? virtualisation.virtualbox.host) { config = lib.optionalAttrs (options ? virtualisation.virtualbox.host) {
virtualisation.virtualbox.host.enable = lib.mkIf config.mods.virtualbox.enable true; virtualisation.virtualbox.host.enable =
lib.mkIf config.mods.virtualbox.enable true;
}; };
} }

View file

@ -11,7 +11,6 @@
}; };
}; };
config = lib.optionalAttrs (options?hardware) { config =
hardware.xone.enable = true; lib.optionalAttrs (options ? hardware) { hardware.xone.enable = true; };
};
} }

View file

@ -0,0 +1,14 @@
{ lib, config, options, ... }: {
options.mods.yazi = {
enable = lib.mkOption {
default = true;
example = false;
type = lib.types.bool;
description = "Enables yazi";
};
};
config = lib.mkIf config.mods.yazi.enable
(lib.optionalAttrs (options ? home.packages) {
programs.yazi = import ./yazi.nix;
});
}

File diff suppressed because it is too large Load diff

View file

@ -1,92 +0,0 @@
{ stdenv
, lib
, pkgs
, fetchFromGitLab
, nix-update-script
}:
pkgs.python3.pkgs.buildPythonApplication rec {
pname = "cambalache";
version = "0.90.1";
format = "other";
# Did not fetch submodule since it is only for tests we don't run.
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "jpu";
repo = pname;
rev = version;
sha256 = "sha256-YuRxqrGJvhMMZApD/tQSWkUg/nZnp/xryBJSjXCXO4w=";
};
nativeBuildInputs = with pkgs; [
meson
ninja
pkg-config
gobject-introspection # for setup hook
desktop-file-utils # for update-desktop-database
shared-mime-info # for update-mime-database
wrapGAppsHook
];
pythonPath = with pkgs.python3.pkgs; [
pygobject3
lxml
];
buildInputs = with pkgs; [
glib
gtk3
gtk4
gtksourceview4
gtksourceview5
webkitgtk_4_1
webkitgtk_6_0
# For extra widgets support.
libadwaita
libhandy
];
# Prevent double wrapping.
dontWrapGApps = true;
postPatch = ''
patchShebangs postinstall.py
# those programs are used at runtime not build time
# https://gitlab.gnome.org/jpu/cambalache/-/blob/0.12.1/meson.build#L79-80
substituteInPlace ./meson.build \
--replace "find_program('broadwayd', required: true)" "" \
--replace "find_program('gtk4-broadwayd', required: true)" ""
'';
preFixup = ''
# Let python wrapper use GNOME flags.
makeWrapperArgs+=(
# For broadway daemons
--prefix PATH : "${lib.makeBinPath [ pkgs.gtk3 pkgs.gtk4 ]}"
"''${gappsWrapperArgs[@]}"
)
'';
postFixup = ''
# Wrap a helper script in an unusual location.
wrapPythonProgramsIn "$out/${pkgs.python3.sitePackages}/cambalache/priv/merengue" "$out $pythonPath"
'';
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/jpu/cambalache";
description = "RAD tool for GTK 4 and 3 with data model first philosophy";
mainProgram = "cambalache";
maintainers = teams.gnome.members;
license = with licenses; [
lgpl21Only # Cambalache
gpl2Only # tools
];
platforms = platforms.unix;
};
}

28
override/teams.nix Normal file
View file

@ -0,0 +1,28 @@
{ stdenv, lib, copyDesktopItems, makeDesktopItem, chromium, ... }:
stdenv.mkDerivation (final: {
pname = "teams-pwa";
name = final.pname;
nativeBuildInputs = [ copyDesktopItems ];
dontUnpack = true;
desktopItems = [
(makeDesktopItem {
name = final.pname;
icon = final.pname;
exec = "${chromium}/bin/${
chromium.meta.mainProgram or chromium.pname
} --app=https://teams.microsoft.com";
desktopName = "Microsoft Teams PWA";
genericName = "Progressive Web App for Microsoft Teams";
categories = [ "Network" ];
mimeTypes = [ "x-scheme-handler/msteams" ];
})
];
meta = with lib; {
description = "Microsoft Teams PWA";
homepage = "https://teams.microsoft.com";
maintainers = with maintainers; [ ners ];
platforms = chromium.meta.platforms;
};
})

View file

@ -1,8 +1,6 @@
{ config, ... }: { config, lib, options, ... }:
let let username = config.conf.username;
username = config.conf.username; in {
in
{
manual = { manual = {
html.enable = false; html.enable = false;
json.enable = false; json.enable = false;
@ -12,24 +10,22 @@ in
fonts.fontconfig.enable = true; fonts.fontconfig.enable = true;
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
home.username = username; home = {
home.homeDirectory = "/home/${username}"; username = username;
home.stateVersion = "24.05"; homeDirectory = "/home/${username}";
stateVersion = "24.05";
home.sessionPath = [ sessionPath = [ "$HOME/.cargo/bin" ];
"$HOME/.cargo/bin"
];
home.sessionVariables = { sessionVariables = { GOROOT = "$HOME/.go"; };
GOROOT = "$HOME/.go";
};
home.keyboard = null; keyboard = null;
home.file.".local/share/flatpak/overrides/global".text = '' file.".local/share/flatpak/overrides/global".text = ''
[Context] [Context]
filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0 filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0
''; '';
};
programs.nix-index = { programs.nix-index = {
enable = true; enable = true;
@ -37,23 +33,8 @@ in
}; };
nix = { nix = {
extraOptions = '' extraOptions = lib.mkIf (options ? config.sops.secrets.access.path) ''
!include ${config.sops.secrets.access.path} !include ${config.sops.secrets.access.path}
''; '';
}; };
sops = {
gnupg = {
home = "~/.gnupg";
sshKeyPaths = [ ];
};
defaultSopsFile = ../secrets/secrets.yaml;
secrets.hub = { };
secrets.lab = { };
secrets.${username} = { };
secrets.nextcloud = { };
secrets.access = { };
};
systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ];
} }

View file

@ -15,23 +15,20 @@ let
inputs.sops-nix.homeManagerModules.sops inputs.sops-nix.homeManagerModules.sops
inputs.dashvim.homeManagerModules.dashvim inputs.dashvim.homeManagerModules.dashvim
]; ];
in in {
{ xdg = {
xdg.portal.config.common.default = "*"; portal.config.common.default = "*";
xdg.portal = { portal = {
enable = true; enable = true;
extraPortals = [ extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
pkgs.xdg-desktop-portal-gtk
];
}; };
home-manager.useGlobalPkgs = true;
# home-manager.backupFileExtension = "backup";
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = {
inherit inputs;
}; };
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = { inherit inputs; };
home-manager.users.${config.conf.username} = { users.${config.conf.username} = {
imports = [ imports = [
./common.nix ./common.nix
./xdg.nix ./xdg.nix
@ -39,7 +36,7 @@ in
./themes/default.nix ./themes/default.nix
./individual_configs/default.nix ./individual_configs/default.nix
./sync.nix ./sync.nix
] ++ base_imports ] ++ base_imports ++ lib.optional (builtins.pathExists mod) mod;
++ lib.optional (builtins.pathExists mod) mod; };
}; };
} }

View file

@ -1,9 +1 @@
{ { imports = [ ./kitty.nix ./fish.nix ./direnv.nix ./neovide.nix ]; }
imports = [
./kitty.nix
./yazi.nix
./fish.nix
./direnv.nix
./neovide.nix
];
}

View file

@ -1,7 +1,6 @@
{ pkgs, ... }: { { pkgs, ... }: {
xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" { xdg.configFile."direnv/direnv.toml".source =
global = { (pkgs.formats.toml { }).generate "direnv" {
warn_timeout = "-1s"; global = { warn_timeout = "-1s"; };
};
}; };
} }

View file

@ -1,7 +1,6 @@
{ config, ... }: { { config, ... }: {
xdg.configFile."fish/config.fish" = { xdg.configFile."fish/config.fish" = {
text = text = ''
''
if status is-interactive if status is-interactive
# Commands to run in interactive sessions can go here # Commands to run in interactive sessions can go here
end end

View file

@ -20,13 +20,14 @@ let
"e" = "d"; "e" = "d";
"f" = "e"; "f" = "e";
}; };
base = "#" + lib.strings.concatStrings ((lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00)) ++ [ hexTable."${(lib.lists.last (lib.strings.stringToCharacters scheme.base00))}" ]); base = "#" + lib.strings.concatStrings
in ((lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00)) ++ [
{ hexTable."${(lib.lists.last
(lib.strings.stringToCharacters scheme.base00))}"
]);
in {
stylix.targets.kitty = { stylix.targets.kitty = { enable = false; };
enable = false;
};
programs.kitty = { programs.kitty = {
enable = true; enable = true;

View file

@ -1,5 +1,6 @@
{ pkgs, ... }: { { pkgs, ... }: {
xdg.configFile."ncspot/config.toml".source = (pkgs.formats.toml { }).generate "ncspot" { xdg.configFile."ncspot/config.toml".source =
(pkgs.formats.toml { }).generate "ncspot" {
notify = true; notify = true;
shuffle = true; shuffle = true;
cover_max_scale = 2; cover_max_scale = 2;

View file

@ -1,3 +1,4 @@
{ pkgs, ... }: { { pkgs, ... }: {
xdg.configFile."neovide/config.toml".source = (pkgs.formats.toml { }).generate "neovide" { }; xdg.configFile."neovide/config.toml".source =
(pkgs.formats.toml { }).generate "neovide" { };
} }

File diff suppressed because it is too large Load diff

View file

@ -1,9 +1,2 @@
{ { imports = [ ./oxipaste.nix ./oxinoti.nix ./oxishut.nix ./oxidash.nix ]; }
imports = [
./oxipaste.nix
./oxinoti.nix
./oxishut.nix
./oxidash.nix
];
}

View file

@ -1,7 +1,6 @@
{ {
xdg.configFile."oxidash/style.css" = { xdg.configFile."oxidash/style.css" = {
text = text = ''
''
#MainWindow { #MainWindow {
border-radius: 10px; border-radius: 10px;
} }

View file

@ -1,6 +1,6 @@
{ config, ... }: { { config, ... }: {
xdg.configFile."oxinoti/style.css" = { xdg.configFile."oxinoti/style.css" = {
text = /*css*/ text = # css
'' ''
@import url("/home/${config.conf.username}/.config/gtk-3.0/gtk.css"); @import url("/home/${config.conf.username}/.config/gtk-3.0/gtk.css");

View file

@ -1,7 +1,6 @@
{ {
xdg.configFile."oxipaste/style.css" = { xdg.configFile."oxipaste/style.css" = {
text = text = ''
''
.main-window { .main-window {
padding: 10px; padding: 10px;
border-radius: 10px; border-radius: 10px;

View file

@ -1,7 +1,6 @@
{ {
xdg.configFile."oxishut/style.css" = { xdg.configFile."oxishut/style.css" = {
text = text = ''
''
#mainwindow { #mainwindow {
border-radius: 10px; border-radius: 10px;
} }

View file

@ -2,16 +2,15 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
let let
username = config.mods.nextcloud.username; username = config.mods.nextcloud.username;
password = if (config.sops.secrets?nextcloud.path) then config.sops.secrets.nextcloud.path else ""; password = if (config.sops.secrets ? nextcloud.path) then
config.sops.secrets.nextcloud.path
else
"";
url = config.mods.nextcloud.url; url = config.mods.nextcloud.url;
synclist = config.mods.nextcloud.synclist; synclist = config.mods.nextcloud.synclist;
in in lib.mkIf config.mods.nextcloud.enable {
lib.mkIf config.mods.nextcloud.enable {
systemd.user = { systemd.user = {
services = services = (builtins.listToAttrs (map (opts: {
(builtins.listToAttrs
(map
(opts: {
name = "${opts.name}"; name = "${opts.name}";
value = { value = {
Unit = { Unit = {
@ -20,30 +19,25 @@ lib.mkIf config.mods.nextcloud.enable {
}; };
Service = { Service = {
Type = "simple"; Type = "simple";
ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${opts.remote} ${opts.local} https://${username}:$(bat ${password})@${url}'"; ExecStart =
"${pkgs.bash}/bin/bash -c '${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${opts.remote} ${opts.local} https://${username}:$(bat ${password})@${url}'";
TimeoutStopSec = "180"; TimeoutStopSec = "180";
KillMode = "process"; KillMode = "process";
KillSignal = "SIGINT"; KillSignal = "SIGINT";
}; };
Install.WantedBy = [ "multi-user.target" ]; Install.WantedBy = [ "multi-user.target" ];
}; };
}) }) synclist));
synclist timers = (builtins.listToAttrs (map (opts: {
));
timers =
(builtins.listToAttrs
(map
(opts: {
name = "${opts.name}"; name = "${opts.name}";
value = { value = {
Unit.Description = "Automatic sync files with Nextcloud when booted up after 1 minute then rerun every 60 minutes"; Unit.Description =
"Automatic sync files with Nextcloud when booted up after 1 minute then rerun every 60 minutes";
Timer.OnBootSec = "1min"; Timer.OnBootSec = "1min";
Timer.OnUnitActiveSec = "60min"; Timer.OnUnitActiveSec = "60min";
Install.WantedBy = [ "multi-user.target" "timers.target" ]; Install.WantedBy = [ "multi-user.target" "timers.target" ];
}; };
}) }) synclist));
synclist
));
startServices = true; startServices = true;
}; };
} }

View file

@ -1,6 +1,2 @@
{ { imports = [ ./qt.nix ]; }
imports = [
./qt.nix
];
}

View file

@ -22,20 +22,12 @@ let
border: none; border: none;
} }
''; '';
in in {
{ xdg.configFile."qt5ct/colors/tokyonight.conf" = { text = "${color}"; };
xdg.configFile."qt5ct/colors/tokyonight.conf" = { xdg.configFile."qt6ct/colors/tokyonight.conf" = { text = "${color}"; };
text = "${color}"; xdg.configFile."qt5ct/qss/tab.qss" = { text = "${qss}"; };
};
xdg.configFile."qt6ct/colors/tokyonight.conf" = {
text = "${color}";
};
xdg.configFile."qt5ct/qss/tab.qss" = {
text = "${qss}";
};
xdg.configFile."qt5ct/qt5ct.conf" = { xdg.configFile."qt5ct/qt5ct.conf" = {
text = text = ''
''
[Appearance] [Appearance]
color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf
custom_palette=true custom_palette=true
@ -71,8 +63,7 @@ in
''; '';
}; };
xdg.configFile."qt6ct/qt6ct.conf" = { xdg.configFile."qt6ct/qt6ct.conf" = {
text = text = ''
''
[Appearance] [Appearance]
color_scheme_path=/home/${username}/.config/qt6ct/colors/toykonight.conf color_scheme_path=/home/${username}/.config/qt6ct/colors/toykonight.conf
custom_palette=true custom_palette=true

View file

@ -1,8 +1,6 @@
# Copyright (c) 2020-2021 Mihai Fufezan # Copyright (c) 2020-2021 Mihai Fufezan
# credits to fufexan https://github.com/fufexan/dotfiles/blob/main/home/terminal/programs/xdg.nix # credits to fufexan https://github.com/fufexan/dotfiles/blob/main/home/terminal/programs/xdg.nix
{ config { config, ... }:
, ...
}:
let let
browser = [ "firefox" ]; browser = [ "firefox" ];
imageViewer = [ "imv" ]; imageViewer = [ "imv" ];
@ -10,26 +8,22 @@ let
audioPlayer = [ "io.bassi.Amberol" ]; audioPlayer = [ "io.bassi.Amberol" ];
xdgAssociations = type: program: list: xdgAssociations = type: program: list:
builtins.listToAttrs (map builtins.listToAttrs (map (e: {
(e: {
name = "${type}/${e}"; name = "${type}/${e}";
value = program; value = program;
}) }) list);
list);
image = xdgAssociations "image" imageViewer [ "png" "svg" "jpeg" "gif" ]; image = xdgAssociations "image" imageViewer [ "png" "svg" "jpeg" "gif" ];
video = xdgAssociations "video" videoPlayer [ "mp4" "avi" "mkv" ]; video = xdgAssociations "video" videoPlayer [ "mp4" "avi" "mkv" ];
audio = xdgAssociations "audio" audioPlayer [ "mp3" "flac" "wav" "aac" ]; audio = xdgAssociations "audio" audioPlayer [ "mp3" "flac" "wav" "aac" ];
browserTypes = browserTypes = (xdgAssociations "application" browser [
(xdgAssociations "application" browser [
"json" "json"
"x-extension-htm" "x-extension-htm"
"x-extension-html" "x-extension-html"
"x-extension-shtml" "x-extension-shtml"
"x-extension-xht" "x-extension-xht"
"x-extension-xhtml" "x-extension-xhtml"
]) ]) // (xdgAssociations "x-scheme-handler" browser [
// (xdgAssociations "x-scheme-handler" browser [
"about" "about"
"ftp" "ftp"
"http" "http"
@ -44,13 +38,8 @@ let
"text/plain" = [ "neovide" ]; "text/plain" = [ "neovide" ];
"x-scheme-handler/chrome" = [ "com.brave.browser" ]; "x-scheme-handler/chrome" = [ "com.brave.browser" ];
"inode/directory" = [ "yazi" ]; "inode/directory" = [ "yazi" ];
} } // image // video // audio // browserTypes);
// image in {
// video
// audio
// browserTypes);
in
{
xdg = { xdg = {
enable = true; enable = true;
cacheHome = config.home.homeDirectory + "/.local/cache"; cacheHome = config.home.homeDirectory + "/.local/cache";