Compare commits
3 commits
9603b43f34
...
f2d0e9239f
Author | SHA1 | Date | |
---|---|---|---|
f2d0e9239f |
|||
e641dfa114 |
|||
f4464732e3 |
116 changed files with 1608 additions and 1087 deletions
16
default.nix
16
default.nix
|
@ -3,21 +3,21 @@ let
|
||||||
|
|
||||||
# https://github.com/andir/npins?tab=readme-ov-file#using-the-nixpkgs-fetchers
|
# https://github.com/andir/npins?tab=readme-ov-file#using-the-nixpkgs-fetchers
|
||||||
src = import ./npins;
|
src = import ./npins;
|
||||||
pkgs = import src.nixpkgs {};
|
pkgs = import src.nixpkgs { };
|
||||||
sources = mapAttrs (k: v: v {inherit pkgs;}) src;
|
sources = mapAttrs (k: v: v { inherit pkgs; }) src;
|
||||||
|
|
||||||
inherit (pkgs) lib;
|
inherit (pkgs) lib;
|
||||||
inherit (lib.filesystem) listFilesRecursive;
|
inherit (lib.filesystem) listFilesRecursive;
|
||||||
inherit (lib.strings) hasSuffix;
|
inherit (lib.strings) hasSuffix;
|
||||||
|
|
||||||
mkSystem = system: hostname:
|
mkSystem =
|
||||||
|
system: hostname:
|
||||||
import (src.nixpkgs + "/nixos/lib/eval-config.nix") {
|
import (src.nixpkgs + "/nixos/lib/eval-config.nix") {
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit sources;
|
inherit sources;
|
||||||
self = ./.;
|
self = ./.;
|
||||||
};
|
};
|
||||||
modules =
|
modules = [
|
||||||
[
|
|
||||||
# This is used to pre-emptively set the hostPlatform for nixpkgs.
|
# This is used to pre-emptively set the hostPlatform for nixpkgs.
|
||||||
# Also, we set the system hostname here.
|
# Also, we set the system hostname here.
|
||||||
{
|
{
|
||||||
|
@ -27,10 +27,10 @@ let
|
||||||
./hosts/common.nix
|
./hosts/common.nix
|
||||||
./hosts/${hostname}
|
./hosts/${hostname}
|
||||||
]
|
]
|
||||||
++ ((listFilesRecursive ./modules)
|
++ ((listFilesRecursive ./modules) |> filter (hasSuffix ".mod.nix"));
|
||||||
|> filter (hasSuffix ".mod.nix"));
|
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
temperance = mkSystem "x86_64-linux" "temperance";
|
temperance = mkSystem "x86_64-linux" "temperance";
|
||||||
hermit = mkSystem "x86_64-linux" "hermit";
|
hermit = mkSystem "x86_64-linux" "hermit";
|
||||||
tower = mkSystem "aarch64-linux" "tower";
|
tower = mkSystem "aarch64-linux" "tower";
|
||||||
|
|
51
flake.nix
51
flake.nix
|
@ -3,64 +3,37 @@
|
||||||
|
|
||||||
# No inputs, take this flakers
|
# No inputs, take this flakers
|
||||||
|
|
||||||
outputs = _: let
|
outputs =
|
||||||
|
_:
|
||||||
|
let
|
||||||
sources = import ./npins;
|
sources = import ./npins;
|
||||||
nixpkgs = (import sources.flake-compat {src = sources.nixpkgs;}).outputs;
|
nixpkgs = (import sources.flake-compat { src = sources.nixpkgs; }).outputs;
|
||||||
|
|
||||||
inherit (nixpkgs) lib;
|
inherit (nixpkgs) lib;
|
||||||
eachSystem = lib.genAttrs (import sources.systems);
|
|
||||||
pkgsFor = nixpkgs.legacyPackages;
|
pkgsFor = nixpkgs.legacyPackages;
|
||||||
inputs = sources;
|
inputs = sources;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
nixosConfigurations = import ./default.nix;
|
nixosConfigurations = import ./default.nix;
|
||||||
|
|
||||||
formatter = eachSystem (system: pkgsFor.${system}.alejandra);
|
packages = lib.mapAttrs (_: pkgs: {
|
||||||
|
|
||||||
packages =
|
|
||||||
lib.mapAttrs (
|
|
||||||
_: pkgs: {
|
|
||||||
inherit
|
inherit
|
||||||
(import ./packages {
|
(import ./packages {
|
||||||
inherit inputs pkgs;
|
inherit inputs pkgs sources;
|
||||||
})
|
})
|
||||||
fish
|
fish
|
||||||
helix
|
helix
|
||||||
kakoune
|
kakoune
|
||||||
nushell
|
nushell
|
||||||
;
|
;
|
||||||
}
|
}) pkgsFor;
|
||||||
)
|
devShells = lib.mapAttrs (_: pkgs: {
|
||||||
pkgsFor;
|
|
||||||
devShells =
|
|
||||||
lib.mapAttrs (
|
|
||||||
_: pkgs: {
|
|
||||||
default = pkgs.mkShellNoCC {
|
default = pkgs.mkShellNoCC {
|
||||||
packages = [
|
packages = [
|
||||||
(pkgs.callPackage (sources.npins + "/npins.nix") {})
|
(pkgs.callPackage (sources.npins + "/npins.nix") { })
|
||||||
];
|
];
|
||||||
env.NPINS_OVERRIDE_nichts = ".";
|
env.NPINS_OVERRIDE_nichts = ".";
|
||||||
};
|
};
|
||||||
}
|
}) pkgsFor;
|
||||||
)
|
|
||||||
pkgsFor;
|
|
||||||
|
|
||||||
apps = eachSystem (system: let
|
|
||||||
inherit (inputs.self.packages.${system}) fish helix nushell;
|
|
||||||
in {
|
|
||||||
default = inputs.self.apps.${system}.nushell;
|
|
||||||
helix = {
|
|
||||||
type = "app";
|
|
||||||
program = "${helix}/bin/hx";
|
|
||||||
};
|
|
||||||
nushell = {
|
|
||||||
type = "app";
|
|
||||||
program = "${nushell}/bin/nu";
|
|
||||||
};
|
|
||||||
fish = {
|
|
||||||
type = "app";
|
|
||||||
program = "${fish}/bin/fish";
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
templates = import ./templates;
|
templates = import ./templates;
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,16 +6,19 @@
|
||||||
lib,
|
lib,
|
||||||
self,
|
self,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
sources,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.meta) hiPrioSet;
|
inherit (lib.meta) hiPrioSet;
|
||||||
helix = pkgs.callPackage (self + "/packages/helix") {};
|
helix = pkgs.callPackage (self + "/packages/helix") { inherit sources; };
|
||||||
fish = pkgs.callPackage (self + "/packages/fish") {};
|
|
||||||
in {
|
fish = pkgs.callPackage (self + "/packages/fish") { inherit sources; };
|
||||||
|
in
|
||||||
|
{
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
builtins.attrValues {
|
builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
cachix
|
cachix
|
||||||
calc
|
calc
|
||||||
delta
|
delta
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
self,
|
self,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (builtins) filter map toString;
|
inherit (builtins) filter map toString;
|
||||||
inherit (nixpkgs) lib;
|
inherit (nixpkgs) lib;
|
||||||
inherit (lib.attrsets) recursiveUpdate;
|
inherit (lib.attrsets) recursiveUpdate;
|
||||||
|
@ -14,20 +15,18 @@
|
||||||
# NOTE: This was inspired by raf, and I find this
|
# NOTE: This was inspired by raf, and I find this
|
||||||
# to be quite a sane way of managing all modules in my flake.
|
# to be quite a sane way of managing all modules in my flake.
|
||||||
|
|
||||||
mkSystem = {
|
mkSystem =
|
||||||
|
{
|
||||||
system,
|
system,
|
||||||
hostname,
|
hostname,
|
||||||
...
|
...
|
||||||
} @ args:
|
}@args:
|
||||||
nixosSystem {
|
nixosSystem {
|
||||||
specialArgs =
|
specialArgs = recursiveUpdate {
|
||||||
recursiveUpdate
|
|
||||||
{
|
|
||||||
inherit lib;
|
inherit lib;
|
||||||
inputs = sources;
|
inputs = sources;
|
||||||
inherit self;
|
inherit self;
|
||||||
}
|
} args.specialArgs or { };
|
||||||
args.specialArgs or {};
|
|
||||||
modules = concatLists [
|
modules = concatLists [
|
||||||
# This is used to pre-emptively set the hostPlatform for nixpkgs.
|
# This is used to pre-emptively set the hostPlatform for nixpkgs.
|
||||||
# Also, we set the system hostname here.
|
# Also, we set the system hostname here.
|
||||||
|
@ -42,20 +41,15 @@
|
||||||
# common configuration, which all hosts share.
|
# common configuration, which all hosts share.
|
||||||
(singleton ./common.nix)
|
(singleton ./common.nix)
|
||||||
# Import all files called module.nix from my modules directory.
|
# Import all files called module.nix from my modules directory.
|
||||||
(
|
(map toString (listFilesRecursive ../modules) |> filter (hasSuffix "module.nix"))
|
||||||
map toString (listFilesRecursive ../modules)
|
(map toString (listFilesRecursive ../modules) |> filter (hasSuffix ".mod.nix"))
|
||||||
|> filter (hasSuffix "module.nix")
|
|
||||||
)
|
|
||||||
(
|
|
||||||
map toString (listFilesRecursive ../modules)
|
|
||||||
|> filter (hasSuffix ".mod.nix")
|
|
||||||
)
|
|
||||||
]
|
]
|
||||||
|> flatten
|
|> flatten
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
temperance = mkSystem {
|
temperance = mkSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
hostname = "temperance";
|
hostname = "temperance";
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
# Time Zone
|
# Time Zone
|
||||||
time.timeZone = "Europe/Zurich";
|
time.timeZone = "Europe/Zurich";
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
config = {
|
config = {
|
||||||
boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/10318654-ed20-43f6-885d-35366a427581";
|
boot.initrd.luks.devices."cryptroot".device =
|
||||||
|
"/dev/disk/by-uuid/10318654-ed20-43f6-885d-35366a427581";
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
"/boot" = {
|
"/boot" = {
|
||||||
device = "/dev/disk/by-uuid/5D7D-FC52";
|
device = "/dev/disk/by-uuid/5D7D-FC52";
|
||||||
|
@ -10,17 +11,28 @@
|
||||||
"/" = {
|
"/" = {
|
||||||
device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e";
|
device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["compress=zstd" "noatime"];
|
options = [
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
"/nix" = {
|
"/nix" = {
|
||||||
device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e";
|
device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=nix" "compress=zstd" "noatime"];
|
options = [
|
||||||
|
"subvol=nix"
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
"/home" = {
|
"/home" = {
|
||||||
device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e";
|
device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=home" "compress=zstd" "noatime"];
|
options = [
|
||||||
|
"subvol=home"
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# swapDevices = [
|
# swapDevices = [
|
||||||
|
|
|
@ -6,21 +6,34 @@
|
||||||
lib,
|
lib,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
initrd = {
|
initrd = {
|
||||||
availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"];
|
availableKernelModules = [
|
||||||
kernelModules = [];
|
"xhci_pci"
|
||||||
|
"ahci"
|
||||||
|
"nvme"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
"rtsx_pci_sdmmc"
|
||||||
|
];
|
||||||
|
kernelModules = [ ];
|
||||||
};
|
};
|
||||||
kernelModules = ["kvm-intel"];
|
kernelModules = [ "kvm-intel" ];
|
||||||
blacklistedKernelModules = ["nouveau" "nvidia" "nvidia_drm" "nvidia_modeset"];
|
blacklistedKernelModules = [
|
||||||
|
"nouveau"
|
||||||
|
"nvidia"
|
||||||
|
"nvidia_drm"
|
||||||
|
"nvidia_modeset"
|
||||||
|
];
|
||||||
|
|
||||||
kernelParams = ["mem_sleep_default=deep"];
|
kernelParams = [ "mem_sleep_default=deep" ];
|
||||||
extraModulePackages = [];
|
extraModulePackages = [ ];
|
||||||
extraModprobeConfig = ''
|
extraModprobeConfig = ''
|
||||||
blacklist nouveau
|
blacklist nouveau
|
||||||
options nouveau modeset=0
|
options nouveau modeset=0
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
_: {imports = [./monitors.nix];}
|
_: { imports = [ ./monitors.nix ]; }
|
||||||
|
|
|
@ -3,8 +3,10 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
xanmod_custom = callPackage ./xanmod.nix;
|
xanmod_custom = callPackage ./xanmod.nix;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
boot.kernelPackages = xanmod_custom;
|
boot.kernelPackages = xanmod_custom;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{pkgs, ...}: let
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
# a newer nil version, for pipes support.
|
# a newer nil version, for pipes support.
|
||||||
new-nil = pkgs.nil.overrideAttrs (_: {
|
new-nil = pkgs.nil.overrideAttrs (_: {
|
||||||
version = "unstable-18-07-2025";
|
version = "unstable-18-07-2025";
|
||||||
|
@ -17,13 +18,12 @@
|
||||||
hash = "sha256-Sljr3ff8hl/qm/0wqc1GXsEr1wWn7NAXmdrd5wHzUX8=";
|
hash = "sha256-Sljr3ff8hl/qm/0wqc1GXsEr1wWn7NAXmdrd5wHzUX8=";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
environment.systemPackages = builtins.attrValues {
|
environment.systemPackages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
abook
|
abook
|
||||||
aerc
|
aerc
|
||||||
alejandra
|
|
||||||
aichat
|
aichat
|
||||||
alsa-utils
|
alsa-utils
|
||||||
anki
|
anki
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
# Time Zone
|
# Time Zone
|
||||||
time.timeZone = "Europe/Zurich";
|
time.timeZone = "Europe/Zurich";
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
config = {
|
config = {
|
||||||
boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/96e8f3d6-8d2d-4e2d-abd9-3eb7f48fed02";
|
boot.initrd.luks.devices."cryptroot".device =
|
||||||
|
"/dev/disk/by-uuid/96e8f3d6-8d2d-4e2d-abd9-3eb7f48fed02";
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
"/boot" = {
|
"/boot" = {
|
||||||
device = "/dev/disk/by-uuid/B3AC-9050";
|
device = "/dev/disk/by-uuid/B3AC-9050";
|
||||||
|
@ -10,29 +11,49 @@
|
||||||
"/" = {
|
"/" = {
|
||||||
device = "none";
|
device = "none";
|
||||||
fsType = "tmpfs";
|
fsType = "tmpfs";
|
||||||
options = ["defaults" "size=40%" "mode=755"];
|
options = [
|
||||||
|
"defaults"
|
||||||
|
"size=40%"
|
||||||
|
"mode=755"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
"/nix" = {
|
"/nix" = {
|
||||||
device = "/dev/disk/by-uuid/f0569993-722e-4721-b0d9-8ac537a7a548";
|
device = "/dev/disk/by-uuid/f0569993-722e-4721-b0d9-8ac537a7a548";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=nix" "compress=zstd" "noatime"];
|
options = [
|
||||||
|
"subvol=nix"
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
"/persist" = {
|
"/persist" = {
|
||||||
device = "/dev/disk/by-uuid/f0569993-722e-4721-b0d9-8ac537a7a548";
|
device = "/dev/disk/by-uuid/f0569993-722e-4721-b0d9-8ac537a7a548";
|
||||||
neededForBoot = true;
|
neededForBoot = true;
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=persist" "compress=zstd" "noatime"];
|
options = [
|
||||||
|
"subvol=persist"
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
"/home" = {
|
"/home" = {
|
||||||
device = "/dev/disk/by-uuid/f0569993-722e-4721-b0d9-8ac537a7a548";
|
device = "/dev/disk/by-uuid/f0569993-722e-4721-b0d9-8ac537a7a548";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=home" "compress=zstd" "noatime"];
|
options = [
|
||||||
|
"subvol=home"
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
"/swap" = {
|
"/swap" = {
|
||||||
device = "/dev/disk/by-uuid/f0569993-722e-4721-b0d9-8ac537a7a548";
|
device = "/dev/disk/by-uuid/f0569993-722e-4721-b0d9-8ac537a7a548";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
|
|
||||||
options = ["subvol=swap" "compress=lzo" "noatime"];
|
options = [
|
||||||
|
"subvol=swap"
|
||||||
|
"compress=lzo"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
|
|
|
@ -3,14 +3,21 @@
|
||||||
lib,
|
lib,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
|
{
|
||||||
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "sd_mod"];
|
initrd.availableKernelModules = [
|
||||||
initrd.kernelModules = [];
|
"xhci_pci"
|
||||||
kernelModules = [];
|
"ahci"
|
||||||
extraModulePackages = [];
|
"nvme"
|
||||||
|
"usbhid"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
|
initrd.kernelModules = [ ];
|
||||||
|
kernelModules = [ ];
|
||||||
|
extraModulePackages = [ ];
|
||||||
};
|
};
|
||||||
|
|
||||||
# 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
|
||||||
|
@ -21,6 +28,5 @@
|
||||||
# networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
|
# networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.intel.updateMicrocode =
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
_: {imports = [./monitors.nix];}
|
_: { imports = [ ./monitors.nix ]; }
|
||||||
|
|
|
@ -3,8 +3,10 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
xanmod_custom = callPackage ./xanmod.nix;
|
xanmod_custom = callPackage ./xanmod.nix;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
boot.kernelPackages = xanmod_custom;
|
boot.kernelPackages = xanmod_custom;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
{lib, ...}: let
|
{ lib, ... }:
|
||||||
|
let
|
||||||
inherit (lib.kernel) no unset;
|
inherit (lib.kernel) no unset;
|
||||||
inherit (lib.attrsets) mapAttrs;
|
inherit (lib.attrsets) mapAttrs;
|
||||||
inherit (lib.modules) mkForce;
|
inherit (lib.modules) mkForce;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
boot.kernelPatches = [
|
boot.kernelPatches = [
|
||||||
{
|
{
|
||||||
name = "disable-unused-features";
|
name = "disable-unused-features";
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
buildLinux,
|
buildLinux,
|
||||||
kernelPatches,
|
kernelPatches,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
pname = "linux-xanmod";
|
pname = "linux-xanmod";
|
||||||
version = "6.11.5";
|
version = "6.11.5";
|
||||||
vendorSuffix = "xanmod1";
|
vendorSuffix = "xanmod1";
|
||||||
|
@ -58,17 +59,17 @@
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
# 1:1 taken from raf's custom kernel, check out his config for this.
|
# 1:1 taken from raf's custom kernel, check out his config for this.
|
||||||
.overrideAttrs (oa: {
|
.overrideAttrs
|
||||||
prePatch =
|
(oa: {
|
||||||
oa.prePatch or ""
|
prePatch = oa.prePatch or "" + ''
|
||||||
+ ''
|
|
||||||
# bragging rights
|
# bragging rights
|
||||||
echo "Replacing localversion with custom suffix"
|
echo "Replacing localversion with custom suffix"
|
||||||
substituteInPlace localversion \
|
substituteInPlace localversion \
|
||||||
--replace-fail "xanmod1" "blox"
|
--replace-fail "xanmod1" "blox"
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
inherit
|
inherit
|
||||||
xanmod_blox
|
xanmod_blox
|
||||||
;
|
;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
environment.systemPackages = builtins.attrValues {
|
environment.systemPackages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
alsa-utils
|
alsa-utils
|
||||||
anki
|
anki
|
||||||
asciinema
|
asciinema
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
# Time Zone
|
# Time Zone
|
||||||
time.timeZone = "Europe/Vienna";
|
time.timeZone = "Europe/Vienna";
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
"/" = {
|
"/" = {
|
||||||
device = "/dev/disk/by-uuid/3a781f2e-290a-4609-9035-a93374459def";
|
device = "/dev/disk/by-uuid/3a781f2e-290a-4609-9035-a93374459def";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
options = ["noatime"];
|
options = [ "noatime" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,19 +2,24 @@
|
||||||
lib,
|
lib,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
initrd.availableKernelModules = ["xhci_pci" "virtio_scsi" "sr_mod"];
|
initrd.availableKernelModules = [
|
||||||
initrd.kernelModules = [];
|
"xhci_pci"
|
||||||
kernelModules = [];
|
"virtio_scsi"
|
||||||
extraModulePackages = [];
|
"sr_mod"
|
||||||
|
];
|
||||||
|
initrd.kernelModules = [ ];
|
||||||
|
kernelModules = [ ];
|
||||||
|
extraModulePackages = [ ];
|
||||||
};
|
};
|
||||||
|
|
||||||
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
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
environment.systemPackages = builtins.attrValues {
|
environment.systemPackages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
# Time Zone
|
# Time Zone
|
||||||
time.timeZone = "Europe/Zurich";
|
time.timeZone = "Europe/Zurich";
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
config = {
|
config = {
|
||||||
boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/10318654-ed20-43f6-885d-35366a427581";
|
boot.initrd.luks.devices."cryptroot".device =
|
||||||
|
"/dev/disk/by-uuid/10318654-ed20-43f6-885d-35366a427581";
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
"/boot" = {
|
"/boot" = {
|
||||||
device = "/dev/disk/by-uuid/5D7D-FC52";
|
device = "/dev/disk/by-uuid/5D7D-FC52";
|
||||||
|
@ -10,17 +11,28 @@
|
||||||
"/" = {
|
"/" = {
|
||||||
device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e";
|
device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["compress=zstd" "noatime"];
|
options = [
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
"/nix" = {
|
"/nix" = {
|
||||||
device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e";
|
device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=nix" "compress=zstd" "noatime"];
|
options = [
|
||||||
|
"subvol=nix"
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
"/home" = {
|
"/home" = {
|
||||||
device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e";
|
device = "/dev/disk/by-uuid/e353013b-8ac7-40ed-80f2-ddbea21b8d5e";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=home" "compress=zstd" "noatime"];
|
options = [
|
||||||
|
"subvol=home"
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# swapDevices = [
|
# swapDevices = [
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
lib,
|
lib,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
# (modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix")
|
# (modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix")
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
@ -11,14 +12,26 @@
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
initrd = {
|
initrd = {
|
||||||
availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"];
|
availableKernelModules = [
|
||||||
kernelModules = [];
|
"xhci_pci"
|
||||||
|
"ahci"
|
||||||
|
"nvme"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
"rtsx_pci_sdmmc"
|
||||||
|
];
|
||||||
|
kernelModules = [ ];
|
||||||
};
|
};
|
||||||
kernelModules = ["kvm-intel"];
|
kernelModules = [ "kvm-intel" ];
|
||||||
blacklistedKernelModules = ["nouveau" "nvidia" "nvidia_drm" "nvidia_modeset"];
|
blacklistedKernelModules = [
|
||||||
|
"nouveau"
|
||||||
|
"nvidia"
|
||||||
|
"nvidia_drm"
|
||||||
|
"nvidia_modeset"
|
||||||
|
];
|
||||||
|
|
||||||
kernelParams = ["mem_sleep_default=deep"];
|
kernelParams = [ "mem_sleep_default=deep" ];
|
||||||
extraModulePackages = [];
|
extraModulePackages = [ ];
|
||||||
extraModprobeConfig = ''
|
extraModprobeConfig = ''
|
||||||
blacklist nouveau
|
blacklist nouveau
|
||||||
options nouveau modeset=0
|
options nouveau modeset=0
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
_: {imports = [./monitors.nix];}
|
_: { imports = [ ./monitors.nix ]; }
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
self,
|
self,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
environment.systemPackages = builtins.attrValues {
|
environment.systemPackages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
calc
|
calc
|
||||||
comma
|
comma
|
||||||
difftastic
|
difftastic
|
||||||
|
|
|
@ -1,10 +1,18 @@
|
||||||
{lib, ...}: let
|
{ lib, ... }:
|
||||||
|
let
|
||||||
inherit (lib.options) mkOption;
|
inherit (lib.options) mkOption;
|
||||||
inherit (lib.types) submodule int ints number attrsOf;
|
inherit (lib.types)
|
||||||
in {
|
submodule
|
||||||
|
int
|
||||||
|
ints
|
||||||
|
number
|
||||||
|
attrsOf
|
||||||
|
;
|
||||||
|
in
|
||||||
|
{
|
||||||
options.modules.system.hardware.monitors = mkOption {
|
options.modules.system.hardware.monitors = mkOption {
|
||||||
description = "\n List of monitors to use\n ";
|
description = "\n List of monitors to use\n ";
|
||||||
default = {};
|
default = { };
|
||||||
type = attrsOf (submodule {
|
type = attrsOf (submodule {
|
||||||
options = {
|
options = {
|
||||||
resolution = mkOption {
|
resolution = mkOption {
|
||||||
|
|
|
@ -2,18 +2,26 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (builtins) elemAt;
|
inherit (builtins) elemAt;
|
||||||
inherit (lib.options) mkOption mkEnableOption;
|
inherit (lib.options) mkOption mkEnableOption;
|
||||||
inherit (lib.types) enum listOf str nullOr bool;
|
inherit (lib.types)
|
||||||
|
enum
|
||||||
|
listOf
|
||||||
|
str
|
||||||
|
nullOr
|
||||||
|
bool
|
||||||
|
;
|
||||||
inherit (lib.lists) elem;
|
inherit (lib.lists) elem;
|
||||||
|
|
||||||
inherit (config.modules.system) systemType;
|
inherit (config.modules.system) systemType;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system = {
|
options.modules.system = {
|
||||||
users = mkOption {
|
users = mkOption {
|
||||||
type = listOf str;
|
type = listOf str;
|
||||||
default = ["cr"];
|
default = [ "cr" ];
|
||||||
description = "A list of users on the system.";
|
description = "A list of users on the system.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -27,7 +35,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
systemType = mkOption {
|
systemType = mkOption {
|
||||||
type = nullOr (enum ["desktop" "laptop" "server"]);
|
type = nullOr (enum [
|
||||||
|
"desktop"
|
||||||
|
"laptop"
|
||||||
|
"server"
|
||||||
|
]);
|
||||||
default = null;
|
default = null;
|
||||||
description = ''
|
description = ''
|
||||||
The type of the current system. This is used to determine whether things like graphical
|
The type of the current system. This is used to determine whether things like graphical
|
||||||
|
@ -37,7 +49,10 @@ in {
|
||||||
|
|
||||||
isGraphical = mkOption {
|
isGraphical = mkOption {
|
||||||
type = bool;
|
type = bool;
|
||||||
default = elem systemType ["desktop" "laptop"];
|
default = elem systemType [
|
||||||
|
"desktop"
|
||||||
|
"laptop"
|
||||||
|
];
|
||||||
description = ''
|
description = ''
|
||||||
Whether the current system is a graphical system.
|
Whether the current system is a graphical system.
|
||||||
'';
|
'';
|
||||||
|
@ -46,7 +61,10 @@ in {
|
||||||
yubikeySupport = {
|
yubikeySupport = {
|
||||||
enable = mkEnableOption "yubikey support";
|
enable = mkEnableOption "yubikey support";
|
||||||
deviceType = mkOption {
|
deviceType = mkOption {
|
||||||
type = nullOr (enum ["NFC5" "nano"]);
|
type = nullOr (enum [
|
||||||
|
"NFC5"
|
||||||
|
"nano"
|
||||||
|
]);
|
||||||
default = null;
|
default = null;
|
||||||
description = "A list of device models to enable Yubikey support for";
|
description = "A list of device models to enable Yubikey support for";
|
||||||
};
|
};
|
||||||
|
@ -76,7 +94,7 @@ in {
|
||||||
enable = mkEnableOption "printing";
|
enable = mkEnableOption "printing";
|
||||||
extraDrivers = mkOption {
|
extraDrivers = mkOption {
|
||||||
type = listOf str;
|
type = listOf str;
|
||||||
default = [];
|
default = [ ];
|
||||||
description = "A list of extra drivers to enable for printing";
|
description = "A list of extra drivers to enable for printing";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
{lib, ...}: let
|
{ lib, ... }:
|
||||||
|
let
|
||||||
inherit (lib.types) str enum;
|
inherit (lib.types) str enum;
|
||||||
inherit (lib.options) mkEnableOption mkOption;
|
inherit (lib.options) mkEnableOption mkOption;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.programs = {
|
options.modules.system.programs = {
|
||||||
editors = {
|
editors = {
|
||||||
helix.enable = mkEnableOption "Helix text editor";
|
helix.enable = mkEnableOption "Helix text editor";
|
||||||
|
@ -27,23 +29,42 @@ in {
|
||||||
};
|
};
|
||||||
default = {
|
default = {
|
||||||
terminal = mkOption {
|
terminal = mkOption {
|
||||||
type = enum ["foot" "kitty"];
|
type = enum [
|
||||||
|
"foot"
|
||||||
|
"kitty"
|
||||||
|
];
|
||||||
default = "foot";
|
default = "foot";
|
||||||
};
|
};
|
||||||
fileManager = mkOption {
|
fileManager = mkOption {
|
||||||
type = enum ["thunar" "dolphin" "nemo"];
|
type = enum [
|
||||||
|
"thunar"
|
||||||
|
"dolphin"
|
||||||
|
"nemo"
|
||||||
|
];
|
||||||
default = "thunar";
|
default = "thunar";
|
||||||
};
|
};
|
||||||
browser = mkOption {
|
browser = mkOption {
|
||||||
type = enum ["firefox" "librewolf" "chromium"];
|
type = enum [
|
||||||
|
"firefox"
|
||||||
|
"librewolf"
|
||||||
|
"chromium"
|
||||||
|
];
|
||||||
default = "firefox";
|
default = "firefox";
|
||||||
};
|
};
|
||||||
editor = mkOption {
|
editor = mkOption {
|
||||||
type = enum ["neovim" "helix" "emacs"];
|
type = enum [
|
||||||
|
"neovim"
|
||||||
|
"helix"
|
||||||
|
"emacs"
|
||||||
|
];
|
||||||
default = "emacs";
|
default = "emacs";
|
||||||
};
|
};
|
||||||
launcher = mkOption {
|
launcher = mkOption {
|
||||||
type = enum ["anyrun" "rofi" "wofi"];
|
type = enum [
|
||||||
|
"anyrun"
|
||||||
|
"rofi"
|
||||||
|
"wofi"
|
||||||
|
];
|
||||||
default = "anyrun";
|
default = "anyrun";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
{pkgs, ...}: let
|
{ pkgs, ... }:
|
||||||
key =
|
let
|
||||||
pkgs.writeText "signingkey" "ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw==";
|
key = pkgs.writeText "signingkey" "ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw==";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
lfs.enable = true;
|
lfs.enable = true;
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
{lib, ...}: let
|
{ lib, ... }:
|
||||||
|
let
|
||||||
inherit (lib.options) mkOption;
|
inherit (lib.options) mkOption;
|
||||||
inherit (lib.types) str;
|
inherit (lib.types) str;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.other.system = {
|
options.modules.other.system = {
|
||||||
username = mkOption {
|
username = mkOption {
|
||||||
description = "username for this system";
|
description = "username for this system";
|
||||||
|
|
|
@ -4,18 +4,20 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
self,
|
self,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (builtins) elemAt;
|
inherit (builtins) elemAt;
|
||||||
inherit (lib.options) mkOption;
|
inherit (lib.options) mkOption;
|
||||||
inherit (lib.types) listOf str package;
|
inherit (lib.types) listOf str package;
|
||||||
inherit (config.meta.mainUser) username;
|
inherit (config.meta.mainUser) username;
|
||||||
|
|
||||||
nushell = pkgs.callPackage (self + "/packages/nushell") {};
|
nushell = pkgs.callPackage (self + "/packages/nushell") { };
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.meta = {
|
options.meta = {
|
||||||
users = mkOption {
|
users = mkOption {
|
||||||
type = listOf str;
|
type = listOf str;
|
||||||
default = ["cr"];
|
default = [ "cr" ];
|
||||||
description = ''
|
description = ''
|
||||||
A list of users on a system.
|
A list of users on a system.
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (config.meta.mainUser) username;
|
inherit (config.meta.mainUser) username;
|
||||||
|
|
||||||
primary_browser = "Librewolf.desktop";
|
primary_browser = "Librewolf.desktop";
|
||||||
|
@ -13,9 +14,10 @@
|
||||||
text_editor = "helix.desktop";
|
text_editor = "helix.desktop";
|
||||||
terminal = "foot.desktop";
|
terminal = "foot.desktop";
|
||||||
pdf_viewer = "zathura.desktop";
|
pdf_viewer = "zathura.desktop";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = [pkgs.xdg-utils];
|
systemPackages = [ pkgs.xdg-utils ];
|
||||||
variables = {
|
variables = {
|
||||||
TERMINAL = "${terminal}";
|
TERMINAL = "${terminal}";
|
||||||
XDG_CACHE_HOME = "/home/${username}/.config";
|
XDG_CACHE_HOME = "/home/${username}/.config";
|
||||||
|
@ -29,43 +31,43 @@ in {
|
||||||
mime = {
|
mime = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultApplications = {
|
defaultApplications = {
|
||||||
"text/html" = [primary_browser];
|
"text/html" = [ primary_browser ];
|
||||||
"x-scheme-handler/http" = [primary_browser];
|
"x-scheme-handler/http" = [ primary_browser ];
|
||||||
"x-scheme-handler/https" = [primary_browser];
|
"x-scheme-handler/https" = [ primary_browser ];
|
||||||
"x-scheme-handler/about" = [primary_browser];
|
"x-scheme-handler/about" = [ primary_browser ];
|
||||||
"x-scheme-handler/unknown" = [primary_browser];
|
"x-scheme-handler/unknown" = [ primary_browser ];
|
||||||
"x-scheme-handler/mailto" = [mail_client];
|
"x-scheme-handler/mailto" = [ mail_client ];
|
||||||
"message/rfc822" = [mail_client];
|
"message/rfc822" = [ mail_client ];
|
||||||
"x-scheme-handler/mid" = [mail_client];
|
"x-scheme-handler/mid" = [ mail_client ];
|
||||||
"inode/directory" = [file_manager];
|
"inode/directory" = [ file_manager ];
|
||||||
"audio/mp3" = [media_player];
|
"audio/mp3" = [ media_player ];
|
||||||
"audio/ogg" = [media_player];
|
"audio/ogg" = [ media_player ];
|
||||||
"audio/mpeg" = [media_player];
|
"audio/mpeg" = [ media_player ];
|
||||||
"audio/aac" = [media_player];
|
"audio/aac" = [ media_player ];
|
||||||
"audio/opus" = [media_player];
|
"audio/opus" = [ media_player ];
|
||||||
"audio/wav" = [media_player];
|
"audio/wav" = [ media_player ];
|
||||||
"audio/webm" = [media_player];
|
"audio/webm" = [ media_player ];
|
||||||
"audio/3gpp" = [media_player];
|
"audio/3gpp" = [ media_player ];
|
||||||
"audio/3gpp2" = [media_player];
|
"audio/3gpp2" = [ media_player ];
|
||||||
"video/mp4" = [media_player];
|
"video/mp4" = [ media_player ];
|
||||||
"video/x-msvideo" = [media_player];
|
"video/x-msvideo" = [ media_player ];
|
||||||
"video/mpeg" = [media_player];
|
"video/mpeg" = [ media_player ];
|
||||||
"video/ogg" = [media_player];
|
"video/ogg" = [ media_player ];
|
||||||
"video/mp2t" = [media_player];
|
"video/mp2t" = [ media_player ];
|
||||||
"video/webm" = [media_player];
|
"video/webm" = [ media_player ];
|
||||||
"video/3gpp" = [media_player];
|
"video/3gpp" = [ media_player ];
|
||||||
"video/3gpp2" = [media_player];
|
"video/3gpp2" = [ media_player ];
|
||||||
"image/png" = [image_viewer];
|
"image/png" = [ image_viewer ];
|
||||||
"image/jpeg" = [image_viewer];
|
"image/jpeg" = [ image_viewer ];
|
||||||
"image/gif" = [image_viewer];
|
"image/gif" = [ image_viewer ];
|
||||||
"image/avif" = [image_viewer];
|
"image/avif" = [ image_viewer ];
|
||||||
"image/bmp" = [image_viewer];
|
"image/bmp" = [ image_viewer ];
|
||||||
"image/vnd.microsoft.icon" = [image_viewer];
|
"image/vnd.microsoft.icon" = [ image_viewer ];
|
||||||
"image/svg+xml" = [image_viewer];
|
"image/svg+xml" = [ image_viewer ];
|
||||||
"image/tiff" = [image_viewer];
|
"image/tiff" = [ image_viewer ];
|
||||||
"image/webp" = [image_viewer];
|
"image/webp" = [ image_viewer ];
|
||||||
"text/plain" = [text_editor];
|
"text/plain" = [ text_editor ];
|
||||||
"application/pdf" = [pdf_viewer];
|
"application/pdf" = [ pdf_viewer ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
13
modules/packages/packages.mod.nix
Normal file
13
modules/packages/packages.mod.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
sources,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
nixfmt = pkgs.callPackage "${sources.nixfmt}/default.nix" { };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
environment.systemPackages = [
|
||||||
|
nixfmt
|
||||||
|
];
|
||||||
|
}
|
|
@ -3,10 +3,11 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
|
|
||||||
toml = pkgs.formats.toml {};
|
toml = pkgs.formats.toml { };
|
||||||
jj-config = toml.generate "config.toml" {
|
jj-config = toml.generate "config.toml" {
|
||||||
user = {
|
user = {
|
||||||
name = "Bloxx12";
|
name = "Bloxx12";
|
||||||
|
@ -14,11 +15,20 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
ui = {
|
ui = {
|
||||||
pager = ["${getExe pkgs.bat}" "--plain"];
|
pager = [
|
||||||
|
"${getExe pkgs.bat}"
|
||||||
|
"--plain"
|
||||||
|
];
|
||||||
default-command = "log";
|
default-command = "log";
|
||||||
movement.edit = true;
|
movement.edit = true;
|
||||||
|
|
||||||
diff.tool = ["${getExe pkgs.difftastic}" "--color" "always" "$left" "$right"];
|
diff.tool = [
|
||||||
|
"${getExe pkgs.difftastic}"
|
||||||
|
"--color"
|
||||||
|
"always"
|
||||||
|
"$left"
|
||||||
|
"$right"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
# FIXME: do this with agenix
|
# FIXME: do this with agenix
|
||||||
# "--scope" = [
|
# "--scope" = [
|
||||||
|
@ -44,26 +54,52 @@
|
||||||
signing = {
|
signing = {
|
||||||
behaviour = "own";
|
behaviour = "own";
|
||||||
backend = "ssh";
|
backend = "ssh";
|
||||||
key = ["ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw=="];
|
key = [
|
||||||
|
"ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw=="
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
aliases = {
|
aliases = {
|
||||||
c = ["commit"];
|
c = [ "commit" ];
|
||||||
ci = ["commit" "--interactive"];
|
ci = [
|
||||||
|
"commit"
|
||||||
|
"--interactive"
|
||||||
|
];
|
||||||
|
|
||||||
e = ["edit"];
|
e = [ "edit" ];
|
||||||
|
|
||||||
# "new bookmark"
|
# "new bookmark"
|
||||||
nb = ["bookmark" "create" "-r @-"];
|
nb = [
|
||||||
|
"bookmark"
|
||||||
|
"create"
|
||||||
|
"-r @-"
|
||||||
|
];
|
||||||
|
|
||||||
pull = ["git" "fetch"];
|
pull = [
|
||||||
push = ["git" "push" "--allow-new"];
|
"git"
|
||||||
|
"fetch"
|
||||||
|
];
|
||||||
|
push = [
|
||||||
|
"git"
|
||||||
|
"push"
|
||||||
|
"--allow-new"
|
||||||
|
];
|
||||||
|
|
||||||
r = ["rebase"];
|
r = [ "rebase" ];
|
||||||
s = ["squash"];
|
s = [ "squash" ];
|
||||||
si = ["squash" "--interactive"];
|
si = [
|
||||||
|
"squash"
|
||||||
|
"--interactive"
|
||||||
|
];
|
||||||
|
|
||||||
tug = ["bookmark" "move" "--from" "closest_bookmark(@-)" "--to" "@-"];
|
tug = [
|
||||||
|
"bookmark"
|
||||||
|
"move"
|
||||||
|
"--from"
|
||||||
|
"closest_bookmark(@-)"
|
||||||
|
"--to"
|
||||||
|
"@-"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
revset-aliases = {
|
revset-aliases = {
|
||||||
"closest_bookmark(to)" = "heads(::to & bookmarks())";
|
"closest_bookmark(to)" = "heads(::to & bookmarks())";
|
||||||
|
@ -89,14 +125,15 @@
|
||||||
|
|
||||||
jj-wrapped = pkgs.symlinkJoin {
|
jj-wrapped = pkgs.symlinkJoin {
|
||||||
name = "jj-wrapped";
|
name = "jj-wrapped";
|
||||||
paths = [pkgs.jj];
|
paths = [ pkgs.jj ];
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/mako --add-flags "\
|
wrapProgram $out/bin/mako --add-flags "\
|
||||||
--config ${jj-config}
|
--config ${jj-config}
|
||||||
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
# environment.systemPackages = [jj-wrapped];
|
# environment.systemPackages = [jj-wrapped];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,15 +4,17 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
sources,
|
sources,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
cfg = config.modules.programs.nh;
|
cfg = config.modules.programs.nh;
|
||||||
inherit (config.modules.other.system) username;
|
inherit (config.modules.other.system) username;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
nh = (pkgs.callPackage "${sources.nh}/package.nix" {}).overrideAttrs (_: {
|
nh = (pkgs.callPackage "${sources.nh}/package.nix" { }).overrideAttrs (_: {
|
||||||
doInstallCheck = false;
|
doInstallCheck = false;
|
||||||
});
|
});
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.programs.nh.enable = mkEnableOption "nh";
|
options.modules.programs.nh.enable = mkEnableOption "nh";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -3,25 +3,26 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (config.modules.system) isGraphical;
|
inherit (config.modules.system) isGraphical;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
|
|
||||||
bitwarden-desktop-wrapped = pkgs.symlinkJoin {
|
bitwarden-desktop-wrapped = pkgs.symlinkJoin {
|
||||||
name = "bitwarden-desktop-wrapped";
|
name = "bitwarden-desktop-wrapped";
|
||||||
paths = [pkgs.bitwarden-desktop];
|
paths = [ pkgs.bitwarden-desktop ];
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/bitwarden --set \
|
wrapProgram $out/bin/bitwarden --set \
|
||||||
BITWARDEN_SSH_AUTH_SOCK /run/user/1000/ssh-agent.sock
|
BITWARDEN_SSH_AUTH_SOCK /run/user/1000/ssh-agent.sock
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
config = mkIf isGraphical {
|
config = mkIf isGraphical {
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = lib.attrValues {
|
systemPackages = lib.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
bitwarden-cli
|
bitwarden-cli
|
||||||
;
|
;
|
||||||
inherit bitwarden-desktop-wrapped;
|
inherit bitwarden-desktop-wrapped;
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.lists) map;
|
inherit (lib.lists) map;
|
||||||
inherit (lib.strings) concatStringsSep;
|
inherit (lib.strings) concatStringsSep;
|
||||||
|
|
||||||
|
@ -20,16 +21,15 @@
|
||||||
brave-wrapped = pkgs.symlinkJoin {
|
brave-wrapped = pkgs.symlinkJoin {
|
||||||
name = "brave";
|
name = "brave";
|
||||||
paths = [
|
paths = [
|
||||||
(
|
(pkgs.brave.override { vulkanSupport = true; })
|
||||||
pkgs.brave.override {vulkanSupport = true;}
|
|
||||||
)
|
|
||||||
];
|
];
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/brave --append-flags "${flags}"
|
wrapProgram $out/bin/brave --append-flags "${flags}"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
brave-wrapped
|
brave-wrapped
|
||||||
];
|
];
|
||||||
|
|
|
@ -3,15 +3,17 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (config.modules.system) isGraphical;
|
inherit (config.modules.system) isGraphical;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
config = mkIf isGraphical {
|
config = mkIf isGraphical {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
kdePackages.dolphin
|
kdePackages.dolphin
|
||||||
kdePackages.kio-fuse #to mount remote filesystems via FUSE
|
kdePackages.kio-fuse # to mount remote filesystems via FUSE
|
||||||
kdePackages.kio-extras #extra protocols support (sftp, fish and more)
|
kdePackages.kio-extras # extra protocols support (sftp, fish and more)
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,14 +3,16 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
|
|
||||||
inherit (config.meta.mainUser) username;
|
inherit (config.meta.mainUser) username;
|
||||||
cfg = config.modules.system.programs.terminals.foot;
|
cfg = config.modules.system.programs.terminals.foot;
|
||||||
theme-colors = config.modules.style.colorScheme.colors;
|
theme-colors = config.modules.style.colorScheme.colors;
|
||||||
|
|
||||||
foot-config = pkgs.writeText "foot.ini" (lib.generators.toINI {} {
|
foot-config = pkgs.writeText "foot.ini" (
|
||||||
|
lib.generators.toINI { } {
|
||||||
main = {
|
main = {
|
||||||
term = "xterm-256color";
|
term = "xterm-256color";
|
||||||
app-id = "foot";
|
app-id = "foot";
|
||||||
|
@ -123,17 +125,19 @@
|
||||||
|
|
||||||
alpha = 0.9;
|
alpha = 0.9;
|
||||||
};
|
};
|
||||||
});
|
}
|
||||||
|
);
|
||||||
foot-wrapped = pkgs.symlinkJoin {
|
foot-wrapped = pkgs.symlinkJoin {
|
||||||
name = "foot-wrapped";
|
name = "foot-wrapped";
|
||||||
paths = [pkgs.foot];
|
paths = [ pkgs.foot ];
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/foot --add-flags "--config=${foot-config} --working-directory=/home/${username}"
|
wrapProgram $out/bin/foot --add-flags "--config=${foot-config} --working-directory=/home/${username}"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = [foot-wrapped];
|
environment.systemPackages = [ foot-wrapped ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.lists) elem;
|
inherit (lib.lists) elem;
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.attrsets) mapAttrsToList;
|
inherit (lib.attrsets) mapAttrsToList;
|
||||||
|
@ -15,9 +16,16 @@
|
||||||
# Shell integration for ghostty only supports
|
# Shell integration for ghostty only supports
|
||||||
# bash, fish and zsh for now.
|
# bash, fish and zsh for now.
|
||||||
shell-integration =
|
shell-integration =
|
||||||
if elem name ["bash" "fish" "zsh"]
|
if
|
||||||
then name
|
elem name [
|
||||||
else "none";
|
"bash"
|
||||||
|
"fish"
|
||||||
|
"zsh"
|
||||||
|
]
|
||||||
|
then
|
||||||
|
name
|
||||||
|
else
|
||||||
|
"none";
|
||||||
|
|
||||||
ghostty-settings = {
|
ghostty-settings = {
|
||||||
font-size = 14;
|
font-size = 14;
|
||||||
|
@ -53,17 +61,21 @@
|
||||||
command = getExe package;
|
command = getExe package;
|
||||||
};
|
};
|
||||||
|
|
||||||
settingsFile = pkgs.writeText "config" <| concatStringsSep "\n" <| mapAttrsToList (name: value: "${name} = ${toString value}") ghostty-settings;
|
settingsFile =
|
||||||
|
pkgs.writeText "config"
|
||||||
|
<| concatStringsSep "\n"
|
||||||
|
<| mapAttrsToList (name: value: "${name} = ${toString value}") ghostty-settings;
|
||||||
|
|
||||||
ghostty-wrapped = pkgs.symlinkJoin {
|
ghostty-wrapped = pkgs.symlinkJoin {
|
||||||
name = "ghostty-wrapped";
|
name = "ghostty-wrapped";
|
||||||
paths = [pkgs.ghostty];
|
paths = [ pkgs.ghostty ];
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/ghostty --add-flags "--config-file=${settingsFile}"
|
wrapProgram $out/bin/ghostty --add-flags "--config-file=${settingsFile}"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
environment.systemPackages = builtins.attrValues {
|
environment.systemPackages = builtins.attrValues {
|
||||||
inherit ghostty-wrapped;
|
inherit ghostty-wrapped;
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,18 +3,20 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
|
|
||||||
cfg = config.modules.programs.minecraft;
|
cfg = config.modules.programs.minecraft;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.programs.minecraft = {
|
options.modules.programs.minecraft = {
|
||||||
enable = mkEnableOption "minecraft";
|
enable = mkEnableOption "minecraft";
|
||||||
wayland = mkEnableOption "wayland";
|
wayland = mkEnableOption "wayland";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = [pkgs.prismlauncher];
|
environment.systemPackages = [ pkgs.prismlauncher ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
environment.systemPackages =
|
{
|
||||||
[
|
environment.systemPackages = [
|
||||||
pkgs.spotify
|
pkgs.spotify
|
||||||
]
|
]
|
||||||
++ (with pkgs; [
|
++ (with pkgs; [
|
||||||
|
|
|
@ -3,12 +3,14 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
|
||||||
cfg = config.modules.system.programs.steam;
|
cfg = config.modules.system.programs.steam;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.programs.steam.enable = mkEnableOption "Steam games platform";
|
options.modules.system.programs.steam.enable = mkEnableOption "Steam games platform";
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
|
@ -19,14 +21,15 @@ in {
|
||||||
SDL_VIDEODRIVER = "x11";
|
SDL_VIDEODRIVER = "x11";
|
||||||
};
|
};
|
||||||
|
|
||||||
extraLibraries = p:
|
extraLibraries =
|
||||||
|
p:
|
||||||
builtins.attrValues {
|
builtins.attrValues {
|
||||||
inherit (p) atk;
|
inherit (p) atk;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
gamescopeSession.enable = true;
|
gamescopeSession.enable = true;
|
||||||
extraCompatPackages = [pkgs.proton-ge-bin.steamcompattool];
|
extraCompatPackages = [ pkgs.proton-ge-bin.steamcompattool ];
|
||||||
};
|
};
|
||||||
# See
|
# See
|
||||||
# https://wiki.nixos.org/wiki/GameMode
|
# https://wiki.nixos.org/wiki/GameMode
|
||||||
|
|
|
@ -3,18 +3,19 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
cfg = config.modules.programs.thunar;
|
cfg = config.modules.programs.thunar;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.programs.thunar.enable = mkEnableOption "Thunar file manager";
|
options.modules.programs.thunar.enable = mkEnableOption "Thunar file manager";
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.thunar = {
|
programs.thunar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
plugins = builtins.attrValues {
|
plugins = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs.xfce)
|
||||||
(pkgs.xfce)
|
|
||||||
thunar-volman
|
thunar-volman
|
||||||
thunar-vcs-plugin
|
thunar-vcs-plugin
|
||||||
thunar-archive-plugin
|
thunar-archive-plugin
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
config = {
|
config = {
|
||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
programs = {
|
programs = {
|
||||||
# We have to disable this and use nix-index instead. (Rust >>> Pearl)
|
# We have to disable this and use nix-index instead. (Rust >>> Pearl)
|
||||||
command-not-found = {
|
command-not-found = {
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
|
|
||||||
|
@ -33,15 +34,16 @@
|
||||||
|
|
||||||
btop-wrapped = pkgs.symlinkJoin {
|
btop-wrapped = pkgs.symlinkJoin {
|
||||||
name = "btop-wrapped";
|
name = "btop-wrapped";
|
||||||
paths = [btop-no-desktop-entry];
|
paths = [ btop-no-desktop-entry ];
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/btop --set XDG_CONFIG_HOME "${btop-settings}"
|
wrapProgram $out/bin/btop --set XDG_CONFIG_HOME "${btop-settings}"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.programs.btop.enable = mkEnableOption "btop";
|
options.modules.programs.btop.enable = mkEnableOption "btop";
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = [btop-wrapped];
|
environment.systemPackages = [ btop-wrapped ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
{pkgs, ...}: let
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
zellij-wrapped = pkgs.symlinkJoin {
|
zellij-wrapped = pkgs.symlinkJoin {
|
||||||
name = "zellij-wrapped";
|
name = "zellij-wrapped";
|
||||||
paths = [pkgs.zellij];
|
paths = [ pkgs.zellij ];
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/zellij --add-flags "\
|
wrapProgram $out/bin/zellij --add-flags "\
|
||||||
--config ${./config.kdl}"
|
--config ${./config.kdl}"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
environment.systemPackages = builtins.attrValues {
|
environment.systemPackages = builtins.attrValues {
|
||||||
inherit zellij-wrapped;
|
inherit zellij-wrapped;
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
mkAcmeCert = domain: {
|
mkAcmeCert = domain: {
|
||||||
# An acme system user is created. This user belongs to the acme group
|
# An acme system user is created. This user belongs to the acme group
|
||||||
# and the home directory is /var/lib/acme. This user will try to make the directory
|
# and the home directory is /var/lib/acme. This user will try to make the directory
|
||||||
|
@ -15,7 +16,8 @@
|
||||||
email = "charlie@charlieroot.dev";
|
email = "charlie@charlieroot.dev";
|
||||||
group = "nginx";
|
group = "nginx";
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
security.acme = {
|
security.acme = {
|
||||||
acceptTerms = true;
|
acceptTerms = true;
|
||||||
defaults = {
|
defaults = {
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (pkgs) fetchurl;
|
inherit (pkgs) fetchurl;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
@ -16,7 +17,8 @@
|
||||||
img = ./img;
|
img = ./img;
|
||||||
dataDir = "/srv/data/forgejo";
|
dataDir = "/srv/data/forgejo";
|
||||||
dumpDir = "/srv/data/forgejo-dump";
|
dumpDir = "/srv/data/forgejo-dump";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.services.forgejo.enable = mkEnableOption "forgejo";
|
options.modules.system.services.forgejo.enable = mkEnableOption "forgejo";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -50,7 +52,7 @@ in {
|
||||||
group = "git";
|
group = "git";
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
};
|
};
|
||||||
users.groups.git = {};
|
users.groups.git = { };
|
||||||
|
|
||||||
services.forgejo = {
|
services.forgejo = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -113,7 +115,8 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.tmpfiles.rules = let
|
systemd.tmpfiles.rules =
|
||||||
|
let
|
||||||
# no crawlers, thank you.
|
# no crawlers, thank you.
|
||||||
robots = pkgs.writeText "robots-txt" ''
|
robots = pkgs.writeText "robots-txt" ''
|
||||||
User-agent: *
|
User-agent: *
|
||||||
|
@ -131,7 +134,8 @@ in {
|
||||||
url = "https://codeberg.org/Codeberg-Infrastructure/forgejo/raw/branch/codeberg-10/web_src/css/themes/theme-codeberg-dark.css";
|
url = "https://codeberg.org/Codeberg-Infrastructure/forgejo/raw/branch/codeberg-10/web_src/css/themes/theme-codeberg-dark.css";
|
||||||
hash = "sha256-KyXznH49koRGlzIDDqagN4PvFGD/zCX//wrctmtfgBs=";
|
hash = "sha256-KyXznH49koRGlzIDDqagN4PvFGD/zCX//wrctmtfgBs=";
|
||||||
};
|
};
|
||||||
in [
|
in
|
||||||
|
[
|
||||||
"d '${customDir}/public' 0750 ${user} ${group} - -"
|
"d '${customDir}/public' 0750 ${user} ${group} - -"
|
||||||
"d '${customDir}/public/assets' 0750 ${user} ${group} - -"
|
"d '${customDir}/public/assets' 0750 ${user} ${group} - -"
|
||||||
"d '${customDir}/public/assets/img' 0750 ${user} ${group} - -"
|
"d '${customDir}/public/assets/img' 0750 ${user} ${group} - -"
|
||||||
|
|
|
@ -7,49 +7,10 @@
|
||||||
<h1 class="ui icon header title">
|
<h1 class="ui icon header title">
|
||||||
{{AppDisplayName}}
|
{{AppDisplayName}}
|
||||||
</h1>
|
</h1>
|
||||||
<h2>A very painful Git service</h2>
|
<h2>{{ctx.Locale.Tr "startpage.app_desc"}}</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
{{template "home_forgejo" .}}
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header stackable">
|
|
||||||
<img class="logo" width="100" height="100" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}">
|
|
||||||
<p>Made with copious amounts of caffeeine</p>
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
<b>TODO</b>: Write some funny text here
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column stackable">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<img class="logo" width="100" height="100" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}">
|
|
||||||
<p><it>I hate it here</it></p>
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Bottom text
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header stackable">
|
|
||||||
<img class="logo" width="100" height="100" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}">
|
|
||||||
<p>Is this the real life?</p>
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Something something fuck poettering
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column stackable">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<img class="logo" width="100" height="100" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}">
|
|
||||||
<p>Open source or something</p>
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
I forgor
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{{template "base/footer" .}}
|
{{template "base/footer" .}}
|
||||||
|
|
36
modules/services/forgejo/templates/home_forgejo.tmpl
Normal file
36
modules/services/forgejo/templates/home_forgejo.tmpl
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
<div class="ui stackable middle very relaxed page grid">
|
||||||
|
<div class="eight wide center column">
|
||||||
|
<h1 class="hero ui icon header">
|
||||||
|
{{svg "octicon-flame"}} {{ctx.Locale.Tr "startpage.install"}}
|
||||||
|
</h1>
|
||||||
|
<p class="large">
|
||||||
|
{{ctx.Locale.Tr "startpage.install_desc" "https://forgejo.org/download/#installation-from-binary" "https://forgejo.org/download/#container-image" "https://forgejo.org/download"}}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="eight wide center column">
|
||||||
|
<h1 class="hero ui icon header">
|
||||||
|
{{svg "octicon-device-desktop"}} {{ctx.Locale.Tr "startpage.platform"}}
|
||||||
|
</h1>
|
||||||
|
<p class="large">
|
||||||
|
{{ctx.Locale.Tr "startpage.platform_desc"}}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ui stackable middle very relaxed page grid">
|
||||||
|
<div class="eight wide center column">
|
||||||
|
<h1 class="hero ui icon header">
|
||||||
|
{{svg "octicon-rocket"}} {{ctx.Locale.Tr "startpage.lightweight"}}
|
||||||
|
</h1>
|
||||||
|
<p class="large">
|
||||||
|
{{ctx.Locale.Tr "startpage.lightweight_desc"}}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="eight wide center column">
|
||||||
|
<h1 class="hero ui icon header">
|
||||||
|
{{svg "octicon-code"}} {{ctx.Locale.Tr "startpage.license"}}
|
||||||
|
</h1>
|
||||||
|
<p class="large">
|
||||||
|
{{ctx.Locale.Tr "startpage.license_desc" "https://forgejo.org/download" "https://codeberg.org/forgejo/forgejo"}}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -3,7 +3,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (builtins) fetchurl;
|
inherit (builtins) fetchurl;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
@ -11,11 +12,12 @@
|
||||||
cfg = config.modules.system.services.grafana;
|
cfg = config.modules.system.services.grafana;
|
||||||
domain = "info.copeberg.org";
|
domain = "info.copeberg.org";
|
||||||
port = 4021;
|
port = 4021;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.services.grafana.enable = mkEnableOption "Grafana, a graphing service";
|
options.modules.system.services.grafana.enable = mkEnableOption "Grafana, a graphing service";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
networking.firewall.allowedTCPPorts = [config.services.grafana.settings.server.http_port];
|
networking.firewall.allowedTCPPorts = [ config.services.grafana.settings.server.http_port ];
|
||||||
|
|
||||||
modules.system.services.database.postgresql.enable = true;
|
modules.system.services.database.postgresql.enable = true;
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.meta) getExe getExe';
|
inherit (lib.meta) getExe getExe';
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkOption mkEnableOption;
|
inherit (lib.options) mkOption mkEnableOption;
|
||||||
|
@ -12,7 +13,8 @@
|
||||||
inherit (config.meta.mainUser) username;
|
inherit (config.meta.mainUser) username;
|
||||||
cfg = config.modules.services.greetd;
|
cfg = config.modules.services.greetd;
|
||||||
uwsmEnabled = config.modules.services.uwsm.enable;
|
uwsmEnabled = config.modules.services.uwsm.enable;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.services.greetd = {
|
options.modules.services.greetd = {
|
||||||
enable = mkEnableOption "greetd";
|
enable = mkEnableOption "greetd";
|
||||||
greeter = mkOption {
|
greeter = mkOption {
|
||||||
|
@ -27,14 +29,13 @@ in {
|
||||||
description = "Which login session to start";
|
description = "Which login session to start";
|
||||||
type = str;
|
type = str;
|
||||||
default =
|
default =
|
||||||
if uwsmEnabled
|
if uwsmEnabled then "${getExe config.programs.uwsm.package} start Hyprland" else "Hyprland";
|
||||||
then "${getExe config.programs.uwsm.package} start Hyprland"
|
|
||||||
else "Hyprland";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.greetd = let
|
services.greetd =
|
||||||
|
let
|
||||||
session = {
|
session = {
|
||||||
# command = ''
|
# command = ''
|
||||||
# ${pkgs.greetd.tuigreet}/bin/tuigreet \
|
# ${pkgs.greetd.tuigreet}/bin/tuigreet \
|
||||||
|
@ -46,7 +47,8 @@ in {
|
||||||
command = "${getExe config.programs.uwsm.package} start hyprland-uwsm.desktop";
|
command = "${getExe config.programs.uwsm.package} start hyprland-uwsm.desktop";
|
||||||
user = username;
|
user = username;
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.greetd;
|
package = pkgs.greetd;
|
||||||
vt = 7;
|
vt = 7;
|
||||||
|
|
|
@ -2,12 +2,14 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
|
||||||
cfg = config.modules.services.kanata;
|
cfg = config.modules.services.kanata;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.services.kanata.enable = mkEnableOption "kanata";
|
options.modules.services.kanata.enable = mkEnableOption "kanata";
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.kanata = {
|
services.kanata = {
|
||||||
|
|
|
@ -3,14 +3,16 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
cfg = config.modules.services.locate;
|
cfg = config.modules.services.locate;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.services.locate.enable = mkEnableOption "Locate service";
|
options.modules.services.locate.enable = mkEnableOption "Locate service";
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = [pkgs.plocate];
|
environment.systemPackages = [ pkgs.plocate ];
|
||||||
services.locate = {
|
services.locate = {
|
||||||
enable = true;
|
enable = true;
|
||||||
interval = "hourly";
|
interval = "hourly";
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
{pkgs, ...}: let
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
mako-wrapped = pkgs.symlinkJoin {
|
mako-wrapped = pkgs.symlinkJoin {
|
||||||
name = "mako-wrapped";
|
name = "mako-wrapped";
|
||||||
paths = [pkgs.mako];
|
paths = [ pkgs.mako ];
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/mako --add-flags "\
|
wrapProgram $out/bin/mako --add-flags "\
|
||||||
--font 'Lexend 11' \
|
--font 'Lexend 11' \
|
||||||
|
@ -12,6 +13,7 @@
|
||||||
--default-timeout 4000"
|
--default-timeout 4000"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
environment.systemPackages = [mako-wrapped];
|
{
|
||||||
|
environment.systemPackages = [ mako-wrapped ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,14 +3,16 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
|
||||||
cfg = config.modules.system.services.loki;
|
cfg = config.modules.system.services.loki;
|
||||||
port = 4026;
|
port = 4026;
|
||||||
dataDir = "/srv/data/loki";
|
dataDir = "/srv/data/loki";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.services.loki.enable = mkEnableOption "Grafana, a graphing service";
|
options.modules.system.services.loki.enable = mkEnableOption "Grafana, a graphing service";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -3,13 +3,15 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
cfg = config.modules.services.media.mpd;
|
cfg = config.modules.services.media.mpd;
|
||||||
inherit (config.meta.mainUser) username;
|
inherit (config.meta.mainUser) username;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.types) str;
|
inherit (lib.types) str;
|
||||||
inherit (lib.options) mkOption mkEnableOption;
|
inherit (lib.options) mkOption mkEnableOption;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.services = {
|
options.modules.services = {
|
||||||
media = {
|
media = {
|
||||||
mpd = {
|
mpd = {
|
||||||
|
@ -24,7 +26,7 @@ in {
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
# command line interface to mpd
|
# command line interface to mpd
|
||||||
environment.systemPackages = [pkgs.mpc];
|
environment.systemPackages = [ pkgs.mpc ];
|
||||||
|
|
||||||
systemd.services.mpd.environment = {
|
systemd.services.mpd.environment = {
|
||||||
# https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/609
|
# https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/609
|
||||||
|
|
|
@ -3,11 +3,13 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf mkDefault;
|
inherit (lib.modules) mkIf mkDefault;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
cfg = config.modules.system.services.nginx;
|
cfg = config.modules.system.services.nginx;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.services.nginx.enable = mkEnableOption "nginx";
|
options.modules.system.services.nginx.enable = mkEnableOption "nginx";
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
security = {
|
security = {
|
||||||
|
|
|
@ -3,12 +3,14 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.meta) getExe';
|
inherit (lib.meta) getExe';
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
|
|
||||||
cfg = config.modules.system.services.owncloud;
|
cfg = config.modules.system.services.owncloud;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.services.owncloud.enable = lib.mkEnableOption "owncloud";
|
options.modules.system.services.owncloud.enable = lib.mkEnableOption "owncloud";
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
@ -16,11 +18,11 @@ in {
|
||||||
description = "Owncloud client service";
|
description = "Owncloud client service";
|
||||||
|
|
||||||
# makes the graphical session start this service when it starts
|
# makes the graphical session start this service when it starts
|
||||||
wantedBy = ["graphical-session.target"];
|
wantedBy = [ "graphical-session.target" ];
|
||||||
# when graphical session restarts or gets stopped, this also gets restarted/stopped.
|
# when graphical session restarts or gets stopped, this also gets restarted/stopped.
|
||||||
partOf = ["graphical-session.target"];
|
partOf = [ "graphical-session.target" ];
|
||||||
# gets started only after graphical session
|
# gets started only after graphical session
|
||||||
after = ["graphical-session.target"];
|
after = [ "graphical-session.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${getExe' pkgs.owncloud-client "owncloud"}";
|
ExecStart = "${getExe' pkgs.owncloud-client "owncloud"}";
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
cfg = config.modules.system.sound;
|
cfg = config.modules.system.sound;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.pulseaudio.enable = false;
|
services.pulseaudio.enable = false;
|
||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
|
|
|
@ -3,12 +3,14 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
|
||||||
cfg = config.modules.system.services.database.postgresql;
|
cfg = config.modules.system.services.database.postgresql;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.services.database.postgresql.enable = mkEnableOption "postgresql";
|
options.modules.system.services.database.postgresql.enable = mkEnableOption "postgresql";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -2,9 +2,11 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.services.cups.enable = mkEnableOption "CUPS, the Common UNIX printing system";
|
options.modules.services.cups.enable = mkEnableOption "CUPS, the Common UNIX printing system";
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
|
|
@ -3,13 +3,15 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
|
||||||
cfg = config.modules.system.services.prometheus;
|
cfg = config.modules.system.services.prometheus;
|
||||||
port = 4022;
|
port = 4022;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.services.prometheus.enable = mkEnableOption "Grafana, a graphing service";
|
options.modules.system.services.prometheus.enable = mkEnableOption "Grafana, a graphing service";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -22,7 +24,10 @@ in {
|
||||||
node = {
|
node = {
|
||||||
enable = true;
|
enable = true;
|
||||||
port = 4023;
|
port = 4023;
|
||||||
enabledCollectors = ["systemd" "processes"];
|
enabledCollectors = [
|
||||||
|
"systemd"
|
||||||
|
"processes"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
postgres = {
|
postgres = {
|
||||||
|
@ -39,22 +44,28 @@ in {
|
||||||
{
|
{
|
||||||
job_name = "prometheus";
|
job_name = "prometheus";
|
||||||
scrape_interval = "30s";
|
scrape_interval = "30s";
|
||||||
static_configs = [{targets = ["localhost:${toString port}"];}];
|
static_configs = [ { targets = [ "localhost:${toString port}" ]; } ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
job_name = "node";
|
job_name = "node";
|
||||||
scrape_interval = "30s";
|
scrape_interval = "30s";
|
||||||
static_configs = [{targets = ["localhost:${toString config.services.prometheus.exporters.node.port}"];}];
|
static_configs = [
|
||||||
|
{ targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ]; }
|
||||||
|
];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
job_name = "postgres";
|
job_name = "postgres";
|
||||||
scrape_interval = "30s";
|
scrape_interval = "30s";
|
||||||
static_configs = [{targets = ["localhost:${toString config.services.prometheus.exporters.postgres.port}"];}];
|
static_configs = [
|
||||||
|
{ targets = [ "localhost:${toString config.services.prometheus.exporters.postgres.port}" ]; }
|
||||||
|
];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
job_name = "nginx";
|
job_name = "nginx";
|
||||||
scrape_interval = "30s";
|
scrape_interval = "30s";
|
||||||
static_configs = [{targets = ["localhost:${toString config.services.prometheus.exporters.nginx.port}"];}];
|
static_configs = [
|
||||||
|
{ targets = [ "localhost:${toString config.services.prometheus.exporters.nginx.port}" ]; }
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,15 +2,17 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (config.modules.system) isGraphical;
|
inherit (config.modules.system) isGraphical;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
# TODO: setup
|
# TODO: setup
|
||||||
services.spotifyd = mkIf isGraphical {
|
services.spotifyd = mkIf isGraphical {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
backend = "pipe";
|
# backend = "pipe";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
{lib, ...}: let
|
{ lib, ... }:
|
||||||
|
let
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.programs.ssh.enable = mkEnableOption "ssh";
|
options.modules.programs.ssh.enable = mkEnableOption "ssh";
|
||||||
config = {
|
config = {
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
ports = [22];
|
ports = [ 22 ];
|
||||||
settings = {
|
settings = {
|
||||||
PasswordAuthentication = false;
|
PasswordAuthentication = false;
|
||||||
PermitRootLogin = "no";
|
PermitRootLogin = "no";
|
||||||
|
|
|
@ -3,14 +3,16 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
|
||||||
domain = "charlieroot.dev";
|
domain = "charlieroot.dev";
|
||||||
|
|
||||||
cfg = config.modules.system.services.stalwart;
|
cfg = config.modules.system.services.stalwart;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.services.stalwart.enable = mkEnableOption "stalwart";
|
options.modules.system.services.stalwart.enable = mkEnableOption "stalwart";
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
# create the stallwart user
|
# create the stallwart user
|
||||||
|
@ -20,7 +22,7 @@ in {
|
||||||
group = "stalwart";
|
group = "stalwart";
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
};
|
};
|
||||||
users.groups.stalwart = {};
|
users.groups.stalwart = { };
|
||||||
|
|
||||||
services.stalwart-mail = {
|
services.stalwart-mail = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -55,7 +57,7 @@ in {
|
||||||
# This is the standard port for SMTP, and is used by mail servers to send email to each other.
|
# This is the standard port for SMTP, and is used by mail servers to send email to each other.
|
||||||
smtp = {
|
smtp = {
|
||||||
protocol = "smtp";
|
protocol = "smtp";
|
||||||
bind = ["[::]:25"];
|
bind = [ "[::]:25" ];
|
||||||
tls.implicit = true;
|
tls.implicit = true;
|
||||||
};
|
};
|
||||||
# SMTP submissions with implicit TLS are received on port 465 by default.
|
# SMTP submissions with implicit TLS are received on port 465 by default.
|
||||||
|
@ -63,17 +65,17 @@ in {
|
||||||
# and is used by mail clients to send email to mail servers.
|
# and is used by mail clients to send email to mail servers.
|
||||||
|
|
||||||
submissions = {
|
submissions = {
|
||||||
bind = ["[::]:465"];
|
bind = [ "[::]:465" ];
|
||||||
protocol = "smtp";
|
protocol = "smtp";
|
||||||
tls.implicit = true;
|
tls.implicit = true;
|
||||||
};
|
};
|
||||||
imaps = {
|
imaps = {
|
||||||
bind = ["[::]:993"];
|
bind = [ "[::]:993" ];
|
||||||
protocol = "imap";
|
protocol = "imap";
|
||||||
tls.implicit = true;
|
tls.implicit = true;
|
||||||
};
|
};
|
||||||
management = {
|
management = {
|
||||||
bind = ["127.0.0.1:8080"];
|
bind = [ "127.0.0.1:8080" ];
|
||||||
protocol = "http";
|
protocol = "http";
|
||||||
tls.implicit = true;
|
tls.implicit = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,18 +3,23 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (config.meta.mainUser) username;
|
inherit (config.meta.mainUser) username;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
cfg = config.modules.services.usbguard;
|
cfg = config.modules.services.usbguard;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.services.usbguard.enable = mkEnableOption "usbguard";
|
options.modules.services.usbguard.enable = mkEnableOption "usbguard";
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = [pkgs.usbguard];
|
environment.systemPackages = [ pkgs.usbguard ];
|
||||||
services.usbguard = {
|
services.usbguard = {
|
||||||
enable = true;
|
enable = true;
|
||||||
IPCAllowedUsers = ["root" "${username}"];
|
IPCAllowedUsers = [
|
||||||
|
"root"
|
||||||
|
"${username}"
|
||||||
|
];
|
||||||
presentDevicePolicy = "allow";
|
presentDevicePolicy = "allow";
|
||||||
rules = ''
|
rules = ''
|
||||||
allow with-interface equals { 08:*:* }
|
allow with-interface equals { 08:*:* }
|
||||||
|
|
|
@ -3,11 +3,13 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
cfg = config.modules.services.uwsm;
|
cfg = config.modules.services.uwsm;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.services.uwsm.enable = mkEnableOption "uwsm";
|
options.modules.services.uwsm.enable = mkEnableOption "uwsm";
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.uwsm = {
|
programs.uwsm = {
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
|
|
||||||
custom-wayneko = pkgs.wayneko.overrideAttrs {
|
custom-wayneko = pkgs.wayneko.overrideAttrs {
|
||||||
|
@ -16,16 +17,17 @@
|
||||||
|
|
||||||
hash = "";
|
hash = "";
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
systemd.user.services.wayneko = {
|
systemd.user.services.wayneko = {
|
||||||
description = "Wayneko, as a systemd service";
|
description = "Wayneko, as a systemd service";
|
||||||
|
|
||||||
# makes the graphical session start this service when it starts
|
# makes the graphical session start this service when it starts
|
||||||
wantedBy = ["graphical-session.target"];
|
wantedBy = [ "graphical-session.target" ];
|
||||||
# when graphical session restarts or gets stopped, this also gets restarted/stopped.
|
# when graphical session restarts or gets stopped, this also gets restarted/stopped.
|
||||||
partOf = ["graphical-session.target"];
|
partOf = [ "graphical-session.target" ];
|
||||||
# gets started only after graphical session
|
# gets started only after graphical session
|
||||||
after = ["graphical-session.target"];
|
after = [ "graphical-session.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
|
@ -39,7 +41,7 @@ in {
|
||||||
RestartSec = 1;
|
RestartSec = 1;
|
||||||
TimeoutStopSec = 10;
|
TimeoutStopSec = 10;
|
||||||
|
|
||||||
CapabilityBoundingSet = [""];
|
CapabilityBoundingSet = [ "" ];
|
||||||
DevicePolicy = "closed";
|
DevicePolicy = "closed";
|
||||||
LockPersonality = true;
|
LockPersonality = true;
|
||||||
MemoryDenyWriteExecute = true;
|
MemoryDenyWriteExecute = true;
|
||||||
|
@ -65,7 +67,7 @@ in {
|
||||||
RestrictRealTime = true;
|
RestrictRealTime = true;
|
||||||
RestrictSUIDSGID = true;
|
RestrictSUIDSGID = true;
|
||||||
|
|
||||||
SystemCallArchitectures = ["native"];
|
SystemCallArchitectures = [ "native" ];
|
||||||
|
|
||||||
SystemCallFilter = "~@clock @cpu-emulation @debug @obsolete @module @mount @raw-io @reboot @swap @privileged";
|
SystemCallFilter = "~@clock @cpu-emulation @debug @obsolete @module @mount @raw-io @reboot @swap @privileged";
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,10 +9,24 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.options) mkOption literalExpression;
|
inherit (lib.options) mkOption literalExpression;
|
||||||
inherit (lib.strings) toLower replaceStrings removePrefix hasPrefix isString;
|
inherit (lib.strings)
|
||||||
inherit (lib.types) str nullOr enum mkOptionType attrsOf coercedTo;
|
toLower
|
||||||
|
replaceStrings
|
||||||
|
removePrefix
|
||||||
|
hasPrefix
|
||||||
|
isString
|
||||||
|
;
|
||||||
|
inherit (lib.types)
|
||||||
|
str
|
||||||
|
nullOr
|
||||||
|
enum
|
||||||
|
mkOptionType
|
||||||
|
attrsOf
|
||||||
|
coercedTo
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.modules.style;
|
cfg = config.modules.style;
|
||||||
|
|
||||||
|
@ -24,16 +38,24 @@
|
||||||
};
|
};
|
||||||
colorType = attrsOf (coercedTo str (removePrefix "#") hexColorType);
|
colorType = attrsOf (coercedTo str (removePrefix "#") hexColorType);
|
||||||
|
|
||||||
nameToSlug = name: toLower (replaceStrings [" "] ["-"] name);
|
nameToSlug = name: toLower (replaceStrings [ " " ] [ "-" ] name);
|
||||||
getPaletteFromScheme = slug:
|
getPaletteFromScheme =
|
||||||
if builtins.pathExists ./palettes/${slug}.nix
|
slug:
|
||||||
then (import ./palettes/${slug}.nix).colorscheme.palette
|
if builtins.pathExists ./palettes/${slug}.nix then
|
||||||
else throw "The following colorscheme was imported but not found: ${slug}";
|
(import ./palettes/${slug}.nix).colorscheme.palette
|
||||||
in {
|
else
|
||||||
|
throw "The following colorscheme was imported but not found: ${slug}";
|
||||||
|
in
|
||||||
|
{
|
||||||
options.modules.style = {
|
options.modules.style = {
|
||||||
colorScheme = {
|
colorScheme = {
|
||||||
name = mkOption {
|
name = mkOption {
|
||||||
type = nullOr (enum ["Catppuccin Mocha" "Zenburn" "Black Metal Venom" "Gruvbox"]);
|
type = nullOr (enum [
|
||||||
|
"Catppuccin Mocha"
|
||||||
|
"Zenburn"
|
||||||
|
"Black Metal Venom"
|
||||||
|
"Gruvbox"
|
||||||
|
]);
|
||||||
description = "The colorscheme that should be used globally to theme your system.";
|
description = "The colorscheme that should be used globally to theme your system.";
|
||||||
default = "Catppuccin Mocha";
|
default = "Catppuccin Mocha";
|
||||||
};
|
};
|
||||||
|
@ -83,11 +105,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
variant = mkOption {
|
variant = mkOption {
|
||||||
type = enum ["dark" "light"];
|
type = enum [
|
||||||
default =
|
"dark"
|
||||||
if builtins.substring 0 1 cfg.colorScheme.colors.base00 < "5"
|
"light"
|
||||||
then "dark"
|
];
|
||||||
else "light";
|
default = if builtins.substring 0 1 cfg.colorScheme.colors.base00 < "5" then "dark" else "light";
|
||||||
description = ''
|
description = ''
|
||||||
Whether the scheme is dark or light
|
Whether the scheme is dark or light
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{pkgs, ...}: let
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
inherit (builtins) mapAttrs;
|
inherit (builtins) mapAttrs;
|
||||||
|
|
||||||
fancy-iosevka = pkgs.iosevka.override {
|
fancy-iosevka = pkgs.iosevka.override {
|
||||||
|
@ -40,7 +41,8 @@
|
||||||
};
|
};
|
||||||
set = "Fancy";
|
set = "Fancy";
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
# A (somewhat) sane list of fonts to be installed.
|
# A (somewhat) sane list of fonts to be installed.
|
||||||
fonts = {
|
fonts = {
|
||||||
fontconfig = {
|
fontconfig = {
|
||||||
|
@ -58,7 +60,8 @@ in {
|
||||||
|
|
||||||
# Set the defalt fonts. This was taken from raf,
|
# Set the defalt fonts. This was taken from raf,
|
||||||
# many thanks.
|
# many thanks.
|
||||||
defaultFonts = let
|
defaultFonts =
|
||||||
|
let
|
||||||
common = [
|
common = [
|
||||||
"Iosevka Nerd Font"
|
"Iosevka Nerd Font"
|
||||||
"Roboto Mono Nerd Font"
|
"Roboto Mono Nerd Font"
|
||||||
|
@ -69,15 +72,14 @@ in {
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
mapAttrs (_: fonts: fonts ++ common) {
|
mapAttrs (_: fonts: fonts ++ common) {
|
||||||
serif = ["Noto Serif"];
|
serif = [ "Noto Serif" ];
|
||||||
sansSerif = ["Lexend"];
|
sansSerif = [ "Lexend" ];
|
||||||
emoji = ["Noto Color Emoji"];
|
emoji = [ "Noto Color Emoji" ];
|
||||||
monospace = ["Iosevka Nerd Font"];
|
monospace = [ "Iosevka Nerd Font" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
packages = builtins.attrValues {
|
packages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
material-icons
|
material-icons
|
||||||
material-design-icons
|
material-design-icons
|
||||||
lexend
|
lexend
|
||||||
|
@ -88,8 +90,7 @@ in {
|
||||||
corefonts
|
corefonts
|
||||||
font-awesome
|
font-awesome
|
||||||
;
|
;
|
||||||
inherit
|
inherit (pkgs.nerd-fonts)
|
||||||
(pkgs.nerd-fonts)
|
|
||||||
iosevka
|
iosevka
|
||||||
jetbrains-mono
|
jetbrains-mono
|
||||||
comic-shanns-mono
|
comic-shanns-mono
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# blatantly stolen from sioodmy, thanks :3
|
# blatantly stolen from sioodmy, thanks :3
|
||||||
{colors}:
|
{ colors }:
|
||||||
with colors; ''
|
with colors;
|
||||||
|
''
|
||||||
@define-color accent_color #${base0D};
|
@define-color accent_color #${base0D};
|
||||||
@define-color accent_bg_color #${base0D};
|
@define-color accent_bg_color #${base0D};
|
||||||
@define-color accent_fg_color #${base00};
|
@define-color accent_fg_color #${base00};
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (builtins) toString isBool;
|
inherit (builtins) toString isBool;
|
||||||
inherit (lib.generators) toINI;
|
inherit (lib.generators) toINI;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
|
@ -15,12 +16,12 @@
|
||||||
cfg = config.modules.theming.gtk;
|
cfg = config.modules.theming.gtk;
|
||||||
|
|
||||||
toGtk3Ini = toINI {
|
toGtk3Ini = toINI {
|
||||||
mkKeyValue = key: value: let
|
mkKeyValue =
|
||||||
value' =
|
key: value:
|
||||||
if isBool value
|
let
|
||||||
then boolToString value
|
value' = if isBool value then boolToString value else toString value;
|
||||||
else toString value;
|
in
|
||||||
in "${escape ["="] key}=${value'}";
|
"${escape [ "=" ] key}=${value'}";
|
||||||
};
|
};
|
||||||
|
|
||||||
gtkIni = {
|
gtkIni = {
|
||||||
|
@ -34,7 +35,8 @@
|
||||||
gtk-cursor-theme-name = "BreezeX-RosePine-Linux";
|
gtk-cursor-theme-name = "BreezeX-RosePine-Linux";
|
||||||
gtk-theme-name = "Gruvbox-Dark";
|
gtk-theme-name = "Gruvbox-Dark";
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.theming.gtk = {
|
options.modules.theming.gtk = {
|
||||||
enable = mkEnableOption "Wether to enable GTK theming";
|
enable = mkEnableOption "Wether to enable GTK theming";
|
||||||
theme = {
|
theme = {
|
||||||
|
@ -63,15 +65,15 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = let
|
config =
|
||||||
|
let
|
||||||
cursorSize = 32;
|
cursorSize = 32;
|
||||||
in
|
in
|
||||||
mkIf cfg.enable {
|
mkIf cfg.enable {
|
||||||
programs.dconf.enable = true;
|
programs.dconf.enable = true;
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = builtins.attrValues {
|
systemPackages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
rose-pine-cursor
|
rose-pine-cursor
|
||||||
gruvbox-gtk-theme
|
gruvbox-gtk-theme
|
||||||
papirus-icon-theme
|
papirus-icon-theme
|
||||||
|
@ -83,9 +85,11 @@ in {
|
||||||
XCURSOR_THEME = "BreezeX-RosePine-Linux";
|
XCURSOR_THEME = "BreezeX-RosePine-Linux";
|
||||||
XCURSOR_SIZE = cursorSize;
|
XCURSOR_SIZE = cursorSize;
|
||||||
};
|
};
|
||||||
etc = let
|
etc =
|
||||||
css = import ./gtk-colors.nix {inherit (config.modules.style.colorScheme) colors;};
|
let
|
||||||
in {
|
css = import ./gtk-colors.nix { inherit (config.modules.style.colorScheme) colors; };
|
||||||
|
in
|
||||||
|
{
|
||||||
"xdg/gtk-4.0/settings.ini".text = toGtk3Ini {
|
"xdg/gtk-4.0/settings.ini".text = toGtk3Ini {
|
||||||
Settings = gtkIni;
|
Settings = gtkIni;
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,13 +3,15 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption mkOption;
|
inherit (lib.options) mkEnableOption mkOption;
|
||||||
inherit (lib.types) str package;
|
inherit (lib.types) str package;
|
||||||
|
|
||||||
cfg = config.modules.theming.qt;
|
cfg = config.modules.theming.qt;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.theming.qt = {
|
options.modules.theming.qt = {
|
||||||
enable = mkEnableOption "qt theming";
|
enable = mkEnableOption "qt theming";
|
||||||
name = mkOption {
|
name = mkOption {
|
||||||
|
|
|
@ -4,17 +4,19 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
sources,
|
sources,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
|
||||||
cfg = config.modules.theming.quickshell;
|
cfg = config.modules.theming.quickshell;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.theming.quickshell.enable = mkEnableOption "quickshell";
|
options.modules.theming.quickshell.enable = mkEnableOption "quickshell";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
(pkgs.callPackage (sources.quickshell + "/default.nix") {})
|
(pkgs.callPackage (sources.quickshell + "/default.nix") { })
|
||||||
qt6.qtimageformats
|
qt6.qtimageformats
|
||||||
qt6.qt5compat
|
qt6.qt5compat
|
||||||
qt6.qtmultimedia
|
qt6.qtmultimedia
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
/run/user/1000/quickshell/vfs/97b86fe3cbb42714790f5e96b44b706b/.qmlls.ini
|
/run/user/1000/quickshell/vfs/4f7a8066a49ba487f5b2754750896151/.qmlls.ini
|
|
@ -3,13 +3,15 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkForce mkDefault;
|
inherit (lib.modules) mkForce mkDefault;
|
||||||
inherit (lib.options) mkOption mkEnableOption;
|
inherit (lib.options) mkOption mkEnableOption;
|
||||||
inherit (lib.types) int;
|
inherit (lib.types) int;
|
||||||
|
|
||||||
cfg = config.modules.system.boot;
|
cfg = config.modules.system.boot;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.boot = {
|
options.modules.system.boot = {
|
||||||
grub.enable = mkEnableOption "Grub, a bloated boot loader";
|
grub.enable = mkEnableOption "Grub, a bloated boot loader";
|
||||||
systemd-boot.enable = mkEnableOption "Poetteringboot";
|
systemd-boot.enable = mkEnableOption "Poetteringboot";
|
||||||
|
@ -29,7 +31,8 @@ in {
|
||||||
message = "No bootloader is enabled.";
|
message = "No bootloader is enabled.";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
assertion = cfg.systemd-boot.enable -> !cfg.grub.enable && cfg.grub.enable -> !cfg.systemd-boot.enable;
|
assertion =
|
||||||
|
cfg.systemd-boot.enable -> !cfg.grub.enable && cfg.grub.enable -> !cfg.systemd-boot.enable;
|
||||||
message = "Please enable only ONE of systemd-boot or grub.";
|
message = "Please enable only ONE of systemd-boot or grub.";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -73,8 +76,7 @@ in {
|
||||||
plymouth = {
|
plymouth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
themePackages = [
|
themePackages = [
|
||||||
(pkgs.adi1090x-plymouth-themes.override
|
(pkgs.adi1090x-plymouth-themes.override {
|
||||||
{
|
|
||||||
selected_themes = [
|
selected_themes = [
|
||||||
"hud_3"
|
"hud_3"
|
||||||
];
|
];
|
||||||
|
|
|
@ -4,12 +4,14 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
sources,
|
sources,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
|
||||||
cfg = config.modules.system.boot.lanzaboote;
|
cfg = config.modules.system.boot.lanzaboote;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.boot.lanzaboote.enable = mkEnableOption "Lanzaboote";
|
options.modules.system.boot.lanzaboote.enable = mkEnableOption "Lanzaboote";
|
||||||
imports = [
|
imports = [
|
||||||
(sources.lanzaboote + "/nix/modules/lanzaboote.nix")
|
(sources.lanzaboote + "/nix/modules/lanzaboote.nix")
|
||||||
|
@ -29,6 +31,6 @@ in {
|
||||||
loader.systemd-boot.enable = lib.mkForce false;
|
loader.systemd-boot.enable = lib.mkForce false;
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = [pkgs.sbctl];
|
environment.systemPackages = [ pkgs.sbctl ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,19 +3,20 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
|
|
||||||
cfg = config.modules.system.hardware.bluetooth;
|
cfg = config.modules.system.hardware.bluetooth;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
hardware.bluetooth = {
|
hardware.bluetooth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
inherit (cfg) powerOnBoot;
|
inherit (cfg) powerOnBoot;
|
||||||
};
|
};
|
||||||
environment.systemPackages = builtins.attrValues {
|
environment.systemPackages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
bluetuith
|
bluetuith
|
||||||
bluez
|
bluez
|
||||||
blueman
|
blueman
|
||||||
|
|
|
@ -2,12 +2,14 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
|
||||||
cfg = config.modules.system.hardware;
|
cfg = config.modules.system.hardware;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.hardware = {
|
options.modules.system.hardware = {
|
||||||
nvidia = {
|
nvidia = {
|
||||||
enable = mkEnableOption "Nvidia graphics drivers";
|
enable = mkEnableOption "Nvidia graphics drivers";
|
||||||
|
@ -32,6 +34,6 @@ in {
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
services.xserver.videoDrivers = mkIf cfg.nvidia.enable ["nvidia"];
|
services.xserver.videoDrivers = mkIf cfg.nvidia.enable [ "nvidia" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,19 +3,20 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkDefault mkIf;
|
inherit (lib.modules) mkDefault mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
|
||||||
cfg = config.modules.system.hardware.intel;
|
cfg = config.modules.system.hardware.intel;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.system.hardware.intel.enable = mkEnableOption "Intel Hardware";
|
options.modules.system.hardware.intel.enable = mkEnableOption "Intel Hardware";
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
hardware = {
|
hardware = {
|
||||||
cpu.intel.updateMicrocode = mkDefault config.hardware.enableRedistributableFirmware;
|
cpu.intel.updateMicrocode = mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
graphics.extraPackages = builtins.attrValues {
|
graphics.extraPackages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
intel-vaapi-driver
|
intel-vaapi-driver
|
||||||
intel-media-driver
|
intel-media-driver
|
||||||
;
|
;
|
||||||
|
|
|
@ -2,11 +2,13 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
|
|
||||||
cfg = config.modules.system.sound;
|
cfg = config.modules.system.sound;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -4,23 +4,24 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkDefault;
|
inherit (lib.modules) mkDefault;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
# (sources.watt + "/nix/module.nix")
|
# (sources.watt + "/nix/module.nix")
|
||||||
];
|
];
|
||||||
config = {
|
config = {
|
||||||
environment.systemPackages = builtins.attrValues {
|
environment.systemPackages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
acpi
|
acpi
|
||||||
powertop
|
powertop
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
kernelModules = ["acpi_call"];
|
kernelModules = [ "acpi_call" ];
|
||||||
extraModulePackages = with config.boot.kernelPackages; [
|
extraModulePackages = with config.boot.kernelPackages; [
|
||||||
acpi_call
|
acpi_call
|
||||||
cpupower
|
cpupower
|
||||||
|
|
|
@ -4,9 +4,12 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
sources,
|
sources,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
determinate = (import sources.flake-compat {src = sources.determinate;}).outputs;
|
let
|
||||||
dix = (import sources.flake-compat {src = determinate.inputs.nix;}).outputs.packages.${pkgs.stdenv.system}.nix;
|
determinate = (import sources.flake-compat { src = sources.determinate; }).outputs;
|
||||||
|
dix =
|
||||||
|
(import sources.flake-compat { src = determinate.inputs.nix; })
|
||||||
|
.outputs.packages.${pkgs.stdenv.system}.nix;
|
||||||
|
|
||||||
# Stronger than mkDefault (1000), weaker than mkForce (50) and the "default override priority"
|
# Stronger than mkDefault (1000), weaker than mkForce (50) and the "default override priority"
|
||||||
# (100).
|
# (100).
|
||||||
|
@ -14,7 +17,8 @@
|
||||||
|
|
||||||
# Stronger than the "default override priority", as the upstream module uses that, and weaker than mkForce (50).
|
# Stronger than the "default override priority", as the upstream module uses that, and weaker than mkForce (50).
|
||||||
mkMorePreferable = lib.mkOverride 75;
|
mkMorePreferable = lib.mkOverride 75;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
config = {
|
config = {
|
||||||
nix = {
|
nix = {
|
||||||
package = dix;
|
package = dix;
|
||||||
|
@ -30,7 +34,9 @@ in {
|
||||||
services.nix-daemon.serviceConfig = {
|
services.nix-daemon.serviceConfig = {
|
||||||
ExecStart = [
|
ExecStart = [
|
||||||
""
|
""
|
||||||
"@${determinate.packages.${pkgs.stdenv.system}.default}/bin/determinate-nixd determinate-nixd --nix-bin ${config.nix.package}/bin daemon"
|
"@${
|
||||||
|
determinate.packages.${pkgs.stdenv.system}.default
|
||||||
|
}/bin/determinate-nixd determinate-nixd --nix-bin ${config.nix.package}/bin daemon"
|
||||||
];
|
];
|
||||||
KillMode = mkPreferable "process";
|
KillMode = mkPreferable "process";
|
||||||
LimitNOFILE = mkMorePreferable 1048576;
|
LimitNOFILE = mkMorePreferable 1048576;
|
||||||
|
@ -41,11 +47,14 @@ in {
|
||||||
nix-daemon.socketConfig.FileDescriptorName = "nix-daemon.socket";
|
nix-daemon.socketConfig.FileDescriptorName = "nix-daemon.socket";
|
||||||
determinate-nixd = {
|
determinate-nixd = {
|
||||||
description = "Determinate Nixd Daemon Socket";
|
description = "Determinate Nixd Daemon Socket";
|
||||||
wantedBy = ["sockets.target"];
|
wantedBy = [ "sockets.target" ];
|
||||||
before = ["multi-user.target"];
|
before = [ "multi-user.target" ];
|
||||||
|
|
||||||
unitConfig = {
|
unitConfig = {
|
||||||
RequiresMountsFor = ["/nix/store" "/nix/var/determinate"];
|
RequiresMountsFor = [
|
||||||
|
"/nix/store"
|
||||||
|
"/nix/var/determinate"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
socketConfig = {
|
socketConfig = {
|
||||||
|
|
|
@ -5,10 +5,12 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.attrsets) mapAttrsToList;
|
inherit (lib.attrsets) mapAttrsToList;
|
||||||
inherit (lib.modules) mkForce;
|
inherit (lib.modules) mkForce;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
nix = {
|
nix = {
|
||||||
# Check that Nix can parse the generated nix.conf.
|
# Check that Nix can parse the generated nix.conf.
|
||||||
checkConfig = true;
|
checkConfig = true;
|
||||||
|
@ -46,7 +48,7 @@ in {
|
||||||
# Automatically optimize nix store by removing hard links
|
# Automatically optimize nix store by removing hard links
|
||||||
optimise = {
|
optimise = {
|
||||||
automatic = true;
|
automatic = true;
|
||||||
dates = ["21:00"];
|
dates = [ "21:00" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
# NOTE:
|
# NOTE:
|
||||||
|
@ -62,10 +64,18 @@ in {
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
|
|
||||||
# Users that are allowed to connect to the Nix daemon.
|
# Users that are allowed to connect to the Nix daemon.
|
||||||
allowed-users = ["root" "@wheel" "nix-builder"];
|
allowed-users = [
|
||||||
|
"root"
|
||||||
|
"@wheel"
|
||||||
|
"nix-builder"
|
||||||
|
];
|
||||||
|
|
||||||
# Users that are allowed to connect to the Nix daemon.
|
# Users that are allowed to connect to the Nix daemon.
|
||||||
trusted-users = ["root" "@wheel" "nix-builder"];
|
trusted-users = [
|
||||||
|
"root"
|
||||||
|
"@wheel"
|
||||||
|
"nix-builder"
|
||||||
|
];
|
||||||
|
|
||||||
# Let the system decide the number of max jobs
|
# Let the system decide the number of max jobs
|
||||||
# based on available system specs. Usually this is
|
# based on available system specs. Usually this is
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# taken from raf
|
# taken from raf
|
||||||
{sources, ...}: {
|
{ sources, ... }:
|
||||||
|
{
|
||||||
# Global nixpkgs configuration.
|
# Global nixpkgs configuration.
|
||||||
# This is ignored if nixpkgs.pkgs is set, which should be avoided.
|
# This is ignored if nixpkgs.pkgs is set, which should be avoided.
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
|
@ -40,7 +41,7 @@
|
||||||
|
|
||||||
# List of derivation warnings to display while rebuilding.
|
# List of derivation warnings to display while rebuilding.
|
||||||
# See: <https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/check-meta.nix>
|
# See: <https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/check-meta.nix>
|
||||||
showDerivationWarnings = [];
|
showDerivationWarnings = [ ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,12 +4,14 @@
|
||||||
lib,
|
lib,
|
||||||
sources,
|
sources,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf mkForce;
|
inherit (lib.modules) mkIf mkForce;
|
||||||
inherit (builtins) map;
|
inherit (builtins) map;
|
||||||
|
|
||||||
cfg = config.modules.system.impermanence;
|
cfg = config.modules.system.impermanence;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
(sources.impermanence + "/nixos.nix")
|
(sources.impermanence + "/nixos.nix")
|
||||||
];
|
];
|
||||||
|
@ -41,20 +43,36 @@ in {
|
||||||
];
|
];
|
||||||
|
|
||||||
users.cr = {
|
users.cr = {
|
||||||
directories =
|
directories = [
|
||||||
[
|
|
||||||
"cloud"
|
"cloud"
|
||||||
"repos"
|
"repos"
|
||||||
]
|
]
|
||||||
++ map (
|
++ map (dir: ".config/${dir}") [
|
||||||
dir: ".config/${dir}"
|
"nicotine"
|
||||||
) ["nicotine" "Signal" "Nextcloud" "emacs" "doom"]
|
"Signal"
|
||||||
++ map (
|
"Nextcloud"
|
||||||
dir: ".cache/${dir}"
|
"emacs"
|
||||||
) ["tealdeer" "keepassxc" "nix" "starship" "nix-index" "mozilla" "zsh" "nvim"]
|
"doom"
|
||||||
++ map (
|
]
|
||||||
dir: ".local/share/${dir}"
|
++ map (dir: ".cache/${dir}") [
|
||||||
) ["direnv" "Steam" "TelegramDesktop" "PrismLauncher" "nicotine" "zoxide" ".keepass"];
|
"tealdeer"
|
||||||
|
"keepassxc"
|
||||||
|
"nix"
|
||||||
|
"starship"
|
||||||
|
"nix-index"
|
||||||
|
"mozilla"
|
||||||
|
"zsh"
|
||||||
|
"nvim"
|
||||||
|
]
|
||||||
|
++ map (dir: ".local/share/${dir}") [
|
||||||
|
"direnv"
|
||||||
|
"Steam"
|
||||||
|
"TelegramDesktop"
|
||||||
|
"PrismLauncher"
|
||||||
|
"nicotine"
|
||||||
|
"zoxide"
|
||||||
|
".keepass"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,12 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
StateDirectory = "dnscrypt-proxy";
|
StateDirectory = "dnscrypt-proxy";
|
||||||
inherit (lib.modules) mkForce;
|
inherit (lib.modules) mkForce;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
networking = {
|
networking = {
|
||||||
networkmanager.dns = mkForce "none";
|
networkmanager.dns = mkForce "none";
|
||||||
nameservers = [
|
nameservers = [
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
networking = {
|
networking = {
|
||||||
# use nftables over iptables
|
# use nftables over iptables
|
||||||
nftables.enable = true;
|
nftables.enable = true;
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
{config, ...}: let
|
{ config, ... }:
|
||||||
|
let
|
||||||
inherit (config.modules.other.system) username;
|
inherit (config.modules.other.system) username;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
networking = {
|
networking = {
|
||||||
enableIPv6 = true;
|
enableIPv6 = true;
|
||||||
|
|
||||||
|
@ -40,7 +42,7 @@ in {
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users.${username}.extraGroups = ["networkmanager"];
|
users.users.${username}.extraGroups = [ "networkmanager" ];
|
||||||
|
|
||||||
# faster boot
|
# faster boot
|
||||||
systemd = {
|
systemd = {
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
security = {
|
security = {
|
||||||
# Enable Soteria, a GTK-based Polkit authentication agent.
|
# Enable Soteria, a GTK-based Polkit authentication agent.
|
||||||
soteria.enable = true;
|
soteria.enable = true;
|
||||||
apparmor = {
|
apparmor = {
|
||||||
enable = true;
|
enable = true;
|
||||||
killUnconfinedConfinables = true;
|
killUnconfinedConfinables = true;
|
||||||
packages = [pkgs.apparmor-profiles];
|
packages = [ pkgs.apparmor-profiles ];
|
||||||
};
|
};
|
||||||
|
|
||||||
pam.services = {
|
pam.services = {
|
||||||
|
|
|
@ -2,16 +2,18 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkForce mkDefault;
|
inherit (lib.modules) mkForce mkDefault;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
security = {
|
security = {
|
||||||
sudo-rs.enable = mkForce false;
|
sudo-rs.enable = mkForce false;
|
||||||
sudo = {
|
sudo = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# We use the default sudo package, but with insults if we
|
# We use the default sudo package, but with insults if we
|
||||||
# fail to provide the correct password
|
# fail to provide the correct password
|
||||||
package = pkgs.sudo.override {withInsults = true;};
|
package = pkgs.sudo.override { withInsults = true; };
|
||||||
|
|
||||||
# Wheel user should need the password to execute sudo commands
|
# Wheel user should need the password to execute sudo commands
|
||||||
wheelNeedsPassword = mkDefault true;
|
wheelNeedsPassword = mkDefault true;
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
{lib, ...}: let
|
{ lib, ... }:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkForce;
|
inherit (lib.modules) mkForce;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
config.systemd = {
|
config.systemd = {
|
||||||
# faster startup
|
# faster startup
|
||||||
targets.network-online.wantedBy = mkForce []; # Normally ["multi-user.target"]
|
targets.network-online.wantedBy = mkForce [ ]; # Normally ["multi-user.target"]
|
||||||
services = {
|
services = {
|
||||||
NetworkManager-wait-online.wantedBy = mkForce []; # Normally ["network-online.target"]
|
NetworkManager-wait-online.wantedBy = mkForce [ ]; # Normally ["network-online.target"]
|
||||||
systemd-udev-settle.enable = false;
|
systemd-udev-settle.enable = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
{config, ...}: let
|
{ config, ... }:
|
||||||
|
let
|
||||||
machine-id = builtins.substring 0 32 (builtins.hashString "sha256" config.networking.hostName);
|
machine-id = builtins.substring 0 32 (builtins.hashString "sha256" config.networking.hostName);
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
system = {
|
system = {
|
||||||
# My state version.
|
# My state version.
|
||||||
stateVersion = "23.11";
|
stateVersion = "23.11";
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkForce mkIf;
|
inherit (lib.modules) mkForce mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
inherit (config.modules.system) isGraphical;
|
inherit (config.modules.system) isGraphical;
|
||||||
|
@ -27,13 +28,11 @@
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor";
|
options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor";
|
||||||
|
|
||||||
config =
|
config = mkIf (cfg.enable || isGraphical) {
|
||||||
mkIf (cfg.enable
|
|
||||||
|| isGraphical)
|
|
||||||
{
|
|
||||||
programs.niri = {
|
programs.niri = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = patched-niri;
|
package = patched-niri;
|
||||||
|
@ -45,8 +44,7 @@ in {
|
||||||
environment.etc."niri/config.kdl".source = ./config.kdl;
|
environment.etc."niri/config.kdl".source = ./config.kdl;
|
||||||
|
|
||||||
environment.systemPackages = builtins.attrValues {
|
environment.systemPackages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
xwayland-satellite
|
xwayland-satellite
|
||||||
avizo
|
avizo
|
||||||
playerctl
|
playerctl
|
||||||
|
|
|
@ -3,10 +3,12 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.lists) optional;
|
inherit (lib.lists) optional;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# Sets environment variable NIXOS_XDG_OPEN_USE_PORTAL to 1.
|
# Sets environment variable NIXOS_XDG_OPEN_USE_PORTAL to 1.
|
||||||
|
@ -26,7 +28,7 @@ in {
|
||||||
"org.freedesktop.impl.portal.Secret" = [
|
"org.freedesktop.impl.portal.Secret" = [
|
||||||
"kwallet"
|
"kwallet"
|
||||||
];
|
];
|
||||||
"org.freedesktop.secrets" = ["kwalletd6"];
|
"org.freedesktop.secrets" = [ "kwalletd6" ];
|
||||||
};
|
};
|
||||||
niri = {
|
niri = {
|
||||||
default = [
|
default = [
|
||||||
|
@ -38,7 +40,7 @@ in {
|
||||||
# https://docs.flatpak.org/en/latest/portal-api-reference.html
|
# https://docs.flatpak.org/en/latest/portal-api-reference.html
|
||||||
# "org.freedesktop.impl.portal.Access" = ["kde"];
|
# "org.freedesktop.impl.portal.Access" = ["kde"];
|
||||||
# "org.freedesktop.impl.portal.Notification" = ["kde"];
|
# "org.freedesktop.impl.portal.Notification" = ["kde"];
|
||||||
"org.freedesktop.impl.portal.FileChooser" = ["kde"];
|
"org.freedesktop.impl.portal.FileChooser" = [ "kde" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue