Compare commits
38 Commits
fix-odysse
...
f9cf5758e3
Author | SHA1 | Date | |
---|---|---|---|
f9cf5758e3
|
|||
f0e0cf2772
|
|||
cad9ab738d
|
|||
88c3e1305c
|
|||
3f8c817418
|
|||
0d015ac418
|
|||
8380969c95
|
|||
9c97905bb6
|
|||
f6b9fb1429
|
|||
7e591ee7d5
|
|||
8ddc5c9269
|
|||
91103dc0e7
|
|||
1c2ca078c8
|
|||
f98d1d546f
|
|||
55cf784f56
|
|||
5c591c0a06
|
|||
1aab626f17
|
|||
bbf835d127
|
|||
16a1e0dd7f
|
|||
c8d0c08ada
|
|||
6cd398b9f7
|
|||
9af6782311
|
|||
65a55e1695
|
|||
ecef5d13a7
|
|||
9794d5eb0c
|
|||
8562ccd5fc
|
|||
b3ef72d975
|
|||
cf40b4d4d3
|
|||
f64ed2bb24
|
|||
f9b577f559
|
|||
b3882912ec
|
|||
d78db40991
|
|||
07362a0c81
|
|||
7865add65e
|
|||
9471a92387
|
|||
a4f0cabeda
|
|||
f581772723
|
|||
357c3e8c10
|
@ -7,7 +7,7 @@ System and user configuration for NixOS-based systems.
|
|||||||
| **Shell:** | zsh |
|
| **Shell:** | zsh |
|
||||||
| **DE:** | GNOME |
|
| **DE:** | GNOME |
|
||||||
| **Theme:** | adwaita |
|
| **Theme:** | adwaita |
|
||||||
| **Terminal:** | BlackBox |
|
| **Terminal:** | Console |
|
||||||
|
|
||||||
## Quick start
|
## Quick start
|
||||||
1. Copy SSH keypair and `known_hosts` to `~/.ssh`
|
1. Copy SSH keypair and `known_hosts` to `~/.ssh`
|
||||||
|
112
flake.lock
generated
112
flake.lock
generated
@ -1,13 +1,55 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"agenix": {
|
||||||
|
"inputs": {
|
||||||
|
"darwin": "darwin",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1701216516,
|
||||||
|
"narHash": "sha256-jKSeJn+7hZ1dZdiH1L+NWUGT2i/BGomKAJ54B9kT06Q=",
|
||||||
|
"owner": "ryantm",
|
||||||
|
"repo": "agenix",
|
||||||
|
"rev": "13ac9ac6d68b9a0896e3d43a082947233189e247",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ryantm",
|
||||||
|
"repo": "agenix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"darwin": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"agenix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1673295039,
|
||||||
|
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
|
||||||
|
"owner": "lnl7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "lnl7",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"firefox-gnome-theme": {
|
"firefox-gnome-theme": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1699621711,
|
"lastModified": 1702138393,
|
||||||
"narHash": "sha256-GUvBQbagF/7W1AriPVvJYA1cmk9Y/iWXghj3cIFYQzU=",
|
"narHash": "sha256-2jRm1yzX+gKpSCtdpYt1olIgWVEkJnS7FeK00o9X1ko=",
|
||||||
"owner": "rafaelmardojai",
|
"owner": "rafaelmardojai",
|
||||||
"repo": "firefox-gnome-theme",
|
"repo": "firefox-gnome-theme",
|
||||||
"rev": "1c32013cdbe17406de496cdf5f6899b84c4bbfed",
|
"rev": "d2e6cfdd63651ae8168e5905d94138f406580dd6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -19,55 +61,93 @@
|
|||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"agenix",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1699748081,
|
"lastModified": 1682203081,
|
||||||
"narHash": "sha256-MOmMapBydd7MTjhX4eeQZzKlCABWw8W6iSHSG4OeFKE=",
|
"narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "04bac349d585c9df38d78e0285b780a140dc74a4",
|
"rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-23.05",
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1702195709,
|
||||||
|
"narHash": "sha256-+zRjWkm5rKqQ57PuLZ3JF3xi3vPMiOJzItb1m/43Cq4=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "6761b8188b860f374b457eddfdb05c82eef9752f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "release-23.11",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1700097215,
|
"lastModified": 1677676435,
|
||||||
"narHash": "sha256-ODQ3gBTv1iHd7lG21H+ErVISB5wVeOhd/dEogOqHs/I=",
|
"narHash": "sha256-6FxdcmQr5JeZqsQvfinIMr0XcTyTuR7EXX0H3ANShpQ=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9fb122519e9cd465d532f736a98c1e1eb541ef6f",
|
"rev": "a08d6979dd7c82c4cef0dcc6ac45ab16051c1169",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1702346276,
|
||||||
|
"narHash": "sha256-eAQgwIWApFQ40ipeOjVSoK4TEHVd6nbSd9fApiHIw5A=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "cf28ee258fd5f9a52de6b9865cdb93a1f96d09b7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "nixpkgs",
|
"id": "nixpkgs",
|
||||||
"ref": "nixos-23.05",
|
"ref": "nixos-23.11",
|
||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"agenix": "agenix",
|
||||||
"firefox-gnome-theme": "firefox-gnome-theme",
|
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager_2",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"thunderbird-gnome-theme": "thunderbird-gnome-theme"
|
"thunderbird-gnome-theme": "thunderbird-gnome-theme"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"thunderbird-gnome-theme": {
|
"thunderbird-gnome-theme": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1699285862,
|
"lastModified": 1701889124,
|
||||||
"narHash": "sha256-3TQYBJAeQ2fPFxQnD5iKRKKWFlN3GJhz1EkdwE+4m0k=",
|
"narHash": "sha256-K+6oh7+J6RDBFkxphY/pzf0B+q5+IY54ZMKZrFSKXlc=",
|
||||||
"owner": "rafaelmardojai",
|
"owner": "rafaelmardojai",
|
||||||
"repo": "thunderbird-gnome-theme",
|
"repo": "thunderbird-gnome-theme",
|
||||||
"rev": "a899ca12204d19f4834fbd092aa5bb05dc4bd127",
|
"rev": "966e9dd54bd2ce9d36d51cd6af8c3bac7a764a68",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
107
flake.nix
107
flake.nix
@ -1,10 +1,11 @@
|
|||||||
{
|
{
|
||||||
description = "NixOS/Darwin system configuration";
|
description = "NixOS system configuration";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-23.05";
|
nixpkgs.url = "nixpkgs/nixos-23.11";
|
||||||
|
agenix.url = "github:ryantm/agenix";
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-23.05";
|
url = "github:nix-community/home-manager/release-23.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
firefox-gnome-theme = {
|
firefox-gnome-theme = {
|
||||||
@ -17,67 +18,49 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ { self, nixpkgs, home-manager, ... }:
|
outputs = inputs @ { self, nixpkgs, agenix, home-manager, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib) attrValues;
|
nixpkgsForSystem = system: inputs.nixpkgs;
|
||||||
inherit (lib.my) mapModules mapModulesRec;
|
overlays = [
|
||||||
|
agenix.overlays.default
|
||||||
system = "x86_64-linux";
|
(import ./overlays/gnome.nix)
|
||||||
|
];
|
||||||
mkPkgs = pkgs: extraOverlays:
|
commonModules = [
|
||||||
import pkgs {
|
agenix.nixosModules.age
|
||||||
inherit system;
|
home-manager.nixosModule
|
||||||
config.allowUnfree = true;
|
./modules
|
||||||
overlays = extraOverlays ++ (lib.attrValues self.overlays);
|
];
|
||||||
|
nixosSystem = system: name:
|
||||||
|
let
|
||||||
|
nixpkgs = nixpkgsForSystem system;
|
||||||
|
lib = (import nixpkgs { inherit overlays system; }).lib;
|
||||||
|
in
|
||||||
|
inputs.nixpkgs.lib.nixosSystem {
|
||||||
|
inherit lib system;
|
||||||
|
specialArgs = { modulesPath = toString (nixpkgs + "/nixos/modules"); inherit inputs; };
|
||||||
|
baseModules = import (nixpkgs + "/nixos/modules/module-list.nix");
|
||||||
|
modules = commonModules ++ [
|
||||||
|
({ config, ... }:
|
||||||
|
{
|
||||||
|
nixpkgs.pkgs = import nixpkgs {
|
||||||
|
inherit overlays system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
networking.hostName = name;
|
||||||
|
nix = {
|
||||||
|
extraOptions = "experimental-features = nix-command flakes";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
./hosts/${name}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
pkgs = mkPkgs nixpkgs [];
|
|
||||||
|
|
||||||
lib = nixpkgs.lib.extend (self: super: {
|
|
||||||
my = import ./lib {
|
|
||||||
inherit pkgs inputs;
|
|
||||||
lib = self;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
in {
|
|
||||||
lib = lib.my;
|
|
||||||
|
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
atlas = nixpkgs.lib.nixosSystem {
|
atlas = nixosSystem "x86_64-linux" "atlas";
|
||||||
modules = [
|
eos = nixosSystem "x86_64-linux" "eos";
|
||||||
inputs.home-manager.nixosModules.home-manager
|
helios = nixosSystem "x86_64-linux" "helios";
|
||||||
{ nixpkgs.overlays = [ (import ./overlays/gnome.nix) ]; }
|
odyssey = nixosSystem "x86_64-linux" "odyssey";
|
||||||
(import ./modules)
|
|
||||||
./hosts/atlas
|
|
||||||
];
|
|
||||||
specialArgs = { inherit lib inputs; };
|
|
||||||
};
|
|
||||||
eos = nixpkgs.lib.nixosSystem {
|
|
||||||
modules = [
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
{ nixpkgs.overlays = [ (import ./overlays/gnome.nix) ]; }
|
|
||||||
(import ./modules)
|
|
||||||
./hosts/eos
|
|
||||||
];
|
|
||||||
specialArgs = { inherit lib inputs; };
|
|
||||||
};
|
|
||||||
helios = nixpkgs.lib.nixosSystem {
|
|
||||||
modules = [
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
{ nixpkgs.overlays = [ (import ./overlays/gnome.nix) ]; }
|
|
||||||
(import ./modules)
|
|
||||||
./hosts/helios
|
|
||||||
];
|
|
||||||
specialArgs = { inherit lib inputs; };
|
|
||||||
};
|
|
||||||
odyssey = nixpkgs.lib.nixosSystem {
|
|
||||||
modules = [
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
{ nixpkgs.overlays = [ (import ./overlays/gnome.nix) ]; }
|
|
||||||
(import ./modules)
|
|
||||||
./hosts/odyssey
|
|
||||||
];
|
|
||||||
specialArgs = { inherit lib inputs; };
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
in
|
||||||
|
{ inherit nixosConfigurations; };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib.my;
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
@ -1,70 +1,66 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = [
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
boot = {
|
||||||
boot.initrd.kernelModules = [ ];
|
initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
boot.initrd.supportedFilesystems = [ "zfs" ];
|
initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
initrd.supportedFilesystems = [ "zfs" ];
|
||||||
boot.kernelParams = [ "elevator=none" ];
|
kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
kernelParams = [ "elevator=none" ];
|
||||||
boot.supportedFilesystems = [ "zfs" ];
|
extraModulePackages = [ ];
|
||||||
|
supportedFilesystems = [ "zfs" ];
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "rpool/system/root";
|
device = "rpool/system/root";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home" =
|
fileSystems."/home" = {
|
||||||
{ device = "rpool/user/home";
|
device = "rpool/user/home";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/nix" =
|
fileSystems."/nix" = {
|
||||||
{ device = "rpool/local/nix";
|
device = "rpool/local/nix";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/tmp" =
|
fileSystems."/tmp" = {
|
||||||
{ device = "rpool/local/tmp";
|
device = "rpool/local/tmp";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var" =
|
fileSystems."/var" = {
|
||||||
{ device = "rpool/system/var";
|
device = "rpool/system/var";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var/log" =
|
fileSystems."/var/log" = {
|
||||||
{ device = "rpool/system/var/log";
|
device = "rpool/system/var/log";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var/tmp" =
|
fileSystems."/var/tmp" = {
|
||||||
{ device = "rpool/system/var/tmp";
|
device = "rpool/system/var/tmp";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/disk/by-uuid/00B2-0384";
|
device = "/dev/disk/by-uuid/00B2-0384";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
# 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
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.enp0s25.useDHCP = lib.mkDefault true;
|
# networking.interfaces.enp0s25.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
{
|
{
|
||||||
time.timeZone = "Europe/London";
|
time.timeZone = "Europe/London";
|
||||||
|
|
||||||
@ -46,20 +44,27 @@ with lib.my;
|
|||||||
neovim
|
neovim
|
||||||
];
|
];
|
||||||
|
|
||||||
nix.settings = {
|
nix = {
|
||||||
connect-timeout = 5;
|
settings = {
|
||||||
log-lines = 25;
|
connect-timeout = 5;
|
||||||
min-free = 128000000;
|
log-lines = 25;
|
||||||
max-free = 1000000000;
|
min-free = 128000000;
|
||||||
fallback = true;
|
max-free = 1000000000;
|
||||||
auto-optimise-store = true;
|
fallback = true;
|
||||||
substituters = [
|
auto-optimise-store = true;
|
||||||
"http://odyssey.mesh.vimium.net"
|
substituters = [
|
||||||
"https://cache.nixos.org"
|
"http://odyssey.mesh.vimium.net"
|
||||||
];
|
"https://cache.nixos.org"
|
||||||
trusted-public-keys = [
|
];
|
||||||
"odyssey.mesh.vimium.net:ZhQhjscPWjoN4rlZwoMELznEiBnZ9O26iyGA27ibilQ="
|
trusted-public-keys = [
|
||||||
];
|
"odyssey.mesh.vimium.net:ZhQhjscPWjoN4rlZwoMELznEiBnZ9O26iyGA27ibilQ="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "-d --delete-older-than 7d";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
modules.desktop.gnome.enable = true;
|
modules.desktop.gnome.enable = true;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib.my;
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
@ -1,71 +1,65 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = [
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "ehci_pci" "ahci" "usb_storage" "sd_mod" "sdhci_pci" ];
|
boot = {
|
||||||
boot.initrd.kernelModules = [ ];
|
initrd.availableKernelModules = [ "ehci_pci" "ahci" "usb_storage" "sd_mod" "sdhci_pci" ];
|
||||||
boot.initrd.supportedFilesystems = [ "zfs" ];
|
initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ ];
|
initrd.supportedFilesystems = [ "zfs" ];
|
||||||
boot.kernelParams = [ "elevator=none" ];
|
kernelModules = [ ];
|
||||||
boot.extraModulePackages = [ ];
|
kernelParams = [ "elevator=none" ];
|
||||||
boot.supportedFilesystems = [ "zfs" ];
|
extraModulePackages = [ ];
|
||||||
|
supportedFilesystems = [ "zfs" ];
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "rpool/system/root";
|
device = "rpool/system/root";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home" =
|
fileSystems."/home" = {
|
||||||
{ device = "rpool/user/home";
|
device = "rpool/user/home";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/nix" =
|
fileSystems."/nix" = {
|
||||||
{ device = "rpool/local/nix";
|
device = "rpool/local/nix";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/tmp" =
|
fileSystems."/tmp" = {
|
||||||
{ device = "rpool/local/tmp";
|
device = "rpool/local/tmp";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var" =
|
fileSystems."/var" = {
|
||||||
{ device = "rpool/system/var";
|
device = "rpool/system/var";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var/log" =
|
fileSystems."/var/log" = {
|
||||||
{ device = "rpool/system/var/log";
|
device = "rpool/system/var/log";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var/tmp" =
|
fileSystems."/var/tmp" = {
|
||||||
{ device = "rpool/system/var/tmp";
|
device = "rpool/system/var/tmp";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/disk/by-uuid/28E6-5509";
|
device = "/dev/disk/by-uuid/28E6-5509";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
# 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
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.enp0s25.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib.my;
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
@ -1,65 +1,61 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = [
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sr_mod" "zfs" ];
|
boot = {
|
||||||
boot.initrd.kernelModules = [ ];
|
initrd.availableKernelModules = [ "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sr_mod" "zfs" ];
|
||||||
boot.initrd.supportedFilesystems = [ "zfs" ];
|
initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
initrd.supportedFilesystems = [ "zfs" ];
|
||||||
boot.kernelParams = [ "elevator=none" ];
|
kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
kernelParams = [ "elevator=none" ];
|
||||||
boot.supportedFilesystems = [ "zfs" ];
|
extraModulePackages = [ ];
|
||||||
|
supportedFilesystems = [ "zfs" ];
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "rpool/system/root";
|
device = "rpool/system/root";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home" =
|
fileSystems."/home" = {
|
||||||
{ device = "rpool/user/home";
|
device = "rpool/user/home";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/nix" =
|
fileSystems."/nix" = {
|
||||||
{ device = "rpool/local/nix";
|
device = "rpool/local/nix";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/tmp" =
|
fileSystems."/tmp" = {
|
||||||
{ device = "rpool/local/tmp";
|
device = "rpool/local/tmp";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var/log" =
|
fileSystems."/var/log" = {
|
||||||
{ device = "rpool/system/var/log";
|
device = "rpool/system/var/log";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var/tmp" =
|
fileSystems."/var/tmp" = {
|
||||||
{ device = "rpool/system/var/tmp";
|
device = "rpool/system/var/tmp";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/sda1";
|
device = "/dev/sda1";
|
||||||
fsType = "ext2";
|
fsType = "ext2";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
# 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
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From c16be6b3b4da5a55e3ff4258ada123b5f03757e5 Mon Sep 17 00:00:00 2001
|
From daebf42bd955f6f8d971af967c675e4e339cb0b2 Mon Sep 17 00:00:00 2001
|
||||||
From: Jordan Holt <jordan@vimium.com>
|
From: Jordan Holt <jordan@vimium.com>
|
||||||
Date: Sun, 12 Nov 2023 12:13:39 +0000
|
Date: Sun, 12 Nov 2023 12:13:39 +0000
|
||||||
Subject: [PATCH] Update device ID for PreSonus 1824c
|
Subject: [PATCH] Update device ID for PreSonus 1824c
|
||||||
@ -6,8 +6,9 @@ Subject: [PATCH] Update device ID for PreSonus 1824c
|
|||||||
---
|
---
|
||||||
sound/usb/format.c | 4 ++--
|
sound/usb/format.c | 4 ++--
|
||||||
sound/usb/mixer_quirks.c | 2 +-
|
sound/usb/mixer_quirks.c | 2 +-
|
||||||
|
sound/usb/mixer_s1810c.c | 2 +-
|
||||||
sound/usb/quirks.c | 4 ++--
|
sound/usb/quirks.c | 4 ++--
|
||||||
3 files changed, 5 insertions(+), 5 deletions(-)
|
4 files changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
diff --git a/sound/usb/format.c b/sound/usb/format.c
|
diff --git a/sound/usb/format.c b/sound/usb/format.c
|
||||||
index ab5fed9f55b6..da50a4782414 100644
|
index ab5fed9f55b6..da50a4782414 100644
|
||||||
@ -37,6 +38,19 @@ index 898bc3baca7b..c3135459c38c 100644
|
|||||||
err = snd_sc1810_init_mixer(mixer);
|
err = snd_sc1810_init_mixer(mixer);
|
||||||
break;
|
break;
|
||||||
case USB_ID(0x2a39, 0x3fb0): /* RME Babyface Pro FS */
|
case USB_ID(0x2a39, 0x3fb0): /* RME Babyface Pro FS */
|
||||||
|
diff --git a/sound/usb/mixer_s1810c.c b/sound/usb/mixer_s1810c.c
|
||||||
|
index fac4bbc6b275..5bc2e66d452c 100644
|
||||||
|
--- a/sound/usb/mixer_s1810c.c
|
||||||
|
+++ b/sound/usb/mixer_s1810c.c
|
||||||
|
@@ -552,7 +552,7 @@ int snd_sc1810_init_mixer(struct usb_mixer_interface *mixer)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
dev_info(&dev->dev,
|
||||||
|
- "Presonus Studio 1810c, device_setup: %u\n", chip->setup);
|
||||||
|
+ "Presonus Studio 1824c, device_setup: %u\n", chip->setup);
|
||||||
|
if (chip->setup == 1)
|
||||||
|
dev_info(&dev->dev, "(8out/18in @ 48kHz)\n");
|
||||||
|
else if (chip->setup == 2)
|
||||||
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
|
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
|
||||||
index ab2b938502eb..b86832edaaa0 100644
|
index ab2b938502eb..b86832edaaa0 100644
|
||||||
--- a/sound/usb/quirks.c
|
--- a/sound/usb/quirks.c
|
||||||
@ -53,5 +67,5 @@ index ab2b938502eb..b86832edaaa0 100644
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
2.40.1
|
2.42.0
|
||||||
|
|
||||||
|
45
hosts/odyssey/audio.nix
Normal file
45
hosts/odyssey/audio.nix
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
let
|
||||||
|
snd-usb-audio-module = pkgs.callPackage ./snd-usb-audio.nix {
|
||||||
|
kernel = config.boot.kernelPackages.kernel;
|
||||||
|
};
|
||||||
|
upmixConfig = ''
|
||||||
|
stream.properties = {
|
||||||
|
channelmix.upmix = true
|
||||||
|
channelmix.upmix-method = psd
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
boot.extraModulePackages = [
|
||||||
|
(snd-usb-audio-module.overrideAttrs (_: {
|
||||||
|
patches = [ ./0001-Update-device-ID-for-PreSonus-1824c.patch ];
|
||||||
|
}))
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.etc = {
|
||||||
|
"pipewire/pipewire.conf.d/surround.conf".text = ''
|
||||||
|
context.modules = [
|
||||||
|
{
|
||||||
|
name = libpipewire-module-loopback
|
||||||
|
args = {
|
||||||
|
node.description = "Genelec 4.1 Surround"
|
||||||
|
capture.props = {
|
||||||
|
node.name = "Genelec_Speakers"
|
||||||
|
media.class = "Audio/Sink"
|
||||||
|
audio.position = [ FL FR SL SR LFE ]
|
||||||
|
}
|
||||||
|
playback.props = {
|
||||||
|
node.name = "playback.Genelec_Speakers"
|
||||||
|
audio.position = [ AUX0 AUX1 AUX3 AUX4 AUX5 ]
|
||||||
|
target.object = "alsa_output.usb-PreSonus_Studio_1824c_SC4E21110775-00.multichannel-output"
|
||||||
|
stream.dont-remix = true
|
||||||
|
node.passive = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
'';
|
||||||
|
"pipewire/pipewire-pulse.conf.d/40-upmix.conf".text = upmixConfig;
|
||||||
|
"pipewire/client-rt.conf.d/40-upmix.conf".text = upmixConfig;
|
||||||
|
};
|
||||||
|
}
|
@ -1,9 +1,9 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib.my;
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
./audio.nix
|
||||||
../desktop.nix
|
../desktop.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -16,43 +16,25 @@ with lib.my;
|
|||||||
|
|
||||||
networking.hostName = "odyssey";
|
networking.hostName = "odyssey";
|
||||||
networking.hostId = "c5e68d78";
|
networking.hostId = "c5e68d78";
|
||||||
|
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
environment.etc."pipewire/pipewire.conf.d/surround.conf".text = ''
|
|
||||||
context.modules = [
|
|
||||||
{
|
|
||||||
name = libpipewire-module-loopback
|
|
||||||
args = {
|
|
||||||
node.description = "1824c Surround"
|
|
||||||
capture.props = {
|
|
||||||
node.name = "1824c_Speakers"
|
|
||||||
media.class = "Audio/Sink"
|
|
||||||
audio.position = [ FL FR FC SL SR LFE ]
|
|
||||||
}
|
|
||||||
playback.props = {
|
|
||||||
node.name = "playback.1824c_Speakers"
|
|
||||||
audio.position = [ AUX0 AUX1 AUX2 AUX3 AUX4 AUX5 ]
|
|
||||||
target.object = "alsa_output.usb-PreSonus_Studio_1824c_SC4E21110775-00.multichannel-output"
|
|
||||||
stream.dont-remix = true
|
|
||||||
node.passive = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
'';
|
|
||||||
|
|
||||||
nix.package = pkgs.nixFlakes;
|
nix.package = pkgs.nixFlakes;
|
||||||
nix.extraOptions = ''
|
nix.extraOptions = ''
|
||||||
experimental-features = nix-command flakes
|
experimental-features = nix-command flakes
|
||||||
'';
|
'';
|
||||||
|
|
||||||
virtualisation.libvirtd.enable = true;
|
virtualisation.libvirtd.enable = true;
|
||||||
|
virtualisation.lxd.enable = true;
|
||||||
|
|
||||||
users.defaultUserShell = pkgs.zsh;
|
users.defaultUserShell = pkgs.zsh;
|
||||||
|
|
||||||
system.stateVersion = "22.11";
|
system.stateVersion = "22.11";
|
||||||
|
|
||||||
|
services.journald.extraConfig = ''
|
||||||
|
SystemMaxUse=4G
|
||||||
|
MaxRetentionSec=90day
|
||||||
|
'';
|
||||||
|
|
||||||
services.nix-serve = {
|
services.nix-serve = {
|
||||||
enable = true;
|
enable = true;
|
||||||
secretKeyFile = "/var/cache-priv-key.pem";
|
secretKeyFile = "/var/cache-priv-key.pem";
|
||||||
@ -68,6 +50,34 @@ with lib.my;
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
age.secrets."odyssey_borg_passphrase" = {
|
||||||
|
file = ../../secrets/odyssey_borg_passphrase.age;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.borgmatic = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
source_directories = [
|
||||||
|
"/home/jordan/Documents"
|
||||||
|
];
|
||||||
|
repositories = [
|
||||||
|
{ label = "borgbase"; path = "ssh://iqwu22oq@iqwu22oq.repo.borgbase.com/./repo"; }
|
||||||
|
];
|
||||||
|
storage = {
|
||||||
|
encryption_passcommand = "cat ${config.age.secrets.odyssey_borg_passphrase.path}";
|
||||||
|
ssh_command = "ssh -i /etc/ssh/ssh_host_ed25519_key";
|
||||||
|
};
|
||||||
|
retention = {
|
||||||
|
keep_daily = 7;
|
||||||
|
keep_weekly = 4;
|
||||||
|
keep_monthly = 6;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Without this override, `cat` is unavailable for `encryption_passcommand`
|
||||||
|
systemd.services.borgmatic.confinement.fullUnit = true;
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
desktop = {
|
desktop = {
|
||||||
apps.qbittorrent.enable = true;
|
apps.qbittorrent.enable = true;
|
||||||
@ -89,6 +99,7 @@ with lib.my;
|
|||||||
};
|
};
|
||||||
editors = {
|
editors = {
|
||||||
neovim.enable = true;
|
neovim.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
};
|
};
|
||||||
security = {
|
security = {
|
||||||
gpg.enable = true;
|
gpg.enable = true;
|
||||||
|
@ -1,78 +1,68 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
let
|
{
|
||||||
snd-usb-audio-module = pkgs.callPackage ./snd-usb-audio.nix {
|
imports = [
|
||||||
kernel = config.boot.kernelPackages.kernel;
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
};
|
|
||||||
in {
|
|
||||||
imports =
|
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
|
||||||
boot.extraModulePackages = [
|
|
||||||
(snd-usb-audio-module.overrideAttrs (_: {
|
|
||||||
patches = [ ./0001-Update-device-ID-for-PreSonus-1824c.patch ];
|
|
||||||
}))
|
|
||||||
];
|
];
|
||||||
boot.supportedFilesystems = [ "ntfs" ];
|
|
||||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
|
||||||
|
|
||||||
hardware.nvidia = {
|
boot = {
|
||||||
modesetting.enable = true;
|
initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
powerManagement.enable = true;
|
initrd.kernelModules = [ ];
|
||||||
|
initrd.supportedFilesystems = [ "zfs" ];
|
||||||
|
kernelModules = [ "kvm-intel" ];
|
||||||
|
kernelPackages = pkgs.linuxPackages;
|
||||||
|
supportedFilesystems = [ "ntfs" ];
|
||||||
|
binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
nvidia = {
|
||||||
|
modesetting.enable = true;
|
||||||
|
powerManagement.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
services.xserver.videoDrivers = [ "nvidia" ];
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "rpool/system/root";
|
device = "rpool/system/root";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home" =
|
fileSystems."/home" = {
|
||||||
{ device = "rpool/user/home";
|
device = "rpool/user/home";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var" =
|
fileSystems."/var" = {
|
||||||
{ device = "rpool/system/var";
|
device = "rpool/system/var";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/tmp" =
|
fileSystems."/tmp" = {
|
||||||
{ device = "rpool/local/tmp";
|
device = "rpool/local/tmp";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var/log" =
|
fileSystems."/var/log" = {
|
||||||
{ device = "rpool/system/var/log";
|
device = "rpool/system/var/log";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var/tmp" =
|
fileSystems."/var/tmp" = {
|
||||||
{ device = "rpool/system/var/tmp";
|
device = "rpool/system/var/tmp";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/disk/by-uuid/E63E-8E75";
|
device = "/dev/disk/by-uuid/E63E-8E75";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
# 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
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
{
|
{
|
||||||
time.timeZone = "Europe/London";
|
time.timeZone = "Europe/London";
|
||||||
|
|
||||||
@ -34,6 +32,17 @@ with lib.my;
|
|||||||
neovim
|
neovim
|
||||||
];
|
];
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
settings = {
|
||||||
|
auto-optimise-store = true;
|
||||||
|
};
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "-d --delete-older-than 7d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
modules.networking.tailscale = {
|
modules.networking.tailscale = {
|
||||||
enable = true;
|
enable = true;
|
||||||
restrictSSH = false;
|
restrictSSH = false;
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
with builtins;
|
|
||||||
with lib;
|
|
||||||
rec {
|
|
||||||
# attrsToList
|
|
||||||
attrsToList = attrs:
|
|
||||||
mapAttrsToList (name: value: { inherit name value; }) attrs;
|
|
||||||
|
|
||||||
# mapFilterAttrs ::
|
|
||||||
# (name -> value -> bool)
|
|
||||||
# (name -> value -> { name = any; value = any; })
|
|
||||||
# attrs
|
|
||||||
mapFilterAttrs = pred: f: attrs: filterAttrs pred (mapAttrs' f attrs);
|
|
||||||
|
|
||||||
# Generate an attribute set by mapping a function over a list of values.
|
|
||||||
genAttrs' = values: f: listToAttrs (map f values);
|
|
||||||
|
|
||||||
# anyAttrs :: (name -> value -> bool) attrs
|
|
||||||
anyAttrs = pred: attrs:
|
|
||||||
any (attr: pred attr.name attr.value) (attrsToList attrs);
|
|
||||||
|
|
||||||
# countAttrs :: (name -> value -> bool) attrs
|
|
||||||
countAttrs = pred: attrs:
|
|
||||||
count (attr: pred attr.name attr.value) (attrsToList attrs);
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
|
|
||||||
{ inputs, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (lib) makeExtensible attrValues foldr;
|
|
||||||
inherit (modules) mapModules;
|
|
||||||
|
|
||||||
modules = import ./modules.nix {
|
|
||||||
inherit lib;
|
|
||||||
self.attrs = import ./attrs.nix { inherit lib; self = {}; };
|
|
||||||
};
|
|
||||||
|
|
||||||
mylib = makeExtensible (self:
|
|
||||||
with self; mapModules ./.
|
|
||||||
(file: import file { inherit self lib pkgs inputs; }));
|
|
||||||
in
|
|
||||||
mylib.extend
|
|
||||||
(self: super:
|
|
||||||
foldr (a: b: a // b) {} (attrValues super))
|
|
@ -1,53 +0,0 @@
|
|||||||
{ self, lib, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (builtins) attrValues readDir pathExists concatLists;
|
|
||||||
inherit (lib) id mapAttrsToList filterAttrs hasPrefix hasSuffix nameValuePair removeSuffix;
|
|
||||||
inherit (self.attrs) mapFilterAttrs;
|
|
||||||
in
|
|
||||||
rec {
|
|
||||||
mapModules = dir: fn:
|
|
||||||
mapFilterAttrs
|
|
||||||
(n: v:
|
|
||||||
v != null &&
|
|
||||||
!(hasPrefix "_" n))
|
|
||||||
(n: v:
|
|
||||||
let path = "${toString dir}/${n}"; in
|
|
||||||
if v == "directory" && pathExists "${path}/default.nix"
|
|
||||||
then nameValuePair n (fn path)
|
|
||||||
else if v == "regular" &&
|
|
||||||
n != "default.nix" &&
|
|
||||||
hasSuffix ".nix" n
|
|
||||||
then nameValuePair (removeSuffix ".nix" n) (fn path)
|
|
||||||
else nameValuePair "" null)
|
|
||||||
(readDir dir);
|
|
||||||
|
|
||||||
mapModules' = dir: fn:
|
|
||||||
attrValues (mapModules dir fn);
|
|
||||||
|
|
||||||
mapModulesRec = dir: fn:
|
|
||||||
mapFilterAttrs
|
|
||||||
(n: v:
|
|
||||||
v != null &&
|
|
||||||
!(hasPrefix "_" n))
|
|
||||||
(n: v:
|
|
||||||
let path = "${toString dir}/${n}"; in
|
|
||||||
if v == "directory"
|
|
||||||
then nameValuePair n (mapModulesRec path fn)
|
|
||||||
else if v == "regular" && n != "default.nix" && hasSuffix ".nix" n
|
|
||||||
then nameValuePair (removeSuffix ".nix" n) (fn path)
|
|
||||||
else nameValuePair "" null)
|
|
||||||
(readDir dir);
|
|
||||||
|
|
||||||
mapModulesRec' = dir: fn:
|
|
||||||
let
|
|
||||||
dirs =
|
|
||||||
mapAttrsToList
|
|
||||||
(k: _: "${dir}/${k}")
|
|
||||||
(filterAttrs
|
|
||||||
(n: v: v == "directory" && !(hasPrefix "_" n))
|
|
||||||
(readDir dir));
|
|
||||||
files = attrValues (mapModules dir id);
|
|
||||||
paths = files ++ concatLists (map (d: mapModulesRec' d id) dirs);
|
|
||||||
in map fn paths;
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
{ inputs, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let sys = "x86_64-linux";
|
|
||||||
in {
|
|
||||||
mkHost = path: attrs @ { system ? sys, ... }:
|
|
||||||
nixosSystem {
|
|
||||||
inherit system;
|
|
||||||
specialArgs = { inherit lib inputs system; };
|
|
||||||
modules = [
|
|
||||||
{
|
|
||||||
nixpkgs.pkgs = pkgs;
|
|
||||||
networking.hostName = mkDefault (removeSuffix ".nix" (baseNameOf path));
|
|
||||||
}
|
|
||||||
(filterAttrs (n: v: !elem n [ "system" ]) attrs)
|
|
||||||
../. # /default.nix
|
|
||||||
(import path)
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
mapHosts = dir: attrs @ { system ? system, ... }:
|
|
||||||
mapModules dir
|
|
||||||
(hostPath: mkHost hostPath attrs);
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (lib) mkOption types;
|
|
||||||
in
|
|
||||||
rec {
|
|
||||||
mkOpt = type: default:
|
|
||||||
mkOption { inherit type default; };
|
|
||||||
|
|
||||||
mkOpt' = type: default: description:
|
|
||||||
mkOption { inherit type default description; };
|
|
||||||
|
|
||||||
mkBoolOpt = default: mkOption {
|
|
||||||
inherit default;
|
|
||||||
type = types.bool;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
mkStringOpt = default: mkOption {
|
|
||||||
inherit default;
|
|
||||||
type = types.lines;
|
|
||||||
example = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
mkListOfStringOpt = default: mkOption {
|
|
||||||
inherit default;
|
|
||||||
type = types.listOf types.lines;
|
|
||||||
example = [ "a" "b" "c" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
mkPath = path:
|
|
||||||
if path != null
|
|
||||||
then toString path
|
|
||||||
else "";
|
|
||||||
}
|
|
@ -1,16 +1,17 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.desktop.apps.qbittorrent;
|
let cfg = config.modules.desktop.apps.qbittorrent;
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.apps.qbittorrent = {
|
options.modules.desktop.apps.qbittorrent = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
qbittorrent
|
qbittorrent
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.desktop.apps.slack;
|
let cfg = config.modules.desktop.apps.slack;
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.apps.slack = {
|
options.modules.desktop.apps.slack = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
slack
|
slack
|
||||||
];
|
];
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
{ config, lib, pkgs, inputs, ... }:
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.desktop.apps.thunderbird;
|
let cfg = config.modules.desktop.apps.thunderbird;
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.apps.thunderbird = {
|
options.modules.desktop.apps.thunderbird = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.file.".thunderbird/Default/chrome/thunderbird-gnome-theme".source = inputs.thunderbird-gnome-theme;
|
home.file.".thunderbird/Default/chrome/thunderbird-gnome-theme".source = inputs.thunderbird-gnome-theme;
|
||||||
|
|
||||||
home.programs.thunderbird = {
|
home.programs.thunderbird = {
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.desktop.apps.zoom;
|
let cfg = config.modules.desktop.apps.zoom;
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.apps.zoom = {
|
options.modules.desktop.apps.zoom = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
zoom-us
|
zoom-us
|
||||||
];
|
];
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
{ config, lib, pkgs, inputs, ... }:
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.desktop.browsers.firefox;
|
let cfg = config.modules.desktop.browsers.firefox;
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.browsers.firefox = {
|
options.modules.desktop.browsers.firefox = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.file.".mozilla/firefox/Default/chrome/firefox-gnome-theme".source = inputs.firefox-gnome-theme;
|
home.file.".mozilla/firefox/Default/chrome/firefox-gnome-theme".source = inputs.firefox-gnome-theme;
|
||||||
|
|
||||||
home.programs.firefox = {
|
home.programs.firefox = {
|
||||||
@ -26,10 +27,11 @@ in {
|
|||||||
'';
|
'';
|
||||||
settings = {
|
settings = {
|
||||||
## GNOME theme
|
## GNOME theme
|
||||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; # Enable customChrome.cs
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; # Enable customChrome.css
|
||||||
"browser.uidensity" = 0; # Set UI density to normal
|
"browser.uidensity" = 0; # Set UI density to normal
|
||||||
"svg.context-properties.content.enabled" = true; # Enable SVG context-propertes
|
"svg.context-properties.content.enabled" = true; # Enable SVG context-propertes
|
||||||
"browser.theme.dark-private-windows" = false; # Disable private window dark theme
|
"browser.theme.dark-private-windows" = false; # Disable private window dark theme
|
||||||
|
"widget.gtk.rounded-bottom-corners.enabled" = true; # Enable rounded bottom window corners
|
||||||
|
|
||||||
## Preferences
|
## Preferences
|
||||||
"browser.ctrlTab.sortByRecentlyUsed" = true;
|
"browser.ctrlTab.sortByRecentlyUsed" = true;
|
||||||
|
@ -1,34 +1,59 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.desktop.gaming.emulators;
|
let cfg = config.modules.desktop.gaming.emulators;
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.gaming.emulators = {
|
options.modules.desktop.gaming.emulators = {
|
||||||
ds.enable = mkBoolOpt false;
|
ds.enable = lib.mkOption {
|
||||||
gb.enable = mkBoolOpt false;
|
default = false;
|
||||||
gba.enable = mkBoolOpt false;
|
example = true;
|
||||||
gamecube.enable = mkBoolOpt false;
|
};
|
||||||
ps2.enable = mkBoolOpt false;
|
gb.enable = lib.mkOption {
|
||||||
ps3.enable = mkBoolOpt false;
|
default = false;
|
||||||
psp.enable = mkBoolOpt false;
|
example = true;
|
||||||
snes.enable = mkBoolOpt false;
|
};
|
||||||
wii.enable = mkBoolOpt false;
|
gba.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
|
gamecube.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
|
ps2.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
|
ps3.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
|
psp.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
|
snes.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
|
wii.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
(mkIf cfg.ps2.enable pcsx2)
|
(lib.mkIf cfg.ps2.enable pcsx2)
|
||||||
(mkIf cfg.ps3.enable rpcs3)
|
(lib.mkIf cfg.ps3.enable rpcs3)
|
||||||
(mkIf cfg.psp.enable ppsspp)
|
(lib.mkIf cfg.psp.enable ppsspp)
|
||||||
(mkIf cfg.ds.enable desmume)
|
(lib.mkIf cfg.ds.enable desmume)
|
||||||
(mkIf (cfg.gba.enable ||
|
(lib.mkIf (cfg.gba.enable ||
|
||||||
cfg.gb.enable ||
|
cfg.gb.enable ||
|
||||||
cfg.snes.enable)
|
cfg.snes.enable)
|
||||||
higan)
|
higan)
|
||||||
(mkIf (cfg.wii.enable ||
|
(lib.mkIf (cfg.wii.enable ||
|
||||||
cfg.gamecube.enable)
|
cfg.gamecube.enable)
|
||||||
dolphin-emu)
|
dolphin-emu)
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.desktop.gaming.lutris;
|
let cfg = config.modules.desktop.gaming.lutris;
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.gaming.lutris = {
|
options.modules.desktop.gaming.lutris = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
lutris
|
lutris
|
||||||
vulkan-loader
|
vulkan-loader
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.desktop.gaming.steam;
|
let cfg = config.modules.desktop.gaming.steam;
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.gaming.steam = {
|
options.modules.desktop.gaming.steam = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
programs.steam.enable = true;
|
programs.steam.enable = true;
|
||||||
|
|
||||||
systemd.extraConfig = "DefaultLimitNOFILE=1048576";
|
systemd.extraConfig = "DefaultLimitNOFILE=1048576";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.desktop.gnome;
|
let cfg = config.modules.desktop.gnome;
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.gnome = {
|
options.modules.desktop.gnome = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
displayManager.gdm.enable = true;
|
displayManager.gdm.enable = true;
|
||||||
@ -19,11 +20,6 @@ in {
|
|||||||
|
|
||||||
programs.dconf.enable = true;
|
programs.dconf.enable = true;
|
||||||
dconf.settings = {
|
dconf.settings = {
|
||||||
"com/raggesilver/BlackBox" = {
|
|
||||||
theme-dark = "Dracula";
|
|
||||||
font = "Ubuntu Mono 14";
|
|
||||||
remember-window-size = true;
|
|
||||||
};
|
|
||||||
"org/gnome/shell" = {
|
"org/gnome/shell" = {
|
||||||
disable-user-extensions = false;
|
disable-user-extensions = false;
|
||||||
enabled-extensions = [
|
enabled-extensions = [
|
||||||
@ -33,13 +29,14 @@ in {
|
|||||||
# "desktop-cube@schneegans.github.com"
|
# "desktop-cube@schneegans.github.com"
|
||||||
# "desktop-zoom@colin.kinlo.ch"
|
# "desktop-zoom@colin.kinlo.ch"
|
||||||
"espresso@coadmunkee.github.com"
|
"espresso@coadmunkee.github.com"
|
||||||
"flypie@schneegans.github.com"
|
# "flypie@schneegans.github.com"
|
||||||
# "forge@jmmaranan.com"
|
# "forge@jmmaranan.com"
|
||||||
"hue-lights@chlumskyvaclav@gmail.com"
|
"hue-lights@chlumskyvaclav@gmail.com"
|
||||||
"just-perfection-desktop@just-perfection"
|
"just-perfection-desktop@just-perfection"
|
||||||
"paperwm@hedning:matrix.org"
|
# "pano@elhan.io"
|
||||||
|
# "paperwm@hedning:matrix.org"
|
||||||
# "search-light@icedman.github.com"
|
# "search-light@icedman.github.com"
|
||||||
# "space-bar@luchrioh"
|
"space-bar@luchrioh"
|
||||||
# "smart-auto-move@khimaros.com"
|
# "smart-auto-move@khimaros.com"
|
||||||
# "systemd-manager@hardpixel.eu"
|
# "systemd-manager@hardpixel.eu"
|
||||||
# "tailscale-status@maxgallup.github.com"
|
# "tailscale-status@maxgallup.github.com"
|
||||||
@ -50,7 +47,6 @@ in {
|
|||||||
favorite-apps = [
|
favorite-apps = [
|
||||||
"firefox.desktop"
|
"firefox.desktop"
|
||||||
"org.gnome.Nautilus.desktop"
|
"org.gnome.Nautilus.desktop"
|
||||||
"com.raggesilver.BlackBox.desktop"
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"org/gnome/shell/extensions/another-window-session-manager" = {
|
"org/gnome/shell/extensions/another-window-session-manager" = {
|
||||||
@ -103,8 +99,8 @@ in {
|
|||||||
window-gap = 8;
|
window-gap = 8;
|
||||||
};
|
};
|
||||||
"org/gnome/desktop/background" = {
|
"org/gnome/desktop/background" = {
|
||||||
picture-uri = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/adwaita-l.webp";
|
picture-uri = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/adwaita-l.jpg";
|
||||||
picture-uri-dark = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/adwaita-d.webp";
|
picture-uri-dark = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/adwaita-d.jpg";
|
||||||
};
|
};
|
||||||
"org/gtk/settings/file-chooser" = {
|
"org/gtk/settings/file-chooser" = {
|
||||||
show-hidden = true;
|
show-hidden = true;
|
||||||
@ -123,9 +119,6 @@ in {
|
|||||||
"<Shift>F11"
|
"<Shift>F11"
|
||||||
"XF86AudioLowerVolume"
|
"XF86AudioLowerVolume"
|
||||||
];
|
];
|
||||||
screensaver = [
|
|
||||||
"<Shift><Super>l"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
"org/gnome/gnome-session" = {
|
"org/gnome/gnome-session" = {
|
||||||
auto-save-session = true;
|
auto-save-session = true;
|
||||||
@ -154,18 +147,19 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fonts.fonts = with pkgs; [
|
fonts.packages = with pkgs; [
|
||||||
noto-fonts
|
noto-fonts
|
||||||
ubuntu_font_family
|
ubuntu_font_family
|
||||||
];
|
];
|
||||||
|
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
celluloid
|
celluloid
|
||||||
|
fragments
|
||||||
|
mission-center
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
bind
|
bind
|
||||||
blackbox-terminal
|
|
||||||
bmon
|
bmon
|
||||||
fd
|
fd
|
||||||
ffmpeg
|
ffmpeg
|
||||||
@ -184,8 +178,10 @@ in {
|
|||||||
gnomeExtensions.hue-lights
|
gnomeExtensions.hue-lights
|
||||||
gnomeExtensions.just-perfection
|
gnomeExtensions.just-perfection
|
||||||
# gnomeExtensions.mutter-primary-gpu
|
# gnomeExtensions.mutter-primary-gpu
|
||||||
|
gnomeExtensions.pano
|
||||||
gnomeExtensions.paperwm
|
gnomeExtensions.paperwm
|
||||||
# gnomeExtensions.pip-on-top
|
# gnomeExtensions.pip-on-top
|
||||||
|
gnomeExtensions.rounded-window-corners
|
||||||
gnomeExtensions.search-light
|
gnomeExtensions.search-light
|
||||||
gnomeExtensions.smart-auto-move
|
gnomeExtensions.smart-auto-move
|
||||||
gnomeExtensions.space-bar
|
gnomeExtensions.space-bar
|
||||||
|
@ -1,21 +1,28 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.desktop.media.graphics;
|
let cfg = config.modules.desktop.media.graphics;
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.media.graphics = {
|
options.modules.desktop.media.graphics = {
|
||||||
modeling.enable = mkBoolOpt false;
|
modeling.enable = lib.mkOption {
|
||||||
raster.enable = mkBoolOpt false;
|
default = false;
|
||||||
vector.enable = mkBoolOpt false;
|
example = true;
|
||||||
|
};
|
||||||
|
raster.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
|
vector.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
(mkIf cfg.modeling.enable blender)
|
(lib.mkIf cfg.modeling.enable blender)
|
||||||
(mkIf cfg.raster.enable gimp)
|
(lib.mkIf cfg.raster.enable gimp)
|
||||||
(mkIf cfg.raster.enable krita)
|
(lib.mkIf cfg.raster.enable krita)
|
||||||
(mkIf cfg.vector.enable inkscape)
|
(lib.mkIf cfg.vector.enable inkscape)
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,16 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.desktop.media.recording;
|
let cfg = config.modules.desktop.media.recording;
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.media.recording = {
|
options.modules.desktop.media.recording = {
|
||||||
audio.enable = mkBoolOpt false;
|
audio.enable = lib.mkOption {
|
||||||
video.enable = mkBoolOpt false;
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
|
video.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
@ -21,4 +25,4 @@ in {
|
|||||||
obs-studio
|
obs-studio
|
||||||
] else []);
|
] else []);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,18 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let
|
let
|
||||||
cfg = config.modules.desktop.mimeapps;
|
cfg = config.modules.desktop.mimeapps;
|
||||||
avApp = "io.github.celluloid_player.Celluloid.desktop";
|
avApp = "io.github.celluloid_player.Celluloid.desktop";
|
||||||
imageApp = "org.gnome.eog.desktop";
|
imageApp = "org.gnome.eog.desktop";
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.mimeapps = {
|
options.modules.desktop.mimeapps = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
xdg.mime.defaultApplications = {
|
xdg.mime.defaultApplications = {
|
||||||
# Audio/video
|
# Audio/video
|
||||||
"audio/x-vorbis+ogg" = avApp;
|
"audio/x-vorbis+ogg" = avApp;
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.desktop.office.libreoffice;
|
let cfg = config.modules.desktop.office.libreoffice;
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.office.libreoffice = {
|
options.modules.desktop.office.libreoffice = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
libreoffice
|
libreoffice
|
||||||
];
|
];
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.dev.cc;
|
let cfg = config.modules.dev.cc;
|
||||||
in {
|
in {
|
||||||
options.modules.dev.cc = {
|
options.modules.dev.cc = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
clang
|
clang
|
||||||
gcc
|
gcc
|
||||||
@ -17,4 +18,4 @@ in {
|
|||||||
llvmPackages.libcxx
|
llvmPackages.libcxx
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.dev.java;
|
let cfg = config.modules.dev.java;
|
||||||
in {
|
in {
|
||||||
options.modules.dev.java = {
|
options.modules.dev.java = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
jdk
|
jdk
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.dev.lua;
|
let cfg = config.modules.dev.lua;
|
||||||
in {
|
in {
|
||||||
options.modules.dev.lua = {
|
options.modules.dev.lua = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
lua
|
lua
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.dev.node;
|
let cfg = config.modules.dev.node;
|
||||||
in {
|
in {
|
||||||
options.modules.dev.node = {
|
options.modules.dev.node = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
nodejs_latest
|
nodejs_latest
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.dev.python;
|
let cfg = config.modules.dev.python;
|
||||||
in {
|
in {
|
||||||
options.modules.dev.python = {
|
options.modules.dev.python = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
python310
|
python310
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.dev.rust;
|
let cfg = config.modules.dev.rust;
|
||||||
in {
|
in {
|
||||||
options.modules.dev.rust = {
|
options.modules.dev.rust = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
rustc
|
rustc
|
||||||
rustup
|
rustup
|
||||||
@ -16,4 +17,4 @@ in {
|
|||||||
rust-bindgen
|
rust-bindgen
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,19 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.dev.scala;
|
let cfg = config.modules.dev.scala;
|
||||||
in {
|
in {
|
||||||
options.modules.dev.scala = {
|
options.modules.dev.scala = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
jdk
|
jdk
|
||||||
sbt
|
sbt
|
||||||
scala
|
scala
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.dev.shell;
|
let cfg = config.modules.dev.shell;
|
||||||
in {
|
in {
|
||||||
options.modules.dev.shell = {
|
options.modules.dev.shell = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
shellcheck
|
shellcheck
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.dev.zig;
|
let cfg = config.modules.dev.zig;
|
||||||
in {
|
in {
|
||||||
options.modules.dev.zig = {
|
options.modules.dev.zig = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
zig
|
zig
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let
|
let
|
||||||
cfg = config.modules.editors.neovim;
|
cfg = config.modules.editors.neovim;
|
||||||
dev = config.modules.dev;
|
dev = config.modules.dev;
|
||||||
in {
|
in {
|
||||||
options.modules.editors.neovim = {
|
options.modules.editors.neovim = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
(neovim.override {
|
(neovim.override {
|
||||||
configure = {
|
configure = {
|
||||||
|
@ -1,16 +1,49 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.editors.vscode;
|
let cfg = config.modules.editors.vscode;
|
||||||
in {
|
in {
|
||||||
options.modules.editors.vscode = {
|
options.modules.editors.vscode = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
};
|
default = false;
|
||||||
|
example = true;
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.programs.vscode = {
|
|
||||||
enable = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
|
|
||||||
|
home.programs.vscode = {
|
||||||
|
enable = true;
|
||||||
|
extensions = with pkgs.vscode-extensions; [
|
||||||
|
asvetliakov.vscode-neovim
|
||||||
|
brettm12345.nixfmt-vscode
|
||||||
|
coolbear.systemd-unit-file
|
||||||
|
editorconfig.editorconfig
|
||||||
|
golang.go
|
||||||
|
graphql.vscode-graphql-syntax
|
||||||
|
mattn.lisp
|
||||||
|
# mkhl.direnv
|
||||||
|
ms-python.vscode-pylance
|
||||||
|
ms-vscode.cpptools
|
||||||
|
ms-vscode.hexeditor
|
||||||
|
piousdeer.adwaita-theme
|
||||||
|
# redhat.java
|
||||||
|
# sumneko.lua
|
||||||
|
];
|
||||||
|
userSettings = {
|
||||||
|
"editor.renderLineHighlight" = "none";
|
||||||
|
"extensions.experimental.affinity" = {
|
||||||
|
"asvetliakov.vscode-neovim" = 1;
|
||||||
|
};
|
||||||
|
"files.autoSave" = "off";
|
||||||
|
"window.autoDetectColorScheme" = true;
|
||||||
|
"window.commandCenter" = true;
|
||||||
|
"window.titleBarStyle" = "custom";
|
||||||
|
"workbench.iconTheme" = null;
|
||||||
|
"workbench.preferredDarkColorTheme" = "Adwaita Dark";
|
||||||
|
"workbench.preferredLightColorTheme" = "Adwaita Light";
|
||||||
|
"workbench.tree.indent" = 12;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@ -1,15 +1,19 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.networking.tailscale;
|
let cfg = config.modules.networking.tailscale;
|
||||||
in {
|
in {
|
||||||
options.modules.networking.tailscale = {
|
options.modules.networking.tailscale = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
restrictSSH = mkBoolOpt true;
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
|
restrictSSH = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
services.tailscale.enable = true;
|
services.tailscale.enable = true;
|
||||||
services.openssh.openFirewall = !cfg.restrictSSH;
|
services.openssh.openFirewall = !cfg.restrictSSH;
|
||||||
networking.firewall = {
|
networking.firewall = {
|
||||||
|
@ -1,21 +1,20 @@
|
|||||||
{ config, options, lib, home-manager, ... }:
|
{ config, options, lib, home-manager, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
with lib.my;
|
|
||||||
{
|
{
|
||||||
options = with types; {
|
options = with types; {
|
||||||
user = mkOpt attrs { };
|
user = mkOption { type = attrs; default = { }; };
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
configFile = mkOpt' attrs { } "Files to place in $XDG_CONFIG_HOME";
|
configFile = mkOption { type = attrs; default = { }; description = "Files to place in $XDG_CONFIG_HOME"; };
|
||||||
dataFile = mkOpt' attrs { } "Files to place in $XDG_DATA_HOME";
|
dataFile = mkOption { type = attrs; default = { }; description = "Files to place in $XDG_DATA_HOME"; };
|
||||||
file = mkOpt' attrs { } "Files to place directly in $HOME";
|
file = mkOption { type = attrs; default = { }; description = "Files to place directly in $HOME"; };
|
||||||
packages = mkOpt' attrs { } "User-level installed packages";
|
packages = mkOption { type = attrs; default = { }; description = "User-level installed packages"; };
|
||||||
programs = mkOpt' attrs { } "Programs managed directly from home-manager";
|
programs = mkOption { type = attrs; default = { }; description = "Programs managed directly from home-manager"; };
|
||||||
services = mkOpt' attrs { } "Services managed directly from home-manager";
|
services = mkOption { type = attrs; default = { }; description = "Services managed directly from home-manager"; };
|
||||||
};
|
};
|
||||||
|
|
||||||
dconf.settings = mkOpt' attrs { } "dconf settings to enable";
|
dconf.settings = mkOption { type = attrs; default = { }; description = "dconf settings to enable"; };
|
||||||
|
|
||||||
env = mkOption {
|
env = mkOption {
|
||||||
type = attrsOf (oneOf [ str path (listOf (either str path)) ]);
|
type = attrsOf (oneOf [ str path (listOf (either str path)) ]);
|
||||||
@ -36,7 +35,7 @@ with lib.my;
|
|||||||
in {
|
in {
|
||||||
inherit name;
|
inherit name;
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = [ "networkmanager" "wheel" ];
|
extraGroups = [ "networkmanager" "wheel" "lxd" ];
|
||||||
description = "Jordan Holt";
|
description = "Jordan Holt";
|
||||||
useDefaultShell = true;
|
useDefaultShell = true;
|
||||||
openssh.authorizedKeys.keys = [
|
openssh.authorizedKeys.keys = [
|
||||||
@ -69,8 +68,6 @@ with lib.my;
|
|||||||
|
|
||||||
users.users.${config.user.name} = mkAliasDefinitions options.user;
|
users.users.${config.user.name} = mkAliasDefinitions options.user;
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
environment.extraInit =
|
environment.extraInit =
|
||||||
concatStringsSep "\n"
|
concatStringsSep "\n"
|
||||||
(mapAttrsToList (n: v: "export ${n}=\"${v}\"") config.env);
|
(mapAttrsToList (n: v: "export ${n}=\"${v}\"") config.env);
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.security.gpg;
|
let cfg = config.modules.security.gpg;
|
||||||
in {
|
in {
|
||||||
options.modules.security.gpg = {
|
options.modules.security.gpg = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.programs.gpg = {
|
home.programs.gpg = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
@ -18,4 +19,4 @@ in {
|
|||||||
enableSshSupport = true;
|
enableSshSupport = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,18 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.security.pass;
|
let cfg = config.modules.security.pass;
|
||||||
in {
|
in {
|
||||||
options.modules.security.pass = {
|
options.modules.security.pass = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.programs.password-store = {
|
home.programs.password-store = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.pass.withExtensions (exts: [ exts.pass-otp ]);
|
package = pkgs.pass.withExtensions (exts: [ exts.pass-otp ]);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.shell.git;
|
let cfg = config.modules.shell.git;
|
||||||
in {
|
in {
|
||||||
options.modules.shell.git = {
|
options.modules.shell.git = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.programs.git = {
|
home.programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
aliases = {
|
aliases = {
|
||||||
@ -35,4 +36,4 @@ in {
|
|||||||
"git/ignore".source = ./ignore;
|
"git/ignore".source = ./ignore;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
with lib.my;
|
|
||||||
let cfg = config.modules.shell.zsh;
|
let cfg = config.modules.shell.zsh;
|
||||||
in {
|
in {
|
||||||
options.modules.shell.zsh = {
|
options.modules.shell.zsh = {
|
||||||
enable = mkBoolOpt false;
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
users.defaultUserShell = pkgs.zsh;
|
users.defaultUserShell = pkgs.zsh;
|
||||||
|
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
|
@ -3,8 +3,8 @@ self: super:
|
|||||||
gnome = super.gnome.overrideScope' (gself: gsuper: {
|
gnome = super.gnome.overrideScope' (gself: gsuper: {
|
||||||
mutter = gsuper.mutter.overrideAttrs (oldAttrs: {
|
mutter = gsuper.mutter.overrideAttrs (oldAttrs: {
|
||||||
src = super.fetchurl {
|
src = super.fetchurl {
|
||||||
url = "https://gitlab.gnome.org/Community/Ubuntu/mutter/-/archive/triple-buffering-v4-44/mutter-triple-buffering-v4-44.tar.gz";
|
url = "https://gitlab.gnome.org/Community/Ubuntu/mutter/-/archive/triple-buffering-v4-45/mutter-triple-buffering-v4-45.tar.gz";
|
||||||
sha256 = "UhCbdAh5AtYWTi0GX8RmexUAS0nbvISPuErX/8NTdoA=";
|
sha256 = "tN+zQ5brk+hc+louIipqPV/Bqft42ghKOzjZZMj5Q8A=";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
10
secrets.nix
Normal file
10
secrets.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
let
|
||||||
|
jordan = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILVHTjsyMIV4THNw6yz0OxAxGnC+41gX72UrPqTzR+OS";
|
||||||
|
users = [ jordan ];
|
||||||
|
|
||||||
|
odyssey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJre8/cjdoUnbTu0x4ClTITcq4lq+FjpEyJBbLbOlox7";
|
||||||
|
systems = [ odyssey ];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
"secrets/odyssey_borg_passphrase.age".publicKeys = [ jordan odyssey ];
|
||||||
|
}
|
BIN
secrets/odyssey_borg_passphrase.age
Normal file
BIN
secrets/odyssey_borg_passphrase.age
Normal file
Binary file not shown.
Reference in New Issue
Block a user