Compare commits

..

80 Commits

Author SHA1 Message Date
c38d3ec7b8 Merge pull request 'feature(calibre): add calibre ebook management' (#41) from feature/add_calibre into main
Reviewed-on: #41
2026-04-15 18:37:14 +02:00
d5d6488761 chore(update): update to the latest release 2026-04-15 18:36:57 +02:00
e0e282a547 feature(calibre): add calibre ebook management 2026-04-09 20:11:19 +02:00
9f0ee40cc3 Merge pull request 'chore(update): update to the latest release' (#40) from feature/updates into main
Reviewed-on: #40
2026-04-09 19:54:54 +02:00
68fc3a2df2 chore(update): update to the latest release 2026-04-09 19:54:11 +02:00
5dfc62fc83 Merge pull request 'feature/updates' (#39) from feature/updates into main
Reviewed-on: #39
2026-03-31 15:44:15 +02:00
1b82de5c92 chore(protonvpn): change name to proton-vpn due to deprication 2026-03-31 15:42:14 +02:00
c1d1fb7793 chore(update): update flake file 2026-03-31 15:41:36 +02:00
e6bc267161 Merge pull request 'feature/chromium' (#38) from feature/chromium into main
Reviewed-on: #38
2026-03-28 22:08:18 +01:00
212dddaffd refactor: remove qflipper since that software is not maintained anymore 2026-03-28 22:08:03 +01:00
58509367a3 refactor(browsers): move browser selection to home-manager module since it is a user choice 2026-03-27 11:32:45 +01:00
fdc93aff91 chore(update): update flake file 2026-03-27 10:39:36 +01:00
f9f9c72498 feature(user): add my user to the dialout group in order to access serial terminal 2026-03-27 10:39:22 +01:00
0fdada8766 refactor: move chromium to home-manager packages 2026-03-27 10:38:56 +01:00
554462128e refactor: move chromium to home-manager packages 2026-03-27 10:38:31 +01:00
7c0bbf18c8 feature(browsers): add chromium browser 2026-03-27 09:29:10 +01:00
d1222fc204 Merge pull request 'feautre(ts6): add teamspeak6-client since ts3 is based on an unmaintained qtwebkit' (#37) from feature/teamspeak into main
Reviewed-on: #37
2026-03-25 21:34:12 +01:00
da8fa17202 feautre(ts6): add teamspeak6-client since ts3 is based on an unmaintained qtwebkit 2026-03-25 21:31:21 +01:00
e143872f25 Merge pull request 'fix(nvim): add plenary as extraPlugins' (#36) from feature/fix_nvim into main
Reviewed-on: #36
2026-03-24 18:15:35 +01:00
db22935910 fix(nvim): add plenary as extraPlugins 2026-03-24 16:17:30 +01:00
b62d9f7630 Merge pull request 'feature/update' (#35) from feature/update into main
Reviewed-on: #35
2026-03-23 13:17:38 +01:00
20e19bb0be fix(gtk4): adopt the new default behavior and silence a compilation warning 2026-03-23 13:15:54 +01:00
c31478461e fix(sddm): add theme to system packages so the path will be symlinked 2026-03-23 13:14:20 +01:00
073d257ca8 chore(flake): update flake lock to the latest version 2026-03-23 13:13:01 +01:00
7b50d5327c chore(flake): update flake lock to the latest version 2026-03-21 19:32:56 +01:00
642e723fd6 Merge pull request 'cleanup repository' (#34) from feature/repo_cleanup into main
Reviewed-on: #34
2026-03-21 18:08:19 +01:00
9a8090dac2 refactor(wireguard): set checkReversePath to loose instead of false 2026-03-21 16:45:09 +01:00
4e9ffcf6bd refactor(unfree): move the unfree setting to the settings module 2026-03-21 16:43:43 +01:00
02a5d03d1a refactor(packages): move installed packages to their respective nix modules 2026-03-21 16:43:05 +01:00
b480e8224d refactor(flake): simplify nix flake by deduplication 2026-03-21 16:41:34 +01:00
32a62aadd4 refactor(networking): drop wireless enable since it installs wpa_supplicant and rely on networkmanager instead 2026-03-21 16:40:24 +01:00
619c00e678 refactor(locales): fix internationalisation to switzerland norms 2026-03-21 16:39:30 +01:00
a02da7f66d refactor(programs): uninstall screenfetch since it is unmaintained software 2026-03-21 16:38:55 +01:00
8b616b65af refactor(default): remove hardware import from default target since it is a dublicate 2026-03-21 16:38:17 +01:00
17158618ee refactor(docker): move the docker group to the respective nix module instead of adding the user per default 2026-03-21 16:37:31 +01:00
64a12d1cae Merge pull request 'feature/updates' (#33) from feature/updates into main
Reviewed-on: #33
2026-03-20 18:18:53 +01:00
2fb937b19f feature(wifi): enable more firmware to support my wifi chip 2026-03-20 18:17:43 +01:00
a7c5cbad41 chore(update): update flake file 2026-03-20 17:51:08 +01:00
52a4a7aca0 Merge pull request 'chore(update): update flake file' (#32) from feature/updates into main
Reviewed-on: #32
2026-03-19 09:15:37 +00:00
e420a4d8b3 chore(update): update flake file 2026-03-19 10:13:29 +01:00
5e19eb0d9a Merge pull request 'fix(backup): instruct home-manager to backup files using a timestamp to avoid collisions' (#31) from feature/backupfiles into main
Reviewed-on: #31
2026-03-16 20:19:44 +01:00
b9450f1bca fix(backup): instruct home-manager to backup files using a timestamp to avoid collisions 2026-03-16 20:01:43 +01:00
a61b330288 Merge pull request 'feature/copypaste' (#30) from feature/copypaste into main
Reviewed-on: #30
2026-03-16 19:47:22 +01:00
03c520923c Merge pull request 'feature(ghostty): add ssh-terminfo and ssh-env as fallback' (#29) from feature/ssh-terminfo into main
Reviewed-on: #29
2026-03-15 23:03:59 +01:00
a193a08f0b feature(ghostty): add ssh-terminfo and ssh-env as fallback 2026-03-15 23:02:44 +01:00
34cad2a944 fix(omz): replace initBeforeCompInit due to deprication 2026-03-14 20:23:19 +01:00
eda6cd9997 feature(tmux): fix copy-paste issues for tmux and opencode 2026-03-14 16:44:14 +01:00
0e68a12e47 Merge pull request 'feature/add_devenv' (#28) from feature/add_devenv into main
Reviewed-on: #28
2026-03-13 16:59:02 +01:00
d5ce65c91d chore(flake): update flake file to latest state 2026-03-12 19:38:23 +01:00
4944f87ce9 feature(devenv): add devenv to home-manager 2026-03-12 19:32:02 +01:00
81b04a8b1c Merge pull request 'improve zsh config' (#27) from feautre/zshimprovements into main
Reviewed-on: #27
2026-03-07 21:07:50 +01:00
ea30328d6b feature(zsh): only display a theme with glyphs if the terminal is able to render them 2026-03-07 21:06:33 +01:00
97f782b3d9 Merge pull request 'update and cleanup' (#26) from feature/cleanup into main
Reviewed-on: #26
2026-03-06 23:01:47 +01:00
ad50c751d6 chore(update): update flake file 2026-03-06 22:28:18 +01:00
3494a85734 refactor(noctalia): remove quickshell dependency as noctalia-qs already gets pulled in by the flake 2026-03-06 22:21:11 +01:00
fcb0161e83 Merge pull request 'feature/argon' (#25) from feature/argon into main
Reviewed-on: #25
2026-03-06 18:37:01 +01:00
9b02617698 refactor(drives): add disclaimer and change order 2026-03-06 18:34:15 +01:00
bd6546263b refactor(greetd): rename package to omit warning 2026-03-06 18:25:28 +01:00
53c2cf1a63 refactor(graphics): add amdgpu_top to systempackages 2026-03-06 18:16:40 +01:00
80638a920b feature(greeter): replace sddm with greetd since sddm has issues with rdna4 2026-03-05 22:15:56 +01:00
e4674e5828 refactor(networking): remove general hostname 2026-03-05 21:58:56 +01:00
16ea94e160 feature(graphics): add amdgpu_top to the default pkgs 2026-03-05 21:58:36 +01:00
afd3113cf3 feature(graphics): add amdgpu to the initrd 2026-03-05 21:50:46 +01:00
d7a08c2571 feature(protonvpn): add protonvpn nix module 2026-03-05 21:36:10 +01:00
8cdcb15618 fix(drives): remove password fallback 2026-03-05 21:23:34 +01:00
a0fd1e9264 feature(drives): add encrypted drives for argon 2026-03-05 20:53:40 +01:00
d60bdd1245 fix(noctalia): add quickshell since it is a dependency of noctalia 2026-03-05 20:52:51 +01:00
404868aa85 refactor(shell): remove omz config from users file and add to home-manager 2026-03-05 20:52:19 +01:00
7566d0d1ef fix(graphics): explicitly add graphics accelleration 2026-03-05 20:50:50 +01:00
6a132670e2 fix(hostnames): move hostname to configuration.nix 2026-03-05 17:38:00 +01:00
f182b2418a feature(argon): add config for argon 2026-03-05 17:37:12 +01:00
eb0bc149e8 Merge pull request 'chore(flake): update flake lock to the latest version' (#24) from feature/update into main
Reviewed-on: #24
2026-03-04 17:16:10 +01:00
f53a2aceee chore(flake): update flake lock to the latest version 2026-03-04 17:10:18 +01:00
d64f10ad3f Merge pull request 'add docker to the system' (#23) from feature/docker into main
Reviewed-on: #23
2026-02-22 18:14:40 +01:00
cc44e68a2e feature(users): add docker group to the main user 2026-02-21 21:17:19 +01:00
b97d6cc47d feature(neon): add docker to neon 2026-02-21 21:16:42 +01:00
0d495039ee feature(docker): add docker daemon config for nixos 2026-02-21 21:16:17 +01:00
64b76ad7fd Merge pull request 'feature(ssh): add more security to the ssh config' (#22) from feature/openssh into main
Reviewed-on: #22
2026-02-21 18:09:31 +01:00
135f2bdac9 Merge pull request 'refactor(installguide): unify device naming, add notes and correct typos' (#21) from feature/installguide into main
Reviewed-on: #21
2026-02-21 17:56:00 +01:00
d288f6828f refactor(installguide): unify device naming, add notes and correct typos 2026-02-21 17:55:32 +01:00
26 changed files with 372 additions and 124 deletions

View File

@@ -4,7 +4,6 @@
- For simplicity I'm using device labels rather than uuids - For simplicity I'm using device labels rather than uuids
1. the partitioning layout should look somewhat like this after the installation 1. the partitioning layout should look somewhat like this after the installation
```bash ```bash
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 476.9G 0 disk nvme0n1 259:0 0 476.9G 0 disk
@@ -13,25 +12,26 @@ nvme0n1 259:0 0 476.9G 0 disk
└─cryptroot 254:0 0 474.9G 0 crypt └─cryptroot 254:0 0 474.9G 0 crypt
├─lvmroot-swap 254:1 0 20G 0 lvm [SWAP] ├─lvmroot-swap 254:1 0 20G 0 lvm [SWAP]
├─lvmroot-home 254:2 0 250G 0 lvm /home ├─lvmroot-home 254:2 0 250G 0 lvm /home
└─lvmroot-root 254:3 0 204.9G 0 lvm /nix/store └─lvmroot-root 254:3 0 204.9G 0 lvm /
``` ```
2. prepare the installation > Note: `lsblk` may additionally show `/nix/store` as a mountpoint on `lvmroot-root`. This is not a separate partition. NixOS mounts the root device a second time at `/nix/store` with `ro,nosuid,nodev` flags to enforce store immutability at runtime.
2. prepare the installation
```bash ```bash
# format the boot partition # format the boot partition
mkfs.fat -F 32 /dev/sda1 -n "nixboot" mkfs.fat -F 32 /dev/nvme0n1p1 -n "nixboot"
# create an encrypted partition # create an encrypted partition
cryptsetup luksFormat -y --label="nixcrypt" /dev/sda2 cryptsetup luksFormat -y --label="nixcrypt" /dev/nvme0n1p2
# open the encrypted partition and map it to /dev/mapper/cryptroot # open the encrypted partition and map it to /dev/mapper/cryptroot
cryptsetup luksOpen /dev/sda2 cryptroot cryptsetup luksOpen /dev/nvme0n1p2 cryptroot
# create the physical volume # create the physical volume
pvcreate /dev/mapper/cryptroot pvcreate /dev/mapper/cryptroot
# create a volume group inside # create a volume group inside
vgcreate lvmroot /dev/mapper/cryptroot vgcreate lvmroot /dev/mapper/cryptroot
# create the swap volume # create the swap volume
lvcreate --size 8G lvmroot --name nwap lvcreate --size 8G lvmroot --name swap
# if you desire, create a home volume # if you desire, create a home volume
lvcreate --size 150G lvmroot --name home lvcreate --size 150G lvmroot --name home
# create the root volume # create the root volume
@@ -47,7 +47,7 @@ mkswap -L "nixswap" /dev/mapper/lvmroot-swap
# mount root # mount root
mount /dev/disk/by-label/nixroot /mnt mount /dev/disk/by-label/nixroot /mnt
# mount boot # mount boot
mount --mkdir /dev/sda1 /mnt/boot mount --mkdir /dev/nvme0n1p1 /mnt/boot
# again, if you did the home volume # again, if you did the home volume
mount --mkdir /dev/disk/by-label/nixhome /mnt/home mount --mkdir /dev/disk/by-label/nixhome /mnt/home
# turn on swap # turn on swap
@@ -55,13 +55,12 @@ swapon /dev/disk/by-label/nixswap
``` ```
3. prepare nixos 3. prepare nixos
```bash ```bash
# generate templates and update the hardware-configuration.nix # generate templates and update the hardware-configuration.nix
sudo nixos-generate-config --root /mnt nixos-generate-config --root /mnt
# add cryptd to the kernelModules # add dm-crypt and dm-mod to the kernelModules
boot.initrd.kernelModules = [ "dm-snapshot" "cryptd" ]; boot.initrd.kernelModules = [ "dm-crypt" "dm-mod" ];
# add file systems using labels # add file systems using labels
fileSystems."/" = fileSystems."/" =
@@ -86,25 +85,20 @@ boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-label/nixcrypt";
``` ```
4. install nixos 4. install nixos
```bash ```bash
cd /mnt nixos-install
sudo nixos-install
``` ```
## how to deploy the inital config ## how to deploy the initial config
- Don't forget to install the bootloader, if you changed it since `nixos-install` - Don't forget to install the bootloader, if you changed it since `nixos-install`
```bash ```bash
$ sudo nixos-rebuild --install-bootloader switch --flake .#host_name $ sudo nixos-rebuild --install-bootloader switch --flake .#host_name
``` ```
## how to upgrade the system ## how to upgrade the system
```bash ```bash
$ cd /path/to/repo $ cd /path/to/repo
$ sudo nix flake update $ nix flake update
$ sudo nixos-rebuild switch --flake .#host_name $ sudo nixos-rebuild switch --flake .#host_name
$ sudo nix-collect-garbage $ sudo nix-collect-garbage
``` ```
@@ -114,7 +108,6 @@ $ sudo nix-collect-garbage
The tool nix-helper is installed by this configuration. It simplifies administrating nixos and adds more output to the rebuild command. It also features a diff after a successful build. The command uses the `NH_FLAKE` environment variable to be able to run from whatever directory. The tool nix-helper is installed by this configuration. It simplifies administrating nixos and adds more output to the rebuild command. It also features a diff after a successful build. The command uses the `NH_FLAKE` environment variable to be able to run from whatever directory.
Basic commands with a set `NH_FLAKE` variable are: Basic commands with a set `NH_FLAKE` variable are:
```bash ```bash
$ nh os switch $ nh os switch
$ nh os build $ nh os build

93
flake.lock generated
View File

@@ -8,11 +8,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1769996383, "lastModified": 1772408722,
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -28,11 +28,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1771519029, "lastModified": 1776184304,
"narHash": "sha256-H59Qf82wv5kBXVoyXsmUKW+9J3o8FqgY4uKaLdsLdLg=", "narHash": "sha256-No6QGBmIv5ChiwKCcbkxjdEQ/RO2ZS1gD7SFy6EZ7rc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "167e0b6837115e672ec5f58e2b0ea39093abe807", "rev": "3c7524c68348ef79ce48308e0978611a050089b2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -43,11 +43,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1771369470, "lastModified": 1775710090,
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", "narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "0182a361324364ae3f436a63005877674cf45efb", "rev": "4c1018dae018162ec878d42fec712642d214fdfa",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -66,11 +66,11 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1771135771, "lastModified": 1776128025,
"narHash": "sha256-wyvBIhDuyCRyjB3yPg77qoyxrlgQtBR1rVW3c9knV3E=", "narHash": "sha256-spZM5zll0cBPHHSZPioZREArzCsllurKQsJME08nnXY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixvim", "repo": "nixvim",
"rev": "ed0424f0b08d303a7348f52f7850ad1b2704f9ba", "rev": "0a12693297d23f1b3af04ba6112b5936e2eba41b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -83,14 +83,15 @@
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ],
"noctalia-qs": "noctalia-qs"
}, },
"locked": { "locked": {
"lastModified": 1771513929, "lastModified": 1776240823,
"narHash": "sha256-dPeHevAT1Cb2w/Wrfz/d5i6RfO8bvbGl/KrTPxU2l3w=", "narHash": "sha256-QAdipw26rtLJWKY7EWX7k+pyvCQwF4+PObggxWbiT74=",
"owner": "noctalia-dev", "owner": "noctalia-dev",
"repo": "noctalia-shell", "repo": "noctalia-shell",
"rev": "9c47ce03f200e0b8fc515d973440d5bc3e359785", "rev": "76b03be48965cb01faabe167f80a8995fb76a92e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -99,6 +100,29 @@
"type": "github" "type": "github"
} }
}, },
"noctalia-qs": {
"inputs": {
"nixpkgs": [
"noctalia",
"nixpkgs"
],
"systems": "systems_2",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1775957204,
"narHash": "sha256-d4CVRtAty2GzDYXx4xYQmR+nlOjjKovyprQfZhgLckU=",
"owner": "noctalia-dev",
"repo": "noctalia-qs",
"rev": "68e82fe34c68ee839a9c37e3466820e266af0c86",
"type": "github"
},
"original": {
"owner": "noctalia-dev",
"repo": "noctalia-qs",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
@@ -121,6 +145,43 @@
"repo": "default", "repo": "default",
"type": "github" "type": "github"
} }
},
"systems_2": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"noctalia",
"noctalia-qs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1775636079,
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View File

@@ -17,42 +17,29 @@
}; };
}; };
outputs = { self, nixpkgs, home-manager, nixvim, ... }@inputs: { outputs = { self, nixpkgs, home-manager, nixvim, ... }@inputs:
let
mkHost = hostName: nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hosts/${hostName}/hardware-configuration.nix
./hosts/${hostName}/configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.aaron.imports = [
nixvim.homeModules.nixvim
./users/aaron/home.nix
];
}
];
};
in {
nixosConfigurations = { nixosConfigurations = {
default = mkHost "default";
default = nixpkgs.lib.nixosSystem { neon = mkHost "neon";
system = "x86_64-linux"; argon = mkHost "argon";
specialArgs = { inherit inputs; };
modules = [
./hosts/default/hardware-configuration.nix
./hosts/default/configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.aaron.imports = [
nixvim.homeModules.nixvim
./users/aaron/home.nix
];
}
];
};
neon = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hosts/neon/hardware-configuration.nix
./hosts/neon/configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.aaron.imports = [
nixvim.homeModules.nixvim
./users/aaron/home.nix
];
}
];
};
}; };
}; };
} }

View File

@@ -0,0 +1,32 @@
{ config, pkgs, inputs, ... }:
{
imports = [
../../modules/nixos/audio.nix
../../modules/nixos/bootloader.nix
../../modules/nixos/calibre.nix
../../modules/nixos/certificates.nix
../../modules/nixos/drives.nix
../../modules/nixos/gnupg.nix
../../modules/nixos/graphics.nix
../../modules/nixos/greetd.nix
../../modules/nixos/locales.nix
../../modules/nixos/networking.nix
../../modules/nixos/niri.nix
../../modules/nixos/noctalia.nix
../../modules/nixos/openssh.nix
../../modules/nixos/packages.nix
../../modules/nixos/protonvpn.nix
../../modules/nixos/services.nix
../../modules/nixos/settings.nix
../../modules/nixos/steam.nix
../../modules/nixos/users.nix
];
# set hostname
networking.hostName = "argon";
# install state version
system.stateVersion = "25.11"; # Don't change
}

View File

@@ -0,0 +1,39 @@
# 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, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ "dm-crypt dm-mod" ];
boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-label/nixcrypt";
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/mapper/lvmroot-root";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/AC1C-20EB";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
fileSystems."/home" =
{ device = "/dev/mapper/lvmroot-home";
fsType = "ext4";
};
swapDevices =
[ { device = "/dev/mapper/lvmroot-swap"; }
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -3,11 +3,6 @@
{ pkgs, lib, ... }: { pkgs, lib, ... }:
{ {
imports =
[
./hardware-configuration.nix
];
# use flakes # use flakes
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [ "nix-command" "flakes" ];

View File

@@ -5,6 +5,7 @@
../../modules/nixos/audio.nix ../../modules/nixos/audio.nix
../../modules/nixos/bootloader.nix ../../modules/nixos/bootloader.nix
../../modules/nixos/certificates.nix ../../modules/nixos/certificates.nix
../../modules/nixos/docker.nix
../../modules/nixos/gnupg.nix ../../modules/nixos/gnupg.nix
../../modules/nixos/locales.nix ../../modules/nixos/locales.nix
../../modules/nixos/networking.nix ../../modules/nixos/networking.nix
@@ -19,6 +20,9 @@
../../modules/nixos/users.nix ../../modules/nixos/users.nix
]; ];
# set hostname
networking.hostName = "neon";
# install state version # install state version
system.stateVersion = "25.11"; # Don't change system.stateVersion = "25.11"; # Don't change
} }

View File

@@ -7,10 +7,11 @@
clipboard-paste-protection = false; clipboard-paste-protection = false;
clipboard-read = "allow"; clipboard-read = "allow";
font-family = "0xProto Nerd Font Mono"; font-family = "0xProto Nerd Font Mono";
font-size = 9; font-size = 12;
gtk-titlebar = false; gtk-titlebar = false;
scrollback-limit = 10000; scrollback-limit = 100000;
shell-integration = "zsh"; shell-integration = "zsh";
shell-integration-features = "ssh-env,ssh-terminfo";
theme = "noctalia"; # generated by noctalia-shell theme = "noctalia"; # generated by noctalia-shell
window-decoration = "auto"; window-decoration = "auto";
window-padding-x = 10; window-padding-x = 10;

View File

@@ -22,5 +22,6 @@
plugins.telescope.enable = true; plugins.telescope.enable = true;
plugins.web-devicons.enable = true; plugins.web-devicons.enable = true;
plugins.indent-blankline.enable = true; plugins.indent-blankline.enable = true;
extraPlugins = [ pkgs.vimPlugins.plenary-nvim ];
}; };
} }

View File

@@ -3,13 +3,18 @@
{ {
# user packages # user packages
home.packages = with pkgs; [ home.packages = with pkgs; [
devenv
discord discord
fastfetch fastfetch
keepassxc keepassxc
screenfetch teamspeak6-client
]; ];
# services and other software # services and other software
services.syncthing.enable = true; services.syncthing.enable = true;
programs.home-manager.enable = true; programs.home-manager.enable = true;
# browsers
programs.chromium.enable = true;
programs.firefox.enable = true;
} }

View File

@@ -1,15 +1,25 @@
{ config, pkgs, inputs, ... }: { config, lib, pkgs, inputs, ... }:
{ {
# configure z-shell to use omz with some plugins
programs.zsh = { programs.zsh = {
enable = true; enable = true;
autosuggestion.enable = true; autosuggestion.enable = true;
syntaxHighlighting.enable = true; syntaxHighlighting.enable = true;
oh-my-zsh = { oh-my-zsh = {
enable = true; enable = true;
theme = "agnoster"; # theme will be set below
#plugins = [ "git" "ssh-agent" ]; theme = "";
plugins = [ "git" "ssh-agent" "gpg-agent" ];
}; };
# only display a fancy theme when glyphs are rendered
initContent = lib.mkOrder 550 ''
if [[ "$TERM" == "linux" || "$TERM" == "screen" ]]; then
ZSH_THEME="gentoo"
else
ZSH_THEME="agnoster"
fi
'';
}; };
# set important env vars # set important env vars

View File

@@ -9,6 +9,7 @@
package = pkgs.gnome-themes-extra; package = pkgs.gnome-themes-extra;
}; };
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1; gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
gtk4.theme = null;
gtk4.extraConfig.gtk-application-prefer-dark-theme = 1; gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
}; };

View File

@@ -40,12 +40,17 @@
bind J resize-pane -D 5 bind J resize-pane -D 5
bind K resize-pane -U 5 bind K resize-pane -U 5
bind L resize-pane -R 5 bind L resize-pane -R 5
# Wayland clipboard integration
# Copy selection to both clipboard (Ctrl+V / Shift+Insert) and primary (middle-click)
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "wl-copy && wl-copy --primary"
bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "wl-copy && wl-copy --primary"
bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "wl-copy && wl-copy --primary"
# Kill commands # Kill commands
bind q kill-window bind q kill-window
bind Q kill-session bind Q kill-session
# Bars # Bars
set -g status-left "#[fg=black,bg=blue,bold] #S#[fg=blue,bg=black,nobold,noitalics,nounderscore]" set -g status-left-length 24
set -g status-left "#[fg=black,bg=blue,bold] #S #[fg=blue,bg=black,nobold,noitalics,nounderscore]" set -g status-left "#[fg=black,bg=blue,bold] #{=20:session_name} #[fg=blue,bg=black,nobold,noitalics,nounderscore]"
set -g status-right "#{prefix_highlight}#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack] %Y-%m-%d #[fg=white,bg=brightblack,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack] %H:%M #[fg=cyan,bg=brightblack,nobold,noitalics,nounderscore]#[fg=black,bg=cyan,bold] #H " set -g status-right "#{prefix_highlight}#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack] %Y-%m-%d #[fg=white,bg=brightblack,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack] %H:%M #[fg=cyan,bg=brightblack,nobold,noitalics,nounderscore]#[fg=black,bg=cyan,bold] #H "
# Windows # Windows
set -g window-status-format "#[fg=black,bg=brightblack,nobold,noitalics,nounderscore] #[fg=white,bg=brightblack]#I #[fg=white,bg=brightblack,nobold,noitalics,nounderscore] #[fg=white,bg=brightblack]#W #F #[fg=brightblack,bg=black,nobold,noitalics,nounderscore]" set -g window-status-format "#[fg=black,bg=brightblack,nobold,noitalics,nounderscore] #[fg=white,bg=brightblack]#I #[fg=white,bg=brightblack,nobold,noitalics,nounderscore] #[fg=white,bg=brightblack]#W #F #[fg=brightblack,bg=black,nobold,noitalics,nounderscore]"

View File

@@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
# install calibre for ebook management and kobo syncing
environment.systemPackages = with pkgs; [
calibre
];
}

26
modules/nixos/docker.nix Normal file
View File

@@ -0,0 +1,26 @@
{ config, lib, pkgs, ...}:
{
# add docker group to user
users.users.aaron.extraGroups = [ "docker" ];
virtualisation.docker = {
enable = true;
# Customize Docker daemon settings
daemon.settings = {
dns = [ "1.1.1.1" "8.8.8.8" ];
log-driver = "journald";
registry-mirrors = [ "https://mirror.gcr.io" ];
storage-driver = "overlay2";
};
# Use the rootless mode
rootless = {
enable = true;
setSocketVariable = true;
};
# Install docker-compose
extraPackages = with pkgs; [
docker-compose
];
};
}

47
modules/nixos/drives.nix Normal file
View File

@@ -0,0 +1,47 @@
{ config, lib, pkgs, ... }:
# Add encrypted drives to argon
{
# copy keyfiles into initrd to make them available during early boot
boot.initrd.secrets = {
"/etc/nixos/keys/data1.key" = "/etc/nixos/keys/data1.key";
"/etc/nixos/keys/data2.key" = "/etc/nixos/keys/data2.key";
"/etc/nixos/keys/nvmecache.key" = "/etc/nixos/keys/nvmecache.key";
};
# decrypt data drives with keyfiles for argon
boot.initrd.luks.devices = {
"data1" = {
device = "/dev/disk/by-uuid/dfae62cc-bad1-4879-bf9a-461bde833625";
keyFile = "/etc/nixos/keys/data1.key";
};
"data2" = {
device = "/dev/disk/by-uuid/8312edae-9247-481b-a313-52a7f848f027";
keyFile = "/etc/nixos/keys/data2.key";
};
"nvmecache" = {
device = "/dev/disk/by-uuid/2352250e-4ebe-4f9a-bf66-0d4aaa961bd8";
keyFile = "/etc/nixos/keys/nvmecache.key";
};
};
# mount decrypted filesystems
fileSystems."/mnt/data1" = {
device = "/dev/mapper/data1";
fsType = "ext4";
options = [ "nofail" ];
};
fileSystems."/mnt/data2" = {
device = "/dev/mapper/data2";
fsType = "ext4";
options = [ "nofail" ];
};
fileSystems."/mnt/nvmecache" = {
device = "/dev/mapper/nvmecache";
fsType = "ext4";
options = [ "nofail" ];
};
}

View File

@@ -0,0 +1,17 @@
{ config, lib, pkgs, ... }:
{
# enable amd GPU acceleration (mesa, vulkan, egl)
hardware.graphics = {
enable = true;
enable32Bit = true;
};
# install amdgpu_top
environment.systemPackages = with pkgs; [
amdgpu_top
];
# add amdgpu to the initrd for plymouth
hardware.amdgpu.initrd.enable = true;
}

14
modules/nixos/greetd.nix Normal file
View File

@@ -0,0 +1,14 @@
{ config, lib, pkgs, ... }:
{
# greetd display manager with tuigreet
services.greetd = {
enable = true;
settings = {
default_session = {
command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd niri-session";
user = "greeter";
};
};
};
}

View File

@@ -4,18 +4,18 @@
# set the time zone # set the time zone
time.timeZone = "Europe/Zurich"; time.timeZone = "Europe/Zurich";
# set internationalisation properties # keep system language in english, but use swiss locale for formatting
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = { i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8"; LC_ADDRESS = "de_CH.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8"; LC_IDENTIFICATION = "de_CH.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8"; LC_MEASUREMENT = "de_CH.UTF-8";
LC_MONETARY = "en_US.UTF-8"; LC_MONETARY = "de_CH.UTF-8";
LC_NAME = "en_US.UTF-8"; LC_NAME = "de_CH.UTF-8";
LC_NUMERIC = "en_US.UTF-8"; LC_NUMERIC = "de_CH.UTF-8";
LC_PAPER = "en_US.UTF-8"; LC_PAPER = "de_CH.UTF-8";
LC_TELEPHONE = "en_US.UTF-8"; LC_TELEPHONE = "de_CH.UTF-8";
LC_TIME = "en_US.UTF-8"; LC_TIME = "de_CH.UTF-8";
}; };
# set console font and keymap # set console font and keymap

View File

@@ -1,9 +1,6 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
{ {
# set hostnname
networking.hostName = "neon";
# user networkmanager # user networkmanager
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
@@ -11,6 +8,9 @@
networking.firewall.allowedTCPPorts = [ ]; networking.firewall.allowedTCPPorts = [ ];
networking.firewall.allowedUDPPorts = [ ]; networking.firewall.allowedUDPPorts = [ ];
# enable wifi firmware
hardware.enableAllFirmware = true;
# enable bluetooth # enable bluetooth
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;

View File

@@ -1,24 +1,19 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
{ {
# system packges # system packages
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
alacritty
btop btop
cowsay cowsay
dnsutils dnsutils
ethtool ethtool
file file
fwupd
fwupd-efi
ghostty
git git
imagemagick imagemagick
imv imv
iperf3 iperf3
jq jq
kdePackages.qtmultimedia kdePackages.qtmultimedia
kitty
ldns ldns
lm_sensors lm_sensors
lsof lsof
@@ -31,23 +26,19 @@
nvd nvd
p7zip p7zip
pciutils pciutils
sddm-astronaut
socat socat
sof-firmware sof-firmware
strace strace
sysstat sysstat
terminus_font
tree tree
unzip unzip
usbutils usbutils
vim vim
wl-clipboard
wget wget
which which
xz xz
zip zip
zstd zstd
]; ];
# browser
programs.firefox.enable = true;
} }

View File

@@ -0,0 +1,13 @@
{ config, lib, pkgs, ... }:
{
# protonvpn uses wireguard tunnels, which break strict reverse path filtering
# because packets arrive on the tunnel interface but may be routed back differently.
# "loose" checks that the source is routable through *any* interface (not necessarily
# the same one), which is sufficient for wireguard while still preventing IP spoofing.
networking.firewall.checkReversePath = "loose";
environment.systemPackages = with pkgs; [
proton-vpn
];
}

View File

@@ -17,4 +17,9 @@
sddm-astronaut sddm-astronaut
]; ];
}; };
# Make the theme available in the system path so sddm can find it
environment.systemPackages = with pkgs; [
sddm-astronaut
];
} }

View File

@@ -32,13 +32,14 @@
}; };
}; };
# allow unfree packages (steam, protonvpn, discord, etc.)
nixpkgs.config.allowUnfree = true;
# links /libexec from derivations to /run/current-system/sw # links /libexec from derivations to /run/current-system/sw
environment.pathsToLink = [ "/libexec" ]; environment.pathsToLink = [ "/libexec" ];
# set the default editor to vim
environment.variables.EDITOR = "vim";
# enable home-manager globally # enable home-manager globally
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup"; home-manager.backupCommand = "mv -f {file} {file}.hm-bak-$(date +%Y%m%d%H%M%S)";
} }

View File

@@ -1,9 +1,6 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
{ {
# allow unfree to install steam
nixpkgs.config.allowUnfree = true;
# enable steam and open firewall # enable steam and open firewall
programs.steam = { programs.steam = {
enable = true; enable = true;

View File

@@ -5,7 +5,7 @@
users.users.aaron = { users.users.aaron = {
isNormalUser = true; isNormalUser = true;
group = "users"; group = "users";
extraGroups = [ "wheel" "networkmanager" ]; extraGroups = [ "wheel" "networkmanager" "dialout" ];
shell = pkgs.zsh; shell = pkgs.zsh;
}; };
@@ -14,10 +14,5 @@
enable = true; enable = true;
enableCompletion = true; enableCompletion = true;
autosuggestions.enable = true; autosuggestions.enable = true;
ohMyZsh = {
enable = true;
plugins = [ "git" "sudo" ];
theme = "gentoo";
};
}; };
} }