Compare commits

...

4 commits

Author SHA1 Message Date
430bafb0b2 Run deadnix 2024-03-20 13:03:05 +01:00
7888103b1e Format everything with alejandra 2024-03-20 12:54:25 +01:00
82bbd7ce87 Editors: format using alejandra 2024-03-20 12:44:55 +01:00
9351f85534 Flake: add alejandra to devshell 2024-03-20 11:45:17 +01:00
102 changed files with 2744 additions and 2780 deletions

3
.helix/languages.toml Normal file
View file

@ -0,0 +1,3 @@
[[language]]
name = "nix"
formatter = { command = "alejandra" }

12
.vscode/settings.json vendored
View file

@ -1,5 +1,15 @@
{ {
"editor.detectIndentation": true, "editor.detectIndentation": true,
"editor.insertSpaces": true, "editor.insertSpaces": true,
"editor.defaultFormatter": "jnoortheen.nix-ide" "editor.defaultFormatter": "jnoortheen.nix-ide",
"nix.formatterPath": "alejandra",
"nix.serverSettings": {
"nil": {
"formatting": {
"command": [
"alejandra"
]
}
}
}
} }

View file

@ -64,14 +64,14 @@
vscode-extensions = { vscode-extensions = {
url = "github:nix-community/nix-vscode-extensions"; url = "github:nix-community/nix-vscode-extensions";
inputs.nixpkgs.follows = "nixpkgs-unstable-raw"; inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
}; };
nix-flatpak.url = "github:gmodena/nix-flatpak/main"; nix-flatpak.url = "github:gmodena/nix-flatpak/main";
nur.url = "github:nix-community/NUR"; nur.url = "github:nix-community/NUR";
}; };
outputs = { ... } @inputs: with inputs; outputs = {...} @ inputs:
with inputs;
# Patch nixpkgs # Patch nixpkgs
# https://ertt.ca/nix/patch-nixpkgs/ # https://ertt.ca/nix/patch-nixpkgs/
let let
@ -90,10 +90,9 @@
]; ];
}; };
# https://discourse.nixos.org/t/proper-way-of-applying-patch-to-system-managed-via-flake/21073/26 # https://discourse.nixos.org/t/proper-way-of-applying-patch-to-system-managed-via-flake/21073/26
nixpkgs-unstable = (import "${nixpkgs-unstable-patched}/flake.nix").outputs { self = inputs.self; }; nixpkgs-unstable = (import "${nixpkgs-unstable-patched}/flake.nix").outputs {self = inputs.self;};
nixpkgs = (import "${nixpkgs-patched}/flake.nix").outputs { self = inputs.self; }; nixpkgs = (import "${nixpkgs-patched}/flake.nix").outputs {self = inputs.self;};
in in {
{
devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShell { devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShell {
name = "toast-devshell"; name = "toast-devshell";
# The agenix cli is not needed to activate a configuration, so instead of installing it # The agenix cli is not needed to activate a configuration, so instead of installing it
@ -103,14 +102,14 @@
git git
nix-diff nix-diff
just just
nix-diff alejandra
]; ];
shellHook ='' shellHook = ''
export PS1="$PS1(toast-configs)> " export PS1="$PS1(toast-configs)> "
''; '';
}; };
packages = { packages = {
x86_64-linux = with import nixpkgs-unstable-raw { system = "x86_64-linux"; }; { x86_64-linux = with import nixpkgs-unstable-raw {system = "x86_64-linux";}; {
anything-sync-daemon = callPackage ./pkgs/anything-sync-daemon {}; anything-sync-daemon = callPackage ./pkgs/anything-sync-daemon {};
discord-krisp-fixer = callPackage ./pkgs/discord-krisp-fixer {}; discord-krisp-fixer = callPackage ./pkgs/discord-krisp-fixer {};
}; };
@ -118,7 +117,10 @@
nixosConfigurations = { nixosConfigurations = {
Archie = nixpkgs-unstable.lib.nixosSystem { Archie = nixpkgs-unstable.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { systemPkgs = inputs.nixpkgs-unstable-raw; flakeSelf = self; }; specialArgs = {
systemPkgs = inputs.nixpkgs-unstable-raw;
flakeSelf = self;
};
/* /*
I used to set up nixpkgs in the flake, but doing that made I used to set up nixpkgs in the flake, but doing that made
defining overlays in modules impossible (or at least I could defining overlays in modules impossible (or at least I could
@ -140,7 +142,10 @@
SurfaceGo = nixpkgs-unstable.lib.nixosSystem { SurfaceGo = nixpkgs-unstable.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { systemPkgs = inputs.nixpkgs-unstable-raw; flakeSelf = self; }; specialArgs = {
systemPkgs = inputs.nixpkgs-unstable-raw;
flakeSelf = self;
};
modules = [ modules = [
agenix.nixosModules.default agenix.nixosModules.default
home-manager-unstable.nixosModule home-manager-unstable.nixosModule
@ -155,7 +160,10 @@
SteamDeck = nixpkgs-unstable.lib.nixosSystem { SteamDeck = nixpkgs-unstable.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { systemPkgs = inputs.nixpkgs-unstable-raw; flakeSelf = self; }; specialArgs = {
systemPkgs = inputs.nixpkgs-unstable-raw;
flakeSelf = self;
};
modules = [ modules = [
agenix.nixosModules.default agenix.nixosModules.default
jovian.nixosModules.default jovian.nixosModules.default
@ -172,7 +180,10 @@
WinMax2 = nixpkgs-unstable.lib.nixosSystem { WinMax2 = nixpkgs-unstable.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { systemPkgs = inputs.nixpkgs-unstable-raw; flakeSelf = self; }; specialArgs = {
systemPkgs = inputs.nixpkgs-unstable-raw;
flakeSelf = self;
};
modules = [ modules = [
agenix.nixosModules.default agenix.nixosModules.default
jovian.nixosModules.default jovian.nixosModules.default
@ -190,7 +201,10 @@
Everest = nixpkgs.lib.nixosSystem { Everest = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { systemPkgs = inputs.nixpkgs-raw; flakeSelf = self; }; specialArgs = {
systemPkgs = inputs.nixpkgs-raw;
flakeSelf = self;
};
modules = [ modules = [
agenix.nixosModules.default agenix.nixosModules.default
home-manager.nixosModule home-manager.nixosModule

View file

@ -1,10 +1,11 @@
# Edit this configuration file to define what should be installed on # Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running `nixos-help`). # and in the NixOS manual (accessible by running `nixos-help`).
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
# Use grub boot loader # Use grub boot loader
boot.loader = { boot.loader = {
systemd-boot.enable = false; systemd-boot.enable = false;
@ -43,7 +44,6 @@
# Enable touchpad support (enabled default in most desktopManager). # Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true; # services.xserver.libinput.enable = true;
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
# List packages installed in system profile. To search, run: # List packages installed in system profile. To search, run:
@ -76,6 +76,4 @@
# (/run/current-system/configuration.nix). This is useful in case you # (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix. # accidentally delete configuration.nix.
# system.copySystemConfiguration = true; # system.copySystemConfiguration = true;
} }

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./configuration.nix ./configuration.nix
./hardware-configuration.nix ./hardware-configuration.nix

View file

@ -1,41 +1,44 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ {
imports = config,
[ (modulesPath + "/installer/scan/not-detected.nix") lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
]; ];
# Enable support for the Xbox One wireless dongle # Enable support for the Xbox One wireless dongle
hardware.xone.enable = true; hardware.xone.enable = true;
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 = [ "amdgpu" ]; boot.initrd.kernelModules = ["amdgpu"];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf"; device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@root" "compress=zstd" ]; options = ["subvol=@root" "compress=zstd"];
}; };
fileSystems."/nix" = fileSystems."/nix" = {
{ device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf"; device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@nix" "compress=zstd" ]; options = ["subvol=@nix" "compress=zstd"];
}; };
fileSystems."/boot" = fileSystems."/boot" = {
{ device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf"; device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@boot" "compress=zstd" ]; options = ["subvol=@boot" "compress=zstd"];
}; };
fileSystems."/boot/efi" = fileSystems."/boot/efi" = {
{ device = "/dev/disk/by-uuid/FB87-4CBC"; device = "/dev/disk/by-uuid/FB87-4CBC";
fsType = "vfat"; fsType = "vfat";
}; };
@ -48,28 +51,28 @@
"/mnt/ssd" = { "/mnt/ssd" = {
device = config.fileSystems."/".device; device = config.fileSystems."/".device;
fsType = config.fileSystems."/".fsType; fsType = config.fileSystems."/".fsType;
options = [ "subvolid=5" "ro" ]; options = ["subvolid=5" "ro"];
}; };
"/mnt/windows" = { "/mnt/windows" = {
device = "/dev/disk/by-uuid/B61AFDAC1AFD6A2F"; device = "/dev/disk/by-uuid/B61AFDAC1AFD6A2F";
fsType = "ntfs3"; fsType = "ntfs3";
neededForBoot = false; neededForBoot = false;
options = [ "noauto" "windows_names" ]; options = ["noauto" "windows_names"];
}; };
"/home" = { "/home" = {
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf"; device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@home" "compress=zstd" ]; options = ["subvol=@home" "compress=zstd"];
}; };
"/persist" = { "/persist" = {
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf"; device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@persist" "compress=zstd" ]; options = ["subvol=@persist" "compress=zstd"];
neededForBoot = true; neededForBoot = true;
}; };
}; };
swapDevices = [ ]; swapDevices = [];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;

View file

@ -1,10 +1,7 @@
# Edit this configuration file to define what should be installed on # Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # and in the NixOS manual (accessible by running nixos-help).
{lib, ...}: {
{ config, pkgs, lib, ... }:
{
# Bootloader. # Bootloader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.timeout = 5; boot.loader.timeout = 5;
@ -23,22 +20,24 @@
dhcpcd.enable = false; dhcpcd.enable = false;
interfaces.eno1 = { interfaces.eno1 = {
wakeOnLan.enable = true; wakeOnLan.enable = true;
ipv4.addresses = [ { ipv4.addresses = [
{
address = "192.168.0.160"; address = "192.168.0.160";
prefixLength = 24; prefixLength = 24;
} ]; }
];
}; };
# I use networkd, so I need to declare the interface for the default gateway # I use networkd, so I need to declare the interface for the default gateway
defaultGateway = { defaultGateway = {
address = "192.168.0.1"; address = "192.168.0.1";
interface = "eno1"; interface = "eno1";
}; };
nameservers = [ "9.9.9.9" ]; nameservers = ["9.9.9.9"];
}; };
# Define a user account. Don't forget to set a password with passwd. # Define a user account. Don't forget to set a password with passwd.
users.users.toast = { users.users.toast = {
extraGroups = [ "networkmanager" "transmission"]; extraGroups = ["networkmanager" "transmission"];
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC2bOVmxUNvg9qFv9DlzMmTRlzcNsyNq1F1wBuAXySwsWAzHGaO+WGdSCINxW3k2ccXn7M/o1r89LeTzRzi8sWQYCpBaIqYVszM/r7SvTS4gASyKhM6lNlyUEPOnvCXH7rdtF+fjoA1TJPv7GBk78QRhGh+eVO3qhY1m++5C1CPFlyrc6sSfgIBQJ5GQZFl/7YEgsrPo+M+0Sd7LkaCOyNmJA0Wi0BA3bbf5sJhrZVMMg/p7w+eMphz2kd1VTVjW3yeMq9zLCiu4SOTBNGCMEvKIdUZbQ83lNrqO2z1/3T1bDwJgpz3xusfkNCeNJSmhfFw5ydHEUp/9jshq38WmulKAMw2Kl/Zed62AVU7Ux7YjUkZkWvo8i3eXuLUxoG891S7cWV1/ijs9QMajOLLT14FG7RbzUYYaYlx+/iNGji9d4sp9/oMYyO45TMe+vEezFSBygP7TY0QFOr4xTi49ZRQFsszbFnGRv+k3wVKoGoeNt0xWB8pBEPFtaeHJpQyJX8= id_rsa_moon" "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC2bOVmxUNvg9qFv9DlzMmTRlzcNsyNq1F1wBuAXySwsWAzHGaO+WGdSCINxW3k2ccXn7M/o1r89LeTzRzi8sWQYCpBaIqYVszM/r7SvTS4gASyKhM6lNlyUEPOnvCXH7rdtF+fjoA1TJPv7GBk78QRhGh+eVO3qhY1m++5C1CPFlyrc6sSfgIBQJ5GQZFl/7YEgsrPo+M+0Sd7LkaCOyNmJA0Wi0BA3bbf5sJhrZVMMg/p7w+eMphz2kd1VTVjW3yeMq9zLCiu4SOTBNGCMEvKIdUZbQ83lNrqO2z1/3T1bDwJgpz3xusfkNCeNJSmhfFw5ydHEUp/9jshq38WmulKAMw2Kl/Zed62AVU7Ux7YjUkZkWvo8i3eXuLUxoG891S7cWV1/ijs9QMajOLLT14FG7RbzUYYaYlx+/iNGji9d4sp9/oMYyO45TMe+vEezFSBygP7TY0QFOr4xTi49ZRQFsszbFnGRv+k3wVKoGoeNt0xWB8pBEPFtaeHJpQyJX8= id_rsa_moon"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOeu3crGqtxwaqgoQPt5mWlC8+PL/Icvcvo0MBAaK80L Key for work laptop" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOeu3crGqtxwaqgoQPt5mWlC8+PL/Icvcvo0MBAaK80L Key for work laptop"
@ -49,7 +48,7 @@
boot.tmp.useTmpfs = false; boot.tmp.useTmpfs = false;
home-manager = { home-manager = {
users.toast = { config, ... }: { users.toast = {config, ...}: {
home = { home = {
file = { file = {
# This symlinks the Transmission downloads folder into my user's downloads folder for easy access # This symlinks the Transmission downloads folder into my user's downloads folder for easy access
@ -61,8 +60,8 @@
# Open ports in the firewall. # Open ports in the firewall.
# No idea what ports 5201 and 21027 do tho # No idea what ports 5201 and 21027 do tho
networking.firewall.allowedTCPPorts = [ 5201 ]; networking.firewall.allowedTCPPorts = [5201];
networking.firewall.allowedUDPPorts = [ 5201 21027]; networking.firewall.allowedUDPPorts = [5201 21027];
# Or disable the firewall altogether. # Or disable the firewall altogether.
# networking.firewall.enable = false; # networking.firewall.enable = false;
} }

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./configuration.nix ./configuration.nix
./hardware-configuration.nix ./hardware-configuration.nix

View file

@ -1,53 +1,56 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ {
imports = config,
[ (modulesPath + "/installer/scan/not-detected.nix") lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems = { fileSystems = {
"/" = { "/" = {
device = "/dev/disk/by-label/Everest"; device = "/dev/disk/by-label/Everest";
fsType = "btrfs"; fsType = "btrfs";
options = [ "compress=zstd" "subvol=@"]; options = ["compress=zstd" "subvol=@"];
}; };
"/nix" = { "/nix" = {
device = "/dev/disk/by-label/Everest"; device = "/dev/disk/by-label/Everest";
fsType = "btrfs"; fsType = "btrfs";
options = [ "compress=zstd" "subvol=@nix" ]; options = ["compress=zstd" "subvol=@nix"];
}; };
"/home" = { "/home" = {
device = "/dev/disk/by-label/Everest"; device = "/dev/disk/by-label/Everest";
fsType = "btrfs"; fsType = "btrfs";
options = [ "compress=zstd" "subvol=@home" ]; options = ["compress=zstd" "subvol=@home"];
}; };
"/mnt/hdd" = { "/mnt/hdd" = {
device = "/dev/disk/by-label/Everest"; device = "/dev/disk/by-label/Everest";
fsType = "btrfs"; fsType = "btrfs";
options = [ "compress=zstd" "subvol=/" "ro" ]; options = ["compress=zstd" "subvol=/" "ro"];
}; };
"/persist" = { "/persist" = {
device = "/dev/disk/by-label/Everest"; device = "/dev/disk/by-label/Everest";
fsType = "btrfs"; fsType = "btrfs";
options = [ "compress=zstd" "subvol=@persist" ]; options = ["compress=zstd" "subvol=@persist"];
neededForBoot = true; neededForBoot = true;
}; };
}; };
fileSystems."/boot/efi" = fileSystems."/boot/efi" = {
{ device = "/dev/disk/by-label/Boot"; device = "/dev/disk/by-label/Boot";
fsType = "vfat"; fsType = "vfat";
}; };
swapDevices = [ ]; swapDevices = [];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's # (the default) this is the recommended approach. When using systemd-networkd it's

View file

@ -1,10 +1,12 @@
# Edit this configuration file to define what should be installed on # Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running `nixos-help`). # and in the NixOS manual (accessible by running `nixos-help`).
{ config, pkgs, lib, ... }:
{ {
config,
pkgs,
lib,
...
}: {
# Use grub boot loader # Use grub boot loader
boot.loader = { boot.loader = {
systemd-boot.enable = false; systemd-boot.enable = false;
@ -67,7 +69,7 @@
# Large builds (the linux kernel) fail to build because /tmp is too small when using tmpfs # Large builds (the linux kernel) fail to build because /tmp is too small when using tmpfs
boot.tmp.useTmpfs = false; boot.tmp.useTmpfs = false;
environment.systemPackages = [ pkgs.steamdeck-firmware pkgs.steamdeck-hw-theme ]; environment.systemPackages = [pkgs.steamdeck-firmware pkgs.steamdeck-hw-theme];
# List packages installed in system profile. To search, run: # List packages installed in system profile. To search, run:
# $ nix search wget # $ nix search wget
# environment.systemPackages = with pkgs; [ # environment.systemPackages = with pkgs; [
@ -98,6 +100,4 @@
# (/run/current-system/configuration.nix). This is useful in case you # (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix. # accidentally delete configuration.nix.
# system.copySystemConfiguration = true; # system.copySystemConfiguration = true;
} }

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./configuration.nix ./configuration.nix
./hardware-configuration.nix ./hardware-configuration.nix

View file

@ -1,25 +1,26 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }: {
config,
let lib,
modulesPath,
...
}: let
# \x20 is the escape code for a space # \x20 is the escape code for a space
ssdLabel = ''Deck\\x20SSD''; ssdLabel = ''Deck\\x20SSD'';
in in {
imports = [
{ (modulesPath + "/installer/scan/not-detected.nix")
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
]; ];
# Enable support for the Xbox One wireless dongle # Enable support for the Xbox One wireless dongle
hardware.xone.enable = true; hardware.xone.enable = true;
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usb_storage" "usbhid" "sd_mod" "sdhci_pci" ]; boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "usb_storage" "usbhid" "sd_mod" "sdhci_pci"];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems = { fileSystems = {
"efi_boot_partition" = { "efi_boot_partition" = {
@ -36,35 +37,35 @@ in
mountPoint = "/mnt/ssd"; mountPoint = "/mnt/ssd";
label = ssdLabel; label = ssdLabel;
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvolid=5" "ro" ]; options = ["subvolid=5" "ro"];
}; };
"btrfs_root" = { "btrfs_root" = {
mountPoint = "/"; mountPoint = "/";
label = ssdLabel; label = ssdLabel;
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@" "compress=zstd" ]; options = ["subvol=@" "compress=zstd"];
}; };
"btrfs_boot" = { "btrfs_boot" = {
mountPoint = "/boot"; mountPoint = "/boot";
label = ssdLabel; label = ssdLabel;
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@boot" "compress=zstd" ]; options = ["subvol=@boot" "compress=zstd"];
}; };
"btrfs_home" = { "btrfs_home" = {
mountPoint = "/home"; mountPoint = "/home";
label = ssdLabel; label = ssdLabel;
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@home" "compress=zstd" ]; options = ["subvol=@home" "compress=zstd"];
}; };
"btrfs_nix" = { "btrfs_nix" = {
mountPoint = "/nix"; mountPoint = "/nix";
label = ssdLabel; label = ssdLabel;
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@nix" "compress=zstd" ]; options = ["subvol=@nix" "compress=zstd"];
}; };
}; };
swapDevices = [ ]; swapDevices = [];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;

View file

@ -1,10 +1,12 @@
# Edit this configuration file to define what should be installed on # Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running `nixos-help`). # and in the NixOS manual (accessible by running `nixos-help`).
{ config, pkgs, lib, ... }:
{ {
config,
pkgs,
lib,
...
}: {
boot = { boot = {
loader = { loader = {
# Use grub boot loader # Use grub boot loader
@ -87,6 +89,4 @@
# (/run/current-system/configuration.nix). This is useful in case you # (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix. # accidentally delete configuration.nix.
# system.copySystemConfiguration = true; # system.copySystemConfiguration = true;
} }

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./configuration.nix ./configuration.nix
./hardware-configuration.nix ./hardware-configuration.nix

View file

@ -1,39 +1,40 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, ... }:
{ {
config,
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "rtsx_pci_sdmmc" ]; lib,
boot.initrd.kernelModules = [ ]; ...
boot.kernelModules = [ "kvm-intel" ]; }: {
boot.extraModulePackages = [ ]; boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usbhid" "rtsx_pci_sdmmc"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
boot.initrd.luks.devices."SSD".device = "/dev/disk/by-uuid/1d8d7578-d3a1-4ea0-90ad-4257266a6caf"; boot.initrd.luks.devices."SSD".device = "/dev/disk/by-uuid/1d8d7578-d3a1-4ea0-90ad-4257266a6caf";
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e"; device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@" "compress=zstd" ]; options = ["subvol=@" "compress=zstd"];
}; };
fileSystems."/boot" = { fileSystems."/boot" = {
device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e"; device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@boot" "compress=zstd" ]; options = ["subvol=@boot" "compress=zstd"];
}; };
fileSystems."/nix" ={ fileSystems."/nix" = {
device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e"; device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@nix" "compress=zstd" ]; options = ["subvol=@nix" "compress=zstd"];
}; };
fileSystems."/home" = { fileSystems."/home" = {
device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e"; device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@home" "compress=zstd" ]; options = ["subvol=@home" "compress=zstd"];
}; };
fileSystems."/boot/efi" = { fileSystems."/boot/efi" = {

View file

@ -1,10 +1,12 @@
# Edit this configuration file to define what should be installed on # Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running `nixos-help`). # and in the NixOS manual (accessible by running `nixos-help`).
{ config, pkgs, lib, ... }:
{ {
config,
pkgs,
lib,
...
}: {
# Use grub boot loader # Use grub boot loader
boot = { boot = {
loader = { loader = {
@ -36,18 +38,18 @@
specialisation.noAVX512.configuration = { specialisation.noAVX512.configuration = {
# For some reason The Finals crashes on CPUs that support AVX512 # For some reason The Finals crashes on CPUs that support AVX512
boot.kernelParams = [ "clearcpuid=304" ]; boot.kernelParams = ["clearcpuid=304"];
}; };
# Sleep fixes # Sleep fixes
boot.kernelParams = [ "rtc_cmos.use_acpi_alarm=1" ]; boot.kernelParams = ["rtc_cmos.use_acpi_alarm=1"];
services.udev.extraRules = '' services.udev.extraRules = ''
ACTION=="add", SUBSYSTEM=="i2c", ATTR{name}=="GXTP7385:00", ATTR{power/wakeup}="disabled" ACTION=="add", SUBSYSTEM=="i2c", ATTR{name}=="GXTP7385:00", ATTR{power/wakeup}="disabled"
ACTION=="add", SUBSYSTEM=="i2c", ATTR{name}=="PNP0C50:00", ATTR{power/wakeup}="disabled" ACTION=="add", SUBSYSTEM=="i2c", ATTR{name}=="PNP0C50:00", ATTR{power/wakeup}="disabled"
''; '';
services.handheld-daemon = { services.handheld-daemon = {
package = pkgs.handheld-daemon.overridePythonAttrs rec{ package = pkgs.handheld-daemon.overridePythonAttrs rec {
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
owner = "hhd-dev"; owner = "hhd-dev";
repo = "hhd"; repo = "hhd";
@ -70,7 +72,7 @@ ACTION=="add", SUBSYSTEM=="i2c", ATTR{name}=="PNP0C50:00", ATTR{power/wakeup}="d
services.xserver = { services.xserver = {
xkb.layout = lib.mkForce "us"; xkb.layout = lib.mkForce "us";
displayManager.sddm.settings = { displayManager.sddm.settings = {
General.GreeterEnvironment="QT_SCREEN_SCALE_FACTORS=1.75"; General.GreeterEnvironment = "QT_SCREEN_SCALE_FACTORS=1.75";
}; };
}; };
@ -148,6 +150,4 @@ ACTION=="add", SUBSYSTEM=="i2c", ATTR{name}=="PNP0C50:00", ATTR{power/wakeup}="d
# (/run/current-system/configuration.nix). This is useful in case you # (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix. # accidentally delete configuration.nix.
# system.copySystemConfiguration = true; # system.copySystemConfiguration = true;
} }

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./configuration.nix ./configuration.nix
./hardware-configuration.nix ./hardware-configuration.nix

View file

@ -1,22 +1,23 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, modulesPath, ... }: {
config,
let lib,
modulesPath,
...
}: let
# \x20 is the escape code for a space # \x20 is the escape code for a space
ssdLabel = ''Win\\x20Max\\x202\\x20SSD''; ssdLabel = ''Win\\x20Max\\x202\\x20SSD'';
in in {
{
imports = [ imports = [
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usbhid" "sdhci_pci" ]; boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "usbhid" "sdhci_pci"];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
boot.initrd.luks.devices."SSD".device = "/dev/disk/by-label/wm2-enc"; boot.initrd.luks.devices."SSD".device = "/dev/disk/by-label/wm2-enc";
@ -35,36 +36,36 @@ in
mountPoint = "/mnt/ssd"; mountPoint = "/mnt/ssd";
label = ssdLabel; label = ssdLabel;
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvolid=5" "ro" ]; options = ["subvolid=5" "ro"];
}; };
"btrfs_root" = { "btrfs_root" = {
mountPoint = "/"; mountPoint = "/";
label = ssdLabel; label = ssdLabel;
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@" ]; options = ["subvol=@"];
}; };
"btrfs_persist" = { "btrfs_persist" = {
mountPoint = "/persist"; mountPoint = "/persist";
label = ssdLabel; label = ssdLabel;
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@persist" ]; options = ["subvol=@persist"];
neededForBoot = true; neededForBoot = true;
}; };
"btrfs_home" = { "btrfs_home" = {
mountPoint = "/home"; mountPoint = "/home";
label = ssdLabel; label = ssdLabel;
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@home" ]; options = ["subvol=@home"];
}; };
"btrfs_nix" = { "btrfs_nix" = {
mountPoint = "/nix"; mountPoint = "/nix";
label = ssdLabel; label = ssdLabel;
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@nix" ]; options = ["subvol=@nix"];
}; };
}; };
swapDevices = [ ]; swapDevices = [];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware = { hardware = {

View file

@ -1,16 +1,17 @@
{ stdenv {
, lib stdenv,
, fetchFromGitHub lib,
, makeWrapper fetchFromGitHub,
, rsync makeWrapper,
, gawk rsync,
, pv gawk,
, gnutar pv,
, zstd gnutar,
, util-linux zstd,
, coreutils util-linux,
, gnugrep coreutils,
, findutils gnugrep,
findutils,
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "anything-sync-daemon"; pname = "anything-sync-daemon";
@ -23,9 +24,9 @@ stdenv.mkDerivation rec {
hash = "sha256-6nfaAMH5YgK6gimuZ8j1zWLTDOi11KIwW7Bf0Iwh7+I="; hash = "sha256-6nfaAMH5YgK6gimuZ8j1zWLTDOi11KIwW7Bf0Iwh7+I=";
}; };
patches = [ ./disableDaemonStopTargets.patch ]; patches = [./disableDaemonStopTargets.patch];
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [makeWrapper];
postPatch = '' postPatch = ''
substituteInPlace init/asd* \ substituteInPlace init/asd* \
@ -40,11 +41,11 @@ stdenv.mkDerivation rec {
"INITDIR_SYSTEMD=/lib/systemd/system" "INITDIR_SYSTEMD=/lib/systemd/system"
]; ];
installTargets = [ "install-systemd-all" ]; installTargets = ["install-systemd-all"];
postInstall = '' postInstall = ''
wrapProgram $out/bin/anything-sync-daemon \ wrapProgram $out/bin/anything-sync-daemon \
--suffix PATH : ${lib.makeBinPath [ rsync gawk pv gnutar zstd util-linux coreutils gnugrep findutils]} --suffix PATH : ${lib.makeBinPath [rsync gawk pv gnutar zstd util-linux coreutils gnugrep findutils]}
''; '';
meta = with lib; { meta = with lib; {

View file

@ -1,7 +1,11 @@
{ config, lib, pkgs, flakeSelf, ... }:
{ {
imports = [ flakeSelf.inputs.nur.nixosModules.nur ]; config,
lib,
pkgs,
flakeSelf,
...
}: {
imports = [flakeSelf.inputs.nur.nixosModules.nur];
environment = { environment = {
# As of the 1st of May 2023, the default packages are nano, perl, rsync and strace # As of the 1st of May 2023, the default packages are nano, perl, rsync and strace
# I don't need any of them, so I just empty the list # I don't need any of them, so I just empty the list
@ -24,14 +28,14 @@
algorithm = "zstd"; algorithm = "zstd";
}; };
# zswap with zram is not a good idea # zswap with zram is not a good idea
boot.kernelParams = [ "zswap.enabled=0" ]; boot.kernelParams = ["zswap.enabled=0"];
# Set up keyboard layout # Set up keyboard layout
services.xserver.xkb.layout = "es"; services.xserver.xkb.layout = "es";
# Set up console # Set up console
console = { console = {
packages = [ pkgs.terminus_font ]; packages = [pkgs.terminus_font];
earlySetup = true; earlySetup = true;
# mkDefault has 1000 priority, so that way I don't conflict with nixos-hardware # mkDefault has 1000 priority, so that way I don't conflict with nixos-hardware
font = lib.mkOverride 999 "ter-i16n"; font = lib.mkOverride 999 "ter-i16n";
@ -39,7 +43,7 @@
useXkbConfig = true; useXkbConfig = true;
}; };
boot.supportedFilesystems = [ "nfs" ]; boot.supportedFilesystems = ["nfs"];
# Set up localisation # Set up localisation
i18n = { i18n = {
@ -63,7 +67,7 @@
users.users.toast = { users.users.toast = {
isNormalUser = true; isNormalUser = true;
description = "Toast"; description = "Toast";
extraGroups = [ "wheel" ]; extraGroups = ["wheel"];
}; };
# Set up time zone. # Set up time zone.
@ -90,7 +94,7 @@
backupFileExtension = "hm-backup"; backupFileExtension = "hm-backup";
useGlobalPkgs = true; useGlobalPkgs = true;
verbose = true; verbose = true;
users.toast = { config, ... }: { users.toast = {...}: {
home.stateVersion = "23.11"; home.stateVersion = "23.11";
xdg = { xdg = {
userDirs = { userDirs = {

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./programs ./programs
./services ./services

View file

@ -1,7 +1,5 @@
{ config, ... }: {...}: {
home-manager.users.toast = {...}: {
{
home-manager.users.toast = { config, ... }: {
programs.bash = { programs.bash = {
enable = true; enable = true;
enableVteIntegration = true; enableVteIntegration = true;

View file

@ -1,9 +1,13 @@
{ config, pkgs, ... }:
let
themeName = if config.system.nixos.release == "23.11" then "Catppuccin-mocha" else "Catppuccin Mocha";
in
{ {
config,
pkgs,
...
}: let
themeName =
if config.system.nixos.release == "23.11"
then "Catppuccin-mocha"
else "Catppuccin Mocha";
in {
home-manager = { home-manager = {
users.toast.programs.bat = { users.toast.programs.bat = {
enable = true; enable = true;

View file

@ -1,6 +1,4 @@
{ pkgs, ... }: {pkgs, ...}: {
{
home-manager = { home-manager = {
users.toast = { users.toast = {
programs.btop = { programs.btop = {

View file

@ -1,8 +1,6 @@
{ config, pkgs, ... }: {...}: {
{
# Use nix-index-database's comma wrapper # Use nix-index-database's comma wrapper
programs.nix-index-database.comma.enable = true; programs.nix-index-database.comma.enable = true;
# Run programs from the system's nixpkgs # Run programs from the system's nixpkgs
environment.variables = { COMMA_NIXPKGS_FLAKE="system"; }; environment.variables = {COMMA_NIXPKGS_FLAKE = "system";};
} }

View file

@ -1,6 +1,4 @@
{ config, ... }: {...}: {
{
# The nixpkgs command-not-found script does not work with flakes, so I disable it # The nixpkgs command-not-found script does not work with flakes, so I disable it
programs.command-not-found.enable = false; programs.command-not-found.enable = false;
} }

View file

@ -1,6 +1,4 @@
{ config, pkgs, ... }: {pkgs, ...}: {
{
imports = [ imports = [
./htop.nix ./htop.nix
./nix.nix ./nix.nix

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
programs.direnv = { programs.direnv = {
enable = true; enable = true;
nix-direnv = { nix-direnv = {

View file

@ -1,15 +1,11 @@
{ config, pkgs, ... }: {pkgs, ...}: let
let
catppuccinDelta = pkgs.fetchFromGitHub { catppuccinDelta = pkgs.fetchFromGitHub {
owner = "catppuccin"; owner = "catppuccin";
repo = "delta"; repo = "delta";
rev = "main"; rev = "main";
hash = "sha256-0QQLkfLBVuB2re6tjtPNuOQZNK0MDBAIFgNGHZM8afs="; hash = "sha256-0QQLkfLBVuB2re6tjtPNuOQZNK0MDBAIFgNGHZM8afs=";
}; };
in in {
{
home-manager.users.toast = { home-manager.users.toast = {
programs.git = { programs.git = {
enable = true; enable = true;
@ -22,7 +18,7 @@ in
features = "catppuccin-mocha"; features = "catppuccin-mocha";
}; };
}; };
includes = [{ path = "${catppuccinDelta}/themes/mocha.gitconfig"; }]; includes = [{path = "${catppuccinDelta}/themes/mocha.gitconfig";}];
extraConfig = { extraConfig = {
init.defaultBranch = "main"; init.defaultBranch = "main";
diff.colorMoved = "default"; diff.colorMoved = "default";
@ -31,4 +27,3 @@ in
}; };
}; };
} }

View file

@ -1,6 +1,4 @@
{ pkgs, ... }: {pkgs, ...}: {
{
home-manager.users.toast = { home-manager.users.toast = {
programs.helix = { programs.helix = {
enable = true; enable = true;

View file

@ -1,6 +1,4 @@
{ config, ... }: {...}: {
{
programs.htop = { programs.htop = {
enable = true; enable = true;
settings = { settings = {

View file

@ -1,9 +1,6 @@
{ config, pkgs, ... }: {...}: {
{
home-manager = { home-manager = {
users.toast = { config, pkgs, ... }: users.toast = {...}: {
{
programs.micro = { programs.micro = {
enable = true; enable = true;
settings = { settings = {

View file

@ -1,10 +1,10 @@
{ config, ... }: {...}: {
/*
{ environment.systemPackages = [ pkgs.nix-index ];
/* environment.systemPackages = [ pkgs.nix-index ];
programs.bash.interactiveShellInit = '' programs.bash.interactiveShellInit = ''
source ${pkgs.nix-index}/etc/profile.d/command-not-found.sh source ${pkgs.nix-index}/etc/profile.d/command-not-found.sh
''; */ '';
*/
programs.nix-index = { programs.nix-index = {
enable = true; enable = true;
enableBashIntegration = true; enableBashIntegration = true;

View file

@ -1,6 +1,4 @@
{ config, systemPkgs, ... }: {systemPkgs, ...}: {
{
nix = { nix = {
settings = { settings = {
auto-optimise-store = true; auto-optimise-store = true;
@ -8,18 +6,25 @@
}; };
optimise = { optimise = {
automatic = true; automatic = true;
dates = [ "weekly" ]; dates = ["weekly"];
}; };
registry = { registry = {
agenix = { agenix = {
from = { id = "agenix"; type = "indirect"; }; from = {
to = { owner = "ryantm"; repo = "agenix"; type = "github"; }; id = "agenix";
type = "indirect";
};
to = {
owner = "ryantm";
repo = "agenix";
type = "github";
};
}; };
# Write the system's nixpkgs into the registry to avoid mixing nixpkgs versions # Write the system's nixpkgs into the registry to avoid mixing nixpkgs versions
# https://dataswamp.org/~solene/2022-07-20-nixos-flakes-command-sync-with-system.html # https://dataswamp.org/~solene/2022-07-20-nixos-flakes-command-sync-with-system.html
system.flake = systemPkgs; system.flake = systemPkgs;
}; };
# I removed this in the past since I thought that I didn't need it, but turns out comma does :) # I removed this in the past since I thought that I didn't need it, but turns out comma does :)
nixPath = [ "nixpkgs=${systemPkgs}" ]; nixPath = ["nixpkgs=${systemPkgs}"];
}; };
} }

View file

@ -1,9 +1,10 @@
{ pkgs, lib, ... }: {
pkgs,
lib,
...
}:
with lib; with lib;
with builtins; with builtins; let
let
catppuccinFlavour = "mocha"; catppuccinFlavour = "mocha";
catppuccinStarship = pkgs.catppuccin + /starship/${catppuccinFlavour}.toml; catppuccinStarship = pkgs.catppuccin + /starship/${catppuccinFlavour}.toml;
@ -21,13 +22,11 @@ let
*/ */
# Takes a list of attrSets and merges them # Takes a list of attrSets and merges them
mergeAllAttrSets = attrsSets: mergeAllAttrSets = attrsSets:
foldl' (recursiveUpdate) {} attrsSets; foldl' recursiveUpdate {} attrsSets;
# Reads a TOML file and parses it # Reads a TOML file and parses it
readTomlPreset = file: (fromTOML (readFile file)); readTomlPreset = file: (fromTOML (readFile file));
in {
in
{
programs.starship = { programs.starship = {
enable = true; enable = true;
settings = mergeAllAttrSets [ settings = mergeAllAttrSets [

View file

@ -1,19 +1,23 @@
{ config, ... }: {config, ...}: let
let
old = { old = {
nssmdns = true; nssmdns = true;
}; };
new = { new = {
nssmdns4 = true; nssmdns4 = true;
}; };
in in {
{
/* /*
NixOS 24.05 changed the option for mnds to be able to turn on/off IPv6 NixOS 24.05 changed the option for mnds to be able to turn on/off IPv6
23.11 doesn't support this, so I need to use the conditional to be able to 23.11 doesn't support this, so I need to use the conditional to be able to
use the same config for both use the same config for both
*/ */
services.avahi = { services.avahi =
{
enable = true; enable = true;
} // (if config.system.nixos.release == "23.11" then old else new); }
// (
if config.system.nixos.release == "23.11"
then old
else new
);
} }

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./avahi.nix ./avahi.nix
./tailscale.nix ./tailscale.nix

View file

@ -1,10 +1,10 @@
{ config, flakeSelf, ... }:
let
hostSecrets = "${flakeSelf.inputs.secrets}/" + config.networking.hostName;
in
{ {
config,
flakeSelf,
...
}: let
hostSecrets = "${flakeSelf.inputs.secrets}/" + config.networking.hostName;
in {
# Get secrets # Get secrets
age.secrets = { age.secrets = {
syncthingKey.file = hostSecrets + "/syncthingKey.age"; syncthingKey.file = hostSecrets + "/syncthingKey.age";
@ -52,7 +52,7 @@ in
"passwords" = { "passwords" = {
label = "KeePassXC Passwords"; label = "KeePassXC Passwords";
id = "rdyaq-ex659"; id = "rdyaq-ex659";
devices = [ "phone" "pc" "steamdeck" "server" "surface" "winmax2"]; devices = ["phone" "pc" "steamdeck" "server" "surface" "winmax2"];
}; };
}; };
}; };

View file

@ -1,6 +1,4 @@
{ config, lib, ... }: {lib, ...}: {
{
services.tailscale = { services.tailscale = {
enable = true; enable = true;
useRoutingFeatures = lib.mkDefault "client"; useRoutingFeatures = lib.mkDefault "client";

View file

@ -1,18 +1,16 @@
{ config, pkgs, ... }: {pkgs, ...}: {
{
# Enable scanning # Enable scanning
hardware.sane = { hardware.sane = {
enable = true; enable = true;
extraBackends = [ pkgs.sane-airscan ]; extraBackends = [pkgs.sane-airscan];
}; };
users.users.toast.extraGroups = [ "scanner" ]; users.users.toast.extraGroups = ["scanner"];
services.xserver.enable = true; services.xserver.enable = true;
# Set up fonts # Set up fonts
fonts.packages = [ fonts.packages = [
( pkgs.nerdfonts.override { fonts = [ "Hack" "JetBrainsMono" ]; } ) (pkgs.nerdfonts.override {fonts = ["Hack" "JetBrainsMono"];})
]; ];
boot.plymouth.enable = true; boot.plymouth.enable = true;

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./services ./services
./programs ./programs

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./discord.nix ./discord.nix
./firefox.nix ./firefox.nix

View file

@ -1,13 +1,16 @@
{ config, pkgs, lib, ... }: {
pkgs,
let lib,
discordOverlay = self: super: { ...
}: let
discordOverlay = _self: super: {
discord = super.discord.override { discord = super.discord.override {
withOpenASAR = true; withOpenASAR = true;
withVencord = true; withVencord = true;
}; };
# Update some stuff while I wait for nixpkgs # Update some stuff while I wait for nixpkgs
/*vencord = super.vencord.overrideAttrs rec { /*
vencord = super.vencord.overrideAttrs rec {
version = "522fdcd"; version = "522fdcd";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
owner = "Vendicated"; owner = "Vendicated";
@ -16,22 +19,22 @@
#rev = "v${version}"; #rev = "v${version}";
hash = "sha256-9G7FNL4pHaaLachzJmeAol0WpNUj533K2FNa7DH0eBM="; hash = "sha256-9G7FNL4pHaaLachzJmeAol0WpNUj533K2FNa7DH0eBM=";
}; };
};*/
}; };
stock-discord = self: super: { */
};
stock-discord = _self: super: {
discord = super.discord.override { discord = super.discord.override {
withOpenASAR = false; withOpenASAR = false;
withVencord = false; withVencord = false;
}; };
}; };
in in {
{
# Sometimes discord breaks after updates, and launching it stock once fixes it # Sometimes discord breaks after updates, and launching it stock once fixes it
specialisation.stockDiscord.configuration = { specialisation.stockDiscord.configuration = {
nixpkgs.overlays = lib.mkAfter [ stock-discord ]; nixpkgs.overlays = lib.mkAfter [stock-discord];
}; };
nixpkgs.overlays = [ discordOverlay ]; nixpkgs.overlays = [discordOverlay];
home-manager.users.toast = { home-manager.users.toast = {
home.packages = with pkgs; [ home.packages = with pkgs; [
discord discord

View file

@ -1,6 +1,4 @@
{ config, lib, ... }: {lib, ...}: {
{
# System wide firefox settings # System wide firefox settings
programs.firefox = { programs.firefox = {
enable = true; enable = true;
@ -8,7 +6,7 @@
"DisablePocket" = true; "DisablePocket" = true;
"DisableTelemetry" = true; "DisableTelemetry" = true;
# You need these for Spotify # You need these for Spotify
"EncryptedMediaExtensions" = { "Enabled" = true; }; "EncryptedMediaExtensions" = {"Enabled" = true;};
"ExtensionSettings" = { "ExtensionSettings" = {
# TODO: Install extensions the NUR instead of from AMO # TODO: Install extensions the NUR instead of from AMO
"uBlock0@raymondhill.net" = { "uBlock0@raymondhill.net" = {
@ -47,11 +45,11 @@
"PasswordManagerEnabled" = false; "PasswordManagerEnabled" = false;
"Permissions" = { "Permissions" = {
"Autoplay" = { "Autoplay" = {
"Allow" = [ "https://www.youtube.com" ]; "Allow" = ["https://www.youtube.com"];
"Default" = "block-audio-video"; "Default" = "block-audio-video";
}; };
}; };
"FirefoxHome" = { "SponsoredTopSites" = false; }; "FirefoxHome" = {"SponsoredTopSites" = false;};
}; };
}; };
} }

View file

@ -1,6 +1,8 @@
{ pkgs, lib, ... }:
{ {
pkgs,
lib,
...
}: {
home-manager.users.toast = { home-manager.users.toast = {
programs.git = { programs.git = {
package = pkgs.gitFull; package = pkgs.gitFull;
@ -11,6 +13,6 @@
}; };
}; };
home.packages = [ pkgs.git-cola ]; home.packages = [pkgs.git-cola];
}; };
} }

View file

@ -1,5 +1,3 @@
{ config, pkgs, ... }: {pkgs, ...}: {
users.users.toast.packages = [pkgs.jamesdsp];
{
users.users.toast.packages = [ pkgs.jamesdsp ];
} }

View file

@ -1,6 +1,4 @@
{ config, pkgs, lib, ... }: {lib, ...}: let
let
kpxcSettings = lib.generators.toINI {} { kpxcSettings = lib.generators.toINI {} {
General = { General = {
# Not sure what changing this does, I'll leave it alone # Not sure what changing this does, I'll leave it alone
@ -25,15 +23,17 @@ let
}; };
SSHAgent.Enabled = true; SSHAgent.Enabled = true;
}; };
in in {
{
home-manager = { home-manager = {
extraSpecialArgs = { kpxcSettings = kpxcSettings; }; extraSpecialArgs = {kpxcSettings = kpxcSettings;};
users.toast = { config, pkgs, kpxcSettings, ... }: { users.toast = {
pkgs,
kpxcSettings,
...
}: {
# No module for KeePassXC config :( # No module for KeePassXC config :(
home = { home = {
packages = [ pkgs.keepassxc ]; packages = [pkgs.keepassxc];
file = { file = {
".config/keepassxc/keepassxc.ini".text = kpxcSettings; ".config/keepassxc/keepassxc.ini".text = kpxcSettings;
# For some reason the autostart .desktop is not the same as the regular one # For some reason the autostart .desktop is not the same as the regular one

View file

@ -1,9 +1,6 @@
{ config, pkgs, lib, ... }: {lib, ...}: {
{
home-manager = { home-manager = {
users.toast = { config, pkgs, ... }: users.toast = {pkgs, ...}: {
{
programs.micro = { programs.micro = {
enable = true; enable = true;
settings = { settings = {
@ -15,7 +12,7 @@
On a kde wayland session micro uses xsel or xclip instead of wl-clipboard On a kde wayland session micro uses xsel or xclip instead of wl-clipboard
which doesn't work, so I only install wl-clipboard here to make micro use it which doesn't work, so I only install wl-clipboard here to make micro use it
*/ */
home.packages = with pkgs; [ wl-clipboard ]; home.packages = with pkgs; [wl-clipboard];
}; };
}; };
} }

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
home-manager.users.toast = { home-manager.users.toast = {
programs.ssh = { programs.ssh = {
enable = true; enable = true;

View file

@ -1,7 +1,11 @@
{ config, pkgs, flakeSelf, ... }:
let inputs = flakeSelf.inputs; in
{ {
nixpkgs.overlays = [ inputs.catppuccin-vsc.overlays.default ]; pkgs,
flakeSelf,
...
}: let
inputs = flakeSelf.inputs;
in {
nixpkgs.overlays = [inputs.catppuccin-vsc.overlays.default];
home-manager.users.toast = { home-manager.users.toast = {
home.packages = with pkgs; [ home.packages = with pkgs; [
nixpkgs-fmt nixpkgs-fmt
@ -30,7 +34,7 @@ let inputs = flakeSelf.inputs; in
"nix.enableLanguageServer" = true; "nix.enableLanguageServer" = true;
"nix.serverPath" = "${pkgs.nil}/bin/nil"; "nix.serverPath" = "${pkgs.nil}/bin/nil";
"nix.serverSettings" = { "nix.serverSettings" = {
"nil"."formatting"."command" = [ "nixpkgs-fmt" ]; "nil"."formatting"."command" = ["nixpkgs-fmt"];
}; };
"terminal.integrated.minimumContrastRatio" = 1; "terminal.integrated.minimumContrastRatio" = 1;
"window.titleBarStyle" = "custom"; "window.titleBarStyle" = "custom";

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./ssh-agent.nix ./ssh-agent.nix
./flatpak.nix ./flatpak.nix

View file

@ -1,13 +1,11 @@
{ config, pkgs, flakeSelf, ... }: {flakeSelf, ...}: {
{
services.flatpak.enable = true; services.flatpak.enable = true;
home-manager = { home-manager = {
sharedModules = [{ imports = [ flakeSelf.inputs.nix-flatpak.homeManagerModules.nix-flatpak ]; }]; sharedModules = [{imports = [flakeSelf.inputs.nix-flatpak.homeManagerModules.nix-flatpak];}];
users.toast = { users.toast = {
services.flatpak = { services.flatpak = {
packages = [ "tv.plex.PlexDesktop" ]; packages = ["tv.plex.PlexDesktop"];
uninstallUnmanagedPackages = true; uninstallUnmanagedPackages = true;
update.auto = { update.auto = {
enable = true; enable = true;

View file

@ -1,10 +1,6 @@
{ config, ... }: {config, ...}: let
let
tailscaleName = config.services.tailscale.interfaceName; tailscaleName = config.services.tailscale.interfaceName;
in in {
{
networking.networkmanager = { networking.networkmanager = {
enable = true; enable = true;
unmanaged = [ unmanaged = [

View file

@ -1,6 +1,4 @@
{ config, ... }: {...}: {
{
services.pipewire = { services.pipewire = {
enable = true; enable = true;
pulse.enable = true; pulse.enable = true;

View file

@ -1,6 +1,4 @@
{ config, ... }: {...}: {
{
services.printing = { services.printing = {
enable = true; enable = true;
startWhenNeeded = true; startWhenNeeded = true;

View file

@ -1,6 +1,4 @@
{ config, pkgs, ... }: {...}: {
{
programs.ssh.startAgent = true; programs.ssh.startAgent = true;
/* /*
Home assistant added an option that does this Home assistant added an option that does this

View file

@ -1,6 +1,4 @@
{ config, ... }: {config, ...}: {
{
services.syncthing = { services.syncthing = {
enable = true; enable = true;
user = "toast"; user = "toast";

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./programs ./programs
./services ./services

View file

@ -1,6 +1,4 @@
{ config, pkgs, ... }: {pkgs, ...}: {
{
imports = [ imports = [
./steam.nix ./steam.nix
./mangohud.nix ./mangohud.nix

View file

@ -1,8 +1,5 @@
{ config, ... }: {...}: {
home-manager.users.toast = {...}: {
{
home-manager.users.toast = { config, ... }:
{
programs.mangohud = { programs.mangohud = {
enable = true; enable = true;
# This only works for Vulkan, openGL programs still need the mangohud wrapper # This only works for Vulkan, openGL programs still need the mangohud wrapper

View file

@ -1,27 +1,26 @@
{ pkgs, ... }: {pkgs, ...}: let
let
snes-roms = [ snes-roms = [
# ActRaiser # ActRaiser
( pkgs.fetchzip { (pkgs.fetchzip {
url = "https://myrient.erista.me/files/No-Intro/Nintendo%20-%20Super%20Nintendo%20Entertainment%20System/ActRaiser%20%28USA%29.zip"; url = "https://myrient.erista.me/files/No-Intro/Nintendo%20-%20Super%20Nintendo%20Entertainment%20System/ActRaiser%20%28USA%29.zip";
hash = "sha256-yxIL5Pqlp8xsx7wvNO1MlB8ffDjS0xpE+yrEfMj61As="; hash = "sha256-yxIL5Pqlp8xsx7wvNO1MlB8ffDjS0xpE+yrEfMj61As=";
} ) })
# Kirby Super Star # Kirby Super Star
( pkgs.fetchzip { (pkgs.fetchzip {
url = "https://myrient.erista.me/files/No-Intro/Nintendo%20-%20Super%20Nintendo%20Entertainment%20System/Kirby%20Super%20Star%20%28USA%29.zip"; url = "https://myrient.erista.me/files/No-Intro/Nintendo%20-%20Super%20Nintendo%20Entertainment%20System/Kirby%20Super%20Star%20%28USA%29.zip";
hash = "sha256-NX5OjCthf4ZiAhamclRBRk8GiMjZX3JLeShm8sQdDfc="; hash = "sha256-NX5OjCthf4ZiAhamclRBRk8GiMjZX3JLeShm8sQdDfc=";
} ) })
# Super Mario Kart # Super Mario Kart
( pkgs.fetchzip { (pkgs.fetchzip {
url = "https://myrient.erista.me/files/No-Intro/Nintendo%20-%20Super%20Nintendo%20Entertainment%20System/Super%20Mario%20Kart%20%28USA%29.zip"; url = "https://myrient.erista.me/files/No-Intro/Nintendo%20-%20Super%20Nintendo%20Entertainment%20System/Super%20Mario%20Kart%20%28USA%29.zip";
hash = "sha256-RLBxPBmBrXCuPdnWE07KamBNgGJ5IntQVUPeij+2HUI="; hash = "sha256-RLBxPBmBrXCuPdnWE07KamBNgGJ5IntQVUPeij+2HUI=";
} ) })
]; ];
in in {
{
home-manager.users.toast = { home-manager.users.toast = {
home = { home = {
packages = [( packages = [
(
pkgs.retroarch.override { pkgs.retroarch.override {
cores = with pkgs.libretro; [ cores = with pkgs.libretro; [
snes9x snes9x
@ -61,14 +60,15 @@ in
assets_directory = "${pkgs.retroarch-assets}/share/retroarch/assets"; assets_directory = "${pkgs.retroarch-assets}/share/retroarch/assets";
}; };
} }
)]; )
];
file."Games/Roms/SNES/" = { file."Games/Roms/SNES/" = {
onChange = '' onChange = ''
${pkgs.retroarch}/bin/retroarch --scan "/home/toast/Games/Roms/SNES" ${pkgs.retroarch}/bin/retroarch --scan "/home/toast/Games/Roms/SNES"
''; '';
source = pkgs.symlinkJoin { source = pkgs.symlinkJoin {
name = "snes-roms"; name = "snes-roms";
paths = [ snes-roms ]; paths = [snes-roms];
}; };
}; };
}; };
@ -85,7 +85,7 @@ in
"retroarch" = { "retroarch" = {
label = "RetroArch"; label = "RetroArch";
id = "jxuou-2yjnu"; id = "jxuou-2yjnu";
devices = [ "steamdeck" "server" "pc" "winmax2" ]; devices = ["steamdeck" "server" "pc" "winmax2"];
path = "~/.local/share/retroarch"; path = "~/.local/share/retroarch";
}; };
}; };

View file

@ -1,20 +1,20 @@
{ config, pkgs, ... }: {config, ...}: {
{
environment.systemPackages = with config; [ environment.systemPackages = with config; [
nur.repos.ataraxiasjel.rpcs3 nur.repos.ataraxiasjel.rpcs3
]; ];
# Compiling RPCS3 takes quite a while # Compiling RPCS3 takes quite a while
nix.settings = { nix.settings = {
substituters = [ "https://ataraxiadev-foss.cachix.org" ]; substituters = ["https://ataraxiadev-foss.cachix.org"];
trusted-public-keys = [ "ataraxiadev-foss.cachix.org-1:ws/jmPRUF5R8TkirnV1b525lP9F/uTBsz2KraV61058=" ]; trusted-public-keys = ["ataraxiadev-foss.cachix.org-1:ws/jmPRUF5R8TkirnV1b525lP9F/uTBsz2KraV61058="];
}; };
# Increase the memory lock limit # Increase the memory lock limit
security.pam.loginLimits = [{ security.pam.loginLimits = [
{
domain = "*"; domain = "*";
item = "memlock"; item = "memlock";
type = "-"; # Applies to both hard and soft limits type = "-"; # Applies to both hard and soft limits
value = "unlimited"; value = "unlimited";
}]; }
];
} }

View file

@ -1,6 +1,8 @@
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
programs.steam = { programs.steam = {
enable = true; enable = true;
# Doubt that I'll use it, but I'll enable it anyways # Doubt that I'll use it, but I'll enable it anyways
@ -12,7 +14,10 @@
}; };
# Some linux native games (rise of the tomb raider) use alsa for sound # Some linux native games (rise of the tomb raider) use alsa for sound
services.pipewire.alsa.enable = if config.services.pipewire.pulse.enable == true then true else false; services.pipewire.alsa.enable =
if config.services.pipewire.pulse.enable == true
then true
else false;
# Celeste mod manager # Celeste mod manager
home-manager.users.toast.services.flatpak.packages = [ home-manager.users.toast.services.flatpak.packages = [

View file

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

View file

@ -1,6 +1,4 @@
{ config, ... }: {...}: {
{
/* /*
This file will sync saves for games that don't have cloud saves This file will sync saves for games that don't have cloud saves
TODO: turn this into a module eventually TODO: turn this into a module eventually
@ -10,7 +8,7 @@
"steam-201810" = { "steam-201810" = {
label = "Wolfenstein The New Order Saves"; label = "Wolfenstein The New Order Saves";
id = "laxxf-t2wmy"; id = "laxxf-t2wmy";
devices = [ "steamdeck" "server" "pc" ]; devices = ["steamdeck" "server" "pc"];
path = "~/.local/share/Steam/steamapps/compatdata/201810/pfx/drive_c/users/steamuser/Saved Games/MachineGames/Wolfenstein The New Order/"; path = "~/.local/share/Steam/steamapps/compatdata/201810/pfx/drive_c/users/steamuser/Saved Games/MachineGames/Wolfenstein The New Order/";
}; };
}; };

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./plasma.nix ./plasma.nix
./sddm.nix ./sddm.nix

View file

@ -1,6 +1,10 @@
{ config, pkgs, lib, flakeSelf, ... }: {
config,
let pkgs,
lib,
flakeSelf,
...
}: let
# Set up the default kde options # Set up the default kde options
balooExcludedDirs = lib.strings.intersperse "," [ balooExcludedDirs = lib.strings.intersperse "," [
"$HOME/.cache/" "$HOME/.cache/"
@ -19,7 +23,7 @@ let
breezeTint = pkgs.stdenv.mkDerivation { breezeTint = pkgs.stdenv.mkDerivation {
name = "breeze-tint"; name = "breeze-tint";
src = "${pkgs.breeze-qt5}"; src = "${pkgs.breeze-qt5}";
patches = [ ./patches/BreezeTint.patch ]; patches = [./patches/BreezeTint.patch];
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
@ -44,10 +48,7 @@ let
runHook postInstall runHook postInstall
''; '';
}; };
in {
in
{
services.xserver = { services.xserver = {
# Enable the Plasma 5 Desktop Environment # Enable the Plasma 5 Desktop Environment
desktopManager.plasma5.enable = true; desktopManager.plasma5.enable = true;
@ -60,38 +61,49 @@ in
programs.dconf.enable = true; programs.dconf.enable = true;
# Install the patched Breeze color schemes as well as the plasma default configs # Install the patched Breeze color schemes as well as the plasma default configs
environment.systemPackages = [ breezeTint plasmaDefaults ]; environment.systemPackages = [breezeTint plasmaDefaults];
# Plasma configs should be on all users # Plasma configs should be on all users
home-manager.sharedModules = [ home-manager.sharedModules = [
( (
{ config, ... }: {config, ...}: let
let gtk2rc = "${config.xdg.configHome}/gtk-2.0/gtkrc"; in gtk2rc = "${config.xdg.configHome}/gtk-2.0/gtkrc";
{ in {
gtk.gtk2.configLocation = gtk2rc; gtk.gtk2.configLocation = gtk2rc;
# Kde has an annoying habit of overwriting the gtk2 config file # Kde has an annoying habit of overwriting the gtk2 config file
home.file."${gtk2rc}".force = true; home.file."${gtk2rc}".force = true;
} }
) )
{ {
imports = [ flakeSelf.inputs.plasma-manager.homeManagerModules.plasma-manager ]; imports = [flakeSelf.inputs.plasma-manager.homeManagerModules.plasma-manager];
gtk = { gtk = {
enable = true; enable = true;
# Most apps are dark, so a white cursor is easier to spot # Most apps are dark, so a white cursor is easier to spot
cursorTheme = { package = pkgs.breeze-qt5; name = "Breeze_Snow"; }; cursorTheme = {
iconTheme = { package = pkgs.breeze-icons; name = "breeze-dark"; }; package = pkgs.breeze-qt5;
theme = { package = pkgs.breeze-gtk; name = "Breeze"; }; name = "Breeze_Snow";
};
iconTheme = {
package = pkgs.breeze-icons;
name = "breeze-dark";
};
theme = {
package = pkgs.breeze-gtk;
name = "Breeze";
};
# Gtk2 doesn't have a dark mode, so I just tell gtk 3 and 4 to use the dark variant # Gtk2 doesn't have a dark mode, so I just tell gtk 3 and 4 to use the dark variant
gtk3.extraConfig.gtk-application-prefer-dark-theme = true; gtk3.extraConfig.gtk-application-prefer-dark-theme = true;
gtk4.extraConfig.gtk-application-prefer-dark-theme = true; gtk4.extraConfig.gtk-application-prefer-dark-theme = true;
}; };
home.packages = [( home.packages = [
(
pkgs.catppuccin-kde.override { pkgs.catppuccin-kde.override {
flavour = [ "mocha" ]; flavour = ["mocha"];
accents = [ "mauve" ]; accents = ["mauve"];
winDecStyles = [ "classic" ]; winDecStyles = ["classic"];
} }
)]; )
];
programs.plasma = { programs.plasma = {
enable = true; enable = true;
overrideConfig = true; overrideConfig = true;
@ -110,11 +122,12 @@ in
}; };
kwin = { kwin = {
titlebarButtons = { titlebarButtons = {
left = [ "on-all-desktops" "keep-above-windows" ]; left = ["on-all-desktops" "keep-above-windows"];
right = [ "minimize" "maximize" "close" ]; right = ["minimize" "maximize" "close"];
}; };
}; };
panels = [{ panels = [
{
location = "bottom"; location = "bottom";
height = 44; height = 44;
widgets = [ widgets = [
@ -132,11 +145,12 @@ in
} }
"org.kde.plasma.showdesktop" "org.kde.plasma.showdesktop"
]; ];
}]; }
];
shortcuts = { shortcuts = {
"kwin" = { "kwin" = {
"Switch One Desktop to the Left" = [ "Meta+Ctrl+Left" ]; "Switch One Desktop to the Left" = ["Meta+Ctrl+Left"];
"Switch One Desktop to the Right" = [ "Meta+Ctrl+Right" ]; "Switch One Desktop to the Right" = ["Meta+Ctrl+Right"];
}; };
}; };
configFile = { configFile = {

View file

@ -1,6 +1,4 @@
{ config, ... }: {...}: {
{
imports = [ imports = [
./kate.nix ./kate.nix
./firefox.nix ./firefox.nix

View file

@ -1,6 +1,4 @@
{ config, pkgs, ... }: {...}: {
{
# KDE specific firefox settings # KDE specific firefox settings
programs.firefox = { programs.firefox = {
policies = { policies = {

View file

@ -1,6 +1,4 @@
{ pkgs, lib, ... }: {...}: {
{
home-manager.users.toast = { home-manager.users.toast = {
programs.git = { programs.git = {
extraConfig = { extraConfig = {

View file

@ -1,7 +1,5 @@
{ config, pkgs, ... }: {pkgs, ...}: {
environment.systemPackages = [pkgs.kate];
{
environment.systemPackages = [ pkgs.kate ];
# Use kwrite to open text files, and kate if I'm developing stuff # Use kwrite to open text files, and kate if I'm developing stuff
xdg.mime.defaultApplications = { xdg.mime.defaultApplications = {

View file

@ -1,14 +1,14 @@
{ pkgs, ... }: {pkgs, ...}: let
let catppuccinKonsole =
catppuccinKonsole = pkgs.fetchFromGitHub { pkgs.fetchFromGitHub {
owner = "catppuccin"; owner = "catppuccin";
repo = "konsole"; repo = "konsole";
# Latest commit is 7d86b8a1e56e58f6b5649cdaac543a573ac194ca # Latest commit is 7d86b8a1e56e58f6b5649cdaac543a573ac194ca
rev = "main"; rev = "main";
hash = "sha256-EwSJMTxnaj2UlNJm1t6znnatfzgm1awIQQUF3VPfCTM="; hash = "sha256-EwSJMTxnaj2UlNJm1t6znnatfzgm1awIQQUF3VPfCTM=";
} + /Catppuccin-Mocha.colorscheme; }
in + /Catppuccin-Mocha.colorscheme;
{ in {
home-manager.users.toast = { home-manager.users.toast = {
xdg.dataFile = { xdg.dataFile = {
"konsole/Catppuccin-Mocha.colorscheme".source = catppuccinKonsole; "konsole/Catppuccin-Mocha.colorscheme".source = catppuccinKonsole;

View file

@ -1,7 +1,5 @@
{ pkgs, ... }: {pkgs, ...}: {
{
home-manager.users.toast = { home-manager.users.toast = {
home.packages = [ pkgs.neochat ]; home.packages = [pkgs.neochat];
}; };
} }

View file

@ -1,9 +1,12 @@
{ config, lib, pkgs, ... }:
{ {
config,
lib,
pkgs,
...
}: {
# Only install skanpage if scanning is set up # Only install skanpage if scanning is set up
config = lib.mkIf config.hardware.sane.enable { config = lib.mkIf config.hardware.sane.enable {
environment.systemPackages = [ pkgs.skanpage ]; environment.systemPackages = [pkgs.skanpage];
}; };
# environment.systemPackages = if config.hardware.sane.enable == true then [ pkgs.skanpage ] else []; # environment.systemPackages = if config.hardware.sane.enable == true then [ pkgs.skanpage ] else [];
} }

View file

@ -1,6 +1,8 @@
{ config, pkgs, ... }: {
config,
let pkgs,
...
}: let
currentTheme = config.services.xserver.displayManager.sddm.theme; currentTheme = config.services.xserver.displayManager.sddm.theme;
sddm-sugar-candy = pkgs.stdenv.mkDerivation { sddm-sugar-candy = pkgs.stdenv.mkDerivation {
@ -39,18 +41,16 @@ let
runHook postInstall runHook postInstall
''; '';
}; };
in in {
{
# Enable SDDM. # Enable SDDM.
services.xserver.displayManager.sddm = { services.xserver.displayManager.sddm = {
enable = true; enable = true;
theme = "sugar-candy"; theme = "sugar-candy";
settings = { settings = {
General = { Numlock = "on"; }; General = {Numlock = "on";};
Theme = { CursorTheme = "Breeze_Snow"; }; Theme = {CursorTheme = "Breeze_Snow";};
}; };
}; };
environment.systemPackages = [ sddm-sugar-candy customcfg ]; environment.systemPackages = [sddm-sugar-candy customcfg];
} }

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./services ./services
./programs ./programs

View file

@ -1,6 +1,4 @@
{ config, pkgs, ... }: {pkgs, ...}: {
{
imports = [ imports = [
./virtualbox.nix ./virtualbox.nix
./idea.nix ./idea.nix

View file

@ -1,7 +1,4 @@
{pkgs, ...}: {
{ pkgs, ... }:
{
home-manager.users.toast = { home-manager.users.toast = {
programs.helix = { programs.helix = {
extraPackages = with pkgs; [ extraPackages = with pkgs; [

View file

@ -1,7 +1,5 @@
{ config, pkgs, ... }: {pkgs, ...}:
with pkgs; {
with pkgs;
{
environment.systemPackages = with jetbrains; [ environment.systemPackages = with jetbrains; [
idea-ultimate idea-ultimate
]; ];

View file

@ -1,9 +1,9 @@
{ pkgs, ... }: {pkgs, ...}: {
{
home-manager.users.toast = { home-manager.users.toast = {
home.packages = [( home.packages = [
(
pkgs.unityhub pkgs.unityhub
)]; )
];
}; };
} }

View file

@ -1,15 +1,15 @@
{ config, ... }: {...}: {
{
# Need to use visual studio 2019 :( # Need to use visual studio 2019 :(
virtualisation.virtualbox.host = { virtualisation.virtualbox.host = {
enable = true; enable = true;
}; };
home-manager.sharedModules = [{ home-manager.sharedModules = [
{
systemd.user.tmpfiles.rules = [ systemd.user.tmpfiles.rules = [
"d '/%h/VirtualBox VMs'" "d '/%h/VirtualBox VMs'"
"h '/%h/VirtualBox VMs' - - - - C " "h '/%h/VirtualBox VMs' - - - - C "
]; ];
}]; }
users.users.toast.extraGroups = [ "vboxusers" ]; ];
users.users.toast.extraGroups = ["vboxusers"];
} }

View file

@ -1,6 +1,11 @@
{ config, pkgs, lib, flakeSelf, ... }:
let inputs = flakeSelf.inputs; in
{ {
pkgs,
lib,
flakeSelf,
...
}: let
inputs = flakeSelf.inputs;
in {
home-manager.users.toast.programs.vscode = { home-manager.users.toast.programs.vscode = {
# The redhat xml extension needs an fhs environment # The redhat xml extension needs an fhs environment
package = lib.mkForce pkgs.vscodium-fhs; package = lib.mkForce pkgs.vscodium-fhs;

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./syncthing.nix ./syncthing.nix
./mysql.nix ./mysql.nix

View file

@ -1,6 +1,9 @@
{ config, pkgs, lib, ... }:
{ {
config,
pkgs,
lib,
...
}: {
services.mongodb = { services.mongodb = {
enable = true; enable = true;
package = pkgs.mongodb-4_4; package = pkgs.mongodb-4_4;

View file

@ -1,6 +1,9 @@
{ config, pkgs, lib, ... }:
{ {
config,
pkgs,
lib,
...
}: {
services.mysql = { services.mysql = {
enable = true; enable = true;
package = pkgs.mysql80; package = pkgs.mysql80;

View file

@ -1,11 +1,9 @@
{ config, ... }: {...}: {
{
services.syncthing.settings.folders = { services.syncthing.settings.folders = {
"school-things" = { "school-things" = {
label = "School things"; label = "School things";
id = "z6alc-nfoqr"; id = "z6alc-nfoqr";
devices = [ "steamdeck" "server" "pc" "winmax2" ]; devices = ["steamdeck" "server" "pc" "winmax2"];
path = "~/Documents/School things"; path = "~/Documents/School things";
}; };
}; };

View file

@ -1,11 +1,9 @@
{ config, pkgs, ... }: {pkgs, ...}: let
let
booDark = pkgs.fetchzip { booDark = pkgs.fetchzip {
url = "https://github.com/adorade/boodark/releases/download/v1.1.1/boodark-v1.1.1.zip"; url = "https://github.com/adorade/boodark/releases/download/v1.1.1/boodark-v1.1.1.zip";
hash = "sha256-GE/FtFlU6A4I9sRyjMhQIidGpDLD99Wzzngz3QI/rSo="; hash = "sha256-GE/FtFlU6A4I9sRyjMhQIidGpDLD99Wzzngz3QI/rSo=";
}; };
in in {
{
# I tried setting up httpd + php in class but I just gave up # I tried setting up httpd + php in class but I just gave up
virtualisation.oci-containers = { virtualisation.oci-containers = {
containers."xampp" = { containers."xampp" = {
@ -17,7 +15,7 @@ in
# No dark mode installed by default :( # No dark mode installed by default :(
"${booDark}:/opt/lampp/phpmyadmin/themes/booDark" "${booDark}:/opt/lampp/phpmyadmin/themes/booDark"
]; ];
ports = [ "41061:22" "41062:80" ]; ports = ["41061:22" "41062:80"];
}; };
}; };

View file

@ -1,6 +1,4 @@
{ config, ... }: {...}: {
{
services.avahi = { services.avahi = {
openFirewall = true; openFirewall = true;
publish = { publish = {

View file

@ -1,16 +1,16 @@
{ config, pkgs, ... }: {pkgs, ...}: {
{
# Beep as soon as possible in the initrd # Beep as soon as possible in the initrd
boot.initrd = { boot.initrd = {
kernelModules = [ "pcspkr" ]; kernelModules = ["pcspkr"];
extraFiles.beep.source = pkgs.beep; extraFiles.beep.source = pkgs.beep;
postDeviceCommands = "/beep/bin/beep -f 3000 -l 50 -r 2"; postDeviceCommands = "/beep/bin/beep -f 3000 -l 50 -r 2";
}; };
/*systemd.services.startupBeep = { /*
systemd.services.startupBeep = {
description = "Beep when system started booting"; description = "Beep when system started booting";
wantedBy = [ "sysinit.target" ]; wantedBy = [ "sysinit.target" ];
script = "${pkgs.beep}/bin/beep -f 3000 -l 50 -r 2"; script = "${pkgs.beep}/bin/beep -f 3000 -l 50 -r 2";
serviceConfig = { Type = "oneshot"; }; serviceConfig = { Type = "oneshot"; };
};*/ };
*/
} }

View file

@ -1,12 +1,12 @@
{ config, flakeSelf, ... }:
let
hostSecrets = "${flakeSelf.inputs.secrets}/" + config.networking.hostName;
in
{ {
config,
flakeSelf,
...
}: let
hostSecrets = "${flakeSelf.inputs.secrets}/" + config.networking.hostName;
in {
# Set up secrets # Set up secrets
age.secrets = { ddclient-passwd.file = hostSecrets + "/ddclient-password.age"; }; age.secrets = {ddclient-passwd.file = hostSecrets + "/ddclient-password.age";};
services.ddclient = { services.ddclient = {
enable = true; enable = true;
@ -15,6 +15,6 @@ in
server = "dynamicdns.park-your-domain.com"; server = "dynamicdns.park-your-domain.com";
username = "toast003.xyz"; username = "toast003.xyz";
passwordFile = config.age.secrets.ddclient-passwd.path; passwordFile = config.age.secrets.ddclient-passwd.path;
domains = [ "@" ]; domains = ["@"];
}; };
} }

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
imports = [ imports = [
./avahi.nix ./avahi.nix
./nfs.nix ./nfs.nix

View file

@ -1,6 +1,4 @@
{ ... }: {...}: {
{
services.dnsmasq = { services.dnsmasq = {
enable = true; enable = true;
@ -8,7 +6,7 @@
resolveLocalQueries = false; resolveLocalQueries = false;
settings = { settings = {
listen-address = [ "100.73.96.48" ]; listen-address = ["100.73.96.48"];
/* /*
Dnsmasq tries to use the tailscale dns server, which is bad cause that points to dnsmasq Dnsmasq tries to use the tailscale dns server, which is bad cause that points to dnsmasq
@ -29,11 +27,11 @@
# Add tailscale hosts # Add tailscale hosts
networking.hosts = { networking.hosts = {
"100.73.96.48" = [ "everest" ]; "100.73.96.48" = ["everest"];
"100.113.139.93" = [ "archie" ]; "100.113.139.93" = ["archie"];
"100.85.48.85" = [ "steamdeck" ]; "100.85.48.85" = ["steamdeck"];
"100.96.92.13" = [ "surfecego" ]; "100.96.92.13" = ["surfecego"];
"100.106.73.20" = [ "winmax2" ]; "100.106.73.20" = ["winmax2"];
}; };
# Dnsmasq conflicts with the resolved dns stub listener # Dnsmasq conflicts with the resolved dns stub listener

View file

@ -1,10 +1,8 @@
{ config, ... }: {...}: {
{
# I prefer using the go implementation # I prefer using the go implementation
services.endlessh-go = { services.endlessh-go = {
enable = true; enable = true;
openFirewall = true; openFirewall = true;
extraOptions = [ "-alsologtostderr" "-v=1"] ; extraOptions = ["-alsologtostderr" "-v=1"];
}; };
} }

View file

@ -1,6 +1,8 @@
{ config, lib, ... }:
{ {
config,
lib,
...
}: {
specialisation.forgejoEnableRegistration.configuration.services.forgejo.settings.service.DISABLE_REGISTRATION = false; specialisation.forgejoEnableRegistration.configuration.services.forgejo.settings.service.DISABLE_REGISTRATION = false;
services.forgejo = { services.forgejo = {
enable = true; enable = true;
@ -22,7 +24,7 @@
}; };
# Add a cname for forgejo # Add a cname for forgejo
services.dnsmasq.settings.cname = [ "git.everest.sable-pancake.ts.net,everest" ]; services.dnsmasq.settings.cname = ["git.everest.sable-pancake.ts.net,everest"];
# Set up traefik as the reverse proxy for Forgejo # Set up traefik as the reverse proxy for Forgejo
services.traefik = { services.traefik = {
@ -35,7 +37,7 @@
}; };
}; };
services.forgejo.loadBalancer.servers = [ services.forgejo.loadBalancer.servers = [
{ url = "http://localhost:${toString config.services.forgejo.settings.server.HTTP_PORT}"; } {url = "http://localhost:${toString config.services.forgejo.settings.server.HTTP_PORT}";}
]; ];
}; };
}; };

View file

@ -1,5 +1,9 @@
{ config, pkgs, flakeSelf, ... }: {
let config,
pkgs,
flakeSelf,
...
}: let
atfc = builtins.fetchurl { atfc = builtins.fetchurl {
url = "https://www.curseforge.com/api/v1/mods/813246/files/4732590/download"; url = "https://www.curseforge.com/api/v1/mods/813246/files/4732590/download";
sha256 = "0yl6ixmhfgqvcj3kfshpf8fy42vkkmjbn7d7yg86jx0ykiiq5f9x"; sha256 = "0yl6ixmhfgqvcj3kfshpf8fy42vkkmjbn7d7yg86jx0ykiiq5f9x";
@ -15,11 +19,10 @@ let
port = 25565; port = 25565;
users = config.users; users = config.users;
in in {
{
users = { users = {
groups.minecraft = { groups.minecraft = {
members = [ "toast" ]; members = ["toast"];
gid = 987; gid = 987;
}; };
users.atfc = { users.atfc = {
@ -88,28 +91,26 @@ in
"${users.users.atfc.home}:/data" "${users.users.atfc.home}:/data"
#"/tmp/minecraft:/data" #"/tmp/minecraft:/data"
]; ];
ports = [ "25565:${toString port}" ]; ports = ["25565:${toString port}"];
}; };
}; };
networking.firewall.allowedTCPPorts = [ port ]; networking.firewall.allowedTCPPorts = [port];
# anything-sync-daemon config # anything-sync-daemon config
systemd.packages = with pkgs; [ flakeSelf.packages.x86_64-linux.anything-sync-daemon ]; systemd.packages = with pkgs; [flakeSelf.packages.x86_64-linux.anything-sync-daemon];
environment.systemPackages = with pkgs; [ flakeSelf.packages.x86_64-linux.anything-sync-daemon ]; environment.systemPackages = with pkgs; [flakeSelf.packages.x86_64-linux.anything-sync-daemon];
fileSystems.minecraftTmpfs = { fileSystems.minecraftTmpfs = {
device = "none"; device = "none";
fsType = "tmpfs"; fsType = "tmpfs";
mountPoint = "/mnt/minecraftTmpfs"; mountPoint = "/mnt/minecraftTmpfs";
options = [ "size=4G "]; options = ["size=4G "];
}; };
environment.etc."asd.conf".text = environment.etc."asd.conf".text = '' WHATTOSYNC=('/var/lib/minecraft')
''WHATTOSYNC=('/var/lib/minecraft') VOLATILE="${config.fileSystems.minecraftTmpfs.mountPoint}"
VOLATILE="${config.fileSystems.minecraftTmpfs.mountPoint}" USE_OVERLAYFS="yes" '';
USE_OVERLAYFS="yes" '';
systemd.services.asd = { systemd.services.asd = {
wantedBy = [ "podman-minecraft-atfc.service" ]; wantedBy = ["podman-minecraft-atfc.service"];
before = [ "podman-minecraft-atfc.service" ]; before = ["podman-minecraft-atfc.service"];
}; };
} }

View file

@ -1,6 +1,4 @@
{ config, lib, ... }: {config, ...}: {
{
services = { services = {
nfs.server = { nfs.server = {
enable = true; enable = true;
@ -15,22 +13,22 @@
avahi.extraServiceFiles = { avahi.extraServiceFiles = {
Transmission-downloads-nfs = '' Transmission-downloads-nfs = ''
<?xml version="1.0" standalone='no'?> <?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group> <service-group>
<name replace-wildcards="yes">Transmission Downloads on %h (NFS)</name> <name replace-wildcards="yes">Transmission Downloads on %h (NFS)</name>
<service> <service>
<type>_nfs._tcp</type> <type>_nfs._tcp</type>
<port>2049</port> <port>2049</port>
<txt-record>path=${config.services.transmission.settings.download-dir}</txt-record> <txt-record>path=${config.services.transmission.settings.download-dir}</txt-record>
</service> </service>
</service-group> </service-group>
''; '';
}; };
}; };
networking.firewall = { networking.firewall = {
allowedTCPPorts = [ 111 2049 4000 40001 4002 ]; allowedTCPPorts = [111 2049 4000 40001 4002];
allowedUDPPorts = [ 111 2049 4000 40001 4002 ]; allowedUDPPorts = [111 2049 4000 40001 4002];
}; };
} }

View file

@ -1,14 +1,12 @@
{ config, lib, ... }: {config, ...}: {
{
services = { services = {
samba = { samba = {
enable = true; enable = true;
openFirewall = true; openFirewall = true;
extraConfig = '' extraConfig = ''
map to guest = bad user map to guest = bad user
guest account = transmission guest account = transmission
''; '';
shares = { shares = {
"Transmission downloads" = { "Transmission downloads" = {
path = "${config.services.transmission.settings.download-dir}"; path = "${config.services.transmission.settings.download-dir}";
@ -22,16 +20,16 @@ guest account = transmission
avahi.extraServiceFiles = { avahi.extraServiceFiles = {
Transmission-downloads-smb = '' Transmission-downloads-smb = ''
<?xml version="1.0" standalone='no'?> <?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group> <service-group>
<name replace-wildcards="yes">SMB shares on %h</name> <name replace-wildcards="yes">SMB shares on %h</name>
<service> <service>
<type>_smb._tcp</type> <type>_smb._tcp</type>
<port>139</port> <port>139</port>
</service> </service>
</service-group> </service-group>
''; '';
}; };
}; };
} }

View file

@ -1,6 +1,4 @@
{ config, ... }: {...}: {
{
services.openssh = { services.openssh = {
enable = true; enable = true;
settings = { settings = {

View file

@ -1,6 +1,4 @@
{ config, ... }: {config, ...}: {
{
services.syncthing = { services.syncthing = {
enable = true; enable = true;
key = config.age.secrets.syncthingKey.path; key = config.age.secrets.syncthingKey.path;
@ -13,19 +11,19 @@
"school-things" = { "school-things" = {
label = "School things"; label = "School things";
id = "z6alc-nfoqr"; id = "z6alc-nfoqr";
devices = [ "steamdeck" "server" "pc" "winmax2" ]; devices = ["steamdeck" "server" "pc" "winmax2"];
path = "${config.services.syncthing.dataDir}/school-things"; path = "${config.services.syncthing.dataDir}/school-things";
}; };
"steam-201810" = { "steam-201810" = {
label = "Wolfenstein The New Order Saves"; label = "Wolfenstein The New Order Saves";
id = "laxxf-t2wmy"; id = "laxxf-t2wmy";
devices = [ "steamdeck" "server" "pc" "winmax2" ]; devices = ["steamdeck" "server" "pc" "winmax2"];
path = "${config.services.syncthing.dataDir}/steam-201810"; path = "${config.services.syncthing.dataDir}/steam-201810";
}; };
"retroarch"= { "retroarch" = {
label = "RetroArch"; label = "RetroArch";
id = "jxuou-2yjnu"; id = "jxuou-2yjnu";
devices = [ "steamdeck" "server" "pc" "winmax2" ]; devices = ["steamdeck" "server" "pc" "winmax2"];
path = "${config.services.syncthing.dataDir}/retroarch"; path = "${config.services.syncthing.dataDir}/retroarch";
}; };
}; };
@ -36,7 +34,7 @@
}; };
# Add a cname for syncthing # Add a cname for syncthing
services.dnsmasq.settings.cname = [ "sync.everest.sable-pancake.ts.net,everest" ]; services.dnsmasq.settings.cname = ["sync.everest.sable-pancake.ts.net,everest"];
# Set up traefik as the reverse proxy for syncthing # Set up traefik as the reverse proxy for syncthing
services.traefik = { services.traefik = {
@ -49,7 +47,7 @@
}; };
}; };
services.syncthing.loadBalancer.servers = [ services.syncthing.loadBalancer.servers = [
{ url = "http://localhost:8384"; } {url = "http://localhost:8384";}
]; ];
}; };
}; };

View file

@ -1,6 +1,4 @@
{ config, ... }: {...}: {
{
services.tailscale = { services.tailscale = {
# This is needed for being an exit node # This is needed for being an exit node
useRoutingFeatures = "server"; useRoutingFeatures = "server";

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