+4
common-options.nix
+4
common-options.nix
+13
common.nix
+13
common.nix
···
1
+
{ config, lib, pkgs, ... }:
2
+
{
3
+
imports = [ ./common-options.nix ];
4
+
# just a default. automatic-timezoned on workstations.
5
+
time.timeZone = lib.mkDefault "America/Chicago";
6
+
# It's ASCII, but better!
7
+
i18n.defaultLocale = "en_US.UTF-8";
8
+
# capital cities was on to something here
9
+
environment.memoryAllocator.provider = "graphene-hardened";
10
+
11
+
nix.settings.experimental-features = [ "nix-command" "flakes" ];
12
+
system.stateVersion = "25.05";
13
+
}
+170
configuration.nix
+170
configuration.nix
···
1
+
# Edit this configuration file to define what should be installed on
2
+
# your system. Help is available in the configuration.nix(5) man page, on
3
+
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
4
+
5
+
{ config, lib, pkgs, ... }:
6
+
7
+
{
8
+
imports =
9
+
[ # Include the results of the hardware scan.
10
+
./hardware-configuration.nix
11
+
./core-configuration.nix
12
+
./nonfree.nix
13
+
./steam.nix
14
+
./ssl.nix
15
+
];
16
+
environment.memoryAllocator.provider = "graphene-hardened"; # BAILIFF! SMACK HIS NUTS!
17
+
services.udev.packages = [ pkgs.yubikey-personalization ];
18
+
systemd.services.fprintd = {
19
+
wantedBy = [ "multi-user.target" ];
20
+
serviceConfig.Type = "simple";
21
+
};
22
+
programs = {
23
+
nano = {
24
+
enable = true;
25
+
nanorc = ''
26
+
set autoindent
27
+
set boldtext
28
+
set constantshow
29
+
set smarthome
30
+
set softwrap
31
+
set tabsize 2
32
+
set titlecolor blue
33
+
set statuscolor green
34
+
set keycolor red
35
+
set numbercolor blue
36
+
'';
37
+
};
38
+
};
39
+
services = {
40
+
fprintd.enable = true;
41
+
fwupd = {
42
+
enable = true;
43
+
daemonSettings.DisabledPlugins = [ "upower" ];
44
+
};
45
+
printing = {
46
+
enable = true;
47
+
drivers = [ pkgs.hplipWithPlugin ];
48
+
};
49
+
avahi = {
50
+
enable = true;
51
+
nssmdns4 = true;
52
+
openFirewall = true;
53
+
};
54
+
};
55
+
# Use the systemd-boot EFI boot loader.
56
+
boot.loader.systemd-boot.enable = true;
57
+
boot.loader.efi.canTouchEfiVariables = true;
58
+
59
+
networking.hostName = "yaoi"; # Define your hostname.
60
+
# Pick only one of the below networking options.
61
+
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
62
+
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
63
+
64
+
# Set your time zone.
65
+
time.timeZone = "America/Chicago";
66
+
67
+
# Configure network proxy if necessary
68
+
# networking.proxy.default = "http://user:password@proxy:port/";
69
+
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
70
+
71
+
# Select internationalisation properties.
72
+
i18n.defaultLocale = "en_US.UTF-8";
73
+
console = {
74
+
font = "Lat2-Terminus16";
75
+
# keyMap = "us";
76
+
useXkbConfig = true; # use xkb.options in tty.
77
+
};
78
+
79
+
# Not Enable the X11 windowing system.
80
+
services.xserver.enable = false;
81
+
services.displayManager.sddm.enable = true;
82
+
services.displayManager.sddm.wayland.enable = true;
83
+
services.desktopManager.plasma6.enable = true;
84
+
85
+
services.flatpak.enable = true;
86
+
87
+
# Configure keymap in X11
88
+
services.xserver.xkb.layout = "us";
89
+
#services.xserver.xkb.options = "eurosign:e,caps:escape";
90
+
91
+
# Enable sound.
92
+
# services.pulseaudio.enable = true;
93
+
# OR
94
+
services.pipewire = {
95
+
enable = true;
96
+
pulse.enable = true;
97
+
};
98
+
99
+
# Enable touchpad support (enabled default in most desktopManager).
100
+
# services.libinput.enable = true;
101
+
102
+
# Define a user account. Don't forget to set a password with ‘passwd’.
103
+
users.users.hotsocket = {
104
+
description = "ur mom";
105
+
isNormalUser = true;
106
+
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
107
+
};
108
+
environment.systemPackages = with pkgs; [
109
+
ungoogled-chromium
110
+
kdePackages.discover
111
+
python3
112
+
fwupd
113
+
];
114
+
115
+
# Some programs need SUID wrappers, can be configured further or are
116
+
# started in user sessions.
117
+
# programs.mtr.enable = true;
118
+
# programs.gnupg.agent = {
119
+
# enable = true;
120
+
# enableSSHSupport = true;
121
+
# };
122
+
nix.settings.experimental-features = [ "nix-command" "flakes" ];
123
+
124
+
# List services that you want to enable:
125
+
126
+
# Enable the OpenSSH daemon.
127
+
# services.openssh.enable = true;
128
+
129
+
# Open ports in the firewall.
130
+
networking.firewall = rec {
131
+
allowedTCPPortRanges = [
132
+
# KDE Connect
133
+
{ from = 1714; to = 1764; }
134
+
];
135
+
allowedUDPPortRanges = allowedTCPPortRanges;
136
+
};
137
+
networking.hosts = {
138
+
"127.0.0.1" = ["fuckyou"];
139
+
};
140
+
# networking.firewall.allowedTCPPorts = [ ... ];
141
+
# networking.firewall.allowedUDPPorts = [ ... ];
142
+
# Or disable the firewall altogether.
143
+
# networking.firewall.enable = false;
144
+
145
+
# Copy the NixOS configuration file and link it from the resulting system
146
+
# (/run/current-system/configuration.nix). This is useful in case you
147
+
# accidentally delete configuration.nix.
148
+
# system.copySystemConfiguration = true;
149
+
150
+
# This option defines the first version of NixOS you have installed on this particular machine,
151
+
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
152
+
#
153
+
# Most users should NEVER change this value after the initial install, for any reason,
154
+
# even if you've upgraded your system to a new NixOS release.
155
+
#
156
+
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
157
+
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
158
+
# to actually do that.
159
+
#
160
+
# This value being lower than the current NixOS release does NOT mean your system is
161
+
# out of date, out of support, or vulnerable.
162
+
#
163
+
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
164
+
# and migrated your data accordingly.
165
+
#
166
+
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
167
+
system.stateVersion = "25.05"; # Did you read the comment?
168
+
169
+
}
170
+
+150
flake.lock
+150
flake.lock
···
1
+
{
2
+
"nodes": {
3
+
"flake-utils": {
4
+
"inputs": {
5
+
"systems": "systems"
6
+
},
7
+
"locked": {
8
+
"lastModified": 1731533236,
9
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
10
+
"owner": "numtide",
11
+
"repo": "flake-utils",
12
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
13
+
"type": "github"
14
+
},
15
+
"original": {
16
+
"owner": "numtide",
17
+
"repo": "flake-utils",
18
+
"type": "github"
19
+
}
20
+
},
21
+
"flakey-profile": {
22
+
"locked": {
23
+
"lastModified": 1712898590,
24
+
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
25
+
"owner": "lf-",
26
+
"repo": "flakey-profile",
27
+
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
28
+
"type": "github"
29
+
},
30
+
"original": {
31
+
"owner": "lf-",
32
+
"repo": "flakey-profile",
33
+
"type": "github"
34
+
}
35
+
},
36
+
"home-manager": {
37
+
"inputs": {
38
+
"nixpkgs": [
39
+
"nixpkgs"
40
+
]
41
+
},
42
+
"locked": {
43
+
"lastModified": 1753592768,
44
+
"narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=",
45
+
"owner": "nix-community",
46
+
"repo": "home-manager",
47
+
"rev": "fc3add429f21450359369af74c2375cb34a2d204",
48
+
"type": "github"
49
+
},
50
+
"original": {
51
+
"owner": "nix-community",
52
+
"ref": "release-25.05",
53
+
"repo": "home-manager",
54
+
"type": "github"
55
+
}
56
+
},
57
+
"lix": {
58
+
"flake": false,
59
+
"locked": {
60
+
"lastModified": 1751235704,
61
+
"narHash": "sha256-J4ycLoXHPsoBoQtEXFCelL4xlq5pT8U9tNWNKm43+YI=",
62
+
"rev": "1d7368585eebaa2c4bdbcb88fe600cfb2239b2c6",
63
+
"type": "tarball",
64
+
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/1d7368585eebaa2c4bdbcb88fe600cfb2239b2c6.tar.gz?rev=1d7368585eebaa2c4bdbcb88fe600cfb2239b2c6"
65
+
},
66
+
"original": {
67
+
"type": "tarball",
68
+
"url": "https://git.lix.systems/lix-project/lix/archive/release-2.93.tar.gz"
69
+
}
70
+
},
71
+
"lix-module": {
72
+
"inputs": {
73
+
"flake-utils": "flake-utils",
74
+
"flakey-profile": "flakey-profile",
75
+
"lix": "lix",
76
+
"nixpkgs": [
77
+
"nixpkgs"
78
+
]
79
+
},
80
+
"locked": {
81
+
"lastModified": 1751240025,
82
+
"narHash": "sha256-SXUAlxpjPRkArRMHy5+Hdi+PiC+ND9yzzIjiaHmTvQU=",
83
+
"rev": "8b1094356f4723d6e89d3f8a95b333ee16d9ab02",
84
+
"type": "tarball",
85
+
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/8b1094356f4723d6e89d3f8a95b333ee16d9ab02.tar.gz?rev=8b1094356f4723d6e89d3f8a95b333ee16d9ab02"
86
+
},
87
+
"original": {
88
+
"type": "tarball",
89
+
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz"
90
+
}
91
+
},
92
+
"nixpkgs": {
93
+
"locked": {
94
+
"lastModified": 1755471983,
95
+
"narHash": "sha256-axUoWcm4cNQ36jOlnkD9D40LTfSQgk8ExfHSRm3rTtg=",
96
+
"owner": "NixOS",
97
+
"repo": "nixpkgs",
98
+
"rev": "48f4c982de68d966421d2b6f1ddbeb6227cc5ceb",
99
+
"type": "github"
100
+
},
101
+
"original": {
102
+
"owner": "NixOS",
103
+
"ref": "nixos-25.05",
104
+
"repo": "nixpkgs",
105
+
"type": "github"
106
+
}
107
+
},
108
+
"nixpkgs-unstable": {
109
+
"locked": {
110
+
"lastModified": 1755577059,
111
+
"narHash": "sha256-5hYhxIpco8xR+IpP3uU56+4+Bw7mf7EMyxS/HqUYHQY=",
112
+
"owner": "NixOS",
113
+
"repo": "nixpkgs",
114
+
"rev": "97eb7ee0da337d385ab015a23e15022c865be75c",
115
+
"type": "github"
116
+
},
117
+
"original": {
118
+
"owner": "NixOS",
119
+
"ref": "nixpkgs-unstable",
120
+
"repo": "nixpkgs",
121
+
"type": "github"
122
+
}
123
+
},
124
+
"root": {
125
+
"inputs": {
126
+
"home-manager": "home-manager",
127
+
"lix-module": "lix-module",
128
+
"nixpkgs": "nixpkgs",
129
+
"nixpkgs-unstable": "nixpkgs-unstable"
130
+
}
131
+
},
132
+
"systems": {
133
+
"locked": {
134
+
"lastModified": 1681028828,
135
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
136
+
"owner": "nix-systems",
137
+
"repo": "default",
138
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
139
+
"type": "github"
140
+
},
141
+
"original": {
142
+
"owner": "nix-systems",
143
+
"repo": "default",
144
+
"type": "github"
145
+
}
146
+
}
147
+
},
148
+
"root": "root",
149
+
"version": 7
150
+
}
+51
flake.nix
+51
flake.nix
···
1
+
{
2
+
inputs = {
3
+
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
4
+
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
5
+
lix-module = {
6
+
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz";
7
+
inputs.nixpkgs.follows = "nixpkgs";
8
+
};
9
+
home-manager = {
10
+
url = "github:nix-community/home-manager/release-25.05";
11
+
inputs.nixpkgs.follows = "nixpkgs";
12
+
};
13
+
};
14
+
outputs = { nixpkgs, nixpkgs-unstable, lix-module, home-manager, ... }@inputs:
15
+
let
16
+
pkgs-unstable = import nixpkgs-unstable {
17
+
system = "x86_64-linux";
18
+
};
19
+
in {
20
+
nixosConfigurations.yaoi = nixpkgs.lib.nixosSystem {
21
+
specialArgs = { inherit inputs pkgs-unstable; };
22
+
system = "x86_64-linux";
23
+
modules = [
24
+
./hardware-configuration.nix
25
+
lix-module.nixosModules.default
26
+
home-manager.nixosModules.home-manager
27
+
./common.nix
28
+
./workstation.nix
29
+
./hosts/yaoi.nix
30
+
./users/hotsocket.nix
31
+
32
+
# *scoots away*
33
+
./nonfree/_allow.nix
34
+
./nonfree/steam.nix
35
+
];
36
+
};
37
+
nixosConfigurations.yuri = nixpkgs.lib.nixosSystem {
38
+
specialArgs = { inherit inputs pkgs-unstable; };
39
+
system = "x86_64-linux";
40
+
modules = [
41
+
./hardware-configuration.nix
42
+
lix-module.nixosModules.default
43
+
home-manager.nixosModules.home-manager
44
+
./common.nix
45
+
./workstation.nix
46
+
./hosts/yuri.nix
47
+
./users/hotsocket.nix
48
+
];
49
+
};
50
+
};
51
+
}
+59
hardware-configuration.nix
+59
hardware-configuration.nix
···
1
+
# Do not modify this file! It was generated by ‘nixos-generate-config’
2
+
# and may be overwritten by future invocations. Please make changes
3
+
# to /etc/nixos/configuration.nix instead.
4
+
{ config, lib, pkgs, modulesPath, ... }:
5
+
6
+
{
7
+
imports =
8
+
[ (modulesPath + "/installer/scan/not-detected.nix")
9
+
];
10
+
11
+
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "sd_mod" "sdhci_pci" ];
12
+
boot.initrd.kernelModules = [ ];
13
+
boot.kernelModules = [ ];
14
+
boot.extraModulePackages = [ ];
15
+
16
+
fileSystems."/" =
17
+
{ device = "/dev/disk/by-uuid/0e678fa3-f13d-431e-a5e8-a953a3415f9a";
18
+
fsType = "btrfs";
19
+
options = [ "subvol=root" ];
20
+
};
21
+
22
+
fileSystems."/home" =
23
+
{ device = "/dev/disk/by-uuid/0e678fa3-f13d-431e-a5e8-a953a3415f9a";
24
+
fsType = "btrfs";
25
+
options = [ "subvol=home" ];
26
+
};
27
+
28
+
fileSystems."/nix" =
29
+
{ device = "/dev/disk/by-uuid/0e678fa3-f13d-431e-a5e8-a953a3415f9a";
30
+
fsType = "btrfs";
31
+
options = [ "subvol=nix" ];
32
+
};
33
+
34
+
fileSystems."/boot" =
35
+
{ device = "/dev/disk/by-uuid/3E6E-B118";
36
+
fsType = "vfat";
37
+
options = [ "fmask=0022" "dmask=0022" ];
38
+
};
39
+
40
+
swapDevices = [ ];
41
+
42
+
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
43
+
# (the default) this is the recommended approach. When using systemd-networkd it's
44
+
# still possible to use this option, but it's recommended to use it in conjunction
45
+
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
46
+
networking.useDHCP = lib.mkDefault true;
47
+
# networking.interfaces.enp0s25.useDHCP = lib.mkDefault true;
48
+
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
49
+
50
+
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
51
+
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
52
+
53
+
# bluetooth stuff
54
+
hardware.bluetooth = {
55
+
enable = true;
56
+
powerOnBoot = true;
57
+
};
58
+
services.blueman.enable = true;
59
+
}
+33
home.nix
+33
home.nix
···
1
+
{ config, pkgs, pkgs-unstable, ... }:
2
+
3
+
{
4
+
home = {
5
+
username = "hotsocket";
6
+
homeDirectory = "/home/hotsocket";
7
+
packages = ((with pkgs; [
8
+
jetbrains.idea-community-bin
9
+
home-manager
10
+
vscodium
11
+
pidgin
12
+
git
13
+
playerctl
14
+
rescrobbled
15
+
p7zip
16
+
p11-kit
17
+
]) ++ (with pkgs-unstable; [
18
+
luanti-client
19
+
]));
20
+
stateVersion = "25.05";
21
+
};
22
+
programs = {
23
+
home-manager.enable = true;
24
+
git = {
25
+
enable = true;
26
+
userName = "hotsocket";
27
+
userEmail = "th@hotsocket.fyi";
28
+
};
29
+
};
30
+
services = {
31
+
kdeconnect.enable = true;
32
+
};
33
+
}
+6
hosts/yaoi.nix
+6
hosts/yaoi.nix
+13
nonfree/_allow.nix
+13
nonfree/_allow.nix
···
1
+
# https://codeberg.org/AndrewKvalheim/configuration/src/branch/main/packages/nixpkgs-issue-55674.nix
2
+
{ config, lib, ... }:
3
+
4
+
let
5
+
inherit (builtins) elem;
6
+
inherit (lib) getName mkOption;
7
+
inherit (lib.types) listOf str;
8
+
in
9
+
{
10
+
# Pending https://github.com/NixOS/nixpkgs/issues/55674
11
+
options.allowedNonfree = mkOption { type = listOf str; default = [ ]; };
12
+
config.nixpkgs.config.allowUnfreePredicate = p: elem (getName p) config.allowedNonfree;
13
+
}
+8
nonfree/steam.nix
+8
nonfree/steam.nix
+39
users/hotsocket.nix
+39
users/hotsocket.nix
···
1
+
{ config, lib, pkgs, pkgs-unstable, ... }:
2
+
{
3
+
users.users.hotsocket = {
4
+
description = "ur mom";
5
+
isNormalUser = true;
6
+
extraGroups = [ "wheel" ];
7
+
};
8
+
# i love home-manager :)
9
+
10
+
home-manager.users.hotsocket = if config.isWorkstation then {
11
+
home = {
12
+
stateVersion = "25.05";
13
+
username = "hotsocket";
14
+
homeDirectory = "/home/hotsocket";
15
+
packages = ((with pkgs; [
16
+
jetbrains.idea-community-bin
17
+
ungoogled-chromium
18
+
vscodium
19
+
git
20
+
playerctl
21
+
rescrobbled
22
+
p7zip
23
+
]) ++ (with pkgs-unstable; [
24
+
# in case of multiplayer. that's the reason for me having unstable.
25
+
luanti-client
26
+
]));
27
+
};
28
+
programs = {
29
+
git = {
30
+
enable = true;
31
+
userName = "hotsocket";
32
+
userEmail = "th@hotsocket.fyi";
33
+
};
34
+
};
35
+
services = {
36
+
kdeconnect.enable = true;
37
+
};
38
+
} else null;
39
+
}
+72
workstation.nix
+72
workstation.nix
···
1
+
# common configuration for workstation.nixes.
2
+
# (joke for 65-wide terminals ^)
3
+
{ config, lib, pkgs, pkgs-unstable, ... }:
4
+
{
5
+
isWorkstation = true;
6
+
services = {
7
+
# workstations have a tendency to move one way or another
8
+
automatic-timezoned.enable = true;
9
+
10
+
11
+
12
+
# hardware support
13
+
udev.packages = [ pkgs.yubikey-personalization ];
14
+
fwupd.enable = true;
15
+
16
+
17
+
18
+
# software support
19
+
flatpak.enable = true;
20
+
21
+
# kde is comfy /shrug (praying tde shows up)
22
+
displayManager.sddm.enable = true;
23
+
desktopManager.plasma6.enable = true;
24
+
# in this house, we suck off red hat.
25
+
xserver.enable = false;
26
+
displayManager.sddm.wayland.enable = true;
27
+
28
+
# audio! yay! my tunes!
29
+
pipewire = {
30
+
enable = true;
31
+
pulse.enable = true; # enables pulseaudio emulation
32
+
};
33
+
34
+
# fucking hp oh my god
35
+
printing = {
36
+
enable = true;
37
+
drivers = [ pkgs.hplipWithPlugin ];
38
+
};
39
+
avahi = {
40
+
enable = true;
41
+
nssmdns4 = true;
42
+
openFirewall = true;
43
+
};
44
+
};
45
+
# i hate this
46
+
allowedNonfree = [
47
+
"hplip"
48
+
];
49
+
50
+
# for better or worse, my workstations use efi.
51
+
boot.loader = {
52
+
grub.device = "nodev";
53
+
systemd-boot.enable = true;
54
+
efi.canTouchEfiVariables = true;
55
+
};
56
+
57
+
# i have a vague idea of something cool involving this
58
+
networking.domain = "workstations.hotsocket.fyi";
59
+
networking.networkmanager.enable = true;
60
+
61
+
home-manager = {
62
+
extraSpecialArgs = {
63
+
inherit pkgs-unstable;
64
+
};
65
+
useGlobalPkgs = true;
66
+
useUserPackages = true;
67
+
};
68
+
swapDevices = [{
69
+
device = "/var/lib/swapfile";
70
+
size = 8*1024; # 8 GB
71
+
}];
72
+
}