1
0
Fork 0

Snowfall lib - more conversion

This commit is contained in:
Aires 2024-12-06 11:16:58 -05:00
parent bca554318e
commit df02d39ced
75 changed files with 27514 additions and 27653 deletions

2
.gitattributes vendored
View file

@ -1 +1 @@
modules/secrets/** filter=crypt diff=crypt merge=crypt modules/nixos/secrets/** filter=crypt diff=crypt merge=crypt

View file

@ -9,7 +9,7 @@ A full set of configuration files managed via NixOS. This project is an **unoffi
### Note on secrets management ### Note on secrets management
Secrets are managed using [git-crypt](https://github.com/AGWA/git-crypt). To unlock the repo, use `git-crypt unlock [path to key file]`. git-crypt will transparently encrypt/decrypt files stored in `modules/secrets` going forward, but you'll need this key file on all hosts that are using secrets. Secrets are managed using [git-crypt](https://github.com/AGWA/git-crypt). To unlock the repo, use `git-crypt unlock [path to key file]`. git-crypt will transparently encrypt/decrypt files stored in `modules/nixos/secrets` going forward, but you'll need this key file on all hosts that are using secrets.
> [!NOTE] > [!NOTE]
> This is a poor man's secret management solution. If you use this, your secrets will be world-readable in the `/nix/store/`. > This is a poor man's secret management solution. If you use this, your secrets will be world-readable in the `/nix/store/`.

View file

@ -183,6 +183,22 @@
"type": "github" "type": "github"
} }
}, },
"flatpak": {
"locked": {
"lastModified": 1732285094,
"narHash": "sha256-OD9tu/QN71OnEWtgvm9pXuQs+SGQtKnLHOGVRG5f9CU=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "d3a763532be5d223bb3474642f089667a8091cdf",
"type": "github"
},
"original": {
"owner": "gmodena",
"ref": "v0.5.0",
"repo": "nix-flatpak",
"type": "github"
}
},
"gitignore": { "gitignore": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -252,24 +268,10 @@
} }
}, },
"lix": { "lix": {
"flake": false,
"locked": {
"lastModified": 1729298361,
"narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=",
"rev": "ad9d06f7838a25beec425ff406fe68721fef73be",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz"
}
},
"lix-module": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_2", "flake-utils": "flake-utils_2",
"flakey-profile": "flakey-profile", "flakey-profile": "flakey-profile",
"lix": "lix", "lix": "lix_2",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
@ -289,20 +291,18 @@
"url": "https://git.lix.systems/lix-project/nixos-module" "url": "https://git.lix.systems/lix-project/nixos-module"
} }
}, },
"nix-flatpak": { "lix_2": {
"flake": false,
"locked": { "locked": {
"lastModified": 1732285094, "lastModified": 1729298361,
"narHash": "sha256-OD9tu/QN71OnEWtgvm9pXuQs+SGQtKnLHOGVRG5f9CU=", "narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=",
"owner": "gmodena", "rev": "ad9d06f7838a25beec425ff406fe68721fef73be",
"repo": "nix-flatpak", "type": "tarball",
"rev": "d3a763532be5d223bb3474642f089667a8091cdf", "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be"
"type": "github"
}, },
"original": { "original": {
"owner": "gmodena", "type": "tarball",
"ref": "v0.5.0", "url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz"
"repo": "nix-flatpak",
"type": "github"
} }
}, },
"nixos-hardware": { "nixos-hardware": {
@ -415,15 +415,15 @@
"root": { "root": {
"inputs": { "inputs": {
"auto-cpufreq": "auto-cpufreq", "auto-cpufreq": "auto-cpufreq",
"flatpak": "flatpak",
"home-manager": "home-manager", "home-manager": "home-manager",
"lanzaboote": "lanzaboote", "lanzaboote": "lanzaboote",
"lix-module": "lix-module", "lix": "lix",
"nix-flatpak": "nix-flatpak",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"snowfall-lib": "snowfall-lib", "snowfall-lib": "snowfall-lib",
"treefmt-nix": "treefmt-nix" "treefmt": "treefmt"
} }
}, },
"rust-overlay": { "rust-overlay": {
@ -518,18 +518,18 @@
"type": "github" "type": "github"
} }
}, },
"treefmt-nix": { "treefmt": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1733222881, "lastModified": 1733440889,
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", "narHash": "sha256-qKL3vjO+IXFQ0nTinFDqNq/sbbnnS5bMI1y0xX215fU=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "49717b5af6f80172275d47a418c9719a31a78b53", "rev": "50862ba6a8a0255b87377b9d2d4565e96f29b410",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -16,6 +16,9 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
# Flatpak support
flatpak.url = "github:gmodena/nix-flatpak/v0.5.0";
# Home-manager support # Home-manager support
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-24.11"; url = "github:nix-community/home-manager/release-24.11";
@ -28,14 +31,11 @@
# Use Lix in place of Nix. # Use Lix in place of Nix.
# If you'd rather use regular Nix, remove `lix-module.nixosModules.default` from the `modules` section below. # If you'd rather use regular Nix, remove `lix-module.nixosModules.default` from the `modules` section below.
# To learn more about Lix, see https://lix.systems/ # To learn more about Lix, see https://lix.systems/
lix-module = { lix = {
url = "git+https://git.lix.systems/lix-project/nixos-module?ref=release-2.91"; url = "git+https://git.lix.systems/lix-project/nixos-module?ref=release-2.91";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
# Flatpak support
nix-flatpak.url = "github:gmodena/nix-flatpak/v0.5.0";
# NixOS hardware quirks # NixOS hardware quirks
nixos-hardware.url = "github:NixOS/nixos-hardware/master"; nixos-hardware.url = "github:NixOS/nixos-hardware/master";
@ -47,7 +47,7 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
treefmt-nix = { treefmt = {
url = "github:numtide/treefmt-nix"; url = "github:numtide/treefmt-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
@ -86,11 +86,10 @@
systems = { systems = {
# Modules to import for all systems # Modules to import for all systems
modules.nixos = with inputs; [ modules.nixos = with inputs; [
./modules/autoimport.nix
auto-cpufreq.nixosModules.default auto-cpufreq.nixosModules.default
lix-module.nixosModules.default lix.nixosModules.default
lanzaboote.nixosModules.lanzaboote lanzaboote.nixosModules.lanzaboote
nix-flatpak.nixosModules.nix-flatpak flatpak.nixosModules.nix-flatpak
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
_module.args = { _module.args = {
@ -113,35 +112,41 @@
hosts = { hosts = {
Dimaga.modules = with inputs; [ Dimaga.modules = with inputs; [
nixos-hardware.nixosModules.common-cpu-intel nixos-hardware.nixosModules.common-cpu-intel
./hosts/Dimaga
]; ];
Hevana.modules = with inputs; [ Hevana.modules = with inputs; [
nixos-hardware.nixosModules.common-cpu-amd-pstate nixos-hardware.nixosModules.common-cpu-amd-pstate
nixos-hardware.nixosModules.common-gpu-amd nixos-hardware.nixosModules.common-gpu-amd
./hosts/Hevana
]; ];
Khanda.modules = with inputs; [ Khanda.modules = with inputs; [
nixos-hardware.nixosModules.microsoft-surface-pro-9 nixos-hardware.nixosModules.microsoft-surface-pro-9
./hosts/Khanda
]; ];
Pihole.modules = with inputs; [ Pihole.modules = with inputs; [
nixos-hardware.nixosModules.raspberry-pi-4 nixos-hardware.nixosModules.raspberry-pi-4
./hosts/Pihole
]; ];
Shura.modules = with inputs; [ Shura.modules = with inputs; [
nixos-hardware.nixosModules.lenovo-legion-16arha7 nixos-hardware.nixosModules.lenovo-legion-16arha7
./hosts/Shura
]; ];
}; };
}; };
# Use treefmt to format project repo # Use treefmt to format project repo
outputs-builder = channels: { outputs-builder =
formatter = (inputs.treefmt-nix.lib.evalModule channels.nixpkgs ./treefmt.nix).config.build.wrapper; channels:
let
treefmtEval = inputs.treefmt.lib.evalModule channels.nixpkgs ./treefmt.nix;
in
{
# For `nix fmt`
formatter = treefmtEval.config.build.wrapper;
# For `nix flake check`
checks = {
formatting = treefmtEval.config.build.check inputs.self;
};
}; };
}; };
} }

15
lib/default.nix Normal file
View file

@ -0,0 +1,15 @@
{
lib,
}:
{
# Parses the domain from a URI
getDomainFromURI =
url:
let
parsedURL = (lib.strings.splitString "." url);
in
builtins.concatStringsSep "." [
(builtins.elemAt parsedURL 1)
(builtins.elemAt parsedURL 2)
];
}

View file

@ -1,42 +0,0 @@
[General]
Name=Victrix Pro BFG
Appearance=0x03c4
AddressType=public
SupportedTechnologies=LE;
Trusted=true
Blocked=false
WakeAllowed=true
Services=00001800-0000-1000-8000-00805f9b34fb;00001801-0000-1000-8000-00805f9b34fb;0000180a-0000-1000-8000-00805f9b34fb;0000180f-0000-1000-8000-00805f9b34fb;00001812-0000-1000-8000-00805f9b34fb;00001813-0000-1000-8000-00805f9b34fb;f95a48e6-a721-11e9-a2a3-022ae2dbcce4;
[LongTermKey]
Key=F12268049C72EA0561E2E77DEA02AC12
Authenticated=0
EncSize=16
EDiv=29996
Rand=5139827239406697411
[PeripheralLongTermKey]
Key=CC60B7A9080383302B61EC2127E0D5CD
Authenticated=0
EncSize=16
EDiv=59630
Rand=6653202288716901387
[SlaveLongTermKey]
Key=CC60B7A9080383302B61EC2127E0D5CD
Authenticated=0
EncSize=16
EDiv=59630
Rand=6653202288716901387
[DeviceID]
Source=2
Vendor=3695
Product=587
Version=768
[ConnectionParameters]
MinInterval=6
MaxInterval=6
Latency=0
Timeout=300

View file

@ -1,17 +0,0 @@
{ config, lib, ... }:
let
cfg = config.aux.system.apps.dj;
in
{
options = {
aux.system.apps.dj.enable = lib.mkEnableOption "Enables DJing tools (i.e. Mixxx)";
};
config = lib.mkIf cfg.enable {
aux.system.ui.flatpak = {
enable = true;
packages = [ "org.mixxx.Mixxx" ];
};
};
}

View file

@ -1,31 +0,0 @@
# Auto-import modules in this folder, recursively.
# Sourced from https://github.com/evanjs/nixos_cfg/blob/4bb5b0b84a221b25cf50853c12b9f66f0cad3ea4/config/new-modules/default.nix
{ lib, ... }:
let
# Recursively constructs an attrset of a given folder, recursing on directories, value of attrs is the filetype
getDir =
dir:
lib.mapAttrs (file: type: if type == "directory" then getDir "${dir}/${file}" else type) (
builtins.readDir dir
);
# Collects all files of a directory as a list of strings of paths
files =
dir:
lib.collect lib.isString (
lib.mapAttrsRecursive (path: type: lib.concatStringsSep "/" path) (getDir dir)
);
# Search all files and folders within and below the current directory.
# Filters out directories that belong to home-manager, and don't end with .nix or are this file.
validFiles =
dir:
map (file: ./. + "/${file}") (
lib.filter (
file: !lib.hasInfix "home-manager" file && file != "autoimport.nix" && lib.hasSuffix ".nix" file
) (files dir)
);
in
{
imports = validFiles ./.;
}

View file

@ -5,7 +5,10 @@ let
in in
{ {
options = { options = {
aux.system.apps.media.enable = lib.mkEnableOption "Enables media playback and editing apps"; aux.system.apps.media = {
enable = lib.mkEnableOption "Enables media playback and editing apps.";
mixxx.enable = lib.mkEnableOption "Installs the Mixxx DJing software.";
};
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
@ -21,6 +24,7 @@ in
"org.kde.KStyle.Adwaita//6.6" "org.kde.KStyle.Adwaita//6.6"
"org.kde.WaylandDecoration.QAdwaitaDecorations//5.15-23.08" # Replaced deprecated QGnomePlatform https://wiki.archlinux.org/title/Uniform_look_for_Qt_and_GTK_applications "org.kde.WaylandDecoration.QAdwaitaDecorations//5.15-23.08" # Replaced deprecated QGnomePlatform https://wiki.archlinux.org/title/Uniform_look_for_Qt_and_GTK_applications
"org.kde.WaylandDecoration.QAdwaitaDecorations//6.6" "org.kde.WaylandDecoration.QAdwaitaDecorations//6.6"
(lib.mkIf cfg.mixxx.enable "org.mixxx.Mixxx")
"org.videolan.VLC" "org.videolan.VLC"
]; ];
}; };

View file

@ -15,7 +15,6 @@ in
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
aux.system = { aux.system = {
allowUnfree = true;
packages = [ pkgs.beeper ]; packages = [ pkgs.beeper ];
ui.flatpak = { ui.flatpak = {
enable = true; enable = true;

View file

@ -9,7 +9,7 @@ let
cfg = config.aux.system.apps.writing; cfg = config.aux.system.apps.writing;
compile-manuscript = pkgs.writeShellScriptBin "compile-manuscript" ( compile-manuscript = pkgs.writeShellScriptBin "compile-manuscript" (
builtins.readFile ../../bin/compile-manuscript.sh builtins.readFile ../../../../bin/compile-manuscript.sh
); );
in in
{ {

View file

@ -1,6 +1,5 @@
# Modules common to all systems # Modules common to all systems
{ {
inputs,
pkgs, pkgs,
... ...
}: }:
@ -19,16 +18,6 @@
nixos-operations-script.enable = true; nixos-operations-script.enable = true;
}; };
# Allow packages from the unstable repo by using 'pkgs.unstable'
nixpkgs.overlays = [
(final: _prev: {
unstable = import inputs.nixpkgs-unstable {
system = final.system;
config.allowUnfree = true;
};
})
];
programs = { programs = {
# Install ZSH for all users # Install ZSH for all users
zsh.enable = true; zsh.enable = true;

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,111 @@
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

View file

@ -49,7 +49,7 @@ in
}; };
nginx.virtualHosts."${cfg.url}" = { nginx.virtualHosts."${cfg.url}" = {
useACMEHost = pkgs.util.getDomainFromURI cfg.url; useACMEHost = lib.Sapana.getDomainFromURI cfg.url;
forceSSL = true; forceSSL = true;
basicAuth = { basicAuth = {
"${cfg.auth.user}" = cfg.auth.password; "${cfg.auth.user}" = cfg.auth.password;

View file

@ -7,7 +7,6 @@
let let
cfg = config.aux.system.services.duplicacy-web; cfg = config.aux.system.services.duplicacy-web;
duplicacy-web = pkgs.callPackage ../../packages/duplicacy-web.nix { inherit pkgs lib; };
in in
{ {
options = { options = {
@ -22,8 +21,7 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
nixpkgs.config.allowUnfree = true; environment.systemPackages = [ pkgs.Sapana.duplicacy-web ];
environment.systemPackages = [ duplicacy-web ];
networking.firewall.allowedTCPPorts = [ 3875 ]; networking.firewall.allowedTCPPorts = [ 3875 ];
@ -38,7 +36,7 @@ in
description = "Start the Duplicacy backup service and web UI"; description = "Start the Duplicacy backup service and web UI";
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
ExecStart = ''${duplicacy-web}/duplicacy-web''; ExecStart = ''${pkgs.Sapana.duplicacy-web}/duplicacy-web'';
Restart = "on-failure"; Restart = "on-failure";
RestartSec = 10; RestartSec = 10;
KillMode = "process"; KillMode = "process";

View file

@ -1,5 +1,4 @@
{ {
pkgs,
config, config,
lib, lib,
... ...
@ -32,7 +31,7 @@ in
enable = true; enable = true;
settings = { settings = {
server = { server = {
DOMAIN = pkgs.util.getDomainFromURI cfg.url; DOMAIN = lib.Sapana.getDomainFromURI cfg.url;
ROOT_URL = cfg.url; ROOT_URL = cfg.url;
HTTP_PORT = 3000; HTTP_PORT = 3000;
}; };
@ -42,7 +41,7 @@ in
} // lib.optionalAttrs (cfg.home != null) { stateDir = cfg.home; }; } // lib.optionalAttrs (cfg.home != null) { stateDir = cfg.home; };
nginx.virtualHosts."${cfg.url}" = { nginx.virtualHosts."${cfg.url}" = {
useACMEHost = pkgs.util.getDomainFromURI cfg.url; useACMEHost = lib.Sapana.getDomainFromURI cfg.url;
forceSSL = true; forceSSL = true;
locations."/" = { locations."/" = {
proxyPass = "http://127.0.0.1:3000"; proxyPass = "http://127.0.0.1:3000";

View file

@ -8,7 +8,7 @@ let
cfg = config.aux.system.services.jellyfin; cfg = config.aux.system.services.jellyfin;
jellyfin-audio-save = pkgs.unstable.jellyfin.overrideAttrs ( jellyfin-audio-save = pkgs.unstable.jellyfin.overrideAttrs (
finalAttrs: prevAttrs: { patches = [ ./jellyfin/jellyfin-audio-save-position.patch ]; } finalAttrs: prevAttrs: { patches = [ ./jellyfin-audio-save-position.patch ]; }
); );
in in
{ {
@ -34,7 +34,7 @@ in
services = { services = {
nginx.virtualHosts."${cfg.url}" = { nginx.virtualHosts."${cfg.url}" = {
useACMEHost = pkgs.util.getDomainFromURI cfg.url; useACMEHost = lib.Sapana.getDomainFromURI cfg.url;
forceSSL = true; forceSSL = true;
locations."/" = { locations."/" = {
proxyPass = "http://127.0.0.1:8096"; proxyPass = "http://127.0.0.1:8096";

View file

@ -50,13 +50,11 @@ in
public = true; public = true;
allowOrigin = "*"; allowOrigin = "*";
# Enable Ngrams # Enable Ngrams
settings.languageModel = lib.mkIf cfg.ngrams.enable "${ settings.languageModel = lib.mkIf cfg.ngrams.enable "${pkgs.Sapana.languagetool-ngrams}/share/languagetool/ngrams";
(pkgs.callPackage ../../packages/languagetool-ngrams.nix { inherit pkgs lib; })
}/share/languagetool/ngrams";
}; };
# Create Nginx virtualhost # Create Nginx virtualhost
nginx.virtualHosts."${cfg.url}" = { nginx.virtualHosts."${cfg.url}" = {
useACMEHost = pkgs.util.getDomainFromURI cfg.url; useACMEHost = lib.Sapana.getDomainFromURI cfg.url;
forceSSL = true; forceSSL = true;
basicAuth = { basicAuth = {
"${cfg.auth.user}" = cfg.auth.password; "${cfg.auth.user}" = cfg.auth.password;

View file

@ -50,7 +50,7 @@ in
(lib.mkIf (cfg.enable && cfg.type == "parent") { (lib.mkIf (cfg.enable && cfg.type == "parent") {
services = { services = {
nginx.virtualHosts."${cfg.url}" = { nginx.virtualHosts."${cfg.url}" = {
useACMEHost = pkgs.util.getDomainFromURI cfg.url; useACMEHost = lib.Sapana.getDomainFromURI cfg.url;
forceSSL = true; forceSSL = true;
basicAuth = { basicAuth = {
"${cfg.auth.user}" = cfg.auth.password; "${cfg.auth.user}" = cfg.auth.password;

View file

@ -58,7 +58,7 @@ in
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
services = { services = {
nginx.virtualHosts."${cfg.url}" = { nginx.virtualHosts."${cfg.url}" = {
useACMEHost = pkgs.util.getDomainFromURI cfg.url; useACMEHost = lib.Sapana.getDomainFromURI cfg.url;
forceSSL = true; forceSSL = true;
locations."/" = { locations."/" = {
proxyPass = "http://127.0.0.1:${cfg.port}"; proxyPass = "http://127.0.0.1:${cfg.port}";

View file

@ -56,7 +56,7 @@ in
}; };
nginx.virtualHosts."${cfg.url}" = { nginx.virtualHosts."${cfg.url}" = {
useACMEHost = pkgs.util.getDomainFromURI cfg.url; useACMEHost = lib.Sapana.getDomainFromURI cfg.url;
forceSSL = true; forceSSL = true;
}; };
}; };

View file

@ -0,0 +1,109 @@
# Enables AMD GPU support.
{
pkgs,
config,
lib,
...
}:
let
cfg = config.aux.system.gpu;
in
{
options = {
aux.system.gpu = {
amd.enable = lib.mkEnableOption "Enables AMD GPU support.";
intel.enable = lib.mkEnableOption "Enables Intel GPU support.";
nvidia = {
enable = lib.mkEnableOption "Enables Nvidia GPU support.";
hybrid = {
enable = lib.mkEnableOption "Enables hybrid GPU support.";
sync = lib.mkEnableOption "Enables sync mode for faster performance at the cost of higher battery usage.";
busIDs = {
nvidia = lib.mkOption {
description = "The bus ID for your Nvidia GPU.";
type = lib.types.str;
example = "PCI:0:2:0";
default = "";
};
intel = lib.mkOption {
description = "The bus ID for your integrated Intel GPU. If you don't have an Intel GPU, you can leave this blank.";
type = lib.types.str;
example = "PCI:14:0:0";
default = "";
};
amd = lib.mkOption {
description = "The bus ID for your integrated AMD GPU. If you don't have an AMD GPU, you can leave this blank.";
type = lib.types.str;
example = "PCI:54:0:0";
default = "";
};
};
};
};
};
};
config = lib.mkMerge [
(lib.mkIf cfg.amd.enable {
boot.initrd.kernelModules = [ "amdgpu" ];
services.xserver.videoDrivers = [ "amdgpu" ];
hardware.graphics = {
enable = true;
# 32-bit application compatibility
enable32Bit = true;
};
})
(lib.mkIf cfg.intel.enable {
services.xserver.videoDrivers = [ "intel" ];
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver
vpl-gpu-rt
];
extraPackages32 = with pkgs.driversi686Linux; [
intel-media-driver
vpl-gpu-rt
];
};
})
(lib.mkIf cfg.nvidia.enable {
assertions = [
{
assertion = (cfg.nvidia.hybrid.busIDs.nvidia != "");
message = "You need to define a bus ID for your Nvidia GPU. To learn how to find the bus ID, see https://wiki.nixos.org/wiki/Nvidia#Configuring_Optimus_PRIME:_Bus_ID_Values_.28Mandatory.29.";
}
{
assertion = (cfg.nvidia.hybrid.busIDs.intel != "" || cfg.nvidia.hybrid.busIDs.amd != "");
message = "You need to define a bus ID for your non-Nvidia GPU. To learn how to find your bus ID, see https://wiki.nixos.org/wiki/Nvidia#Configuring_Optimus_PRIME:_Bus_ID_Values_.28Mandatory.29.";
}
];
services.xserver.videoDrivers = lib.mkDefault [ "nvidia" ];
hardware = {
opengl.extraPackages = with pkgs; [ vaapiVdpau ];
nvidia = {
modesetting.enable = true;
nvidiaSettings = config.aux.system.ui.desktops.enable;
package = config.boot.kernelPackages.nvidiaPackages.stable;
prime = lib.mkIf cfg.nvidia.hybrid.enable {
offload = lib.mkIf (!cfg.nvidia.hybrid.sync) {
enable = true;
enableOffloadCmd = true; # Provides `nvidia-offload` command.
};
sync.enable = cfg.nvidia.hybrid.sync;
nvidiaBusId = cfg.nvidia.hybrid.busIDs.nvidia;
intelBusId = cfg.nvidia.hybrid.busIDs.intel;
amdgpuBusId = cfg.nvidia.hybrid.busIDs.amd;
};
};
};
})
];
}

View file

@ -11,13 +11,12 @@ let
cfg = config.aux.system; cfg = config.aux.system;
nixos-operations-script = pkgs.writeShellScriptBin "nixos-operations-script" ( nixos-operations-script = pkgs.writeShellScriptBin "nixos-operations-script" (
builtins.readFile ../../bin/nixos-operations-script.sh builtins.readFile ../../../../bin/nixos-operations-script.sh
); );
in in
{ {
options = { options = {
aux.system = { aux.system = {
allowUnfree = lib.mkEnableOption "Allow unfree packages to install.";
retentionPeriod = lib.mkOption { retentionPeriod = lib.mkOption {
description = "How long to retain NixOS generations. Defaults to one month."; description = "How long to retain NixOS generations. Defaults to one month.";
type = lib.types.str; type = lib.types.str;
@ -28,7 +27,6 @@ in
}; };
config = lib.mkMerge [ config = lib.mkMerge [
{ {
nixpkgs.config.allowUnfree = cfg.allowUnfree;
nix = { nix = {
extraOptions = '' extraOptions = ''
# Ensure we can still build when secondary caches are unavailable # Ensure we can still build when secondary caches are unavailable

View file

Before

Width:  |  Height:  |  Size: 853 KiB

After

Width:  |  Height:  |  Size: 853 KiB

View file

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 189 KiB

File diff suppressed because it is too large Load diff

View file

@ -1,112 +0,0 @@
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

View file

@ -1,26 +0,0 @@
# Enables AMD GPU support.
{
pkgs,
config,
lib,
...
}:
let
cfg = config.aux.system.gpu.amd;
in
{
options = {
aux.system.gpu.amd.enable = lib.mkEnableOption "Enables AMD GPU support.";
};
config = lib.mkIf cfg.enable {
boot.initrd.kernelModules = [ "amdgpu" ];
services.xserver.videoDrivers = [ "amdgpu" ];
hardware.graphics = {
enable = true;
# 32-bit application compatibility
enable32Bit = true;
};
};
}

View file

@ -1,33 +0,0 @@
# Enables Intel GPU support.
# https://wiki.nixos.org/wiki/Intel_Graphics
# https://nixos.org/manual/nixos/stable/#sec-x11--graphics-cards-intel
{
pkgs,
config,
lib,
...
}:
let
cfg = config.aux.system.gpu.intel;
in
{
options = {
aux.system.gpu.intel.enable = lib.mkEnableOption "Enables Intel GPU support.";
};
config = lib.mkIf cfg.enable {
services.xserver.videoDrivers = [ "intel" ];
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver
vpl-gpu-rt
];
extraPackages32 = with pkgs.driversi686Linux; [
intel-media-driver
vpl-gpu-rt
];
};
};
}

View file

@ -1,80 +0,0 @@
# Enables Nvidia GPU support.
{
pkgs,
config,
lib,
...
}:
let
cfg = config.aux.system.gpu.nvidia;
in
{
options = {
aux.system.gpu.nvidia = {
enable = lib.mkEnableOption "Enables Nvidia GPU support.";
hybrid = {
enable = lib.mkEnableOption "Enables hybrid GPU support.";
sync = lib.mkEnableOption "Enables sync mode for faster performance at the cost of higher battery usage.";
busIDs = {
nvidia = lib.mkOption {
description = "The bus ID for your Nvidia GPU.";
type = lib.types.str;
example = "PCI:0:2:0";
default = "";
};
intel = lib.mkOption {
description = "The bus ID for your integrated Intel GPU. If you don't have an Intel GPU, you can leave this blank.";
type = lib.types.str;
example = "PCI:14:0:0";
default = "";
};
amd = lib.mkOption {
description = "The bus ID for your integrated AMD GPU. If you don't have an AMD GPU, you can leave this blank.";
type = lib.types.str;
example = "PCI:54:0:0";
default = "";
};
};
};
};
};
config = lib.mkIf cfg.enable {
assertions = [
{
assertion = (cfg.hybrid.busIDs.nvidia != "");
message = "You need to define a bus ID for your Nvidia GPU. To learn how to find the bus ID, see https://wiki.nixos.org/wiki/Nvidia#Configuring_Optimus_PRIME:_Bus_ID_Values_.28Mandatory.29.";
}
{
assertion = (cfg.hybrid.busIDs.intel != "" || cfg.hybrid.busIDs.amd != "");
message = "You need to define a bus ID for your non-Nvidia GPU. To learn how to find your bus ID, see https://wiki.nixos.org/wiki/Nvidia#Configuring_Optimus_PRIME:_Bus_ID_Values_.28Mandatory.29.";
}
];
aux.system.allowUnfree = true;
services.xserver.videoDrivers = lib.mkDefault [ "nvidia" ];
hardware = {
opengl.extraPackages = with pkgs; [ vaapiVdpau ];
nvidia = {
modesetting.enable = true;
nvidiaSettings = config.aux.system.ui.desktops.enable;
package = config.boot.kernelPackages.nvidiaPackages.stable;
prime = lib.mkIf cfg.hybrid.enable {
offload = lib.mkIf (!cfg.hybrid.sync) {
enable = true;
enableOffloadCmd = true; # Provides `nvidia-offload` command.
};
sync.enable = cfg.hybrid.sync;
nvidiaBusId = cfg.hybrid.busIDs.nvidia;
intelBusId = cfg.hybrid.busIDs.intel;
amdgpuBusId = cfg.hybrid.busIDs.amd;
};
};
};
};
}

View file

@ -1,25 +0,0 @@
# Utility and helper functions
{
lib,
...
}:
{
nixpkgs.overlays = [
(final: _prev: {
# Define custom functions using 'pkgs.util'
util = {
# Parses the domain from a URI
getDomainFromURI =
url:
let
parsedURL = (lib.strings.splitString "." url);
in
builtins.concatStringsSep "." [
(builtins.elemAt parsedURL 1)
(builtins.elemAt parsedURL 2)
];
};
})
];
}

View file

@ -0,0 +1,10 @@
{ channels, inputs, ... }:
final: prev:
{
unstable = import inputs.nixpkgs-unstable {
system = final.system;
config.allowUnfree = true;
};
}

View file

@ -6,7 +6,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ pkgs.unzip ]; nativeBuildInputs = [ pkgs.unzip ];
buildInputs = [ pkgs.unzip ]; buildInputs = [ pkgs.unzip ];
src = ../modules/secrets/Freight-20240828T164047Z-001.zip; src = ../../modules/nixos/secrets/Freight-20240828T164047Z-001.zip;
unpackPhase = '' unpackPhase = ''
runHook preUnpack runHook preUnpack

View file

@ -93,11 +93,6 @@ in
# Configure the system. # Configure the system.
aux.system = { aux.system = {
# Enable to allow unfree (e.g. closed source) packages.
# Some settings may override this (e.g. enabling Nvidia GPU support).
# https://nixos.org/manual/nixpkgs/stable/#sec-allow-unfree
allowUnfree = true;
# Enable Secure Boot support. # Enable Secure Boot support.
bootloader = { bootloader = {
enable = true; enable = true;

View file

@ -14,11 +14,6 @@ in
###*** Configure your system below this line. ***### ###*** Configure your system below this line. ***###
# Configure the system. # Configure the system.
aux.system = { aux.system = {
# Enable to allow unfree (e.g. closed source) packages.
# Some settings may override this (e.g. enabling Nvidia GPU support).
# https://nixos.org/manual/nixpkgs/stable/#sec-allow-unfree
allowUnfree = true;
apps = { apps = {
development.enable = true; development.enable = true;
media.enable = true; media.enable = true;

View file

@ -19,9 +19,11 @@ in
aux.system = { aux.system = {
apps = { apps = {
development.enable = true; development.enable = true;
dj.enable = true;
gaming.enable = true; gaming.enable = true;
media.enable = true; media = {
enable = true;
mixxx.enable = true;
};
office.enable = true; office.enable = true;
recording.enable = true; recording.enable = true;
social.enable = true; social.enable = true;