forked from aylac.top/nixcfg
this repo has no description

better in like every way

Changed files
+1059 -68
homes
hosts
modules
hardware
acer
aspire
home
desktop
gnome
profiles
defaultApps
nixos
profiles
services
caddy
syncthing
tailscale
snippets
syncthing
tailnet
+15 -15
flake.lock
···
]
},
"locked": {
-
"lastModified": 1754416808,
-
"narHash": "sha256-c6yg0EQ9xVESx6HGDOCMcyRSjaTpNJP10ef+6fRcofA=",
"owner": "cachix",
"repo": "git-hooks.nix",
-
"rev": "9c52372878df6911f9afc1e2a1391f55e4dfc864",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1755229570,
-
"narHash": "sha256-soZegto0xXzG2zYlu/zjknDHv0Z7tRS5EQs+Z/VRTBg=",
"owner": "nix-community",
"repo": "home-manager",
-
"rev": "11626a4383b458f8dc5ea3237eaa04e8ab1912f3",
"type": "github"
},
"original": {
···
},
"nixpkgs-unstable": {
"locked": {
-
"lastModified": 1755175540,
-
"narHash": "sha256-V0j2S1r25QnbqBLzN2Rg/dKKil789bI3P3id7bDPVc4=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "a595dde4d0d31606e19dcec73db02279db59d201",
"type": "github"
},
"original": {
···
"nixpkgs": "nixpkgs_3"
},
"locked": {
-
"lastModified": 1755283446,
-
"narHash": "sha256-mFiY1pH1M8+ior+M2vKZ2WzX/Hsff9YE+dmKSb6LQHY=",
"owner": "nix-community",
"repo": "NUR",
-
"rev": "e6d4f72242a95eaa05631bd3424e58e3b4902e4e",
"type": "github"
},
"original": {
···
"secrets": {
"flake": false,
"locked": {
-
"lastModified": 1755372338,
-
"narHash": "sha256-mOexedldBK39zoF4rvIwRqV6Hv8ObSI1AtSgeV9chA8=",
"owner": "ayla6",
"repo": "secrets",
-
"rev": "b54c85850ac5b516a928a8cc88beec2f25627ee6",
"type": "github"
},
"original": {
···
]
},
"locked": {
+
"lastModified": 1755446520,
+
"narHash": "sha256-I0Ok1OGDwc1jPd8cs2VvAYZsHriUVFGIUqW+7uSsOUM=",
"owner": "cachix",
"repo": "git-hooks.nix",
+
"rev": "4b04db83821b819bbbe32ed0a025b31e7971f22e",
"type": "github"
},
"original": {
···
]
},
"locked": {
+
"lastModified": 1755442500,
+
"narHash": "sha256-RHK4H6SWzkAtW/5WBHsyugaXJX25yr5y7FAZznxcBJs=",
"owner": "nix-community",
"repo": "home-manager",
+
"rev": "d2ffdedfc39c591367b1ddf22b4ce107f029dcc3",
"type": "github"
},
"original": {
···
},
"nixpkgs-unstable": {
"locked": {
+
"lastModified": 1755268003,
+
"narHash": "sha256-nNaeJjo861wFR0tjHDyCnHs1rbRtrMgxAKMoig9Sj/w=",
"owner": "NixOS",
"repo": "nixpkgs",
+
"rev": "32f313e49e42f715491e1ea7b306a87c16fe0388",
"type": "github"
},
"original": {
···
"nixpkgs": "nixpkgs_3"
},
"locked": {
+
"lastModified": 1755476870,
+
"narHash": "sha256-VktLRbdxqIMMRaA+cYyCqviFfYJ9MB77INxPWX3d12A=",
"owner": "nix-community",
"repo": "NUR",
+
"rev": "ba8a68a07b1cca8063b0473db7274c6e88ca5d53",
"type": "github"
},
"original": {
···
"secrets": {
"flake": false,
"locked": {
+
"lastModified": 1755423521,
+
"narHash": "sha256-ktRjo/fjYkXFLWpKBo35dgO5Vd8kYUbbXQvo8o95jPY=",
"owner": "ayla6",
"repo": "secrets",
+
"rev": "4a3edbeb58e6cb001eb3564c1f09195198308a9c",
"type": "github"
},
"original": {
+2 -2
homes/ayla/default.nix
···
(lib.mkIf pkgs.stdenv.isLinux {
gtk.gtk3.bookmarks = lib.mkAfter [
-
"file://home/Data/DCMI"
-
"file://home/Data"
];
home = {
···
(lib.mkIf pkgs.stdenv.isLinux {
gtk.gtk3.bookmarks = lib.mkAfter [
+
"file:///data/DCIM"
+
"file:///data/ Data"
];
home = {
+56 -7
hosts/morgana/default.nix
···
imports = [
./home.nix
./secrets.nix
-
./disko.nix
self.nixosModules.locale-en-gb
];
···
profiles = {
base.enable = true;
workstation.enable = true;
-
btrfs.enable = true;
autoUpgrade = {
enable = true;
operation = "switch";
};
-
tmpOnTmpfs.enable = true;
};
desktop.gnome.enable = true;
services = {
# i can't make caddy work :(
-
#caddy.enable = true;
tailscale = {
enable = true;
-
# i can't make caddy work :(
-
enableCaddy = false;
operator = "ayla";
};
aria2.enable = true;
···
"rtsx_pci_sdmmc"
];
-
luks.devices."luks-cc030211-13e5-4411-a906-94c6ef45a0c6".device = "/dev/disk/by-uuid/cc030211-13e5-4411-a906-94c6ef45a0c6";
};
}
···
imports = [
./home.nix
./secrets.nix
self.nixosModules.locale-en-gb
];
···
profiles = {
base.enable = true;
workstation.enable = true;
+
+
btrfs = {
+
enable = true;
+
deduplicate = true;
+
snapshots = true;
+
};
+
tmpOnTmpfs.enable = true;
+
swap = {
+
enable = true;
+
size = 8192;
+
location = "/data/.swap";
+
};
+
autoUpgrade = {
enable = true;
operation = "switch";
};
};
desktop.gnome.enable = true;
services = {
# i can't make caddy work :(
+
caddy.enable = true;
tailscale = {
enable = true;
operator = "ayla";
};
aria2.enable = true;
···
"rtsx_pci_sdmmc"
];
+
luks.devices = {
+
crypted1.device = "/dev/disk/by-uuid/796c4c65-22b9-40e2-a928-66d20d528330";
+
crypted2.device = "/dev/disk/by-uuid/7665834d-1f38-4c1e-9b44-449ea8fc055c";
+
};
+
};
+
+
fileSystems = {
+
"/" = {
+
device = "/dev/disk/by-uuid/e88969b5-98a0-4d46-a059-8e07ebf2689e";
+
fsType = "btrfs";
+
options = ["subvol=@" "compress=zstd" "noatime"];
+
};
+
+
"/home" = {
+
device = "/dev/disk/by-uuid/e88969b5-98a0-4d46-a059-8e07ebf2689e";
+
fsType = "btrfs";
+
options = ["subvol=@home" "compress=zstd" "noatime"];
+
};
+
+
"/home/.snapshots" = {
+
device = "/dev/disk/by-uuid/e88969b5-98a0-4d46-a059-8e07ebf2689e";
+
fsType = "btrfs";
+
options = ["subvol=.snapshots" "compress=zstd" "noatime"];
+
};
+
+
"/nix" = {
+
device = "/dev/disk/by-uuid/e88969b5-98a0-4d46-a059-8e07ebf2689e";
+
fsType = "btrfs";
+
options = ["subvol=@nix" "compress=zstd" "noatime"];
+
};
+
+
"/boot" = {
+
device = "/dev/disk/by-uuid/0CC3-3395";
+
fsType = "vfat";
+
options = ["fmask=0077" "dmask=0077"];
+
};
+
+
"/data" = {
+
device = "/dev/disk/by-uuid/e5cf35fa-55bc-499f-a39b-e844a442e0f0";
+
fsType = "btrfs";
+
options = ["subvol=@data" "compress=zstd" "noatime"];
+
};
};
}
+2
hosts/morgana/disko.nix
···
{
config,
lib,
···
+
# this was kind of the config used for it, ended up not using it because i had gotten confused about something, but the end result was the same so who cares
+
# also if you're reading this never use nano to write a password file to use in one of these because luks counts the newline nano forces on you as a character
{
config,
lib,
+4
hosts/nanpi/default.nix
···
operation = "boot";
};
backups.enable = true;
};
services = {
caddy.enable = true;
···
operation = "boot";
};
backups.enable = true;
+
btrfs = {
+
enable = true;
+
deduplicate = true;
+
};
};
services = {
caddy.enable = true;
-1
hosts/nanpi/services.nix
···
"${config.mySnippets.aylac-top.networkMap.vaultwarden.vHost}" = "http://${config.mySnippets.aylac-top.networkMap.vaultwarden.hostName}:${toString config.mySnippets.aylac-top.networkMap.vaultwarden.port}";
"${config.mySnippets.aylac-top.networkMap.forgejo.vHost}" = "http://${config.mySnippets.aylac-top.networkMap.forgejo.hostName}:${toString config.mySnippets.aylac-top.networkMap.forgejo.port}";
-
"${config.mySnippets.aylac-top.networkMap.forgejo.sshVHost}" = "ssh://${config.mySnippets.aylac-top.networkMap.forgejo.hostName}:2222";
};
};
};
···
"${config.mySnippets.aylac-top.networkMap.vaultwarden.vHost}" = "http://${config.mySnippets.aylac-top.networkMap.vaultwarden.hostName}:${toString config.mySnippets.aylac-top.networkMap.vaultwarden.port}";
"${config.mySnippets.aylac-top.networkMap.forgejo.vHost}" = "http://${config.mySnippets.aylac-top.networkMap.forgejo.hostName}:${toString config.mySnippets.aylac-top.networkMap.forgejo.port}";
};
};
};
+14
modules/hardware/acer/aspire/A515-52G/default.nix
···
lib.mkEnableOption "Acer Aspire A515-52G hardware configuration.";
config = lib.mkIf config.myHardware.acer.aspire.A515-52G.enable {
hardware.nvidia.prime = {
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
···
lib.mkEnableOption "Acer Aspire A515-52G hardware configuration.";
config = lib.mkIf config.myHardware.acer.aspire.A515-52G.enable {
+
home-manager = {
+
sharedModules = [
+
{
+
services.easyeffects = {
+
enable = true;
+
# yeah i literally just got aly's t440p's config i have no idea if they're similar in how they suck but mine do suck
+
preset = "T440p.json";
+
};
+
+
xdg.configFile."easyeffects/output/T440p.json".source = ./easyeffects.json;
+
}
+
];
+
};
+
hardware.nvidia.prime = {
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
+648
modules/hardware/acer/aspire/A515-52G/easyeffects.json
···
···
+
{
+
"output": {
+
"autogain": {
+
"target": -12.0
+
},
+
"blocklist": [],
+
"equalizer": {
+
"input-gain": -0.3,
+
"left": {
+
"band0": {
+
"frequency": 22.59,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band1": {
+
"frequency": 28.440000000000001,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band2": {
+
"frequency": 35.799999999999997,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band3": {
+
"frequency": 45.07,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band4": {
+
"frequency": 56.740000000000002,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band5": {
+
"frequency": 71.430000000000007,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band6": {
+
"frequency": 89.930000000000007,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band7": {
+
"frequency": 113.20999999999999,
+
"gain": 4,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band8": {
+
"frequency": 142.53,
+
"gain": 4,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band9": {
+
"frequency": 179.43000000000001,
+
"gain": 4,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band10": {
+
"frequency": 225.88999999999999,
+
"gain": 4,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band11": {
+
"frequency": 284.38,
+
"gain": 4,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band12": {
+
"frequency": 358.01999999999998,
+
"gain": 4,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band13": {
+
"frequency": 450.72000000000003,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band14": {
+
"frequency": 567.41999999999996,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band15": {
+
"frequency": 714.34000000000003,
+
"gain": -1,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band16": {
+
"frequency": 899.28999999999996,
+
"gain": -2,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band17": {
+
"frequency": 1132.1500000000001,
+
"gain": -3.6000000000000001,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band18": {
+
"frequency": 1425.29,
+
"gain": -2.5,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band19": {
+
"frequency": 1794.3299999999999,
+
"gain": -1.5,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band20": {
+
"frequency": 2258.9299999999998,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band21": {
+
"frequency": 2843.8200000000002,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band22": {
+
"frequency": 3580.1599999999999,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band23": {
+
"frequency": 4507.1499999999996,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band24": {
+
"frequency": 5674.1599999999999,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band25": {
+
"frequency": 7143.3500000000004,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band26": {
+
"frequency": 8992.9400000000005,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band27": {
+
"frequency": 11321.450000000001,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band28": {
+
"frequency": 14252.860000000001,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band29": {
+
"frequency": 17943.279999999999,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
}
+
},
+
"mode": "IIR",
+
"num-bands": 30,
+
"output-gain": -6.5,
+
"right": {
+
"band0": {
+
"frequency": 22.59,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band1": {
+
"frequency": 28.440000000000001,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band2": {
+
"frequency": 35.799999999999997,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band3": {
+
"frequency": 45.07,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band4": {
+
"frequency": 56.740000000000002,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band5": {
+
"frequency": 71.430000000000007,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band6": {
+
"frequency": 89.930000000000007,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band7": {
+
"frequency": 113.20999999999999,
+
"gain": 4,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band8": {
+
"frequency": 142.53,
+
"gain": 4,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band9": {
+
"frequency": 179.43000000000001,
+
"gain": 4,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band10": {
+
"frequency": 225.88999999999999,
+
"gain": 4,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band11": {
+
"frequency": 284.38,
+
"gain": 4,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band12": {
+
"frequency": 358.01999999999998,
+
"gain": 4,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band13": {
+
"frequency": 450.72000000000003,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band14": {
+
"frequency": 567.41999999999996,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band15": {
+
"frequency": 714.34000000000003,
+
"gain": -1,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band16": {
+
"frequency": 899.28999999999996,
+
"gain": -2,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band17": {
+
"frequency": 1132.1500000000001,
+
"gain": -3.6000000000000001,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band18": {
+
"frequency": 1425.29,
+
"gain": -2.5,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band19": {
+
"frequency": 1794.3299999999999,
+
"gain": -1.5,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band20": {
+
"frequency": 2258.9299999999998,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band21": {
+
"frequency": 2843.8200000000002,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band22": {
+
"frequency": 3580.1599999999999,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band23": {
+
"frequency": 4507.1499999999996,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band24": {
+
"frequency": 5674.1599999999999,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band25": {
+
"frequency": 7143.3500000000004,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band26": {
+
"frequency": 8992.9400000000005,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band27": {
+
"frequency": 11321.450000000001,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band28": {
+
"frequency": 14252.860000000001,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
},
+
"band29": {
+
"frequency": 17943.279999999999,
+
"gain": 0,
+
"mode": "RLC (BT)",
+
"mute": false,
+
"q": 4.3600000000000003,
+
"slope": "x1",
+
"solo": false,
+
"type": "Bell"
+
}
+
},
+
"split-channels": false
+
},
+
"exciter": {
+
"amount": 6.0,
+
"blend": 0.0,
+
"ceil": 16000.0,
+
"ceil-active": false,
+
"harmonics": 8.000000000000002,
+
"input-gain": -2.0,
+
"output-gain": 0.0,
+
"scope": 5500.0
+
},
+
"limiter": {
+
"alr": false,
+
"alr-attack": 5.0,
+
"alr-knee": 0.0,
+
"alr-release": 50.0,
+
"attack": 5.0,
+
"dithering": "None",
+
"gain-boost": true,
+
"input-gain": 0.0,
+
"lookahead": 10.0,
+
"mode": "Herm Thin",
+
"output-gain": 0.0,
+
"oversampling": "Half x4(3L)",
+
"release": 5.0,
+
"sidechain-preamp": 0.0,
+
"stereo-link": 100.0,
+
"threshold": 0.0
+
},
+
"plugins_order": ["equalizer", "exciter", "autogain", "limiter"]
+
}
+
}
+1
modules/home/desktop/gnome/default.nix
···
{package = pkgs.gnomeExtensions.appindicator;}
{package = pkgs.gnomeExtensions.night-theme-switcher;}
{package = pkgs.gnomeExtensions.gsconnect;}
];
};
};
···
{package = pkgs.gnomeExtensions.appindicator;}
{package = pkgs.gnomeExtensions.night-theme-switcher;}
{package = pkgs.gnomeExtensions.gsconnect;}
+
{package = pkgs.gnomeExtensions.just-perfection;}
];
};
};
+2
modules/home/profiles/defaultApps/mimeTypes.nix
···
];
imageFiles = [
"image/bmp"
"image/gif"
"image/jpeg"
"image/jpg"
"image/pjpeg"
"image/png"
"image/svg+xml-compressed"
···
];
imageFiles = [
+
"image/avif"
"image/bmp"
"image/gif"
"image/jpeg"
"image/jpg"
+
"image/jxl"
"image/pjpeg"
"image/png"
"image/svg+xml-compressed"
+9 -1
modules/nixos/profiles/btrfs/default.nix
···
name = lib.strings.sanitizeDerivationName (baseNameOf fs.device);
value = {
-
hashTableSizeMB = 2048;
spec = fs.device;
verbosity = "info";
···
name = lib.strings.sanitizeDerivationName (baseNameOf fs.device);
value = {
+
# hashTableSizeMB = 2048;
+
# this is ugly but who cares, i can't just get the size of the partition
+
# basically it's like, if it's one /data and on morgana then for sure it's like a terabyte of data, if it's on nanpi then it's 512gb, anything else is my laptop's ssd, 128gb, so 16mb
+
hashTableSizeMB =
+
if config.networking.hostName == "morgana" && fs.mountPoint == "/data"
+
then 128
+
else if config.networking.hostName == "nanpi"
+
then 64
+
else 16;
spec = fs.device;
verbosity = "info";
+7 -1
modules/nixos/profiles/swap/default.nix
···
description = "Swap size in megabytes.";
type = lib.types.int;
};
};
config = lib.mkIf config.myNixOS.profiles.swap.enable {
swapDevices = [
{
-
device = "/.swap";
priority = 0;
randomEncryption.enable = true;
inherit (config.myNixOS.profiles.swap) size;
···
description = "Swap size in megabytes.";
type = lib.types.int;
};
+
+
location = lib.mkOption {
+
default = "/.swap";
+
description = "Swap file location.";
+
type = lib.types.path;
+
};
};
config = lib.mkIf config.myNixOS.profiles.swap.enable {
swapDevices = [
{
+
device = config.myNixOS.profiles.swap.location;
priority = 0;
randomEncryption.enable = true;
inherit (config.myNixOS.profiles.swap) size;
+2 -2
modules/nixos/services/caddy/default.nix
···
hash = "sha256-0GsjeeJnfLsJywWzWwJcCDk5wjTSBwzqMBY7iHjPQa8=";
};
};
-
-
tailscale.permitCertUid = "caddy";
};
};
}
···
hash = "sha256-0GsjeeJnfLsJywWzWwJcCDk5wjTSBwzqMBY7iHjPQa8=";
};
};
};
+
+
myNixOS.replacement.services.tailscale.permitCertUid = "caddy";
};
}
+1 -1
modules/nixos/services/syncthing/default.nix
···
in {
enable = true;
cert = cfg.certFile;
-
configDir = "${config.services.syncthing.dataDir}/.syncthing";
dataDir = "/home/${cfg.user}";
key = cfg.keyFile;
openDefaultPorts = true;
···
in {
enable = true;
cert = cfg.certFile;
+
configDir = "${config.services.syncthing.dataDir}/.config/syncthing";
dataDir = "/home/${cfg.user}";
key = cfg.keyFile;
openDefaultPorts = true;
+31 -30
modules/nixos/services/tailscale/default.nix
···
self,
...
}: {
options.myNixOS.services.tailscale = {
enable = lib.mkEnableOption "Tailscale VPN service";
···
trustedInterfaces = [config.services.tailscale.interfaceName];
};
-
services = {
-
caddy = lib.mkIf config.myNixOS.services.tailscale.enableCaddy {
-
enable = true;
-
virtualHosts = {
-
"${config.networking.hostName}.${config.mySnippets.tailnet.name}".extraConfig = let
-
syncthing = ''
-
redir /syncthing /syncthing/
-
handle_path /syncthing/* {
-
reverse_proxy localhost:8384 {
-
header_up Host localhost
-
}
}
-
'';
-
in
-
lib.concatLines (
-
lib.optional config.services.syncthing.enable syncthing
-
);
-
};
};
-
tailscale = {
-
enable = true;
-
inherit (config.myNixOS.services.tailscale) authKeyFile;
-
extraUpFlags =
-
["--ssh"]
-
++ lib.optional (config.myNixOS.services.tailscale.operator != null)
-
"--operator ${config.myNixOS.services.tailscale.operator}";
-
extraSetFlags = ["--ssh"];
-
extraDaemonFlags = ["--no-logs-no-support"];
-
openFirewall = true;
-
permitCertUid = lib.mkIf config.services.caddy.enable "caddy";
-
useRoutingFeatures = "both";
-
};
};
};
}
···
self,
...
}: {
+
imports = [
+
./service.nix
+
];
+
options.myNixOS.services.tailscale = {
enable = lib.mkEnableOption "Tailscale VPN service";
···
trustedInterfaces = [config.services.tailscale.interfaceName];
};
+
services.caddy = lib.mkIf config.myNixOS.services.tailscale.enableCaddy {
+
enable = true;
+
virtualHosts = {
+
"${config.networking.hostName}.${config.mySnippets.tailnet.name}".extraConfig = let
+
syncthing = ''
+
redir /syncthing /syncthing/
+
handle_path /syncthing/* {
+
reverse_proxy localhost:8384 {
+
header_up Host localhost
}
+
}
+
'';
+
in
+
lib.concatLines (
+
lib.optional config.services.syncthing.enable syncthing
+
);
};
+
};
+
myNixOS.replacement.services.tailscale = {
+
enable = true;
+
inherit (config.myNixOS.services.tailscale) authKeyFile;
+
extraUpFlags =
+
["--ssh"]
+
++ lib.optional (config.myNixOS.services.tailscale.operator != null)
+
"--operator ${config.myNixOS.services.tailscale.operator}";
+
extraSetFlags = ["--ssh"];
+
openFirewall = true;
+
permitCertUid = lib.mkIf config.services.caddy.enable "caddy";
+
useRoutingFeatures = "both";
};
};
}
+256
modules/nixos/services/tailscale/service.nix
···
···
+
# https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/networking/tailscale.nix
+
{
+
config,
+
lib,
+
pkgs,
+
...
+
}:
+
with lib; let
+
cfg = config.myNixOS.replacement.services.tailscale;
+
isNetworkd = config.networking.useNetworkd;
+
in {
+
meta.maintainers = with maintainers; [
+
mbaillie
+
mfrw
+
];
+
+
options.myNixOS.replacement.services.tailscale = {
+
enable = mkEnableOption "Tailscale client daemon";
+
+
port = mkOption {
+
type = types.port;
+
default = 41641;
+
description = "The port to listen on for tunnel traffic (0=autoselect).";
+
};
+
+
interfaceName = mkOption {
+
type = types.str;
+
default = "tailscale0";
+
description = ''The interface name for tunnel traffic. Use "userspace-networking" (beta) to not use TUN.'';
+
};
+
+
permitCertUid = mkOption {
+
type = types.nullOr types.nonEmptyStr;
+
default = null;
+
description = "Username or user ID of the user allowed to to fetch Tailscale TLS certificates for the node.";
+
};
+
+
disableTaildrop = mkOption {
+
default = false;
+
type = types.bool;
+
description = "Whether to disable the Taildrop feature for sending files between nodes.";
+
};
+
+
noLogsNoSupport = mkOption {
+
default = true;
+
type = types.bool;
+
description = "They spam this every minute and I'm on the free tier of NextDNS so I can't let it happen.";
+
};
+
+
package = lib.mkPackageOption pkgs "tailscale" {};
+
+
openFirewall = mkOption {
+
default = false;
+
type = types.bool;
+
description = "Whether to open the firewall for the specified port.";
+
};
+
+
useRoutingFeatures = mkOption {
+
type = types.enum [
+
"none"
+
"client"
+
"server"
+
"both"
+
];
+
default = "none";
+
example = "server";
+
description = ''
+
Enables settings required for Tailscale's routing features like subnet routers and exit nodes.
+
+
To use these these features, you will still need to call `sudo tailscale up` with the relevant flags like `--advertise-exit-node` and `--exit-node`.
+
+
When set to `client` or `both`, reverse path filtering will be set to loose instead of strict.
+
When set to `server` or `both`, IP forwarding will be enabled.
+
'';
+
};
+
+
authKeyFile = mkOption {
+
type = types.nullOr types.path;
+
default = null;
+
example = "/run/secrets/tailscale_key";
+
description = ''
+
A file containing the auth key.
+
Tailscale will be automatically started if provided.
+
'';
+
};
+
+
authKeyParameters = mkOption {
+
type = types.submodule {
+
options = {
+
ephemeral = mkOption {
+
type = types.nullOr types.bool;
+
default = null;
+
description = "Whether to register as an ephemeral node.";
+
};
+
preauthorized = mkOption {
+
type = types.nullOr types.bool;
+
default = null;
+
description = "Whether to skip manual device approval.";
+
};
+
baseURL = mkOption {
+
type = types.nullOr types.str;
+
default = null;
+
description = "Base URL for the Tailscale API.";
+
};
+
};
+
};
+
default = {};
+
description = ''
+
Extra parameters to pass after the auth key.
+
See https://tailscale.com/kb/1215/oauth-clients#registering-new-nodes-using-oauth-credentials
+
'';
+
};
+
+
extraUpFlags = mkOption {
+
description = ''
+
Extra flags to pass to {command}`tailscale up`. Only applied if `authKeyFile` is specified.";
+
'';
+
type = types.listOf types.str;
+
default = [];
+
example = ["--ssh"];
+
};
+
+
extraSetFlags = mkOption {
+
description = "Extra flags to pass to {command}`tailscale set`.";
+
type = types.listOf types.str;
+
default = [];
+
example = ["--advertise-exit-node"];
+
};
+
+
extraDaemonFlags = mkOption {
+
description = "Extra flags to pass to {command}`tailscaled`.";
+
type = types.listOf types.str;
+
default = [];
+
example = ["--no-logs-no-support"];
+
};
+
};
+
+
config = mkIf cfg.enable {
+
environment.systemPackages = [cfg.package]; # for the CLI
+
systemd = {
+
packages = [cfg.package];
+
+
services = {
+
tailscaled = {
+
after = lib.mkIf config.networking.networkmanager.enable ["NetworkManager-wait-online.service"];
+
wantedBy = ["multi-user.target"];
+
path =
+
[
+
(builtins.dirOf config.security.wrapperDir) # for `su` to use taildrive with correct access rights
+
pkgs.procps # for collecting running services (opt-in feature)
+
pkgs.getent # for `getent` to look up user shells
+
pkgs.kmod # required to pass tailscale's v6nat check
+
]
+
++ lib.optional config.networking.resolvconf.enable config.networking.resolvconf.package;
+
serviceConfig.Environment =
+
[
+
"PORT=${toString cfg.port}"
+
''"FLAGS=--tun ${lib.escapeShellArg cfg.interfaceName} ${lib.concatStringsSep " " cfg.extraDaemonFlags}"''
+
]
+
++ lib.optional cfg.noLogsNoSupport [
+
# they spam this to hell and the other configs like the one above didn't work to disable it. i'm on the nextdns freetier dude!!
+
"TS_NO_LOGS_NO_SUPPORT=true"
+
]
+
++ (lib.optionals (cfg.permitCertUid != null) [
+
"TS_PERMIT_CERT_UID=${cfg.permitCertUid}"
+
])
+
++ (lib.optionals cfg.disableTaildrop [
+
"TS_DISABLE_TAILDROP=true"
+
]);
+
# Restart tailscaled with a single `systemctl restart` at the
+
# end of activation, rather than a `stop` followed by a later
+
# `start`. Activation over Tailscale can hang for tens of
+
# seconds in the stop+start setup, if the activation script has
+
# a significant delay between the stop and start phases
+
# (e.g. script blocked on another unit with a slow shutdown).
+
#
+
# Tailscale is aware of the correctness tradeoff involved, and
+
# already makes its upstream systemd unit robust against unit
+
# version mismatches on restart for compatibility with other
+
# linux distros.
+
stopIfChanged = false;
+
};
+
tailscaled-autoconnect = mkIf (cfg.authKeyFile != null) {
+
after = ["tailscaled.service"];
+
wants = ["tailscaled.service"];
+
wantedBy = ["multi-user.target"];
+
serviceConfig = {
+
Type = "oneshot";
+
};
+
# https://github.com/tailscale/tailscale/blob/v1.72.1/ipn/backend.go#L24-L32
+
script = let
+
statusCommand = "${lib.getExe cfg.package} status --json --peers=false | ${lib.getExe pkgs.jq} -r '.BackendState'";
+
paramToString = v:
+
if (builtins.isBool v)
+
then (lib.boolToString v)
+
else (toString v);
+
params = lib.pipe cfg.authKeyParameters [
+
(lib.filterAttrs (_: v: v != null))
+
(lib.mapAttrsToList (k: v: "${k}=${paramToString v}"))
+
(builtins.concatStringsSep "&")
+
(params:
+
if params != ""
+
then "?${params}"
+
else "")
+
];
+
in ''
+
while [[ "$(${statusCommand})" == "NoState" ]]; do
+
sleep 0.5
+
done
+
status=$(${statusCommand})
+
if [[ "$status" == "NeedsLogin" || "$status" == "NeedsMachineAuth" ]]; then
+
${lib.getExe cfg.package} up --auth-key "$(cat ${cfg.authKeyFile})${params}" ${escapeShellArgs cfg.extraUpFlags}
+
fi
+
'';
+
};
+
+
tailscaled-set = mkIf (cfg.extraSetFlags != []) {
+
after = ["tailscaled.service"];
+
wants = ["tailscaled.service"];
+
wantedBy = ["multi-user.target"];
+
serviceConfig = {
+
Type = "oneshot";
+
};
+
script = ''
+
${lib.getExe cfg.package} set ${escapeShellArgs cfg.extraSetFlags}
+
'';
+
};
+
};
+
+
network.networks."50-tailscale" = mkIf isNetworkd {
+
matchConfig = {
+
Name = cfg.interfaceName;
+
};
+
linkConfig = {
+
Unmanaged = true;
+
ActivationPolicy = "manual";
+
};
+
};
+
};
+
+
boot.kernel.sysctl = mkIf (cfg.useRoutingFeatures == "server" || cfg.useRoutingFeatures == "both") {
+
"net.ipv4.conf.all.forwarding" = mkOverride 97 true;
+
"net.ipv6.conf.all.forwarding" = mkOverride 97 true;
+
};
+
+
networking = {
+
firewall = {
+
allowedUDPPorts = mkIf cfg.openFirewall [cfg.port];
+
checkReversePath = mkIf (
+
cfg.useRoutingFeatures == "client" || cfg.useRoutingFeatures == "both"
+
) "loose";
+
};
+
dhcpcd.denyInterfaces = [cfg.interfaceName];
+
};
+
};
+
}
+1 -1
modules/snippets/syncthing/devices.nix
···
default = {
"m23" = {id = "EXW2FQP-LLGZTF3-UJ7IQ6D-CZB4UWB-ZQHM4GG-T6D4E2Q-ZOWSTG4-HJOKPQK";}; # Samsung Galaxy M23
"morgana" = {id = "IR327YY-QZD7HZX-F24BWPO-UXQAVGU-4M2WN3P-XCYPCGX-ZQKDLIV-BL6RNAR";}; # Acer Aspire A515-52G
-
"nanpi" = {id = "UBHN6T7-SLXLI4P-WVXQ35Q-OH4RPOI-RCVODK7-ASBJU6A-7BIEMYU-5ICYJAN";}; # The Red HP Laptop
};
};
};
···
default = {
"m23" = {id = "EXW2FQP-LLGZTF3-UJ7IQ6D-CZB4UWB-ZQHM4GG-T6D4E2Q-ZOWSTG4-HJOKPQK";}; # Samsung Galaxy M23
"morgana" = {id = "IR327YY-QZD7HZX-F24BWPO-UXQAVGU-4M2WN3P-XCYPCGX-ZQKDLIV-BL6RNAR";}; # Acer Aspire A515-52G
+
"nanpi" = {id = "3T56X4H-5RBU6HH-PKI4YAW-OZA27AA-M7AWUYP-HMNKCJJ-32WWOIB-TUGQ3AA";}; # Lenovo IdeaPad 3
};
};
};
+7 -6
modules/snippets/syncthing/folders.nix
···
];
id = "cerbn-dj3xo";
-
path = "/home/ayla/Backups";
};
"Books" = {
···
];
id = "1pnmb-naasx";
-
path = "/home/Data/Books";
};
"DCIM" = {
···
];
id = "dcfsw-meuwf";
-
path = "/home/ayla/DCIM";
};
"Music" = {
devices = [
"morgana"
"m23"
];
id = "pacgr-fvsd7";
-
path = "/home/ayla/Music";
};
"Passwords" = {
···
];
id = "u5d66-bcnho";
-
path = "/home/ayla/Pictures";
};
"Koreader Settings" = {
···
];
id = "hkw65-lktvx";
-
path = "/home/Data/koreader";
};
};
};
···
];
id = "cerbn-dj3xo";
+
path = "/data/Backups";
};
"Books" = {
···
];
id = "1pnmb-naasx";
+
path = "/data/Books";
};
"DCIM" = {
···
];
id = "dcfsw-meuwf";
+
path = "/data/DCIM";
};
"Music" = {
devices = [
"morgana"
"m23"
+
"nanpi"
];
id = "pacgr-fvsd7";
+
path = "/data/Music";
};
"Passwords" = {
···
];
id = "u5d66-bcnho";
+
path = "/data/Pictures";
};
"Koreader Settings" = {
···
];
id = "hkw65-lktvx";
+
path = "/data/koreader";
};
};
};
+1 -1
modules/snippets/tailnet/default.nix
···
}: {
options.mySnippets.tailnet = {
name = lib.mkOption {
-
default = "cinnamon-is.ts.net";
description = "Tailnet name.";
type = lib.types.str;
};
···
}: {
options.mySnippets.tailnet = {
name = lib.mkOption {
+
default = "cinnamon-in.ts.net";
description = "Tailnet name.";
type = lib.types.str;
};