Modularize teams sops yazi
This commit is contained in:
parent
7730cbef59
commit
c73cb37278
75 changed files with 3023 additions and 3573 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 = [ "noatime" "nodiratime" "discard" ];
|
||||||
options = [
|
};
|
||||||
"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 = [ "noatime" "nodiratime" "discard" ];
|
||||||
options = [
|
};
|
||||||
"noatime"
|
|
||||||
"nodiratime"
|
|
||||||
"discard"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices =
|
swapDevices = [{ device = "/dev/disk/by-label/SWAP"; }];
|
||||||
[{ device = "/dev/disk/by-label/SWAP"; }];
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1 @@
|
||||||
{
|
{ imports = [ ./env.nix ./xkb_layout.nix ./common_hardware.nix ]; }
|
||||||
imports = [
|
|
||||||
./env.nix
|
|
||||||
./xkb_layout.nix
|
|
||||||
./common_hardware.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
|
|
||||||
|
|
@ -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
108
flake.lock
generated
|
|
@ -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": {
|
||||||
|
|
|
||||||
120
flake.nix
120
flake.nix
|
|
@ -1,86 +1,82 @@
|
||||||
{
|
{
|
||||||
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";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
|
||||||
|
|
||||||
sops-nix.url = "github:Mic92/sops-nix";
|
|
||||||
|
|
||||||
# Hyprspace = {
|
|
||||||
# url = "github:KZDKM/Hyprspace";
|
|
||||||
# inputs.hyprland.follows = "nixpkgs";
|
|
||||||
# };
|
|
||||||
|
|
||||||
nur.url = "github:nix-community/nur";
|
|
||||||
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
|
||||||
|
|
||||||
ironbar = {
|
|
||||||
url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048";
|
|
||||||
};
|
|
||||||
|
|
||||||
stylix.url = "github:danth/stylix";
|
|
||||||
base16.url = "github:SenchoPens/base16.nix";
|
|
||||||
|
|
||||||
anyrun.url = "github:Kirottu/anyrun";
|
|
||||||
oxicalc.url = "github:DashieTM/OxiCalc";
|
|
||||||
oxishut.url = "github:DashieTM/OxiShut";
|
|
||||||
oxinoti.url = "github:DashieTM/OxiNoti";
|
|
||||||
oxidash.url = "github:DashieTM/OxiDash";
|
|
||||||
oxipaste.url = "github:DashieTM/OxiPaste";
|
|
||||||
hyprdock.url = "github:DashieTM/hyprdock";
|
|
||||||
reset.url = "github:Xetibo/ReSet";
|
|
||||||
reset-plugins.url = "github:Xetibo/ReSet-Plugins";
|
|
||||||
|
|
||||||
dashvim = {
|
|
||||||
url = "github:DashieTM/DashVim";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
inputs.base16.follows = "base16";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sops-nix.url = "github:Mic92/sops-nix";
|
||||||
|
|
||||||
|
# Hyprspace = {
|
||||||
|
# url = "github:KZDKM/Hyprspace";
|
||||||
|
# inputs.hyprland.follows = "nixpkgs";
|
||||||
|
# };
|
||||||
|
|
||||||
|
nur.url = "github:nix-community/nur";
|
||||||
|
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||||
|
|
||||||
|
ironbar = {
|
||||||
|
url =
|
||||||
|
"github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048";
|
||||||
|
};
|
||||||
|
|
||||||
|
stylix.url = "github:danth/stylix";
|
||||||
|
base16.url = "github:SenchoPens/base16.nix";
|
||||||
|
|
||||||
|
anyrun.url = "github:Kirottu/anyrun";
|
||||||
|
oxicalc.url = "github:DashieTM/OxiCalc";
|
||||||
|
oxishut.url = "github:DashieTM/OxiShut";
|
||||||
|
oxinoti.url = "github:DashieTM/OxiNoti";
|
||||||
|
oxidash.url = "github:DashieTM/OxiDash";
|
||||||
|
oxipaste.url = "github:DashieTM/OxiPaste";
|
||||||
|
hyprdock.url = "github:DashieTM/hyprdock";
|
||||||
|
reset.url = "github:Xetibo/ReSet";
|
||||||
|
reset-plugins.url = "github:Xetibo/ReSet-Plugins";
|
||||||
|
|
||||||
|
dashvim = {
|
||||||
|
url = "github:DashieTM/DashVim";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.base16.follows = "base16";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
outputs = { ... }@inputs:
|
outputs = { ... }@inputs:
|
||||||
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 = [
|
||||||
|
inputs.sops-nix.nixosModules.sops
|
||||||
|
inputs.dashvim.nixosModules.dashvim
|
||||||
|
./hardware/server/configuration.nix
|
||||||
|
];
|
||||||
};
|
};
|
||||||
modules = [
|
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
inputs.dashvim.nixosModules.dashvim
|
|
||||||
./hardware/server/configuration.nix
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nixConfig = {
|
nixConfig = {
|
||||||
|
|
|
||||||
|
|
@ -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";
|
}];
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 = [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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" ];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
'';
|
'';
|
||||||
}
|
})
|
||||||
)
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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" ];
|
||||||
{
|
compress = true;
|
||||||
names = [ "client" "federation" ];
|
}];
|
||||||
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";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -185,21 +187,19 @@ in
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
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}
|
||||||
'';
|
'';
|
||||||
|
|
|
||||||
|
|
@ -1,51 +1,44 @@
|
||||||
{ 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" ];
|
};
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices =
|
swapDevices =
|
||||||
[{ device = "/dev/disk/by-uuid/832dce11-b4c4-476c-ab28-bd98275a542c"; }];
|
[{ device = "/dev/disk/by-uuid/832dce11-b4c4-476c-ab28-bd98275a542c"; }];
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,15 +150,16 @@ 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}";
|
||||||
]);
|
}))
|
||||||
|
]);
|
||||||
|
|
||||||
systemd.services.mautrix-discord-dashie = {
|
systemd.services.mautrix-discord-dashie = {
|
||||||
description = "mautrix-discord, a Matrix-Discord puppeting bridge.";
|
description = "mautrix-discord, a Matrix-Discord puppeting bridge.";
|
||||||
|
|
@ -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 ];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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,15 +150,16 @@ 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}";
|
||||||
]);
|
}))
|
||||||
|
]);
|
||||||
|
|
||||||
systemd.services.mautrix-whatsapp-dashie = {
|
systemd.services.mautrix-whatsapp-dashie = {
|
||||||
description = "mautrix-whatsapp, a Matrix-Whatsapp puppeting bridge.";
|
description = "mautrix-whatsapp, a Matrix-Whatsapp puppeting bridge.";
|
||||||
|
|
@ -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 ];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
{
|
fsType = "ext4";
|
||||||
device = "/dev/disk/by-label/DRIVE2";
|
options = [ "noatime" "nodiratime" "discard" ];
|
||||||
fsType = "ext4";
|
};
|
||||||
options = [
|
}];
|
||||||
"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 = [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
@ -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
|
modules = [
|
||||||
inputs.nixpkgs.lib.nixosSystem {
|
inputs.home-manager.nixosModules.home-manager
|
||||||
specialArgs = {
|
inputs.stylix.nixosModules.stylix
|
||||||
inherit inputs pkgs mod;
|
../base
|
||||||
};
|
../programs
|
||||||
modules = [
|
mod
|
||||||
inputs.home-manager.nixosModules.home-manager
|
] ++ inputs.nixpkgs.lib.optional
|
||||||
inputs.stylix.nixosModules.stylix
|
(builtins.pathExists ../hardware/${name}/${name}.nix)
|
||||||
../base
|
../hardware/${name}/${name}.nix
|
||||||
../programs
|
|
||||||
mod
|
|
||||||
] ++ 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);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
system.stateVersion = "unstable";
|
} // (lib.optionalAttrs (options ? system.stateVersion) {
|
||||||
}
|
system.stateVersion = "unstable";
|
||||||
);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1 @@
|
||||||
{
|
{ imports = [ ./programs ./conf.nix ]; }
|
||||||
imports = [
|
|
||||||
./programs
|
|
||||||
./conf.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,9 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.mods.acpid.enable (lib.optionalAttrs (options?virtualisation.virtualbox.host) {
|
config = lib.mkIf config.mods.acpid.enable
|
||||||
services.acpid.enable = true;
|
(lib.optionalAttrs (options ? virtualisation.virtualbox.host) {
|
||||||
});
|
services.acpid.enable = true;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,91 +21,79 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
config = (lib.optionalAttrs (options ? environment.systemPackages) {
|
||||||
|
environment.systemPackages =
|
||||||
|
config.mods.default_base_packages.additional_packages;
|
||||||
|
} // (lib.mkIf config.mods.default_base_packages.enable
|
||||||
|
(lib.optionalAttrs (options ? environment.systemPackages) {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
openssl
|
||||||
|
dbus
|
||||||
|
glib
|
||||||
|
gtk4
|
||||||
|
gtk3
|
||||||
|
libadwaita
|
||||||
|
gtk-layer-shell
|
||||||
|
gtk4-layer-shell
|
||||||
|
direnv
|
||||||
|
dconf
|
||||||
|
gsettings-desktop-schemas
|
||||||
|
gnome.nixos-gsettings-overrides
|
||||||
|
bibata-cursors
|
||||||
|
xorg.xkbutils
|
||||||
|
libxkbcommon
|
||||||
|
icon-library
|
||||||
|
adwaita-icon-theme
|
||||||
|
hicolor-icon-theme
|
||||||
|
morewaita-icon-theme
|
||||||
|
kdePackages.breeze-icons
|
||||||
|
seahorse
|
||||||
|
upower
|
||||||
|
thunderbird
|
||||||
|
podman-tui
|
||||||
|
podman-compose
|
||||||
|
dive
|
||||||
|
];
|
||||||
|
|
||||||
config =
|
gtk.iconCache.enable = false;
|
||||||
(lib.optionalAttrs (options?environment.systemPackages)
|
|
||||||
{
|
|
||||||
environment.systemPackages = config.mods.default_base_packages.additional_packages;
|
|
||||||
} // (lib.mkIf config.mods.default_base_packages.enable
|
|
||||||
(
|
|
||||||
lib.optionalAttrs
|
|
||||||
(options?environment.systemPackages)
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
openssl
|
|
||||||
dbus
|
|
||||||
glib
|
|
||||||
gtk4
|
|
||||||
gtk3
|
|
||||||
libadwaita
|
|
||||||
gtk-layer-shell
|
|
||||||
gtk4-layer-shell
|
|
||||||
direnv
|
|
||||||
dconf
|
|
||||||
gsettings-desktop-schemas
|
|
||||||
gnome.nixos-gsettings-overrides
|
|
||||||
bibata-cursors
|
|
||||||
xorg.xkbutils
|
|
||||||
libxkbcommon
|
|
||||||
icon-library
|
|
||||||
adwaita-icon-theme
|
|
||||||
hicolor-icon-theme
|
|
||||||
morewaita-icon-theme
|
|
||||||
kdePackages.breeze-icons
|
|
||||||
seahorse
|
|
||||||
upower
|
|
||||||
thunderbird
|
|
||||||
podman-tui
|
|
||||||
podman-compose
|
|
||||||
dive
|
|
||||||
];
|
|
||||||
|
|
||||||
gtk.iconCache.enable = false;
|
fonts.packages = with pkgs; [ cantarell-fonts ];
|
||||||
|
|
||||||
fonts.packages = with pkgs; [
|
virtualisation = {
|
||||||
cantarell-fonts
|
containers.enable = true;
|
||||||
];
|
podman = {
|
||||||
|
enable = true;
|
||||||
|
dockerCompat = true;
|
||||||
|
defaultNetwork.settings.dns_enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
virtualisation = {
|
services.upower.enable = true;
|
||||||
containers.enable = true;
|
services.dbus.enable = true;
|
||||||
podman = {
|
services.dbus.packages = with pkgs; [ gnome2.GConf ];
|
||||||
enable = true;
|
services.avahi = {
|
||||||
dockerCompat = true;
|
enable = true;
|
||||||
defaultNetwork.settings.dns_enabled = true;
|
nssmdns4 = true;
|
||||||
};
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.upower.enable = true;
|
programs.fish.enable = true;
|
||||||
services.dbus.enable = true;
|
programs.fish.promptInit = ''
|
||||||
services.dbus.packages = with pkgs; [
|
${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source
|
||||||
gnome2.GConf
|
'';
|
||||||
];
|
programs.nix-ld.enable = true;
|
||||||
services.avahi = {
|
programs.nix-ld.libraries = with pkgs; [ jdk zlib ];
|
||||||
enable = true;
|
programs.direnv = {
|
||||||
nssmdns4 = true;
|
package = pkgs.direnv;
|
||||||
openFirewall = true;
|
silent = false;
|
||||||
};
|
loadInNixShell = true;
|
||||||
|
direnvrcExtra = "";
|
||||||
programs.fish.enable = true;
|
nix-direnv = {
|
||||||
programs.fish.promptInit = ''
|
enable = true;
|
||||||
${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source
|
package = pkgs.nix-direnv;
|
||||||
'';
|
};
|
||||||
programs.nix-ld.enable = true;
|
};
|
||||||
programs.nix-ld.libraries = with pkgs; [
|
programs.ssh.startAgent = true;
|
||||||
jdk
|
programs.gnupg.agent.enable = true;
|
||||||
zlib
|
})));
|
||||||
];
|
|
||||||
programs.direnv = {
|
|
||||||
package = pkgs.direnv;
|
|
||||||
silent = false;
|
|
||||||
loadInNixShell = true;
|
|
||||||
direnvrcExtra = "";
|
|
||||||
nix-direnv = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.nix-direnv;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.ssh.startAgent = true;
|
|
||||||
programs.gnupg.agent.enable = true;
|
|
||||||
})));
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,12 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.mods.bluetooth.enable (lib.optionalAttrs (options?hardware.bluetooth) {
|
config = lib.mkIf config.mods.bluetooth.enable
|
||||||
hardware.bluetooth = {
|
(lib.optionalAttrs (options ? hardware.bluetooth) {
|
||||||
enable = true;
|
hardware.bluetooth = {
|
||||||
powerOnBoot = true;
|
enable = true;
|
||||||
};
|
powerOnBoot = true;
|
||||||
});
|
};
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,116 +28,118 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.mods.coding.enable (lib.optionalAttrs (options?home.packages) {
|
config = lib.mkIf config.mods.coding.enable
|
||||||
programs.dashvim = lib.mkIf config.mods.coding.dashvim {
|
(lib.optionalAttrs (options ? home.packages) {
|
||||||
enable = true;
|
programs.dashvim = lib.mkIf config.mods.coding.dashvim {
|
||||||
colorscheme = config.mods.stylix.colorscheme;
|
enable = true;
|
||||||
};
|
colorscheme = config.mods.stylix.colorscheme;
|
||||||
home.packages = with pkgs; [
|
};
|
||||||
(lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox)
|
home.packages = with pkgs; [
|
||||||
#basics
|
(lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox)
|
||||||
gitui
|
#basics
|
||||||
gcc
|
gitui
|
||||||
meson
|
gcc
|
||||||
ninja
|
meson
|
||||||
tree-sitter
|
ninja
|
||||||
unzip
|
tree-sitter
|
||||||
pkg-config
|
unzip
|
||||||
sqlite
|
pkg-config
|
||||||
plantuml
|
sqlite
|
||||||
d-spy
|
plantuml
|
||||||
|
d-spy
|
||||||
|
|
||||||
# cpp
|
# cpp
|
||||||
bear
|
bear
|
||||||
clang-tools
|
clang-tools
|
||||||
|
|
||||||
#sql
|
#sql
|
||||||
nodePackages.sql-formatter
|
nodePackages.sql-formatter
|
||||||
sqls
|
sqls
|
||||||
|
|
||||||
#assembly
|
#assembly
|
||||||
asm-lsp
|
asm-lsp
|
||||||
|
|
||||||
#yaml
|
#yaml
|
||||||
yamlfmt
|
yamlfmt
|
||||||
yamllint
|
yamllint
|
||||||
yaml-language-server
|
yaml-language-server
|
||||||
|
|
||||||
#markdown
|
#markdown
|
||||||
marksman
|
marksman
|
||||||
mdformat
|
mdformat
|
||||||
|
|
||||||
#bash
|
#bash
|
||||||
bash-language-server
|
bash-language-server
|
||||||
shfmt
|
shfmt
|
||||||
|
|
||||||
#fsharp
|
#fsharp
|
||||||
fsharp
|
fsharp
|
||||||
fsautocomplete
|
fsautocomplete
|
||||||
|
|
||||||
#haskell
|
#haskell
|
||||||
haskellPackages.cabal-install
|
haskellPackages.cabal-install
|
||||||
ghc
|
ghc
|
||||||
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
|
||||||
##fallback
|
##fallback
|
||||||
vscodium
|
vscodium
|
||||||
|
|
||||||
#rust
|
#rust
|
||||||
rustup
|
rustup
|
||||||
|
|
||||||
#python
|
#python
|
||||||
python3
|
python3
|
||||||
python312Packages.python-lsp-server
|
python312Packages.python-lsp-server
|
||||||
python312Packages.python-lsp-ruff
|
python312Packages.python-lsp-ruff
|
||||||
python312Packages.python-lsp-black
|
python312Packages.python-lsp-black
|
||||||
|
|
||||||
#ts/js
|
#ts/js
|
||||||
nodejs_20
|
nodejs_20
|
||||||
deno
|
deno
|
||||||
typescript
|
typescript
|
||||||
nodePackages.typescript-language-server
|
nodePackages.typescript-language-server
|
||||||
nodePackages.prettier
|
nodePackages.prettier
|
||||||
|
|
||||||
#go
|
#go
|
||||||
go
|
go
|
||||||
gopls
|
gopls
|
||||||
|
|
||||||
#typst
|
#typst
|
||||||
typst
|
typst
|
||||||
tinymist
|
tinymist
|
||||||
ltex-ls
|
ltex-ls
|
||||||
|
|
||||||
#java
|
#java
|
||||||
gradle
|
gradle
|
||||||
maven
|
maven
|
||||||
jdt-language-server
|
jdt-language-server
|
||||||
temurin-jre-bin
|
temurin-jre-bin
|
||||||
|
|
||||||
#.!
|
#.!
|
||||||
dotnet-sdk_8
|
dotnet-sdk_8
|
||||||
omnisharp-roslyn
|
omnisharp-roslyn
|
||||||
csharpier
|
csharpier
|
||||||
netcoredbg
|
netcoredbg
|
||||||
|
|
||||||
#zig
|
#zig
|
||||||
zig
|
zig
|
||||||
zls
|
zls
|
||||||
];
|
|
||||||
|
|
||||||
});
|
tmux
|
||||||
|
tmate
|
||||||
|
];
|
||||||
|
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,51 +19,36 @@ 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";
|
||||||
{
|
drive = {
|
||||||
name = "drive2";
|
device = "/dev/disk/by-label/DRIVE2";
|
||||||
drive = {
|
fsType = "ext4";
|
||||||
device = "/dev/disk/by-label/DRIVE2";
|
options = [ "noatime" "nodiratime" "discard" ];
|
||||||
fsType = "ext4";
|
};
|
||||||
options = [
|
}];
|
||||||
"noatime"
|
# TODO: how to make this work
|
||||||
"nodiratime"
|
# type = with lib.types; listOf (attrsOf driveModule);
|
||||||
"discard"
|
type = with lib.types; listOf (attrsOf anything);
|
||||||
];
|
description = ''
|
||||||
};
|
Extra drives to add.
|
||||||
}
|
'';
|
||||||
];
|
};
|
||||||
# TODO: how to make this work
|
|
||||||
# type = with lib.types; listOf (attrsOf driveModule);
|
|
||||||
type = with lib.types; listOf (attrsOf anything);
|
|
||||||
description = ''
|
|
||||||
Extra drives to add.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = (lib.optionalAttrs (options?fileSystems) {
|
config = (lib.optionalAttrs (options ? fileSystems) {
|
||||||
fileSystems = builtins.listToAttrs
|
fileSystems = builtins.listToAttrs (map ({ name, drive }: {
|
||||||
(map
|
name = "/" + name;
|
||||||
({ name, drive }: {
|
value = drive;
|
||||||
name = "/" + name;
|
}) config.mods.extraDrives);
|
||||||
value = drive;
|
|
||||||
})
|
|
||||||
config.mods.extraDrives);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@
|
||||||
description = "Firefox policy configuration";
|
description = "Firefox policy configuration";
|
||||||
};
|
};
|
||||||
extensions = lib.mkOption {
|
extensions = lib.mkOption {
|
||||||
default = with pkgs.nur.repos.rycee.firefox-addons;[
|
default = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||||
ublock-origin
|
ublock-origin
|
||||||
darkreader
|
darkreader
|
||||||
privacy-badger
|
privacy-badger
|
||||||
|
|
@ -57,11 +57,18 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = lib.mkIf config.mods.firefox.enable
|
config = lib.mkIf config.mods.firefox.enable
|
||||||
(lib.optionalAttrs (options?programs.firefox.profiles) {
|
(lib.optionalAttrs (options ? programs.firefox.profiles) {
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
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;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -14,14 +14,13 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
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";
|
}];
|
||||||
}];
|
services.flatpak.uninstallUnmanaged = true;
|
||||||
services.flatpak.uninstallUnmanaged = true;
|
} // lib.optionalAttrs (options ? services.flatpak.packages) {
|
||||||
} // lib.optionalAttrs (options?services.flatpak.packages) {
|
|
||||||
services.flatpak.packages = [
|
services.flatpak.packages = [
|
||||||
# fallback if necessary, but generally avoided as nix is superior :)
|
# fallback if necessary, but generally avoided as nix is superior :)
|
||||||
# default flatseal installation since flatpak permissions are totally not a broken idea
|
# default flatseal installation since flatpak permissions are totally not a broken idea
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
@ -51,7 +45,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = lib.mkIf config.mods.gaming.enable
|
config = lib.mkIf config.mods.gaming.enable
|
||||||
(lib.optionalAttrs (options?environment.systemPackages) {
|
(lib.optionalAttrs (options ? environment.systemPackages) {
|
||||||
environment.systemPackages = config.mods.gaming.tools;
|
environment.systemPackages = config.mods.gaming.tools;
|
||||||
|
|
||||||
programs.steam.enable = config.mods.gaming.steam;
|
programs.steam.enable = config.mods.gaming.steam;
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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,29 +15,40 @@
|
||||||
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)";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = (lib.optionalAttrs (options?programs.git && options?home.file) {
|
config = (lib.optionalAttrs (options ? programs.git && options ? home.file) {
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
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;
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
];
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,46 +38,36 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
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 {
|
||||||
{
|
kernelModules = [ "kvm-amd" ];
|
||||||
boot = lib.mkIf config.mods.amdgpu.enable {
|
initrd.kernelModules = [ "amdgpu" ];
|
||||||
kernelModules = [ "kvm-amd" ];
|
kernelParams = [ "amdgpu.ppfeaturemask=0xffffffff" ];
|
||||||
initrd.kernelModules = [ "amdgpu" ];
|
|
||||||
kernelParams = [
|
|
||||||
"amdgpu.ppfeaturemask=0xffffffff"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware = {
|
|
||||||
graphics =
|
|
||||||
let
|
|
||||||
base_packages = [
|
|
||||||
pkgs.libvdpau-va-gl
|
|
||||||
pkgs.vaapiVdpau
|
|
||||||
pkgs.mesa.drivers
|
|
||||||
];
|
|
||||||
rocm_packages = [
|
|
||||||
pkgs.rocmPackages.clr.icd
|
|
||||||
pkgs.rocm-opencl-runtime
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
enable32Bit = lib.mkDefault true;
|
|
||||||
extraPackages = base_packages ++
|
|
||||||
(lib.lists.optionals config.mods.vapi.rocm.enable rocm_packages);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
} // lib.optionalAttrs (options?hardware.graphics) (lib.mkIf config.mods.nvidia.enable {
|
|
||||||
hardware.nvidia = {
|
|
||||||
modesetting.enable = true;
|
|
||||||
# powerManagement.enable = false;
|
|
||||||
# powerManagement.finegrained = true;
|
|
||||||
open = true;
|
|
||||||
nvidiaSettings = true;
|
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
|
||||||
};
|
};
|
||||||
services.xserver.videoDrivers = [ "nvidia" ];
|
|
||||||
}));
|
hardware = {
|
||||||
|
graphics = let
|
||||||
|
base_packages =
|
||||||
|
[ pkgs.libvdpau-va-gl pkgs.vaapiVdpau pkgs.mesa.drivers ];
|
||||||
|
rocm_packages =
|
||||||
|
[ pkgs.rocmPackages.clr.icd pkgs.rocm-opencl-runtime ];
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = lib.mkDefault true;
|
||||||
|
extraPackages = base_packages
|
||||||
|
++ (lib.lists.optionals config.mods.vapi.rocm.enable rocm_packages);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} // lib.optionalAttrs (options ? hardware.graphics)
|
||||||
|
(lib.mkIf config.mods.nvidia.enable {
|
||||||
|
hardware.nvidia = {
|
||||||
|
modesetting.enable = true;
|
||||||
|
# powerManagement.enable = false;
|
||||||
|
# powerManagement.finegrained = true;
|
||||||
|
open = true;
|
||||||
|
nvidiaSettings = true;
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||||
|
};
|
||||||
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,62 +38,60 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config =
|
config = let
|
||||||
let
|
username = config.conf.username;
|
||||||
username = config.conf.username;
|
session = {
|
||||||
session = {
|
command = "${
|
||||||
command = "${lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland} --config /etc/greetd/hyprgreet.conf";
|
lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland
|
||||||
user = username;
|
} --config /etc/greetd/hyprgreet.conf";
|
||||||
|
user = username;
|
||||||
|
};
|
||||||
|
in lib.mkIf config.mods.greetd.enable
|
||||||
|
(lib.optionalAttrs (options ? environment) {
|
||||||
|
services.xserver.displayManager.session = [{
|
||||||
|
manage = "desktop";
|
||||||
|
name = "Hyprland";
|
||||||
|
start = ''
|
||||||
|
${lib.getExe pkgs.hyprland} & waitPID=$!
|
||||||
|
'';
|
||||||
|
}];
|
||||||
|
|
||||||
|
# greetd display manager
|
||||||
|
programs.hyprland.enable = true;
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
terminal.vt = 1;
|
||||||
|
default_session = session;
|
||||||
};
|
};
|
||||||
in
|
};
|
||||||
lib.mkIf config.mods.greetd.enable
|
|
||||||
(lib.optionalAttrs (options?environment) {
|
|
||||||
services.xserver.displayManager.session = [
|
|
||||||
{
|
|
||||||
manage = "desktop";
|
|
||||||
name = "Hyprland";
|
|
||||||
start = ''
|
|
||||||
${lib.getExe pkgs.hyprland} & waitPID=$!
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# greetd display manager
|
environment.etc."greetd/environments".text = ''
|
||||||
programs.hyprland.enable = true;
|
Hyprland
|
||||||
services.greetd = {
|
'';
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
terminal.vt = 1;
|
|
||||||
default_session = session;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.etc."greetd/environments".text = ''
|
# should technically be the same, but this is configured instead in order to provide a decent out of the box login experience.
|
||||||
Hyprland
|
environment.etc."greetd/hyprgreet.conf".text = ''
|
||||||
'';
|
exec-once=gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
||||||
|
|
||||||
# should technically be the same, but this is configured instead in order to provide a decent out of the box login experience.
|
monitor=${config.mods.greetd.monitor},${config.mods.greetd.resolution},0x0,${config.mods.greetd.scale}
|
||||||
environment.etc."greetd/hyprgreet.conf".text = ''
|
monitor=,disable
|
||||||
exec-once=gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
|
||||||
|
|
||||||
monitor=${config.mods.greetd.monitor},${config.mods.greetd.resolution},0x0,${config.mods.greetd.scale}
|
input {
|
||||||
monitor=,disable
|
kb_layout = ${config.mods.xkb.layout}
|
||||||
|
kb_variant = ${config.mods.xkb.variant}
|
||||||
|
force_no_accel = true
|
||||||
|
}
|
||||||
|
|
||||||
input {
|
misc {
|
||||||
kb_layout = ${config.mods.xkb.layout}
|
disable_splash_rendering = false
|
||||||
kb_variant = ${config.mods.xkb.variant}
|
disable_hyprland_logo = false
|
||||||
force_no_accel = true
|
}
|
||||||
}
|
|
||||||
|
|
||||||
misc {
|
exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit
|
||||||
disable_splash_rendering = false
|
'';
|
||||||
disable_hyprland_logo = false
|
|
||||||
}
|
|
||||||
|
|
||||||
exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit
|
# unlock GPG keyring on login
|
||||||
'';
|
security.pam.services.greetd.enableGnomeKeyring = true;
|
||||||
|
});
|
||||||
# unlock GPG keyring on login
|
|
||||||
security.pam.services.greetd.enableGnomeKeyring = true;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,14 +16,10 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config =
|
config = (lib.optionalAttrs (options ? home.packages) {
|
||||||
let
|
home.packages = config.mods.home_packages.additional_packages;
|
||||||
callPackage = lib.callPackageWith pkgs;
|
} // (lib.mkIf config.mods.home_packages.enable
|
||||||
in
|
(lib.optionalAttrs (options ? home.packages) {
|
||||||
(lib.optionalAttrs (options?home.packages)
|
|
||||||
{
|
|
||||||
home.packages = config.mods.home_packages.additional_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
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.mods.hyprland.anyrun.enable
|
config = lib.mkIf config.mods.hyprland.anyrun.enable
|
||||||
(lib.optionalAttrs (options?programs.anyrun) {
|
(lib.optionalAttrs (options ? programs.anyrun) {
|
||||||
programs.anyrun = {
|
programs.anyrun = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config = {
|
config = {
|
||||||
|
|
|
||||||
|
|
@ -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,281 +58,278 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
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
|
grim
|
||||||
grim
|
slurp
|
||||||
slurp
|
satty
|
||||||
satty
|
xdg-desktop-portal-gtk
|
||||||
xdg-desktop-portal-gtk
|
# xdg-desktop-portal-hyprland
|
||||||
# xdg-desktop-portal-hyprland
|
copyq
|
||||||
copyq
|
wl-clipboard
|
||||||
wl-clipboard
|
hyprcursor
|
||||||
hyprcursor
|
hyprpicker
|
||||||
hyprpicker
|
];
|
||||||
];
|
|
||||||
|
|
||||||
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 = [
|
||||||
|
# screenshots
|
||||||
|
''$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 SUPERCONTROLSHIFT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy''
|
||||||
|
|
||||||
|
# regular programs
|
||||||
|
"$mod SUPER,F,exec,firefox"
|
||||||
|
"$mod SUPERSHIFT,F,exec,firefox -p special"
|
||||||
|
"$mod SUPER,T,exec,kitty -1"
|
||||||
|
"$mod SUPER,E,exec,nautilus -w"
|
||||||
|
"$mod SUPER,N,exec,neovide"
|
||||||
|
"$mod SUPER,M,exec,oxidash"
|
||||||
|
"$mod SUPER,R,exec,anyrun"
|
||||||
|
"$mod SUPER,G,exec,oxicalc"
|
||||||
|
"$mod SUPER,D,exec,oxishut"
|
||||||
|
"$mod SUPER,A,exec,oxipaste"
|
||||||
|
"$mod SUPERSHIFT,P,exec,hyprdock --gui"
|
||||||
|
"$mod SUPERSHIFT,L,exec, playerctl -a pause & hyprlock & systemctl suspend"
|
||||||
|
"$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate"
|
||||||
|
|
||||||
|
# media keys
|
||||||
|
",XF86AudioMute,exec, $HOME/.config/scripts/audio_control.sh mute"
|
||||||
|
",XF86AudioLowerVolume,exec, $HOME/.config/scripts/audio_control.sh sink -5%"
|
||||||
|
",XF86AudioRaiseVolume,exec, $HOME/.config/scripts/audio_control.sh sink +5%"
|
||||||
|
",XF86AudioPlay,exec, playerctl play-pause"
|
||||||
|
",XF86AudioNext,exec, playerctl next"
|
||||||
|
",XF86AudioPrev,exec, playerctl previous"
|
||||||
|
",XF86MonBrightnessDown,exec, $HOME/.config/scripts/change-brightness brightness 10%-"
|
||||||
|
",XF86MonBrightnessUp,exec, $HOME/.config/scripts/change-brightness brightness +10%"
|
||||||
|
|
||||||
|
# hyprland keybinds
|
||||||
|
# misc
|
||||||
|
"$mod SUPER,V,togglefloating,"
|
||||||
|
"$mod SUPER,B,fullscreen,"
|
||||||
|
"$mod SUPER,C,togglesplit"
|
||||||
|
"$mod SUPER,Q,killactive,"
|
||||||
|
"$mod SUPERSHIFTALT,M,exit,"
|
||||||
|
"$mod SUPERSHIFT,W,togglespecialworkspace"
|
||||||
|
|
||||||
|
# move
|
||||||
|
"$mod SUPER,left,movewindow,l"
|
||||||
|
"$mod SUPER,right,movewindow,r"
|
||||||
|
"$mod SUPER,up,movewindow,u"
|
||||||
|
"$mod SUPER,down,movewindow,d"
|
||||||
|
|
||||||
|
# workspaces
|
||||||
|
"$mod SUPER,1,workspace,1"
|
||||||
|
"$mod SUPER,2,workspace,2"
|
||||||
|
"$mod SUPER,3,workspace,3"
|
||||||
|
"$mod SUPER,4,workspace,4"
|
||||||
|
"$mod SUPER,5,workspace,5"
|
||||||
|
"$mod SUPER,6,workspace,6"
|
||||||
|
"$mod SUPER,7,workspace,7"
|
||||||
|
"$mod SUPER,8,workspace,8"
|
||||||
|
"$mod SUPER,9,workspace,9"
|
||||||
|
"$mod SUPER,0,workspace,10"
|
||||||
|
|
||||||
|
# move to workspace
|
||||||
|
"$mod SUPERSHIFT,1,movetoworkspace,1"
|
||||||
|
"$mod SUPERSHIFT,2,movetoworkspace,2"
|
||||||
|
"$mod SUPERSHIFT,3,movetoworkspace,3"
|
||||||
|
"$mod SUPERSHIFT,4,movetoworkspace,4"
|
||||||
|
"$mod SUPERSHIFT,5,movetoworkspace,5"
|
||||||
|
"$mod SUPERSHIFT,6,movetoworkspace,6"
|
||||||
|
"$mod SUPERSHIFT,7,movetoworkspace,7"
|
||||||
|
"$mod SUPERSHIFT,8,movetoworkspace,8"
|
||||||
|
"$mod SUPERSHIFT,9,movetoworkspace,9"
|
||||||
|
"$mod SUPERSHIFT,0,movetoworkspace,10"
|
||||||
|
|
||||||
|
# move to workspace silent
|
||||||
|
"$mod SUPERSHIFTALT,1,movetoworkspacesilent,1"
|
||||||
|
"$mod SUPERSHIFTALT,2,movetoworkspacesilent,2"
|
||||||
|
"$mod SUPERSHIFTALT,3,movetoworkspacesilent,3"
|
||||||
|
"$mod SUPERSHIFTALT,4,movetoworkspacesilent,4"
|
||||||
|
"$mod SUPERSHIFTALT,5,movetoworkspacesilent,5"
|
||||||
|
"$mod SUPERSHIFTALT,6,movetoworkspacesilent,6"
|
||||||
|
"$mod SUPERSHIFTALT,7,movetoworkspacesilent,7"
|
||||||
|
"$mod SUPERSHIFTALT,8,movetoworkspacesilent,8"
|
||||||
|
"$mod SUPERSHIFTALT,9,movetoworkspacesilent,9"
|
||||||
|
"$mod SUPERSHIFTALT,0,movetoworkspacesilent,10"
|
||||||
|
|
||||||
|
# preselection
|
||||||
|
"$mod SUPERALT,j,layoutmsg,preselect l"
|
||||||
|
"$mod SUPERALT,k,layoutmsg,preselect d"
|
||||||
|
"$mod SUPERALT,l,layoutmsg,preselect u"
|
||||||
|
"$mod SUPERALT,semicolon,layoutmsg,preselect r"
|
||||||
|
"$mod SUPERALT,h,layoutmsg,preselect n"
|
||||||
|
];
|
||||||
|
|
||||||
|
binde = [
|
||||||
|
# hyprland keybinds
|
||||||
|
# focus
|
||||||
|
"$mod SUPER,J,movefocus,l"
|
||||||
|
"$mod SUPER,semicolon,movefocus,r"
|
||||||
|
"$mod SUPER,L,movefocus,u"
|
||||||
|
"$mod SUPER,K,movefocus,d"
|
||||||
|
|
||||||
|
# resize
|
||||||
|
"$mod SUPER,U,resizeactive,-20 0"
|
||||||
|
"$mod SUPER,P,resizeactive,20 0"
|
||||||
|
"$mod SUPER,O,resizeactive,0 -20"
|
||||||
|
"$mod SUPER,I,resizeactive,0 20"
|
||||||
|
];
|
||||||
|
|
||||||
|
general = {
|
||||||
|
gaps_out = "3,5,5,5";
|
||||||
|
border_size = 3;
|
||||||
|
"col.active_border" =
|
||||||
|
lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg";
|
||||||
|
# "col.inactive_border" = "0x66333333";
|
||||||
|
allow_tearing = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
decoration = { rounding = 4; };
|
||||||
|
|
||||||
|
animations = {
|
||||||
|
bezier = "penguin,0.05,0.9,0.1,1.0";
|
||||||
|
animation = [
|
||||||
|
"windowsMove,1,4,default"
|
||||||
|
"windows,1,7,default,popin 70%"
|
||||||
|
"windowsOut,1,7,default,popin 70%"
|
||||||
|
"border,1,10,default"
|
||||||
|
"fade,1,7,default"
|
||||||
|
"workspaces,1,6,default"
|
||||||
|
"layers,1,3,default,popin"
|
||||||
];
|
];
|
||||||
|
};
|
||||||
|
|
||||||
bind = [
|
dwindle = {
|
||||||
# screenshots
|
preserve_split = true;
|
||||||
"$mod SUPER,S,exec,grim -g \"$(slurp)\" - | wl-copy"
|
pseudotile = 0;
|
||||||
"$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"
|
permanent_direction_override = false;
|
||||||
"$mod SUPERSHIFT,S,exec,grim -g \"$(slurp)\" - | satty -f -"
|
};
|
||||||
"$mod SUPERCONTROLSHIFT,S,exec,grim -c -g \"2560,0 3440x1440\" - | wl-copy"
|
|
||||||
|
|
||||||
# regular programs
|
input = {
|
||||||
"$mod SUPER,F,exec,firefox"
|
kb_layout = "${config.mods.xkb.layout}";
|
||||||
"$mod SUPER,T,exec,kitty -1"
|
kb_variant = "${config.mods.xkb.variant}";
|
||||||
"$mod SUPER,E,exec,nautilus -w"
|
repeat_delay = 200;
|
||||||
"$mod SUPER,N,exec,neovide"
|
force_no_accel = true;
|
||||||
"$mod SUPER,M,exec,oxidash"
|
touchpad = {
|
||||||
"$mod SUPER,R,exec,anyrun"
|
natural_scroll = true;
|
||||||
"$mod SUPER,G,exec,oxicalc"
|
tap-to-click = true;
|
||||||
"$mod SUPER,D,exec,oxishut"
|
tap-and-drag = true;
|
||||||
"$mod SUPER,A,exec,oxipaste"
|
|
||||||
"$mod SUPERSHIFT,P,exec,hyprdock --gui"
|
|
||||||
"$mod SUPERSHIFT,L,exec, playerctl -a pause & hyprlock & systemctl suspend"
|
|
||||||
"$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate"
|
|
||||||
|
|
||||||
# media keys
|
|
||||||
",XF86AudioMute,exec, $HOME/.config/scripts/audio_control.sh mute"
|
|
||||||
",XF86AudioLowerVolume,exec, $HOME/.config/scripts/audio_control.sh sink -5%"
|
|
||||||
",XF86AudioRaiseVolume,exec, $HOME/.config/scripts/audio_control.sh sink +5%"
|
|
||||||
",XF86AudioPlay,exec, playerctl play-pause"
|
|
||||||
",XF86AudioNext,exec, playerctl next"
|
|
||||||
",XF86AudioPrev,exec, playerctl previous"
|
|
||||||
",XF86MonBrightnessDown,exec, $HOME/.config/scripts/change-brightness brightness 10%-"
|
|
||||||
",XF86MonBrightnessUp,exec, $HOME/.config/scripts/change-brightness brightness +10%"
|
|
||||||
|
|
||||||
# hyprland keybinds
|
|
||||||
# misc
|
|
||||||
"$mod SUPER,V,togglefloating,"
|
|
||||||
"$mod SUPER,B,fullscreen,"
|
|
||||||
"$mod SUPER,C,togglesplit"
|
|
||||||
"$mod SUPER,Q,killactive,"
|
|
||||||
"$mod SUPERSHIFTALT,M,exit,"
|
|
||||||
"$mod SUPERSHIFT,W,togglespecialworkspace"
|
|
||||||
|
|
||||||
# move
|
|
||||||
"$mod SUPER,left,movewindow,l"
|
|
||||||
"$mod SUPER,right,movewindow,r"
|
|
||||||
"$mod SUPER,up,movewindow,u"
|
|
||||||
"$mod SUPER,down,movewindow,d"
|
|
||||||
|
|
||||||
# workspaces
|
|
||||||
"$mod SUPER,1,workspace,1"
|
|
||||||
"$mod SUPER,2,workspace,2"
|
|
||||||
"$mod SUPER,3,workspace,3"
|
|
||||||
"$mod SUPER,4,workspace,4"
|
|
||||||
"$mod SUPER,5,workspace,5"
|
|
||||||
"$mod SUPER,6,workspace,6"
|
|
||||||
"$mod SUPER,7,workspace,7"
|
|
||||||
"$mod SUPER,8,workspace,8"
|
|
||||||
"$mod SUPER,9,workspace,9"
|
|
||||||
"$mod SUPER,0,workspace,10"
|
|
||||||
|
|
||||||
# move to workspace
|
|
||||||
"$mod SUPERSHIFT,1,movetoworkspace,1"
|
|
||||||
"$mod SUPERSHIFT,2,movetoworkspace,2"
|
|
||||||
"$mod SUPERSHIFT,3,movetoworkspace,3"
|
|
||||||
"$mod SUPERSHIFT,4,movetoworkspace,4"
|
|
||||||
"$mod SUPERSHIFT,5,movetoworkspace,5"
|
|
||||||
"$mod SUPERSHIFT,6,movetoworkspace,6"
|
|
||||||
"$mod SUPERSHIFT,7,movetoworkspace,7"
|
|
||||||
"$mod SUPERSHIFT,8,movetoworkspace,8"
|
|
||||||
"$mod SUPERSHIFT,9,movetoworkspace,9"
|
|
||||||
"$mod SUPERSHIFT,0,movetoworkspace,10"
|
|
||||||
|
|
||||||
|
|
||||||
# move to workspace silent
|
|
||||||
"$mod SUPERSHIFTALT,1,movetoworkspacesilent,1"
|
|
||||||
"$mod SUPERSHIFTALT,2,movetoworkspacesilent,2"
|
|
||||||
"$mod SUPERSHIFTALT,3,movetoworkspacesilent,3"
|
|
||||||
"$mod SUPERSHIFTALT,4,movetoworkspacesilent,4"
|
|
||||||
"$mod SUPERSHIFTALT,5,movetoworkspacesilent,5"
|
|
||||||
"$mod SUPERSHIFTALT,6,movetoworkspacesilent,6"
|
|
||||||
"$mod SUPERSHIFTALT,7,movetoworkspacesilent,7"
|
|
||||||
"$mod SUPERSHIFTALT,8,movetoworkspacesilent,8"
|
|
||||||
"$mod SUPERSHIFTALT,9,movetoworkspacesilent,9"
|
|
||||||
"$mod SUPERSHIFTALT,0,movetoworkspacesilent,10"
|
|
||||||
|
|
||||||
# preselection
|
|
||||||
"$mod SUPERALT,j,layoutmsg,preselect l"
|
|
||||||
"$mod SUPERALT,k,layoutmsg,preselect d"
|
|
||||||
"$mod SUPERALT,l,layoutmsg,preselect u"
|
|
||||||
"$mod SUPERALT,semicolon,layoutmsg,preselect r"
|
|
||||||
"$mod SUPERALT,h,layoutmsg,preselect n"
|
|
||||||
];
|
|
||||||
|
|
||||||
binde = [
|
|
||||||
# hyprland keybinds
|
|
||||||
# focus
|
|
||||||
"$mod SUPER,J,movefocus,l"
|
|
||||||
"$mod SUPER,semicolon,movefocus,r"
|
|
||||||
"$mod SUPER,L,movefocus,u"
|
|
||||||
"$mod SUPER,K,movefocus,d"
|
|
||||||
|
|
||||||
# resize
|
|
||||||
"$mod SUPER,U,resizeactive,-20 0"
|
|
||||||
"$mod SUPER,P,resizeactive,20 0"
|
|
||||||
"$mod SUPER,O,resizeactive,0 -20"
|
|
||||||
"$mod SUPER,I,resizeactive,0 20"
|
|
||||||
];
|
|
||||||
|
|
||||||
general = {
|
|
||||||
gaps_out = "3,5,5,5";
|
|
||||||
border_size = 3;
|
|
||||||
"col.active_border" = lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg";
|
|
||||||
# "col.inactive_border" = "0x66333333";
|
|
||||||
allow_tearing = true;
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
decoration = {
|
misc = {
|
||||||
rounding = 4;
|
animate_manual_resizes = 1;
|
||||||
};
|
enable_swallow = true;
|
||||||
|
disable_splash_rendering = true;
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
swallow_regex = "^(.*)(kitty)(.*)$";
|
||||||
|
initial_workspace_tracking = 1;
|
||||||
|
};
|
||||||
|
|
||||||
animations = {
|
cursor = {
|
||||||
bezier = "penguin,0.05,0.9,0.1,1.0";
|
# conversion seems to be borked right now, i want a smooth bibata :(
|
||||||
animation = [
|
enable_hyprcursor = false;
|
||||||
"windowsMove,1,4,default"
|
# no_hardware_cursors = true;
|
||||||
"windows,1,7,default,popin 70%"
|
# no_break_fs_vrr = true;
|
||||||
"windowsOut,1,7,default,popin 70%"
|
};
|
||||||
"border,1,10,default"
|
|
||||||
"fade,1,7,default"
|
|
||||||
"workspaces,1,6,default"
|
|
||||||
"layers,1,3,default,popin"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
dwindle = {
|
gestures = { workspace_swipe = true; };
|
||||||
preserve_split = true;
|
|
||||||
pseudotile = 0;
|
|
||||||
permanent_direction_override = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
input = {
|
monitor = config.mods.hyprland.monitor;
|
||||||
kb_layout = "${config.mods.xkb.layout}";
|
workspace = config.mods.hyprland.workspace;
|
||||||
kb_variant = "${config.mods.xkb.variant}";
|
|
||||||
repeat_delay = 200;
|
|
||||||
force_no_accel = true;
|
|
||||||
touchpad = {
|
|
||||||
natural_scroll = true;
|
|
||||||
tap-to-click = true;
|
|
||||||
tap-and-drag = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
misc = {
|
env = [
|
||||||
animate_manual_resizes = 1;
|
"GTK_CSD,0"
|
||||||
enable_swallow = true;
|
''TERM,"kitty /bin/fish"''
|
||||||
disable_splash_rendering = true;
|
"XDG_CURRENT_DESKTOP=Hyprland"
|
||||||
disable_hyprland_logo = true;
|
"XDG_SESSION_TYPE=wayland"
|
||||||
swallow_regex = "^(.*)(kitty)(.*)$";
|
"XDG_SESSION_DESKTOP=Hyprland"
|
||||||
initial_workspace_tracking = 1;
|
"HYPRCURSOR_THEME,Bibata-Modern-Classic"
|
||||||
};
|
"HYPRCURSOR_SIZE,24"
|
||||||
|
"XCURSOR_THEME,Bibata-Modern-Classic"
|
||||||
|
"XCURSOR_SIZE,24"
|
||||||
|
"QT_QPA_PLATFORM,wayland"
|
||||||
|
"QT_QPA_PLATFORMTHEME,qt5ct"
|
||||||
|
"QT_WAYLAND_FORCE_DPI,96"
|
||||||
|
"QT_AUTO_SCREEN_SCALE_FACTOR,0"
|
||||||
|
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||||
|
"QT_SCALE_FACTOR,1"
|
||||||
|
''EDITOR,"neovide --novsync --nofork"''
|
||||||
|
"WLR_DRM_NO_ATOMIC,1"
|
||||||
|
"GTK_USE_PORTAL, 1"
|
||||||
|
];
|
||||||
|
|
||||||
cursor = {
|
layerrule = [
|
||||||
# conversion seems to be borked right now, i want a smooth bibata :(
|
# layer rules
|
||||||
enable_hyprcursor = false;
|
# mainly to disable animations within slurp and grim
|
||||||
# no_hardware_cursors = true;
|
"noanim, selection"
|
||||||
# no_break_fs_vrr = true;
|
];
|
||||||
};
|
|
||||||
|
|
||||||
gestures = {
|
windowrule = [
|
||||||
workspace_swipe = true;
|
# window rules
|
||||||
};
|
"tile,^(.*)(Spotify)(.*)$"
|
||||||
|
"float,^(.*)(OxiCalc)(.*)$"
|
||||||
|
"float,^(.*)(winecfg.exe)(.*)$"
|
||||||
|
"float,^(.*)(speed.exe)(.*)$"
|
||||||
|
"float,^(.*)(copyq)(.*)$"
|
||||||
|
"center,^(.*)(swappy)(.*)$"
|
||||||
|
"float,title:^(.*)(Spirit)(.*)$"
|
||||||
|
"float,title:^(.*)(reset)(.*)$"
|
||||||
|
"workspace 10 silent,^(.*)(steam)(.*)$"
|
||||||
|
"workspace 9 silent,^(.*)(dota)(.*)$"
|
||||||
|
"workspace 9 silent,^(.*)(battlebits)(.*)$"
|
||||||
|
"workspace 9 silent,^(.*)(aoe)(.*)$"
|
||||||
|
"suppressevent fullscreen maximize,^(.*)(neovide)(.*)$"
|
||||||
|
];
|
||||||
|
|
||||||
monitor = config.mods.hyprland.monitor;
|
windowrulev2 = [
|
||||||
workspace = config.mods.hyprland.workspace;
|
"immediate,class:^(.*)(Pal)$"
|
||||||
|
"immediate,class:^(.*)(dota2)$"
|
||||||
|
"immediate,class:^(.*)(needforspeedheat.exe)$"
|
||||||
|
];
|
||||||
|
|
||||||
env = [
|
exec-once = [
|
||||||
"GTK_CSD,0"
|
# environment
|
||||||
"TERM,\"kitty /bin/fish\""
|
"systemctl --user import-environment"
|
||||||
"XDG_CURRENT_DESKTOP=Hyprland"
|
"dbus-update-activation-environment --systemd --all"
|
||||||
"XDG_SESSION_TYPE=wayland"
|
"hyprctl setcursor Bibata-Modern-Classic 24"
|
||||||
"XDG_SESSION_DESKTOP=Hyprland"
|
|
||||||
"HYPRCURSOR_THEME,Bibata-Modern-Classic"
|
|
||||||
"HYPRCURSOR_SIZE,24"
|
|
||||||
"XCURSOR_THEME,Bibata-Modern-Classic"
|
|
||||||
"XCURSOR_SIZE,24"
|
|
||||||
"QT_QPA_PLATFORM,wayland"
|
|
||||||
"QT_QPA_PLATFORMTHEME,qt5ct"
|
|
||||||
"QT_WAYLAND_FORCE_DPI,96"
|
|
||||||
"QT_AUTO_SCREEN_SCALE_FACTOR,0"
|
|
||||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
|
||||||
"QT_SCALE_FACTOR,1"
|
|
||||||
"EDITOR,\"neovide --novsync --nofork\""
|
|
||||||
"WLR_DRM_NO_ATOMIC,1"
|
|
||||||
"GTK_USE_PORTAL, 1"
|
|
||||||
];
|
|
||||||
|
|
||||||
layerrule = [
|
# other programs
|
||||||
# layer rules
|
"hyprpaper"
|
||||||
# mainly to disable animations within slurp and grim
|
"ironbar"
|
||||||
"noanim, selection"
|
"firefox"
|
||||||
];
|
"oxipaste_daemon"
|
||||||
|
# should be taken care of with the new systemd services
|
||||||
|
# "nextcloud --background"
|
||||||
|
"oxinoti"
|
||||||
|
] ++ config.mods.hyprland.extra_autostart;
|
||||||
|
|
||||||
windowrule = [
|
# plugin = {
|
||||||
# window rules
|
# hyprspace = {
|
||||||
"tile,^(.*)(Spotify)(.*)$"
|
# bind = [
|
||||||
"float,^(.*)(OxiCalc)(.*)$"
|
# "SUPER, W, overview:toggle, toggle"
|
||||||
"float,^(.*)(winecfg.exe)(.*)$"
|
# ];
|
||||||
"float,^(.*)(speed.exe)(.*)$"
|
# };
|
||||||
"float,^(.*)(copyq)(.*)$"
|
# };
|
||||||
"center,^(.*)(swappy)(.*)$"
|
} // config.mods.hyprland.custom_config;
|
||||||
"float,title:^(.*)(Spirit)(.*)$"
|
# wayland.windowManager.hyprland.plugins = [
|
||||||
"float,title:^(.*)(reset)(.*)$"
|
# inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
|
||||||
"workspace 10 silent,^(.*)(steam)(.*)$"
|
# ];
|
||||||
"workspace 9 silent,^(.*)(dota)(.*)$"
|
});
|
||||||
"workspace 9 silent,^(.*)(battlebits)(.*)$"
|
|
||||||
"workspace 9 silent,^(.*)(aoe)(.*)$"
|
|
||||||
"suppressevent fullscreen maximize,^(.*)(neovide)(.*)$"
|
|
||||||
];
|
|
||||||
|
|
||||||
windowrulev2 = [
|
|
||||||
"immediate,class:^(.*)(Pal)$"
|
|
||||||
"immediate,class:^(.*)(dota2)$"
|
|
||||||
"immediate,class:^(.*)(needforspeedheat.exe)$"
|
|
||||||
];
|
|
||||||
|
|
||||||
exec-once = [
|
|
||||||
# environment
|
|
||||||
"systemctl --user import-environment"
|
|
||||||
"dbus-update-activation-environment --systemd --all"
|
|
||||||
"hyprctl setcursor Bibata-Modern-Classic 24"
|
|
||||||
|
|
||||||
# other programs
|
|
||||||
"hyprpaper"
|
|
||||||
"ironbar"
|
|
||||||
"firefox"
|
|
||||||
"oxipaste_daemon"
|
|
||||||
# should be taken care of with the new systemd services
|
|
||||||
# "nextcloud --background"
|
|
||||||
"oxinoti"
|
|
||||||
] ++ config.mods.hyprland.extra_autostart;
|
|
||||||
|
|
||||||
# plugin = {
|
|
||||||
# hyprspace = {
|
|
||||||
# bind = [
|
|
||||||
# "SUPER, W, overview:toggle, toggle"
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
} // config.mods.hyprland.custom_config;
|
|
||||||
# wayland.windowManager.hyprland.plugins = [
|
|
||||||
# inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
|
|
||||||
# ];
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,37 +11,31 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.mods.hyprland.hyprlock.enable
|
config = lib.mkIf config.mods.hyprland.hyprlock.enable
|
||||||
(lib.optionalAttrs (options?xdg.configFile) {
|
(lib.optionalAttrs (options ? xdg.configFile) {
|
||||||
home.packages = with pkgs; [ hyprlock ];
|
home.packages = with pkgs; [ hyprlock ];
|
||||||
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";
|
}];
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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,11 +21,11 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
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" =
|
||||||
xdg.configFile."hypr/hyprpaper.conf" = lib.mkIf config.mods.hyprland.hyprpaper.enable {
|
lib.mkIf config.mods.hyprland.hyprpaper.enable {
|
||||||
text = config.mods.hyprland.hyprpaper.config;
|
text = config.mods.hyprland.hyprpaper.config;
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,172 +12,166 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
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;
|
||||||
style = ''
|
style = ''
|
||||||
@import url("/home/${username}/.config/gtk-3.0/gtk.css");
|
@import url("/home/${username}/.config/gtk-3.0/gtk.css");
|
||||||
|
|
||||||
* {
|
* {
|
||||||
color: #71bbe6;
|
color: #71bbe6;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.background {
|
.background {
|
||||||
background-color: rgba(0, 0, 0, 0);
|
background-color: rgba(0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.workspaces {
|
.workspaces {
|
||||||
margin: 2px 0px 0px 5px;
|
margin: 2px 0px 0px 5px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
/* background-color: #2b2c3b; */
|
/* background-color: #2b2c3b; */
|
||||||
background-color: #1E1E2E;
|
background-color: #1E1E2E;
|
||||||
padding: 2px 5px 2px 5px;
|
padding: 2px 5px 2px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.workspaces .item {
|
.workspaces .item {
|
||||||
margin: 0px 3px 0px 3px;
|
margin: 0px 3px 0px 3px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
border-radius: 100%;
|
border-radius: 100%;
|
||||||
padding: 0px 2px 0px 3px;
|
padding: 0px 2px 0px 3px;
|
||||||
background-color: rgba(0, 0, 0, 0);
|
background-color: rgba(0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.workspaces .item:hover {
|
.workspaces .item:hover {
|
||||||
background-color: #3e4152;
|
background-color: #3e4152;
|
||||||
}
|
}
|
||||||
|
|
||||||
.workspaces .item.focused {
|
.workspaces .item.focused {
|
||||||
background-color: #3e4152;
|
background-color: #3e4152;
|
||||||
}
|
}
|
||||||
|
|
||||||
.audio-box {
|
.audio-box {
|
||||||
padding: 2em;
|
padding: 2em;
|
||||||
background-color: #1E1E2E;
|
background-color: #1E1E2E;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.audio-slider {
|
.audio-slider {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.audio-button {
|
.audio-button {
|
||||||
padding: 5px 10px 5px 10px;
|
padding: 5px 10px 5px 10px;
|
||||||
margin: 0px 1em 20px 1em;
|
margin: 0px 1em 20px 1em;
|
||||||
border-radius: 100%;
|
border-radius: 100%;
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.audio-button-box {
|
.audio-button-box {
|
||||||
padding: 0px 2.5em 0px 2.5em;
|
padding: 0px 2.5em 0px 2.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.focused {
|
.focused {
|
||||||
/* margin: 2px 0px 0px 0px; */
|
/* margin: 2px 0px 0px 0px; */
|
||||||
padding: 0px 5px 0px 5px;
|
padding: 0px 5px 0px 5px;
|
||||||
/* background-color: 1a1b26; */
|
/* background-color: 1a1b26; */
|
||||||
background-color: #1E1E2E;
|
background-color: #1E1E2E;
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#bar #end {
|
#bar #end {
|
||||||
margin: 0px 5px 0px 0px;
|
margin: 0px 5px 0px 0px;
|
||||||
padding: 0px 5px 0px 5px;
|
padding: 0px 5px 0px 5px;
|
||||||
background-color: #1E1E2E;
|
background-color: #1E1E2E;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.popup-button {
|
.popup-button {
|
||||||
padding: 0px 5px 0px 3px;
|
padding: 0px 5px 0px 3px;
|
||||||
margin: 0em 3px;
|
margin: 0em 3px;
|
||||||
border-radius: 100%;
|
border-radius: 100%;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
background-color: #1E1E2E;
|
background-color: #1E1E2E;
|
||||||
}
|
}
|
||||||
|
|
||||||
.popup-button-box {
|
.popup-button-box {
|
||||||
padding: 2px 0px 2px 0px;
|
padding: 2px 0px 2px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.clock {
|
.clock {
|
||||||
padding: 0px 5px 0px 5px;
|
padding: 0px 5px 0px 5px;
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
background-color: #1E1E2E;
|
background-color: #1E1E2E;
|
||||||
}
|
}
|
||||||
|
|
||||||
.clock:hover {
|
.clock:hover {
|
||||||
background-color: #3e4152;
|
background-color: #3e4152;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom button {
|
.custom button {
|
||||||
background-color: #1E1E2E;
|
background-color: #1E1E2E;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom button:hover {
|
.custom button:hover {
|
||||||
background-color: #3e4152;
|
background-color: #3e4152;
|
||||||
}
|
}
|
||||||
|
|
||||||
.memory-usage {
|
.memory-usage {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
margin: 0px 5px 0px 0px;
|
margin: 0px 5px 0px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.memory-usage:hover {
|
.memory-usage:hover {
|
||||||
background-color: #3e4152;
|
background-color: #3e4152;
|
||||||
}
|
}
|
||||||
|
|
||||||
.popup-clock {
|
.popup-clock {
|
||||||
background-color: #1E1E2E;
|
background-color: #1E1E2E;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
padding: 2px 8px 10px 8px;
|
padding: 2px 8px 10px 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.popup-clock .calendar-clock {
|
.popup-clock .calendar-clock {
|
||||||
font-size: 2.5em;
|
font-size: 2.5em;
|
||||||
padding-bottom: 0.1em;
|
padding-bottom: 0.1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.popup-clock .calendar {
|
.popup-clock .calendar {
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
font-size: 1.05em;
|
font-size: 1.05em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.popup-clock .calendar:selected {
|
.popup-clock .calendar:selected {
|
||||||
background-color: #3e4152;
|
background-color: #3e4152;
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
features = [
|
features = [
|
||||||
#"another_feature"
|
#"another_feature"
|
||||||
];
|
];
|
||||||
config = {
|
config = {
|
||||||
monitors."${config.conf.monitor}" = {
|
monitors."${config.conf.monitor}" = {
|
||||||
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;
|
||||||
];
|
class = "memory-usage";
|
||||||
interval.memory = 30;
|
}
|
||||||
class = "memory-usage";
|
{
|
||||||
}
|
type = "custom";
|
||||||
{
|
bar = [{
|
||||||
type = "custom";
|
|
||||||
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,51 +219,49 @@
|
||||||
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";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
type = "clock";
|
type = "clock";
|
||||||
format = "%I:%M";
|
format = "%I:%M";
|
||||||
format_popup = "%I:%M:%S";
|
format_popup = "%I:%M:%S";
|
||||||
locale = "en_US";
|
locale = "en_US";
|
||||||
}
|
}
|
||||||
{ type = "tray"; }
|
{ type = "tray"; }
|
||||||
];
|
];
|
||||||
position = "top";
|
position = "top";
|
||||||
height = 10;
|
height = 10;
|
||||||
anchor_to_edges = true;
|
anchor_to_edges = true;
|
||||||
start = [{
|
start = [{
|
||||||
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";
|
||||||
}
|
}];
|
||||||
];
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
{ from = 1714; to = 1764; } # KDE Connect
|
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
|
|
||||||
];
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,41 +21,41 @@
|
||||||
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.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = lib.mkIf config.mods.keepassxc.enable
|
config = lib.mkIf config.mods.keepassxc.enable
|
||||||
(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
|
|
||||||
|
|
||||||
[Browser]
|
[Browser]
|
||||||
Enabled=true
|
Enabled=true
|
||||||
|
|
||||||
[GUI]
|
[GUI]
|
||||||
ApplicationTheme=classic
|
ApplicationTheme=classic
|
||||||
HidePasswords=true
|
HidePasswords=true
|
||||||
MinimizeOnClose=true
|
MinimizeOnClose=true
|
||||||
MinimizeToTray=true
|
MinimizeToTray=true
|
||||||
ShowTrayIcon=true
|
ShowTrayIcon=true
|
||||||
TrayIconAppearance=monochrome-light
|
TrayIconAppearance=monochrome-light
|
||||||
|
|
||||||
[PasswordGenerator]
|
[PasswordGenerator]
|
||||||
Length=30
|
Length=30
|
||||||
|
|
||||||
[Security]
|
[Security]
|
||||||
EnableCopyOnDoubleClick=true
|
EnableCopyOnDoubleClick=true
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
home.file.".cache/keepassxc/keepassxc.ini" = lib.mkIf config.mods.keepassxc.use_cache_config {
|
home.file.".cache/keepassxc/keepassxc.ini" =
|
||||||
text = config.mods.keepassxc.cache_config;
|
lib.mkIf config.mods.keepassxc.use_cache_config {
|
||||||
};
|
text = config.mods.keepassxc.cache_config;
|
||||||
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
description = "Your variant";
|
description = "Your variant";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = (lib.optionalAttrs (options?services.xserver) {
|
config = (lib.optionalAttrs (options ? services.xserver) {
|
||||||
# Configure keymap in X11
|
# Configure keymap in X11
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
xkb.layout = "${config.mods.xkb.layout}";
|
xkb.layout = "${config.mods.xkb.layout}";
|
||||||
|
|
|
||||||
|
|
@ -16,11 +16,10 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config =
|
config = (lib.optionalAttrs (options ? home.packages) {
|
||||||
(lib.optionalAttrs (options?home.packages)
|
home.packages = config.mods.media_packages.additional_packages;
|
||||||
{
|
} // (lib.mkIf config.mods.media_packages.enable
|
||||||
home.packages = config.mods.media_packages.additional_packages;
|
(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
|
|
||||||
];
|
|
||||||
})));
|
})));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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).
|
||||||
|
|
|
||||||
|
|
@ -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; [ piper ];
|
||||||
home.packages = with pkgs; [
|
|
||||||
piper
|
|
||||||
];
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,17 +8,16 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
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;
|
services.printing.drivers = [ pkgs.hplip ];
|
||||||
services.printing.drivers = [ pkgs.hplip ];
|
services.printing.startWhenNeeded = true; # optional
|
||||||
services.printing.startWhenNeeded = true; # optional
|
services.avahi = {
|
||||||
services.avahi = {
|
enable = true;
|
||||||
enable = true;
|
nssmdns4 = true;
|
||||||
nssmdns4 = true;
|
openFirewall = true;
|
||||||
openFirewall = true;
|
};
|
||||||
};
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
30
modules/programs/sops.nix
Normal file
30
modules/programs/sops.nix
Normal 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" ];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
@ -30,92 +30,99 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
# 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)";
|
||||||
username = {
|
right_format =
|
||||||
show_always = false;
|
"$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";
|
||||||
style_user = "bg:#5277C3 fg:#${scheme.base05}";
|
username = {
|
||||||
style_root = "bg:#5277C3 fg:#${scheme.base05}";
|
show_always = false;
|
||||||
format = "[ $user ]($style)[](bg:#3465A4 fg:#5277C3)";
|
style_user = "bg:#5277C3 fg:#${scheme.base05}";
|
||||||
disabled = false;
|
style_root = "bg:#5277C3 fg:#${scheme.base05}";
|
||||||
};
|
format = "[ $user ]($style)[](bg:#3465A4 fg:#5277C3)";
|
||||||
os = {
|
disabled = false;
|
||||||
symbols = { NixOS = " "; };
|
};
|
||||||
style = "bg:#3465A4 fg:#${scheme.base05}";
|
os = {
|
||||||
disabled = false;
|
symbols = { NixOS = " "; };
|
||||||
};
|
style = "bg:#3465A4 fg:#${scheme.base05}";
|
||||||
directory = {
|
disabled = false;
|
||||||
style = "bg:#3465A4 fg:#${scheme.base05}";
|
};
|
||||||
format = "[ $path ]($style)";
|
directory = {
|
||||||
truncation_length = 3;
|
style = "bg:#3465A4 fg:#${scheme.base05}";
|
||||||
truncation_symbol = "…/";
|
format = "[ $path ]($style)";
|
||||||
};
|
truncation_length = 3;
|
||||||
git_branch = {
|
truncation_symbol = "…/";
|
||||||
always_show_remote = true;
|
};
|
||||||
symbol = "";
|
git_branch = {
|
||||||
style = "bg:#5256c3 fg:#${scheme.base05}";
|
always_show_remote = true;
|
||||||
format = "[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)";
|
symbol = "";
|
||||||
};
|
style = "bg:#5256c3 fg:#${scheme.base05}";
|
||||||
git_status = {
|
format =
|
||||||
staged = "+\${count} (fg:#C4A000)";
|
"[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)";
|
||||||
ahead = "⇡\${count} (fg:#C4A000)";
|
};
|
||||||
diverged = "⇕⇡\${count} (fg:#C4A000)";
|
git_status = {
|
||||||
behind = "⇣\${count} (fg:#C4A000)";
|
staged = "+\${count} (fg:#C4A000)";
|
||||||
stashed = " ";
|
ahead = "⇡\${count} (fg:#C4A000)";
|
||||||
untracked = "?\${count} (fg:#C4A000)";
|
diverged = "⇕⇡\${count} (fg:#C4A000)";
|
||||||
modified = "!\${count} (fg:#C4A000)";
|
behind = "⇣\${count} (fg:#C4A000)";
|
||||||
deleted = "✘\${count} (fg:#C4A000)";
|
stashed = " ";
|
||||||
conflicted = "=\${count} (fg:#C4A000)";
|
untracked = "?\${count} (fg:#C4A000)";
|
||||||
renamed = "»\${count} (fg:#C4A000)";
|
modified = "!\${count} (fg:#C4A000)";
|
||||||
style = "bg:#5256c3 fg:fg:#C4A000";
|
deleted = "✘\${count} (fg:#C4A000)";
|
||||||
format = "[$all_status$ahead_behind]($style)";
|
conflicted = "=\${count} (fg:#C4A000)";
|
||||||
};
|
renamed = "»\${count} (fg:#C4A000)";
|
||||||
git_metrics = {
|
style = "bg:#5256c3 fg:fg:#C4A000";
|
||||||
disabled = false;
|
format = "[$all_status$ahead_behind]($style)";
|
||||||
format = "([| ](bg:#5256c3)[+$added]($added_style bg:#5256c3)[ -$deleted]($deleted_style bg:#5256c3))";
|
};
|
||||||
};
|
git_metrics = {
|
||||||
c = { format = code_format; };
|
disabled = false;
|
||||||
elixir = { format = code_format; };
|
format =
|
||||||
elm = { format = code_format; };
|
"([| ](bg:#5256c3)[+$added]($added_style bg:#5256c3)[ -$deleted]($deleted_style bg:#5256c3))";
|
||||||
golang = { format = code_format; };
|
};
|
||||||
gradle = { format = code_format; };
|
c = { format = code_format; };
|
||||||
haskell = { format = code_format; };
|
elixir = { format = code_format; };
|
||||||
java = { format = code_format; };
|
elm = { format = code_format; };
|
||||||
julia = { format = code_format; };
|
golang = { format = code_format; };
|
||||||
nodejs = { format = code_format; };
|
gradle = { format = code_format; };
|
||||||
nim = { format = code_format; };
|
haskell = { format = code_format; };
|
||||||
nix_shell = { symbol = ""; format = code_format; };
|
java = { format = code_format; };
|
||||||
rust = { format = code_format; };
|
julia = { format = code_format; };
|
||||||
scala = { format = code_format; };
|
nodejs = { format = code_format; };
|
||||||
typst = { format = code_format; };
|
nim = { format = code_format; };
|
||||||
python = { format = code_format; };
|
nix_shell = {
|
||||||
ocaml = { format = code_format; };
|
symbol = "";
|
||||||
opa = { format = code_format; };
|
format = code_format;
|
||||||
perl = { format = code_format; };
|
};
|
||||||
zig = { format = code_format; };
|
rust = { format = code_format; };
|
||||||
dart = { format = code_format; };
|
scala = { format = code_format; };
|
||||||
dotnet = { format = code_format; };
|
typst = { format = code_format; };
|
||||||
time = {
|
python = { format = code_format; };
|
||||||
disabled = false;
|
ocaml = { format = code_format; };
|
||||||
time_format = "%R"; # Hour:Minute Format
|
opa = { format = code_format; };
|
||||||
style = "bg:#3465A4 fg:#${scheme.base05}";
|
perl = { format = code_format; };
|
||||||
format = "[ $time ]($style)";
|
zig = { format = code_format; };
|
||||||
};
|
dart = { format = code_format; };
|
||||||
} // config.mods.starship.custom_prompt;
|
dotnet = { format = code_format; };
|
||||||
|
time = {
|
||||||
|
disabled = false;
|
||||||
|
time_format = "%R"; # Hour:Minute Format
|
||||||
|
style = "bg:#3465A4 fg:#${scheme.base05}";
|
||||||
|
format = "[ $time ]($style)";
|
||||||
|
};
|
||||||
|
} // config.mods.starship.custom_prompt;
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = (lib.optionalAttrs (options?stylix) {
|
config = (lib.optionalAttrs (options ? stylix) {
|
||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
image = ../../base/black.jpg;
|
image = ../../base/black.jpg;
|
||||||
|
|
@ -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");
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
17
modules/programs/teams.nix
Normal file
17
modules/programs/teams.nix
Normal 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 { }) ];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
@ -11,7 +11,8 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.optionalAttrs (options?hardware) {
|
config =
|
||||||
hardware.xone.enable = true;
|
lib.optionalAttrs (options ? hardware) { hardware.xone.enable = true; };
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
14
modules/programs/yazi/default.nix
Normal file
14
modules/programs/yazi/default.nix
Normal 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;
|
||||||
|
});
|
||||||
|
}
|
||||||
1139
modules/programs/yazi/yazi.nix
Normal file
1139
modules/programs/yazi/yazi.nix
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -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
28
override/teams.nix
Normal 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;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
@ -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,48 +10,31 @@ 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";
|
|
||||||
|
keyboard = null;
|
||||||
|
|
||||||
|
file.".local/share/flatpak/overrides/global".text = ''
|
||||||
|
[Context]
|
||||||
|
filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
home.keyboard = null;
|
|
||||||
|
|
||||||
home.file.".local/share/flatpak/overrides/global".text = ''
|
|
||||||
[Context]
|
|
||||||
filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0
|
|
||||||
'';
|
|
||||||
|
|
||||||
programs.nix-index = {
|
programs.nix-index = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
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" ];
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,31 +15,28 @@ 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
|
||||||
./oxi/default.nix
|
./oxi/default.nix
|
||||||
./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;
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1 @@
|
||||||
{
|
{ imports = [ ./kitty.nix ./fish.nix ./direnv.nix ./neovide.nix ]; }
|
||||||
imports = [
|
|
||||||
./kitty.nix
|
|
||||||
./yazi.nix
|
|
||||||
./fish.nix
|
|
||||||
./direnv.nix
|
|
||||||
./neovide.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -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"; };
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,140 +1,139 @@
|
||||||
{ 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
|
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
#
|
#
|
||||||
# Utility functions for zoxide.
|
# Utility functions for zoxide.
|
||||||
#
|
#
|
||||||
|
|
||||||
export NIX_PATH="$NIX_PATH:$HOME/gits/dotFiles/."
|
export NIX_PATH="$NIX_PATH:$HOME/gits/dotFiles/."
|
||||||
|
|
||||||
set EDITOR "neovide --no-fork"
|
set EDITOR "neovide --no-fork"
|
||||||
|
|
||||||
alias rebuild='sudo nixos-rebuild switch --flake /home/${config.conf.username}/gits/dotFiles/.'
|
alias rebuild='sudo nixos-rebuild switch --flake /home/${config.conf.username}/gits/dotFiles/.'
|
||||||
abbr --add ls 'lsd'
|
abbr --add ls 'lsd'
|
||||||
abbr --add :q 'exit'
|
abbr --add :q 'exit'
|
||||||
abbr --add gh 'git push origin'
|
abbr --add gh 'git push origin'
|
||||||
abbr --add gl 'git pull origin'
|
abbr --add gl 'git pull origin'
|
||||||
abbr --add gm 'git commit -m'
|
abbr --add gm 'git commit -m'
|
||||||
abbr --add ga "git add -A"
|
abbr --add ga "git add -A"
|
||||||
abbr --add g+ 'bear -- g++ -Wextra -Werror -std=c++20'
|
abbr --add g+ 'bear -- g++ -Wextra -Werror -std=c++20'
|
||||||
abbr --add s "kitty +kitten ssh"
|
abbr --add s "kitty +kitten ssh"
|
||||||
abbr --add zl 'z "" '
|
abbr --add zl 'z "" '
|
||||||
abbr --add nv 'neovide'
|
abbr --add nv 'neovide'
|
||||||
abbr --add cr 'cargo run'
|
abbr --add cr 'cargo run'
|
||||||
abbr --add grep 'rg'
|
abbr --add grep 'rg'
|
||||||
abbr --add cat 'bat'
|
abbr --add cat 'bat'
|
||||||
abbr --add find 'fd'
|
abbr --add find 'fd'
|
||||||
abbr --add rm 'rip'
|
abbr --add rm 'rip'
|
||||||
|
|
||||||
set fish_greeting
|
set fish_greeting
|
||||||
# pwd based on the value of _ZO_RESOLVE_SYMLINKS.
|
# pwd based on the value of _ZO_RESOLVE_SYMLINKS.
|
||||||
function __zoxide_pwd
|
function __zoxide_pwd
|
||||||
builtin pwd -L
|
builtin pwd -L
|
||||||
end
|
end
|
||||||
|
|
||||||
# A copy of fish's internal cd function. This makes it possible to use
|
# A copy of fish's internal cd function. This makes it possible to use
|
||||||
# `alias cd=z` without causing an infinite loop.
|
# `alias cd=z` without causing an infinite loop.
|
||||||
if ! builtin functions --query __zoxide_cd_internal
|
if ! builtin functions --query __zoxide_cd_internal
|
||||||
if builtin functions --query cd
|
if builtin functions --query cd
|
||||||
builtin functions --copy cd __zoxide_cd_internal
|
builtin functions --copy cd __zoxide_cd_internal
|
||||||
else
|
else
|
||||||
alias __zoxide_cd_internal='builtin cd'
|
alias __zoxide_cd_internal='builtin cd'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# cd + custom logic based on the value of _ZO_ECHO.
|
# cd + custom logic based on the value of _ZO_ECHO.
|
||||||
function __zoxide_cd
|
function __zoxide_cd
|
||||||
__zoxide_cd_internal $argv
|
__zoxide_cd_internal $argv
|
||||||
end
|
end
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
#
|
#
|
||||||
# Hook configuration for zoxide.
|
# Hook configuration for zoxide.
|
||||||
#
|
#
|
||||||
|
|
||||||
# Initialize hook to add new entries to the database.
|
# Initialize hook to add new entries to the database.
|
||||||
function __zoxide_hook --on-variable PWD
|
function __zoxide_hook --on-variable PWD
|
||||||
test -z "$fish_private_mode"
|
test -z "$fish_private_mode"
|
||||||
and command zoxide add -- (__zoxide_pwd)
|
and command zoxide add -- (__zoxide_pwd)
|
||||||
end
|
end
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
#
|
#
|
||||||
# When using zoxide with --no-cmd, alias these internal functions as desired.
|
# When using zoxide with --no-cmd, alias these internal functions as desired.
|
||||||
#
|
#
|
||||||
|
|
||||||
if test -z $__zoxide_z_prefix
|
if test -z $__zoxide_z_prefix
|
||||||
set __zoxide_z_prefix 'z!'
|
set __zoxide_z_prefix 'z!'
|
||||||
end
|
end
|
||||||
set __zoxide_z_prefix_regex ^(string escape --style=regex $__zoxide_z_prefix)
|
set __zoxide_z_prefix_regex ^(string escape --style=regex $__zoxide_z_prefix)
|
||||||
|
|
||||||
# Jump to a directory using only keywords.
|
# Jump to a directory using only keywords.
|
||||||
function __zoxide_z
|
function __zoxide_z
|
||||||
set -l argc (count $argv)
|
set -l argc (count $argv)
|
||||||
if test $argc -eq 0
|
if test $argc -eq 0
|
||||||
__zoxide_cd $HOME
|
__zoxide_cd $HOME
|
||||||
else if test "$argv" = -
|
else if test "$argv" = -
|
||||||
__zoxide_cd -
|
__zoxide_cd -
|
||||||
else if test $argc -eq 1 -a -d $argv[1]
|
else if test $argc -eq 1 -a -d $argv[1]
|
||||||
__zoxide_cd $argv[1]
|
__zoxide_cd $argv[1]
|
||||||
else if set -l result (string replace --regex $__zoxide_z_prefix_regex \'\' $argv[-1]); and test -n $result
|
else if set -l result (string replace --regex $__zoxide_z_prefix_regex \'\' $argv[-1]); and test -n $result
|
||||||
__zoxide_cd $result
|
__zoxide_cd $result
|
||||||
else
|
else
|
||||||
set -l result (command zoxide query --exclude (__zoxide_pwd) -- $argv)
|
set -l result (command zoxide query --exclude (__zoxide_pwd) -- $argv)
|
||||||
and __zoxide_cd $result
|
and __zoxide_cd $result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Completions.
|
# Completions.
|
||||||
function __zoxide_z_complete
|
function __zoxide_z_complete
|
||||||
set -l tokens (commandline --current-process --tokenize)
|
set -l tokens (commandline --current-process --tokenize)
|
||||||
set -l curr_tokens (commandline --cut-at-cursor --current-process --tokenize)
|
set -l curr_tokens (commandline --cut-at-cursor --current-process --tokenize)
|
||||||
|
|
||||||
if test (count $tokens) -le 2 -a (count $curr_tokens) -eq 1
|
if test (count $tokens) -le 2 -a (count $curr_tokens) -eq 1
|
||||||
# If there are < 2 arguments, use `cd` completions.
|
# If there are < 2 arguments, use `cd` completions.
|
||||||
complete --do-complete "\'\' "(commandline --cut-at-cursor --current-token) | string match --regex '.*/$'
|
complete --do-complete "\'\' "(commandline --cut-at-cursor --current-token) | string match --regex '.*/$'
|
||||||
else if test (count $tokens) -eq (count $curr_tokens); and ! string match --quiet --regex $__zoxide_z_prefix_regex. $tokens[-1]
|
else if test (count $tokens) -eq (count $curr_tokens); and ! string match --quiet --regex $__zoxide_z_prefix_regex. $tokens[-1]
|
||||||
# If the last argument is empty and the one before doesn't start with
|
# If the last argument is empty and the one before doesn't start with
|
||||||
# $__zoxide_z_prefix, use interactive selection.
|
# $__zoxide_z_prefix, use interactive selection.
|
||||||
set -l query $tokens[2..-1]
|
set -l query $tokens[2..-1]
|
||||||
set -l result (zoxide query --exclude (__zoxide_pwd) --interactive -- $query)
|
set -l result (zoxide query --exclude (__zoxide_pwd) --interactive -- $query)
|
||||||
and echo $__zoxide_z_prefix$result
|
and echo $__zoxide_z_prefix$result
|
||||||
commandline --function repaint
|
commandline --function repaint
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
complete --command __zoxide_z --no-files --arguments '(__zoxide_z_complete)'
|
complete --command __zoxide_z --no-files --arguments '(__zoxide_z_complete)'
|
||||||
|
|
||||||
# Jump to a directory using interactive search.
|
# Jump to a directory using interactive search.
|
||||||
function __zoxide_zi
|
function __zoxide_zi
|
||||||
set -l result (command zoxide query --interactive -- $argv)
|
set -l result (command zoxide query --interactive -- $argv)
|
||||||
and __zoxide_cd $result
|
and __zoxide_cd $result
|
||||||
end
|
end
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
#
|
#
|
||||||
# Commands for zoxide. Disable these using --no-cmd.
|
# Commands for zoxide. Disable these using --no-cmd.
|
||||||
#
|
#
|
||||||
|
|
||||||
abbr --erase z &>/dev/null
|
abbr --erase z &>/dev/null
|
||||||
alias z=__zoxide_z
|
alias z=__zoxide_z
|
||||||
|
|
||||||
abbr --erase zi &>/dev/null
|
abbr --erase zi &>/dev/null
|
||||||
alias zi=__zoxide_zi
|
alias zi=__zoxide_zi
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
#
|
#
|
||||||
# To initialize zoxide, add this to your configuration (usually
|
# To initialize zoxide, add this to your configuration (usually
|
||||||
# ~/.config/fish/config.fish):
|
# ~/.config/fish/config.fish):
|
||||||
#
|
#
|
||||||
# zoxide init fish | source
|
# zoxide init fish | source
|
||||||
|
|
||||||
direnv hook fish | source
|
direnv hook fish | source
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,39 @@
|
||||||
{ pkgs, ... }: {
|
{ pkgs, ... }: {
|
||||||
xdg.configFile."ncspot/config.toml".source = (pkgs.formats.toml { }).generate "ncspot" {
|
xdg.configFile."ncspot/config.toml".source =
|
||||||
notify = true;
|
(pkgs.formats.toml { }).generate "ncspot" {
|
||||||
shuffle = true;
|
notify = true;
|
||||||
cover_max_scale = 2;
|
shuffle = true;
|
||||||
initial_screen = "library";
|
cover_max_scale = 2;
|
||||||
library_tabs = [ "playlists" ];
|
initial_screen = "library";
|
||||||
theme = {
|
library_tabs = [ "playlists" ];
|
||||||
background = "#1a1b26";
|
theme = {
|
||||||
primary = "#9aa5ce";
|
background = "#1a1b26";
|
||||||
secondary = "#414868";
|
primary = "#9aa5ce";
|
||||||
title = "#9ece6a";
|
secondary = "#414868";
|
||||||
playing = "#7aa2f7";
|
title = "#9ece6a";
|
||||||
playing_selected = "#bb9af7";
|
playing = "#7aa2f7";
|
||||||
playing_bg = "#24283b";
|
playing_selected = "#bb9af7";
|
||||||
highlight = "#c0caf5";
|
playing_bg = "#24283b";
|
||||||
highlight_bg = "#24283b";
|
highlight = "#c0caf5";
|
||||||
error = "#414868";
|
highlight_bg = "#24283b";
|
||||||
error_bg = "#f7768e";
|
error = "#414868";
|
||||||
statusbar = "#ff9e64";
|
error_bg = "#f7768e";
|
||||||
statusbar_progress = "#7aa2f7";
|
statusbar = "#ff9e64";
|
||||||
statusbar_bg = "#1a1b26";
|
statusbar_progress = "#7aa2f7";
|
||||||
cmdline = "#c0caf5";
|
statusbar_bg = "#1a1b26";
|
||||||
cmdline_bg = "#24283b";
|
cmdline = "#c0caf5";
|
||||||
search_match = "#f7768e";
|
cmdline_bg = "#24283b";
|
||||||
|
search_match = "#f7768e";
|
||||||
|
};
|
||||||
|
keybindings = {
|
||||||
|
"j" = "move left 1";
|
||||||
|
"k" = "move down 1";
|
||||||
|
"l" = "move up 1";
|
||||||
|
";" = "move right 1";
|
||||||
|
};
|
||||||
|
notification_format = {
|
||||||
|
title = "%artists";
|
||||||
|
body = "%title";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
keybindings = {
|
|
||||||
"j" = "move left 1";
|
|
||||||
"k" = "move down 1";
|
|
||||||
"l" = "move up 1";
|
|
||||||
";" = "move right 1";
|
|
||||||
};
|
|
||||||
notification_format = {
|
|
||||||
title = "%artists";
|
|
||||||
body = "%title";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
@ -1,9 +1,2 @@
|
||||||
{
|
{ imports = [ ./oxipaste.nix ./oxinoti.nix ./oxishut.nix ./oxidash.nix ]; }
|
||||||
imports = [
|
|
||||||
./oxipaste.nix
|
|
||||||
./oxinoti.nix
|
|
||||||
./oxishut.nix
|
|
||||||
./oxidash.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,53 +1,52 @@
|
||||||
{
|
{
|
||||||
xdg.configFile."oxidash/style.css" = {
|
xdg.configFile."oxidash/style.css" = {
|
||||||
text =
|
text = ''
|
||||||
''
|
#MainWindow {
|
||||||
#MainWindow {
|
border-radius: 10px;
|
||||||
border-radius: 10px;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
#MainBox {
|
#MainBox {
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#MainButtonBox {
|
#MainButtonBox {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
margin: 5px 0px 5px 0px;
|
margin: 5px 0px 5px 0px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
border: solid 2px #327cd5;
|
border: solid 2px #327cd5;
|
||||||
}
|
}
|
||||||
|
|
||||||
#DoNotDisturbButton {
|
#DoNotDisturbButton {
|
||||||
}
|
}
|
||||||
|
|
||||||
#ExitButton {
|
#ExitButton {
|
||||||
}
|
}
|
||||||
|
|
||||||
#ClearNotificationsButton {
|
#ClearNotificationsButton {
|
||||||
}
|
}
|
||||||
|
|
||||||
#NotificationsWindow {
|
#NotificationsWindow {
|
||||||
}
|
}
|
||||||
|
|
||||||
.debugimage {
|
.debugimage {
|
||||||
border: solid 3px blue;
|
border: solid 3px blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Notification {
|
.Notification {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
margin: 5px 0px 5px 0px;
|
margin: 5px 0px 5px 0px;
|
||||||
border: solid 2px #327cd5;
|
border: solid 2px #327cd5;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.CloseNotificationButton {
|
.CloseNotificationButton {
|
||||||
margin: 0px 5px 0px 10px;
|
margin: 0px 5px 0px 10px;
|
||||||
|
}
|
||||||
|
.PictureButtonBox {
|
||||||
|
}
|
||||||
|
.BaseBox {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.PictureButtonBox {
|
'';
|
||||||
}
|
|
||||||
.BaseBox {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,30 @@
|
||||||
{
|
{
|
||||||
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;
|
border: 2px solid #2AC3DE;
|
||||||
border: 2px solid #2AC3DE;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.item-window {
|
.item-window {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
border: 2px solid #C0CAF5;
|
border: 2px solid #C0CAF5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-button {
|
.item-button {
|
||||||
background-color: #1A1B26;
|
background-color: #1A1B26;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
border: 1px solid #6D728D;
|
border: 1px solid #6D728D;
|
||||||
}
|
}
|
||||||
|
|
||||||
.delete-button {
|
.delete-button {
|
||||||
margin: 5px 25px 5px 5px;
|
margin: 5px 25px 5px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-box {
|
.item-box {
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,24 @@
|
||||||
{
|
{
|
||||||
xdg.configFile."oxishut/style.css" = {
|
xdg.configFile."oxishut/style.css" = {
|
||||||
text =
|
text = ''
|
||||||
''
|
#mainwindow {
|
||||||
#mainwindow {
|
border-radius: 10px;
|
||||||
border-radius: 10px;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.mainbox {
|
.mainbox {
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button {
|
.button {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
background-color: #2b2c3b;
|
background-color: #2b2c3b;
|
||||||
-gtk-icon-size: 5rem;
|
-gtk-icon-size: 5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button:hover {
|
.button:hover {
|
||||||
background-color: #3e4152;
|
background-color: #3e4152;
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,48 +2,42 @@
|
||||||
{ 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
|
name = "${opts.name}";
|
||||||
(map
|
value = {
|
||||||
(opts: {
|
Unit = {
|
||||||
name = "${opts.name}";
|
Description = "Auto sync Nextcloud";
|
||||||
value = {
|
After = "network-online.target";
|
||||||
Unit = {
|
};
|
||||||
Description = "Auto sync Nextcloud";
|
Service = {
|
||||||
After = "network-online.target";
|
Type = "simple";
|
||||||
};
|
ExecStart =
|
||||||
Service = {
|
"${pkgs.bash}/bin/bash -c '${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${opts.remote} ${opts.local} https://${username}:$(bat ${password})@${url}'";
|
||||||
Type = "simple";
|
TimeoutStopSec = "180";
|
||||||
ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${opts.remote} ${opts.local} https://${username}:$(bat ${password})@${url}'";
|
KillMode = "process";
|
||||||
TimeoutStopSec = "180";
|
KillSignal = "SIGINT";
|
||||||
KillMode = "process";
|
};
|
||||||
KillSignal = "SIGINT";
|
Install.WantedBy = [ "multi-user.target" ];
|
||||||
};
|
};
|
||||||
Install.WantedBy = [ "multi-user.target" ];
|
}) synclist));
|
||||||
};
|
timers = (builtins.listToAttrs (map (opts: {
|
||||||
})
|
name = "${opts.name}";
|
||||||
synclist
|
value = {
|
||||||
));
|
Unit.Description =
|
||||||
timers =
|
"Automatic sync files with Nextcloud when booted up after 1 minute then rerun every 60 minutes";
|
||||||
(builtins.listToAttrs
|
Timer.OnBootSec = "1min";
|
||||||
(map
|
Timer.OnUnitActiveSec = "60min";
|
||||||
(opts: {
|
Install.WantedBy = [ "multi-user.target" "timers.target" ];
|
||||||
name = "${opts.name}";
|
};
|
||||||
value = {
|
}) synclist));
|
||||||
Unit.Description = "Automatic sync files with Nextcloud when booted up after 1 minute then rerun every 60 minutes";
|
|
||||||
Timer.OnBootSec = "1min";
|
|
||||||
Timer.OnUnitActiveSec = "60min";
|
|
||||||
Install.WantedBy = [ "multi-user.target" "timers.target" ];
|
|
||||||
};
|
|
||||||
})
|
|
||||||
synclist
|
|
||||||
));
|
|
||||||
startServices = true;
|
startServices = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,2 @@
|
||||||
{
|
{ imports = [ ./qt.nix ]; }
|
||||||
imports = [
|
|
||||||
./qt.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,91 +22,82 @@ 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
|
icon_theme=MoreWaita
|
||||||
icon_theme=MoreWaita
|
standard_dialogs=gtk3
|
||||||
standard_dialogs=gtk3
|
style=Breeze
|
||||||
style=Breeze
|
|
||||||
|
|
||||||
[Fonts]
|
[Fonts]
|
||||||
fixed="Noto Sans,12,-1,5,50,0,0,0,0,0"
|
fixed="Noto Sans,12,-1,5,50,0,0,0,0,0"
|
||||||
general="Noto Sans,12,-1,5,50,0,0,0,0,0"
|
general="Noto Sans,12,-1,5,50,0,0,0,0,0"
|
||||||
|
|
||||||
[Interface]
|
[Interface]
|
||||||
activate_item_on_single_click=2
|
activate_item_on_single_click=2
|
||||||
buttonbox_layout=3
|
buttonbox_layout=3
|
||||||
cursor_flash_time=1000
|
cursor_flash_time=1000
|
||||||
dialog_buttons_have_icons=0
|
dialog_buttons_have_icons=0
|
||||||
double_click_interval=400
|
double_click_interval=400
|
||||||
gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox
|
gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox
|
||||||
keyboard_scheme=4
|
keyboard_scheme=4
|
||||||
menus_have_icons=true
|
menus_have_icons=true
|
||||||
show_shortcuts_in_context_menus=true
|
show_shortcuts_in_context_menus=true
|
||||||
stylesheets=/home/${username}/.config/qt5ct/qss/tab.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/fusion-fixes.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/scrollbar-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/sliders-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/tooltip-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/traynotification-simple.qss
|
stylesheets=/home/${username}/.config/qt5ct/qss/tab.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/fusion-fixes.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/scrollbar-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/sliders-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/tooltip-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/traynotification-simple.qss
|
||||||
toolbutton_style=4
|
toolbutton_style=4
|
||||||
underline_shortcut=0
|
underline_shortcut=0
|
||||||
wheel_scroll_lines=3
|
wheel_scroll_lines=3
|
||||||
|
|
||||||
[SettingsWindow]
|
[SettingsWindow]
|
||||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q\0\0\n\0\0\0\0\0\0\0\r[\0\0\x5\x7f\0\0\0\0\x2\0\0\0\rp\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q)
|
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q\0\0\n\0\0\0\0\0\0\0\r[\0\0\x5\x7f\0\0\0\0\x2\0\0\0\rp\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q)
|
||||||
|
|
||||||
[Troubleshooting]
|
[Troubleshooting]
|
||||||
force_raster_widgets=1
|
force_raster_widgets=1
|
||||||
ignored_applications=@Invalid()
|
ignored_applications=@Invalid()
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
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
|
standard_dialogs=default
|
||||||
standard_dialogs=default
|
style=Adwaita-Dark
|
||||||
style=Adwaita-Dark
|
|
||||||
|
|
||||||
[Fonts]
|
[Fonts]
|
||||||
fixed="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
fixed="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||||
general="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
general="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||||
|
|
||||||
[Interface]
|
[Interface]
|
||||||
activate_item_on_single_click=2
|
activate_item_on_single_click=2
|
||||||
buttonbox_layout=3
|
buttonbox_layout=3
|
||||||
cursor_flash_time=1000
|
cursor_flash_time=1000
|
||||||
dialog_buttons_have_icons=0
|
dialog_buttons_have_icons=0
|
||||||
double_click_interval=400
|
double_click_interval=400
|
||||||
gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox
|
gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox
|
||||||
keyboard_scheme=4
|
keyboard_scheme=4
|
||||||
menus_have_icons=true
|
menus_have_icons=true
|
||||||
show_shortcuts_in_context_menus=true
|
show_shortcuts_in_context_menus=true
|
||||||
stylesheets=@Invalid()
|
stylesheets=@Invalid()
|
||||||
toolbutton_style=4
|
toolbutton_style=4
|
||||||
underline_shortcut=1
|
underline_shortcut=1
|
||||||
wheel_scroll_lines=3
|
wheel_scroll_lines=3
|
||||||
|
|
||||||
[PaletteEditor]
|
[PaletteEditor]
|
||||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4\0\0\0\0\0\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4)
|
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4\0\0\0\0\0\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4)
|
||||||
|
|
||||||
[SettingsWindow]
|
[SettingsWindow]
|
||||||
geometry="@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,\0\0\0\0\0\0\0\0\rp\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,)"
|
geometry="@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,\0\0\0\0\0\0\0\0\rp\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,)"
|
||||||
|
|
||||||
[Troubleshooting]
|
[Troubleshooting]
|
||||||
force_raster_widgets=1
|
force_raster_widgets=1
|
||||||
ignored_applications=@Invalid()
|
ignored_applications=@Invalid()
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,32 +8,28 @@ 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 [
|
||||||
])
|
"about"
|
||||||
// (xdgAssociations "x-scheme-handler" browser [
|
"ftp"
|
||||||
"about"
|
"http"
|
||||||
"ftp"
|
"https"
|
||||||
"http"
|
"unknown"
|
||||||
"https"
|
]);
|
||||||
"unknown"
|
|
||||||
]);
|
|
||||||
|
|
||||||
# XDG MIME types
|
# XDG MIME types
|
||||||
associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ({
|
associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ({
|
||||||
|
|
@ -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";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue