Compare commits
2 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b11705965 | ||
|
|
cff4840824 |
96 changed files with 1177 additions and 4525 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,3 +1,2 @@
|
|||
.directory
|
||||
result
|
||||
secrets
|
||||
|
|
|
|||
11
README.md
Normal file
11
README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# nixos-configuration
|
||||
|
||||
When adding a new host:
|
||||
1. install NixOS via the graphical installer
|
||||
2. `mv /etc/hardware-configuration ./devicename-hardware-configuration.nix`
|
||||
3. copy an existing devicename.nix
|
||||
5. change import to `new-devicename-hardware-configuration.nix`
|
||||
6. set the hostname and optional imports in `new-devicename.nix`
|
||||
7. `ln -s ./new-devicename.nix /etc/nixos/configuration.nix`
|
||||
8. `sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-23.05.tar.gz home-manager`
|
||||
9. apply
|
||||
880
flake.lock
generated
880
flake.lock
generated
|
|
@ -1,880 +0,0 @@
|
|||
{
|
||||
"nodes": {
|
||||
"base16": {
|
||||
"inputs": {
|
||||
"fromYaml": "fromYaml"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1746562888,
|
||||
"narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-fish": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1754405784,
|
||||
"narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=",
|
||||
"owner": "tomyun",
|
||||
"repo": "base16-fish",
|
||||
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tomyun",
|
||||
"repo": "base16-fish",
|
||||
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-helix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1748408240,
|
||||
"narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-helix",
|
||||
"rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-helix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-vim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1732806396,
|
||||
"narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-vim",
|
||||
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-vim",
|
||||
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"binding": {
|
||||
"inputs": {
|
||||
"binding": "binding_2",
|
||||
"nixpkgs": [
|
||||
"servicepoint-tanks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1759096792,
|
||||
"narHash": "sha256-CW4D1yJecw7Id6AxIEJOW3OpcX3Y4Ehng76/YlR1I9w=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "8df2996504866f3193fbe51860ab173d25724e5e",
|
||||
"revCount": 307,
|
||||
"type": "git",
|
||||
"url": "https://git.berlin.ccc.de/servicepoint/servicepoint-binding-csharp.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.berlin.ccc.de/servicepoint/servicepoint-binding-csharp.git"
|
||||
}
|
||||
},
|
||||
"binding_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"servicepoint-tanks",
|
||||
"binding",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1759093963,
|
||||
"narHash": "sha256-nis9Xps/P1f/v9FC3LoMLGGCOMMbdrOniDSklqLsH8o=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "44ef4bb6d707c46af1bed6244f17a16f26f246c1",
|
||||
"revCount": 304,
|
||||
"type": "git",
|
||||
"url": "https://git.berlin.ccc.de/servicepoint/servicepoint-binding-uniffi.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.berlin.ccc.de/servicepoint/servicepoint-binding-uniffi.git"
|
||||
}
|
||||
},
|
||||
"crane": {
|
||||
"locked": {
|
||||
"lastModified": 1754269165,
|
||||
"narHash": "sha256-0tcS8FHd4QjbCVoxN9jI+PjHgA4vc/IjkUSp+N3zy0U=",
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"rev": "444e81206df3f7d92780680e45858e31d2f07a08",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"naersk",
|
||||
"nixpkgs"
|
||||
],
|
||||
"rust-analyzer-src": "rust-analyzer-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752475459,
|
||||
"narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"firefox-gnome-theme": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1748383148,
|
||||
"narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=",
|
||||
"owner": "rafaelmardojai",
|
||||
"repo": "firefox-gnome-theme",
|
||||
"rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rafaelmardojai",
|
||||
"repo": "firefox-gnome-theme",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1747046372,
|
||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762810396,
|
||||
"narHash": "sha256-dxFVgQPG+R72dkhXTtqUm7KpxElw3u6E+YlQ2WaDgt8=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "0bdadb1b265fb4143a75bd1ec7d8c915898a9923",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_2": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"lanzaboote",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1754091436,
|
||||
"narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fromYaml": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1731966426,
|
||||
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"lanzaboote",
|
||||
"pre-commit-hooks-nix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gnome-shell": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1744584021,
|
||||
"narHash": "sha256-0RJ4mJzf+klKF4Fuoc8VN8dpQQtZnKksFmR2jhWE1Ew=",
|
||||
"owner": "GNOME",
|
||||
"repo": "gnome-shell",
|
||||
"rev": "52c517c8f6c199a1d6f5118fae500ef69ea845ae",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "GNOME",
|
||||
"ref": "48.1",
|
||||
"repo": "gnome-shell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1758463745,
|
||||
"narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-25.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"lanzaboote": {
|
||||
"inputs": {
|
||||
"crane": "crane",
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-parts": "flake-parts_2",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
||||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762205063,
|
||||
"narHash": "sha256-If6vQ+KvtKs3ARBO9G3l+4wFSCYtRBrwX1z+I+B61wQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "lanzaboote",
|
||||
"rev": "88b8a563ff5704f4e8d8e5118fb911fa2110ca05",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "v0.4.3",
|
||||
"repo": "lanzaboote",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"naersk": {
|
||||
"inputs": {
|
||||
"fenix": "fenix",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752689277,
|
||||
"narHash": "sha256-uldUBFkZe/E7qbvxa3mH1ItrWZyT6w1dBKJQF/3ZSsc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"rev": "0e72363d0938b0208d6c646d10649164c43f4d64",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"niri": {
|
||||
"inputs": {
|
||||
"niri-stable": "niri-stable",
|
||||
"niri-unstable": "niri-unstable",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762857797,
|
||||
"narHash": "sha256-puoFJGlbL6khrQKozCO6Wgpq/IhA2Sfnz+ui/87lbQQ=",
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"rev": "2ff3443b4226f6721a43b75e76b6ca59caa34fec",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"niri-stable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1756556321,
|
||||
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "YaLTeR",
|
||||
"ref": "v25.08",
|
||||
"repo": "niri",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"niri-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1762854265,
|
||||
"narHash": "sha256-iykTzCzU8hI7b8LvAquYY4Asl2xj3AcLzWZv6rm8MGY=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "fb2f67c8a036f674e9101e15a7bb1cf61524ebde",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-filter": {
|
||||
"locked": {
|
||||
"lastModified": 1757882181,
|
||||
"narHash": "sha256-+cCxYIh2UNalTz364p+QYmWHs0P+6wDhiWR4jDIKQIU=",
|
||||
"owner": "numtide",
|
||||
"repo": "nix-filter",
|
||||
"rev": "59c44d1909c72441144b93cf0f054be7fe764de5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "nix-filter",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-vscode-extensions": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762826252,
|
||||
"narHash": "sha256-7VqX6Z8Pq5DzVV5YM7o92vC6goNGtucCv71dXwpy01Q=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"rev": "f10a42469c4db9b4ae7b3cd3a5c0d8bffb4a8b98",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1762756533,
|
||||
"narHash": "sha256-HiRDeUOD1VLklHeOmaKDzf+8Hb7vSWPVFcWwaTrpm+U=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c2448301fb856e351aab33e64c33a3fc8bcf637d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1761765539,
|
||||
"narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "719359f4562934ae99f5443f20aa06c2ffff91fc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1762482733,
|
||||
"narHash": "sha256-g/da4FzvckvbiZT075Sb1/YDNDr+tGQgh4N8i5ceYMg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e1ebeec86b771e9d387dd02d82ffdc77ac753abc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"inputs": {
|
||||
"flake-parts": [
|
||||
"flake-parts"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762858278,
|
||||
"narHash": "sha256-BYeYJFonJRt9xg6UYXpvVGK5j4NEOXHETRffPQT7drM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "a053db755b35970d6a0ebd97aaceb8f629faa8e7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks-nix": {
|
||||
"inputs": {
|
||||
"flake-compat": [
|
||||
"lanzaboote",
|
||||
"flake-compat"
|
||||
],
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"lanzaboote",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1750779888,
|
||||
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"home-manager": "home-manager",
|
||||
"lanzaboote": "lanzaboote",
|
||||
"naersk": "naersk",
|
||||
"niri": "niri",
|
||||
"nix-filter": "nix-filter",
|
||||
"nix-vscode-extensions": "nix-vscode-extensions",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"nur": "nur",
|
||||
"servicepoint-cli": "servicepoint-cli",
|
||||
"servicepoint-simulator": "servicepoint-simulator",
|
||||
"servicepoint-tanks": "servicepoint-tanks",
|
||||
"stylix": "stylix",
|
||||
"treefmt-nix": "treefmt-nix",
|
||||
"zerforschen-plus": "zerforschen-plus"
|
||||
}
|
||||
},
|
||||
"rust-analyzer-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1752428706,
|
||||
"narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=",
|
||||
"owner": "rust-lang",
|
||||
"repo": "rust-analyzer",
|
||||
"rev": "591e3b7624be97e4443ea7b5542c191311aa141d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rust-lang",
|
||||
"ref": "nightly",
|
||||
"repo": "rust-analyzer",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"rust-overlay": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"lanzaboote",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761791894,
|
||||
"narHash": "sha256-myRIDh+PxaREz+z9LzbqBJF+SnTFJwkthKDX9zMyddY=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "59c45eb69d9222a4362673141e00ff77842cd219",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"servicepoint-cli": {
|
||||
"inputs": {
|
||||
"naersk": [
|
||||
"naersk"
|
||||
],
|
||||
"nix-filter": [
|
||||
"nix-filter"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1757763404,
|
||||
"narHash": "sha256-a1h+58wDOtbQXrHoZwLwB7PhXwFhBXRHhNRhAQGq/oY=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "07a5fbca27ec941c841ad93f2ac65bc529225a51",
|
||||
"revCount": 46,
|
||||
"type": "git",
|
||||
"url": "https://git.berlin.ccc.de/servicepoint/servicepoint-cli.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.berlin.ccc.de/servicepoint/servicepoint-cli.git"
|
||||
}
|
||||
},
|
||||
"servicepoint-simulator": {
|
||||
"inputs": {
|
||||
"naersk": [
|
||||
"naersk"
|
||||
],
|
||||
"nix-filter": [
|
||||
"nix-filter"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1757763091,
|
||||
"narHash": "sha256-V3E6JKGzCrq5u+hp38sAdKv/EoxU+X0qfSoBIPxALi4=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "493b7b0343334019b372176f811a966839ba9aa5",
|
||||
"revCount": 121,
|
||||
"type": "git",
|
||||
"url": "https://git.berlin.ccc.de/servicepoint/servicepoint-simulator.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.berlin.ccc.de/servicepoint/servicepoint-simulator.git"
|
||||
}
|
||||
},
|
||||
"servicepoint-tanks": {
|
||||
"inputs": {
|
||||
"binding": "binding",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1760288584,
|
||||
"narHash": "sha256-2eY1f4LV9s5Hc/tb1iuJYPewE4Seyeguf7VdzC9bbbo=",
|
||||
"ref": "service-improvements",
|
||||
"rev": "1bb73d664dac78c5d69a02ae67169d76cca7aab4",
|
||||
"revCount": 218,
|
||||
"type": "git",
|
||||
"url": "https://git.berlin.ccc.de/vinzenz/servicepoint-tanks.git"
|
||||
},
|
||||
"original": {
|
||||
"ref": "service-improvements",
|
||||
"type": "git",
|
||||
"url": "https://git.berlin.ccc.de/vinzenz/servicepoint-tanks.git"
|
||||
}
|
||||
},
|
||||
"stylix": {
|
||||
"inputs": {
|
||||
"base16": "base16",
|
||||
"base16-fish": "base16-fish",
|
||||
"base16-helix": "base16-helix",
|
||||
"base16-vim": "base16-vim",
|
||||
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||
"flake-parts": [
|
||||
"flake-parts"
|
||||
],
|
||||
"gnome-shell": "gnome-shell",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nur": [
|
||||
"nur"
|
||||
],
|
||||
"systems": "systems",
|
||||
"tinted-foot": "tinted-foot",
|
||||
"tinted-kitty": "tinted-kitty",
|
||||
"tinted-schemes": "tinted-schemes",
|
||||
"tinted-tmux": "tinted-tmux",
|
||||
"tinted-zed": "tinted-zed"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762295027,
|
||||
"narHash": "sha256-5z5cGrp9F8g8iyQrM8WkB6pAwP4AaicljKZ15gx+X9Y=",
|
||||
"owner": "nix-community",
|
||||
"repo": "stylix",
|
||||
"rev": "91b9a270523361268ba6a8772152fde31103869f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-25.05",
|
||||
"repo": "stylix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-foot": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1726913040,
|
||||
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-foot",
|
||||
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-foot",
|
||||
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-kitty": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1735730497,
|
||||
"narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-kitty",
|
||||
"rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-kitty",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-schemes": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1750770351,
|
||||
"narHash": "sha256-LI+BnRoFNRa2ffbe3dcuIRYAUcGklBx0+EcFxlHj0SY=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "schemes",
|
||||
"rev": "5a775c6ffd6e6125947b393872cde95867d85a2a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "schemes",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-tmux": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1751159871,
|
||||
"narHash": "sha256-UOHBN1fgHIEzvPmdNMHaDvdRMgLmEJh2hNmDrp3d3LE=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-tmux",
|
||||
"rev": "bded5e24407cec9d01bd47a317d15b9223a1546c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-tmux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-zed": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1751158968,
|
||||
"narHash": "sha256-ksOyv7D3SRRtebpXxgpG4TK8gZSKFc4TIZpR+C98jX8=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-zed",
|
||||
"rev": "86a470d94204f7652b906ab0d378e4231a5b3384",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-zed",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"treefmt-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762410071,
|
||||
"narHash": "sha256-aF5fvoZeoXNPxT0bejFUBXeUjXfHLSL7g+mjR/p5TEg=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "97a30861b13c3731a84e09405414398fbf3e109f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xwayland-satellite-stable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1755491097,
|
||||
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Supreeeme",
|
||||
"ref": "v0.7",
|
||||
"repo": "xwayland-satellite",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xwayland-satellite-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1762747449,
|
||||
"narHash": "sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "6338574bc5c036487486acde264f38f39ea15fad",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"zerforschen-plus": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1757965108,
|
||||
"narHash": "sha256-V2U1XbtfvWQ6Bt2dvbUWAlKjqY3zjrbkVveLsyxnq1w=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "d794fafc25c8fdead19dcbffc4c0b4bb7ff98272",
|
||||
"revCount": 32,
|
||||
"type": "git",
|
||||
"url": "https://git.berlin.ccc.de/vinzenz/zerforschen.plus"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.berlin.ccc.de/vinzenz/zerforschen.plus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
340
flake.nix
340
flake.nix
|
|
@ -1,340 +0,0 @@
|
|||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-25.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
#keep-sorted start block=yes
|
||||
flake-parts = {
|
||||
url = "github:hercules-ci/flake-parts";
|
||||
#inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
lanzaboote = {
|
||||
url = "github:nix-community/lanzaboote/v0.4.3";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
naersk = {
|
||||
url = "github:nix-community/naersk";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
niri = {
|
||||
url = "github:sodiboo/niri-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.nixpkgs-stable.follows = "nixpkgs";
|
||||
};
|
||||
nix-filter.url = "github:numtide/nix-filter";
|
||||
nix-vscode-extensions = {
|
||||
url = "github:nix-community/nix-vscode-extensions";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nur = {
|
||||
url = "github:nix-community/NUR";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
flake-parts.follows = "flake-parts";
|
||||
};
|
||||
};
|
||||
servicepoint-cli = {
|
||||
url = "git+https://git.berlin.ccc.de/servicepoint/servicepoint-cli.git";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
naersk.follows = "naersk";
|
||||
nix-filter.follows = "nix-filter";
|
||||
};
|
||||
};
|
||||
servicepoint-simulator = {
|
||||
url = "git+https://git.berlin.ccc.de/servicepoint/servicepoint-simulator.git";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
naersk.follows = "naersk";
|
||||
nix-filter.follows = "nix-filter";
|
||||
};
|
||||
};
|
||||
servicepoint-tanks = {
|
||||
url = "git+https://git.berlin.ccc.de/vinzenz/servicepoint-tanks.git?ref=service-improvements";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
stylix = {
|
||||
url = "github:nix-community/stylix/release-25.05";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
nur.follows = "nur";
|
||||
flake-parts.follows = "flake-parts";
|
||||
};
|
||||
};
|
||||
treefmt-nix = {
|
||||
url = "github:numtide/treefmt-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
zerforschen-plus = {
|
||||
url = "git+https://git.berlin.ccc.de/vinzenz/zerforschen.plus";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
#keep-sorted end
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
home-manager,
|
||||
# keep-sorted start
|
||||
lanzaboote,
|
||||
niri,
|
||||
nix-vscode-extensions,
|
||||
nixpkgs-unstable,
|
||||
servicepoint-cli,
|
||||
servicepoint-simulator,
|
||||
servicepoint-tanks,
|
||||
stylix,
|
||||
treefmt-nix,
|
||||
zerforschen-plus,
|
||||
# keep-sorted end
|
||||
...
|
||||
}:
|
||||
let
|
||||
devices = {
|
||||
vinzenz-lpt2 = {
|
||||
system = "x86_64-linux";
|
||||
additional-modules = [
|
||||
self.nixosModules.user-vinzenz
|
||||
|
||||
self.nixosModules.gnome
|
||||
self.nixosModules.wine-gaming
|
||||
self.nixosModules.steam
|
||||
self.nixosModules.podman
|
||||
self.nixosModules.vinzenz-desktop-settings
|
||||
self.nixosModules.intel-graphics
|
||||
self.nixosModules.secure-boot
|
||||
];
|
||||
home-manager-users = {
|
||||
inherit (self.homeConfigurations) vinzenz;
|
||||
};
|
||||
};
|
||||
vinzenz-pc2 = {
|
||||
system = "x86_64-linux";
|
||||
additional-modules = [
|
||||
self.nixosModules.user-vinzenz
|
||||
self.nixosModules.user-ronja
|
||||
|
||||
self.nixosModules.gnome
|
||||
self.nixosModules.wine-gaming
|
||||
self.nixosModules.steam
|
||||
self.nixosModules.podman
|
||||
self.nixosModules.vinzenz-desktop-settings
|
||||
self.nixosModules.amd-graphics
|
||||
self.nixosModules.secure-boot
|
||||
];
|
||||
home-manager-users = {
|
||||
inherit (self.homeConfigurations) vinzenz ronja;
|
||||
};
|
||||
};
|
||||
ronja-pc = {
|
||||
system = "x86_64-linux";
|
||||
additional-modules = [
|
||||
self.nixosModules.user-ronja
|
||||
|
||||
self.nixosModules.gnome
|
||||
self.nixosModules.steam
|
||||
self.nixosModules.wine-gaming
|
||||
self.nixosModules.vinzenz-desktop-settings
|
||||
];
|
||||
home-manager-users = {
|
||||
inherit (self.homeConfigurations) ronja;
|
||||
};
|
||||
};
|
||||
hetzner-vpn2 = {
|
||||
system = "aarch64-linux";
|
||||
};
|
||||
forgejo-runner-1 = {
|
||||
system = "aarch64-linux";
|
||||
additional-modules = [ self.nixosModules.podman ];
|
||||
};
|
||||
};
|
||||
inherit (nixpkgs) lib;
|
||||
forDevice = f: lib.mapAttrs (device: value: f (value // { inherit device; })) devices;
|
||||
supported-systems = lib.attrsets.mapAttrsToList (k: v: v.system) devices;
|
||||
treefmt-config = {
|
||||
projectRootFile = "flake.nix";
|
||||
programs = {
|
||||
nixfmt.enable = true;
|
||||
jsonfmt.enable = true;
|
||||
prettier.enable = true;
|
||||
keep-sorted.enable = true;
|
||||
};
|
||||
};
|
||||
forAllSystems =
|
||||
f:
|
||||
lib.genAttrs supported-systems (
|
||||
system:
|
||||
f rec {
|
||||
inherit system;
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
treefmt-eval = treefmt-nix.lib.evalModule pkgs treefmt-config;
|
||||
}
|
||||
);
|
||||
importModuleDir =
|
||||
directory:
|
||||
nixpkgs.lib.packagesFromDirectoryRecursive {
|
||||
inherit directory;
|
||||
callPackage = path: _args: path;
|
||||
};
|
||||
in
|
||||
{
|
||||
overlays = {
|
||||
unstable-packages = final: prev: {
|
||||
unstable = import nixpkgs-unstable {
|
||||
inherit (prev) system config;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
nixosModules = (importModuleDir ./nixosModules) // {
|
||||
niri =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ niri.nixosModules.niri ];
|
||||
nixpkgs.overlays = [ niri.overlays.niri ];
|
||||
|
||||
programs.niri = {
|
||||
enable = true;
|
||||
#package = pkgs.niri-stable;
|
||||
};
|
||||
};
|
||||
pkgs-unstable = {
|
||||
nixpkgs.overlays = [ self.overlays.unstable-packages ];
|
||||
};
|
||||
pkgs-vscode-extensions = {
|
||||
nixpkgs.overlays = [ nix-vscode-extensions.overlays.default ];
|
||||
};
|
||||
# required modules to use other modules, should not do anything on their own
|
||||
default = {
|
||||
imports = [ self.nixosModules.allowed-unfree-list ];
|
||||
};
|
||||
};
|
||||
|
||||
homeModules = importModuleDir ./homeModules;
|
||||
homeConfigurations = {
|
||||
vinzenz = ./homeConfigurations/vinzenz;
|
||||
ronja = ./homeConfigurations/ronja;
|
||||
};
|
||||
|
||||
nixosConfigurations = forDevice (
|
||||
{
|
||||
device,
|
||||
system,
|
||||
home-manager-users ? { },
|
||||
additional-modules ? [ ],
|
||||
}:
|
||||
let
|
||||
specialArgs = {
|
||||
inherit device;
|
||||
};
|
||||
in
|
||||
nixpkgs.lib.nixosSystem {
|
||||
inherit system specialArgs;
|
||||
modules = [
|
||||
{
|
||||
networking.hostName = device;
|
||||
nixpkgs = {
|
||||
inherit system;
|
||||
hostPlatform = lib.mkDefault system;
|
||||
};
|
||||
system = {
|
||||
stateVersion = "22.11";
|
||||
autoUpgrade.flake = "git+https://git.berlin.ccc.de/vinzenz/nixos-configuration.git";
|
||||
};
|
||||
|
||||
nixpkgs.overlays = [
|
||||
self.overlays.unstable-packages
|
||||
];
|
||||
|
||||
nix.settings.experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
|
||||
documentation = {
|
||||
info.enable = false; # info pages and the info command
|
||||
doc.enable = false; # documentation distributed in packages' /share/doc
|
||||
};
|
||||
}
|
||||
|
||||
./nixosConfigurations/${device}
|
||||
|
||||
# keep-sorted start
|
||||
lanzaboote.nixosModules.lanzaboote
|
||||
self.nixosModules.allowed-unfree-list
|
||||
self.nixosModules.autoupdate
|
||||
self.nixosModules.default
|
||||
self.nixosModules.extra-caches
|
||||
self.nixosModules.globalinstalls
|
||||
self.nixosModules.lix-is-nix
|
||||
self.nixosModules.openssh
|
||||
self.nixosModules.systemd-boot
|
||||
self.nixosModules.tailscale
|
||||
zerforschen-plus.nixosModules.default
|
||||
# keep-sorted end
|
||||
]
|
||||
++ (nixpkgs.lib.optionals (home-manager-users != { }) [
|
||||
{
|
||||
home-manager = {
|
||||
extraSpecialArgs = specialArgs;
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
};
|
||||
|
||||
time.timeZone = "Europe/Berlin";
|
||||
|
||||
home-manager.sharedModules = [
|
||||
{ home.stateVersion = "22.11"; }
|
||||
# keep-sorted start
|
||||
self.homeModules.git
|
||||
self.homeModules.gnome-extensions
|
||||
self.homeModules.nano
|
||||
self.homeModules.templates
|
||||
self.homeModules.zsh-basics
|
||||
self.homeModules.zsh-powerlevel10k
|
||||
# keep-sorted end
|
||||
];
|
||||
|
||||
home-manager.users = home-manager-users;
|
||||
}
|
||||
|
||||
# keep-sorted start
|
||||
home-manager.nixosModules.home-manager
|
||||
self.nixosModules.en-de
|
||||
self.nixosModules.firmware-updates
|
||||
self.nixosModules.gnome
|
||||
self.nixosModules.kdeconnect
|
||||
self.nixosModules.modern-desktop
|
||||
self.nixosModules.niri
|
||||
self.nixosModules.nix-ld
|
||||
self.nixosModules.pkgs-unstable
|
||||
self.nixosModules.pkgs-vscode-extensions
|
||||
self.nixosModules.quiet-boot
|
||||
self.nixosModules.stylix
|
||||
servicepoint-cli.nixosModules.default
|
||||
servicepoint-simulator.nixosModules.default
|
||||
servicepoint-tanks.nixosModules.default
|
||||
stylix.nixosModules.stylix
|
||||
# keep-sorted end
|
||||
])
|
||||
++ additional-modules;
|
||||
}
|
||||
);
|
||||
|
||||
formatter = forAllSystems ({ treefmt-eval, ... }: treefmt-eval.config.build.wrapper);
|
||||
|
||||
checks = forAllSystems (
|
||||
{ treefmt-eval, ... }:
|
||||
{
|
||||
formatting = treefmt-eval.config.build.check self;
|
||||
}
|
||||
);
|
||||
};
|
||||
}
|
||||
76
hetzner-vpn1.nix
Normal file
76
hetzner-vpn1.nix
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
{pkgs, ...}: let
|
||||
wg_port = 51820;
|
||||
in {
|
||||
imports = [
|
||||
(import ./modules {
|
||||
hostName = "hetzner-vpn1";
|
||||
enableHomeManager = false;
|
||||
})
|
||||
];
|
||||
|
||||
config = {
|
||||
my = {
|
||||
enabledUsers = ["vinzenz"];
|
||||
server.enable = true;
|
||||
};
|
||||
|
||||
# TODO change to user "vinzenz" when tested
|
||||
users.users.root.openssh.authorizedKeys.keys = [
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICdYqY3Y1/f1bsAi5Qfyr/UWuX9ixu96IeAlhoQaJkbf''
|
||||
];
|
||||
|
||||
environment = {
|
||||
systemPackages = with pkgs; [iptables wireguard-tools];
|
||||
};
|
||||
|
||||
# wireguard server for public ip
|
||||
# enable NAT
|
||||
networking.nat.enable = true;
|
||||
networking.nat.externalInterface = "eth0";
|
||||
networking.nat.internalInterfaces = ["wg0"];
|
||||
networking.firewall = {
|
||||
allowedUDPPorts = [wg_port];
|
||||
};
|
||||
|
||||
networking.wireguard.interfaces = {
|
||||
# "wg0" is the network interface name. You can name the interface arbitrarily.
|
||||
wg0 = {
|
||||
# Determines the IP address and subnet of the server's end of the tunnel interface.
|
||||
ips = ["10.100.0.1/32"];
|
||||
|
||||
# The port that WireGuard listens to. Must be accessible by the client.
|
||||
listenPort = wg_port;
|
||||
|
||||
# This allows the wireguard server to route your traffic to the internet and hence be like a VPN
|
||||
# For this to work you have to set the dnsserver IP of your router (or dnsserver of choice) in your clients
|
||||
postSetup = ''
|
||||
${pkgs.iptables}/bin/iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o eth0 -j MASQUERADE
|
||||
'';
|
||||
|
||||
# This undoes the above command
|
||||
postShutdown = ''
|
||||
${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -s 10.100.0.0/24 -o eth0 -j MASQUERADE
|
||||
'';
|
||||
|
||||
# Path to the private key file
|
||||
privateKeyFile = "/root/wireguard/keys/private";
|
||||
|
||||
peers = [
|
||||
# List of allowed peers.
|
||||
{
|
||||
# Phone
|
||||
publicKey = "/sjNk9rXaMdrCHD2kmut1AXD1UhF1xcZ4ju+EmFGcCk=";
|
||||
# List of IPs assigned to this peer within the tunnel subnet. Used to configure routing.
|
||||
allowedIPs = ["10.100.0.2/32"];
|
||||
}
|
||||
{
|
||||
# vinzenz-lpt
|
||||
publicKey = "D/6431f8oJ61C5vjjEIpY5Rc750oK4yVh9B/32q4xAE=";
|
||||
# List of IPs assigned to this peer within the tunnel subnet. Used to configure routing.
|
||||
allowedIPs = ["10.100.0.3/32"];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
imports = [ ./vscode.nix ];
|
||||
config = {
|
||||
home.packages = with pkgs; [
|
||||
## Apps
|
||||
telegram-desktop
|
||||
kdiff3
|
||||
];
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
zsh = {
|
||||
history = {
|
||||
size = 10000;
|
||||
path = "${config.xdg.dataHome}/zsh/history";
|
||||
expireDuplicatesFirst = true;
|
||||
};
|
||||
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
theme = "agnoster";
|
||||
plugins = [
|
||||
"git"
|
||||
"sudo"
|
||||
"systemadmin"
|
||||
];
|
||||
};
|
||||
shellAliases = {
|
||||
myos-update = ''echo "Enter sudo password" && sudo nixos-rebuild boot --flake git+https://git.berlin.ccc.de/vinzenz/nixos-configuration.git --show-trace --log-format internal-json -v |& ${pkgs.nix-output-monitor}/bin/nom --json'';
|
||||
myos-apply = ''echo "Enter sudo password" && sudo nixos-rebuild switch --flake .# --show-trace --log-format internal-json -v |& ${pkgs.nix-output-monitor}/bin/nom --json'';
|
||||
};
|
||||
};
|
||||
|
||||
git = {
|
||||
userName = "Ronja Spiegelberg";
|
||||
userEmail = "ronja.spiegelberg@gmail.com";
|
||||
|
||||
extraConfig = {
|
||||
pull.ff = "only";
|
||||
merge.tool = "kdiff3";
|
||||
};
|
||||
};
|
||||
|
||||
chromium = {
|
||||
enable = true;
|
||||
extensions = [
|
||||
{
|
||||
# ublock origin
|
||||
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
|
||||
}
|
||||
{
|
||||
id = "dcpihecpambacapedldabdbpakmachpb";
|
||||
updateUrl = "https://raw.githubusercontent.com/iamadamdev/bypass-paywalls-chrome/master/updates.xml";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
config = {
|
||||
home.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
profiles.default = {
|
||||
enableUpdateCheck = false;
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
jnoortheen.nix-ide
|
||||
ms-python.python
|
||||
editorconfig.editorconfig
|
||||
yzhang.markdown-all-in-one
|
||||
redhat.vscode-yaml
|
||||
pkief.material-icon-theme
|
||||
rust-lang.rust-analyzer
|
||||
tamasfe.even-better-toml
|
||||
llvm-vs-code-extensions.vscode-clangd
|
||||
mkhl.direnv
|
||||
vadimcn.vscode-lldb
|
||||
# ms-dotnettools.csharp
|
||||
# ms-vscode-remote.remote-ssh
|
||||
];
|
||||
userSettings = {
|
||||
"files.autoSave" = "afterDelay";
|
||||
"files.autoSaveWhenNoErrors" = true;
|
||||
"files.autoSaveWorkspaceFilesOnly" = true;
|
||||
|
||||
"editor.fontLigatures" = true;
|
||||
"editor.formatOnSave" = true;
|
||||
"editor.formatOnSaveMode" = "modificationsIfAvailable";
|
||||
"editor.minimap.autohide" = true;
|
||||
|
||||
"workbench.startupEditor" = "readme";
|
||||
"workbench.enableExperiments" = false;
|
||||
"workbench.iconTheme" = "material-icon-theme";
|
||||
|
||||
"update.mode" = "none";
|
||||
"extensions.autoUpdate" = false;
|
||||
"extensions.autoCheckUpdates" = false;
|
||||
|
||||
"telemetry.telemetryLevel" = "off";
|
||||
"redhat.telemetry.enabled" = false;
|
||||
|
||||
"git.autofetch" = true;
|
||||
"diffEditor.diffAlgorithm" = "advanced";
|
||||
"explorer.excludeGitIgnore" = true;
|
||||
"markdown.extension.tableFormatter.normalizeIndentation" = true;
|
||||
"markdown.extension.toc.orderedList" = false;
|
||||
"rust-analyzer.checkOnSave.command" = "clippy";
|
||||
|
||||
"nix.formatterPath" = "${lib.getBin pkgs.nixfmt-rfc-style}/bin/nixfmt";
|
||||
|
||||
"\[makefile\]" = {
|
||||
"editor.insertSpaces" = false;
|
||||
"editor.detectIndentation" = false;
|
||||
};
|
||||
|
||||
"\[nix\]" = {
|
||||
"editor.formatOnSave" = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
{
|
||||
"default": [
|
||||
{
|
||||
"type": "reject"
|
||||
}
|
||||
],
|
||||
"transports": {
|
||||
"docker-daemon": {
|
||||
"": [
|
||||
{
|
||||
"type": "insecureAcceptAnything"
|
||||
}
|
||||
]
|
||||
},
|
||||
"docker": {
|
||||
"docker.io/library/debian": [
|
||||
{
|
||||
"type": "insecureAcceptAnything"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,95 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
# keep-sorted start
|
||||
./editorconfig.nix
|
||||
./fonts.nix
|
||||
./fuzzel.nix
|
||||
./git.nix
|
||||
./gnome.nix
|
||||
./niri.nix
|
||||
./ssh.nix
|
||||
./starship.nix
|
||||
./swaylock.nix
|
||||
./swaync.nix
|
||||
./vscode.nix
|
||||
./waybar.nix
|
||||
./wlogout.nix
|
||||
./zsh.nix
|
||||
# keep-sorted end
|
||||
];
|
||||
|
||||
config = {
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
fzf.enable = true;
|
||||
git-credential-oauth.enable = true;
|
||||
|
||||
direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
eza = {
|
||||
enable = true;
|
||||
git = true;
|
||||
icons = "auto";
|
||||
extraOptions = [
|
||||
"--group-directories-first"
|
||||
"--header"
|
||||
];
|
||||
};
|
||||
|
||||
thefuck = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
chromium.enable = true;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
keepassxc
|
||||
nextcloud-client
|
||||
thunderbird
|
||||
fractal
|
||||
|
||||
telegram-desktop
|
||||
element-desktop
|
||||
|
||||
wireguard-tools
|
||||
wirelesstools
|
||||
tailscale
|
||||
|
||||
kdiff3
|
||||
jetbrains-toolbox
|
||||
|
||||
vlc
|
||||
lutris
|
||||
|
||||
arduino
|
||||
arduino-ide
|
||||
arduino-cli
|
||||
|
||||
servicepoint-cli
|
||||
servicepoint-simulator
|
||||
|
||||
icu
|
||||
|
||||
foliate
|
||||
|
||||
dconf2nix
|
||||
];
|
||||
|
||||
home.file = {
|
||||
"policy.json" = {
|
||||
target = ".config/containers/policy.json";
|
||||
text = builtins.readFile ./.config/containers/policy.json;
|
||||
};
|
||||
"idea.properties".text = "idea.filewatcher.executable.path = ${pkgs.fsnotifier}/bin/fsnotifier";
|
||||
};
|
||||
|
||||
services.trayscale.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
{
|
||||
config.editorconfig = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"*" = {
|
||||
charset = "utf-8";
|
||||
end_of_line = "lf";
|
||||
trim_trailing_whitespace = true;
|
||||
insert_final_newline = true;
|
||||
max_line_width = 120;
|
||||
indent_style = "space";
|
||||
indent_size = 4;
|
||||
};
|
||||
"*.nix" = {
|
||||
indent_size = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
fonts.fontconfig.enable = true;
|
||||
home.packages = with pkgs; [
|
||||
roboto-mono
|
||||
recursive
|
||||
];
|
||||
}
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
config.programs.fuzzel = {
|
||||
enable = true;
|
||||
settings = {
|
||||
main = {
|
||||
terminal = "${lib.getBin pkgs.gnome-console}/bin/kgx";
|
||||
icon-theme = "Adwaita";
|
||||
counter = true;
|
||||
launch-prefix = "niri msg action spawn --";
|
||||
};
|
||||
border = {
|
||||
radius = 30;
|
||||
width = 3;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
{
|
||||
config.programs.git = {
|
||||
enable = true;
|
||||
userName = "Vinzenz Schroeter";
|
||||
userEmail = "vinzenz.f.s@gmail.com";
|
||||
|
||||
aliases = {
|
||||
prettylog = "log --pretty=oneline --graph";
|
||||
spring-clean = "!git branch --merged | xargs -n 1 -r git branch -d";
|
||||
};
|
||||
|
||||
extraConfig = {
|
||||
pull.ff = "only";
|
||||
merge.tool = "kdiff3";
|
||||
push.autoSetupRemote = "true";
|
||||
credential.credentialStore = "cache";
|
||||
};
|
||||
|
||||
ignores = [
|
||||
".direnv"
|
||||
".idea"
|
||||
".envrc"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
config = {
|
||||
home.packages = with pkgs; [
|
||||
gitg
|
||||
meld
|
||||
simple-scan
|
||||
pinta
|
||||
dconf-editor
|
||||
impression # usb image writer
|
||||
papers # pdf viewer
|
||||
gnome-software # for flatpak apps
|
||||
gnomeExtensions.solaar-extension
|
||||
snapshot
|
||||
];
|
||||
|
||||
dconf.settings = {
|
||||
"org/gnome/shell".enabled-extensions = [
|
||||
"GPaste@gnome-shell-extensions.gnome.org"
|
||||
"solaar-extension@sidevesh"
|
||||
];
|
||||
"org/gnome/desktop/interface".color-scheme = "prefer-dark";
|
||||
"org/gnome/desktop/wm/keybindings" = {
|
||||
switch-windows = [ "<Alt>Tab" ];
|
||||
switch-windows-backward = [ "<Shift><Alt>Tab" ];
|
||||
switch-applications = [ "<Super>Tab" ];
|
||||
switch-applications-backward = [ "<Shift><Super>Tab" ];
|
||||
};
|
||||
"org/gnome/desktop/session".idle-delay = lib.hm.gvariant.mkUint32 300;
|
||||
"org/gnome/Connections".first-run = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,412 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
config = {
|
||||
home.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
home.packages = with pkgs; [
|
||||
xwayland-satellite
|
||||
];
|
||||
|
||||
qt.style = {
|
||||
package = pkgs.adwaita-qt;
|
||||
name = "adwaita-dark";
|
||||
};
|
||||
|
||||
services.wpaperd.enable = true;
|
||||
|
||||
programs.niri.settings = {
|
||||
outputs = {
|
||||
"BOE 0x0A3B Unknown" = {
|
||||
scale = 1.0;
|
||||
variable-refresh-rate = true;
|
||||
};
|
||||
"Dell Inc. DELL P2719H 39VHKS2" = {
|
||||
scale = 1.0;
|
||||
};
|
||||
"LG Electronics LG ULTRAGEAR 106NTYT27386" = {
|
||||
scale = 1.0;
|
||||
variable-refresh-rate = true;
|
||||
};
|
||||
};
|
||||
|
||||
layout =
|
||||
let
|
||||
colors = config.lib.stylix.colors.withHashtag;
|
||||
pink_light = colors.base0A;
|
||||
pink_dark = colors.base0C;
|
||||
blue_light = colors.base0B;
|
||||
blue_dark = colors.base09;
|
||||
gradient-common = {
|
||||
angle = 90;
|
||||
in' = "oklab";
|
||||
};
|
||||
gradient-active = gradient-common // {
|
||||
from = pink_light;
|
||||
to = blue_light;
|
||||
};
|
||||
gradient-inactive = gradient-common // {
|
||||
from = pink_dark;
|
||||
to = blue_dark;
|
||||
};
|
||||
gradient-urgent = gradient-common // {
|
||||
from = pink_dark;
|
||||
to = pink_light;
|
||||
};
|
||||
gap-size = 8;
|
||||
in
|
||||
{
|
||||
background-color = "transparent";
|
||||
gaps = gap-size;
|
||||
border = {
|
||||
enable = true;
|
||||
width = gap-size / 2;
|
||||
active.gradient = gradient-active;
|
||||
inactive.gradient = gradient-inactive;
|
||||
urgent.gradient = gradient-urgent;
|
||||
};
|
||||
focus-ring = {
|
||||
enable = false;
|
||||
active.gradient = gradient-active;
|
||||
inactive.gradient = gradient-inactive;
|
||||
urgent.gradient = gradient-urgent;
|
||||
};
|
||||
shadow = {
|
||||
enable = false;
|
||||
color = "white";
|
||||
inactive-color = pink_dark;
|
||||
draw-behind-window = true;
|
||||
spread = 5;
|
||||
softness = 10;
|
||||
offset = {
|
||||
x = 0;
|
||||
y = 0;
|
||||
};
|
||||
};
|
||||
insert-hint = {
|
||||
enable = true;
|
||||
display.color = pink_dark;
|
||||
};
|
||||
struts =
|
||||
let
|
||||
strut-inset = 4;
|
||||
in
|
||||
{
|
||||
left = strut-inset;
|
||||
right = strut-inset;
|
||||
top = strut-inset;
|
||||
bottom = strut-inset;
|
||||
};
|
||||
tab-indicator = {
|
||||
place-within-column = true;
|
||||
active.gradient = gradient-inactive;
|
||||
inactive.gradient = gradient-inactive;
|
||||
urgent.gradient = gradient-inactive;
|
||||
};
|
||||
};
|
||||
|
||||
cursor.theme = "Adwaita";
|
||||
|
||||
input = {
|
||||
touchpad.tap = true;
|
||||
keyboard = {
|
||||
xkb = {
|
||||
layout = "de";
|
||||
options = "compose:caps";
|
||||
};
|
||||
numlock = true;
|
||||
};
|
||||
};
|
||||
|
||||
#prefer-no-csd = true;
|
||||
hotkey-overlay.skip-at-startup = true;
|
||||
|
||||
window-rules = [
|
||||
{
|
||||
clip-to-geometry = true;
|
||||
geometry-corner-radius =
|
||||
let
|
||||
radius = 15.;
|
||||
in
|
||||
{
|
||||
top-left = radius;
|
||||
bottom-left = radius;
|
||||
top-right = radius;
|
||||
bottom-right = radius;
|
||||
};
|
||||
}
|
||||
{
|
||||
matches = [
|
||||
{
|
||||
app-id = "steam";
|
||||
title = "^notificationtoasts_\\d+_desktop$";
|
||||
}
|
||||
];
|
||||
default-floating-position = {
|
||||
x = 10;
|
||||
y = 10;
|
||||
relative-to = "bottom-right";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
# defaults taken from https://github.com/sodiboo/niri-flake/issues/483
|
||||
binds = {
|
||||
# Keys consist of modifiers separated by + signs, followed by an XKB key name
|
||||
# in the end. To find an XKB name for a particular key, you may use a program
|
||||
# like wev.
|
||||
#
|
||||
# "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
|
||||
# when running as a winit window.
|
||||
#
|
||||
# Most actions that you can bind here can also be invoked programmatically with
|
||||
# `niri msg action do-something`.
|
||||
|
||||
# Mod-Shift-/, which is usually the same as Mod-?,
|
||||
# shows a list of important hotkeys.
|
||||
"Mod+Shift+Numbersign".action.show-hotkey-overlay = { };
|
||||
|
||||
# Suggested binds for running programs: terminal, app launcher, screen locker.
|
||||
"Mod+T".action.spawn = "${lib.getBin pkgs.gnome-console}/bin/kgx";
|
||||
"Mod+D".action.spawn = "${lib.getBin config.programs.fuzzel.package}/bin/fuzzel";
|
||||
"Super+Alt+L" = {
|
||||
action.spawn = "${lib.getBin config.programs.swaylock.package}/bin/swaylock";
|
||||
allow-when-locked = true;
|
||||
};
|
||||
|
||||
# You can also use a shell. Do this if you need pipes, multiple commands, etc.
|
||||
# Note: the entire command goes as a single argument in the end.
|
||||
# Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; }
|
||||
|
||||
# Example volume keys mappings for PipeWire & WirePlumber.
|
||||
# The allow-when-locked=true property makes them work even when the session is locked.
|
||||
"XF86AudioRaiseVolume" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [
|
||||
"wpctl"
|
||||
"set-volume"
|
||||
"@DEFAULT_AUDIO_SINK@"
|
||||
"0.1+"
|
||||
];
|
||||
};
|
||||
"XF86AudioLowerVolume" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [
|
||||
"wpctl"
|
||||
"set-volume"
|
||||
"@DEFAULT_AUDIO_SINK@"
|
||||
"0.1-"
|
||||
];
|
||||
};
|
||||
"XF86AudioMute" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [
|
||||
"wpctl"
|
||||
"set-mute"
|
||||
"@DEFAULT_AUDIO_SINK@"
|
||||
"toggle"
|
||||
];
|
||||
};
|
||||
"XF86AudioMicMute" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [
|
||||
"wpctl"
|
||||
"set-mute"
|
||||
"@DEFAULT_AUDIO_SOURCE@"
|
||||
"toggle"
|
||||
];
|
||||
};
|
||||
|
||||
"Mod+Q".action.close-window = { };
|
||||
|
||||
"Mod+Left".action.focus-column-left = { };
|
||||
"Mod+Down".action.focus-window-down = { };
|
||||
"Mod+Up".action.focus-window-up = { };
|
||||
"Mod+Right".action.focus-column-right = { };
|
||||
|
||||
"Mod+Ctrl+Left".action.move-column-left = { };
|
||||
"Mod+Ctrl+Down".action.move-window-down = { };
|
||||
"Mod+Ctrl+Up".action.move-window-up = { };
|
||||
"Mod+Ctrl+Right".action.move-column-right = { };
|
||||
|
||||
# Alternative commands that move across workspaces when reaching
|
||||
# the first or last window in a column.
|
||||
# Mod+J { focus-window-or-workspace-down; }
|
||||
# Mod+K { focus-window-or-workspace-up; }
|
||||
# Mod+Ctrl+J { move-window-down-or-to-workspace-down; }
|
||||
# Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
|
||||
|
||||
"Mod+Home".action.focus-column-first = { };
|
||||
"Mod+End".action.focus-column-last = { };
|
||||
"Mod+Ctrl+Home".action.move-column-to-first = { };
|
||||
"Mod+Ctrl+End".action.move-column-to-last = { };
|
||||
|
||||
"Mod+Shift+Left".action.focus-monitor-left = { };
|
||||
"Mod+Shift+Down".action.focus-monitor-down = { };
|
||||
"Mod+Shift+Up".action.focus-monitor-up = { };
|
||||
"Mod+Shift+Right".action.focus-monitor-right = { };
|
||||
|
||||
"Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = { };
|
||||
"Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = { };
|
||||
"Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = { };
|
||||
"Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = { };
|
||||
|
||||
# Alternatively, there are commands to move just a single window:
|
||||
# Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
|
||||
# ...
|
||||
|
||||
# And you can also move a whole workspace to another monitor:
|
||||
# Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
|
||||
# ...
|
||||
|
||||
"Mod+Page_Down".action.focus-workspace-down = { };
|
||||
"Mod+Page_Up".action.focus-workspace-up = { };
|
||||
"Mod+U".action.focus-workspace-down = { };
|
||||
"Mod+I".action.focus-workspace-up = { };
|
||||
"Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = { };
|
||||
"Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = { };
|
||||
"Mod+Ctrl+U".action.move-column-to-workspace-down = { };
|
||||
"Mod+Ctrl+I".action.move-column-to-workspace-up = { };
|
||||
|
||||
# Alternatively, there are commands to move just a single window:
|
||||
# Mod+Ctrl+Page_Down { move-window-to-workspace-down; }
|
||||
# ...
|
||||
|
||||
"Mod+Shift+Page_Down".action.move-workspace-down = { };
|
||||
"Mod+Shift+Page_Up".action.move-workspace-up = { };
|
||||
"Mod+Shift+U".action.move-workspace-down = { };
|
||||
"Mod+Shift+I".action.move-workspace-up = { };
|
||||
|
||||
# You can bind mouse wheel scroll ticks using the following syntax.
|
||||
# These binds will change direction based on the natural-scroll setting.
|
||||
#
|
||||
# To avoid scrolling through workspaces really fast, you can use
|
||||
# the cooldown-ms property. The bind will be rate-limited to this value.
|
||||
# You can set a cooldown on any bind, but it's most useful for the wheel.
|
||||
"Mod+WheelScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
action.focus-workspace-down = { };
|
||||
};
|
||||
"Mod+WheelScrollUp" = {
|
||||
cooldown-ms = 150;
|
||||
action.focus-workspace-up = { };
|
||||
};
|
||||
"Mod+Ctrl+WheelScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
action.move-column-to-workspace-down = { };
|
||||
};
|
||||
"Mod+Ctrl+WheelScrollUp" = {
|
||||
cooldown-ms = 150;
|
||||
action.move-column-to-workspace-up = { };
|
||||
};
|
||||
|
||||
"Mod+WheelScrollRight".action.focus-column-right = { };
|
||||
"Mod+WheelScrollLeft".action.focus-column-left = { };
|
||||
"Mod+Ctrl+WheelScrollRight".action.move-column-right = { };
|
||||
"Mod+Ctrl+WheelScrollLeft".action.move-column-left = { };
|
||||
|
||||
# Usually scrolling up and down with Shift in applications results in
|
||||
# horizontal scrolling; these binds replicate that.
|
||||
"Mod+Shift+WheelScrollDown".action.focus-column-right = { };
|
||||
"Mod+Shift+WheelScrollUp".action.focus-column-left = { };
|
||||
"Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = { };
|
||||
"Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = { };
|
||||
|
||||
# Similarly, you can bind touchpad scroll "ticks".
|
||||
# Touchpad scrolling is continuous, so for these binds it is split into
|
||||
# discrete intervals.
|
||||
# These binds are also affected by touchpad's natural-scroll, so these
|
||||
# example binds are "inverted", since we have natural-scroll enabled for
|
||||
# touchpads by default.
|
||||
# Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
|
||||
# Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
|
||||
|
||||
# You can refer to workspaces by index. However, keep in mind that
|
||||
# niri is a dynamic workspace system, so these commands are kind of
|
||||
# "best effort". Trying to refer to a workspace index bigger than
|
||||
# the current workspace count will instead refer to the bottommost
|
||||
# (empty) workspace.
|
||||
#
|
||||
# For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
|
||||
# will all refer to the 3rd workspace.
|
||||
"Mod+1".action.focus-workspace = 1;
|
||||
"Mod+2".action.focus-workspace = 2;
|
||||
"Mod+3".action.focus-workspace = 3;
|
||||
"Mod+4".action.focus-workspace = 4;
|
||||
"Mod+5".action.focus-workspace = 5;
|
||||
"Mod+6".action.focus-workspace = 6;
|
||||
"Mod+7".action.focus-workspace = 7;
|
||||
"Mod+8".action.focus-workspace = 8;
|
||||
"Mod+9".action.focus-workspace = 9;
|
||||
"Mod+Ctrl+1".action.move-column-to-workspace = 1;
|
||||
"Mod+Ctrl+2".action.move-column-to-workspace = 2;
|
||||
"Mod+Ctrl+3".action.move-column-to-workspace = 3;
|
||||
"Mod+Ctrl+4".action.move-column-to-workspace = 4;
|
||||
"Mod+Ctrl+5".action.move-column-to-workspace = 5;
|
||||
"Mod+Ctrl+6".action.move-column-to-workspace = 6;
|
||||
"Mod+Ctrl+7".action.move-column-to-workspace = 7;
|
||||
"Mod+Ctrl+8".action.move-column-to-workspace = 8;
|
||||
"Mod+Ctrl+9".action.move-column-to-workspace = 9;
|
||||
|
||||
# Alternatively, there are commands to move just a single window:
|
||||
# Mod+Ctrl+1 { move-window-to-workspace 1; }
|
||||
|
||||
# Switches focus between the current and the previous workspace.
|
||||
# Mod+Tab { focus-workspace-previous; }
|
||||
|
||||
"Mod+Comma".action.consume-window-into-column = { };
|
||||
"Mod+Period".action.expel-window-from-column = { };
|
||||
|
||||
# There are also commands that consume or expel a single window to the side.
|
||||
# Mod+BracketLeft { consume-or-expel-window-left; }
|
||||
# Mod+BracketRight { consume-or-expel-window-right; }
|
||||
|
||||
"Mod+R".action.switch-preset-column-width = { };
|
||||
"Mod+Shift+R".action.reset-window-height = { };
|
||||
"Mod+F".action.maximize-column = { };
|
||||
"Mod+Shift+F".action.fullscreen-window = { };
|
||||
"Mod+C".action.center-column = { };
|
||||
|
||||
# Finer width adjustments.
|
||||
# This command can also:
|
||||
# * set width in pixels: "1000"
|
||||
# * adjust width in pixels: "-5" or "+5"
|
||||
# * set width as a percentage of screen width: "25%"
|
||||
# * adjust width as a percentage of screen width: "-10%" or "+10%"
|
||||
# Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
|
||||
# set-column-width "100" will make the column occupy 200 physical screen pixels.
|
||||
"Mod+Minus".action.set-column-width = "-10%";
|
||||
"Mod+Equal".action.set-column-width = "+10%";
|
||||
|
||||
# Finer height adjustments when in column with other windows.
|
||||
"Mod+Shift+Minus".action.set-window-height = "-10%";
|
||||
"Mod+Shift+Equal".action.set-window-height = "+10%";
|
||||
|
||||
# Actions to switch layouts.
|
||||
# Note: if you uncomment these, make sure you do NOT have
|
||||
# a matching layout switch hotkey configured in xkb options above.
|
||||
# Having both at once on the same hotkey will break the switching,
|
||||
# since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
|
||||
# Mod+Space { switch-layout "next"; }
|
||||
# Mod+Shift+Space { switch-layout "prev"; }
|
||||
|
||||
"Print".action.screenshot = { };
|
||||
"Ctrl+Print".action.screenshot-screen = { };
|
||||
"Alt+Print".action.screenshot-window = { };
|
||||
|
||||
# The quit action will show a confirmation dialog to avoid accidental exits.
|
||||
"Mod+Shift+E".action.quit = { };
|
||||
|
||||
# Powers off the monitors. To turn them back on, do any input like
|
||||
# moving the mouse or pressing any other key.
|
||||
"Mod+Shift+P".action.power-off-monitors = { };
|
||||
|
||||
"Mod+W".action.toggle-column-tabbed-display = { };
|
||||
"Mod+O".action.toggle-overview = { };
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
{
|
||||
config.programs.ssh = {
|
||||
enable = true;
|
||||
matchBlocks = {
|
||||
"vpn2" = {
|
||||
host = "vpn2 hetzner-vpn2";
|
||||
hostname = "2a01:4f8:c013:65dd::1";
|
||||
user = "root";
|
||||
};
|
||||
"openwrt" = {
|
||||
host = "openwrt openwrt.lan";
|
||||
hostname = "openwrt.lan";
|
||||
user = "root";
|
||||
};
|
||||
"openwrt-ts" = {
|
||||
hostname = "openwrt.donkey-pentatonic.ts.net";
|
||||
port = 2222;
|
||||
user = "root";
|
||||
};
|
||||
"openwrt-j" = {
|
||||
hostname = "openwrt.donkey-pentatonic.ts.net";
|
||||
proxyJump = "vpn1";
|
||||
port = 2222;
|
||||
user = "root";
|
||||
};
|
||||
"pc2-power" = {
|
||||
hostname = "openwrt.donkey-pentatonic.ts.net";
|
||||
proxyJump = "vpn1";
|
||||
port = 2222;
|
||||
user = "pc2-power";
|
||||
};
|
||||
"avd-power" = {
|
||||
# hostname = "2001:678:560:23:9833:63ff:fe2d:f477"
|
||||
# hostname = "195.160.172.25";
|
||||
hostname = "avd-jumphost.club.berlin.ccc.de";
|
||||
user = "power";
|
||||
};
|
||||
"avd" = {
|
||||
hostname = "avd.club.berlin.ccc.de";
|
||||
user = "vinzenz";
|
||||
};
|
||||
"builder.berlin.ccc.de" = {
|
||||
hostname = "195.160.172.36";
|
||||
user = "root";
|
||||
};
|
||||
"cccb.zerforschen.plus" = {
|
||||
hostname = "2a01:4f8:c013:cbdd::1";
|
||||
user = "root";
|
||||
};
|
||||
"berlin.ccc.de" = {
|
||||
hostname = "195.160.173.9";
|
||||
user = "deploy";
|
||||
port = 31337;
|
||||
};
|
||||
"forgejo-runner-1" = {
|
||||
hostname = "forgejo-runner-1.dev.zerforschen.plus";
|
||||
user = "root";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,216 +0,0 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
config.programs.starship = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
settings = {
|
||||
"$schema" = "https://starship.rs/config-schema.json";
|
||||
|
||||
add_newline = true;
|
||||
format =
|
||||
"[](fg:color_r)[$username $os $hostname ($container )](bg:color_r fg:text_r)[ ](fg:color_r bg:color_g)"
|
||||
+ "[$directory ](bg:color_g fg:text_g)[ ](fg:color_g bg:color_b)"
|
||||
+ "([(\\[$git_state$git_branch$git_commit$git_status\\] )"
|
||||
+ "$all](bg:color_b fg:text_b))[](fg:color_b bg:color_y)"
|
||||
+ "([ $cmd_duration$status](bg:color_y fg:text_y))[](fg:color_y)"
|
||||
+ "$line_break$character ";
|
||||
|
||||
# TODO: replace with base16 theme
|
||||
palette = lib.mkForce "color_me_surprised";
|
||||
palettes.color_me_surprised = {
|
||||
"color_r" = "#a30262";
|
||||
"color_g" = "#d162a4";
|
||||
"color_b" = "#5BCEFA";
|
||||
"color_y" = "#4a6bb1";
|
||||
"text_r" = "white";
|
||||
"text_g" = "black";
|
||||
"text_b" = "black";
|
||||
"text_y" = "white";
|
||||
};
|
||||
|
||||
username = {
|
||||
format = "[$user]($style)";
|
||||
style_user = "bg:color_r fg:text_r";
|
||||
style_root = "bold bg:color_r fg:text_r";
|
||||
show_always = true;
|
||||
aliases = {
|
||||
"vinzenz" = "müde";
|
||||
};
|
||||
};
|
||||
os = {
|
||||
disabled = false;
|
||||
format = "$symbol";
|
||||
};
|
||||
hostname = {
|
||||
disabled = false;
|
||||
ssh_only = false;
|
||||
format = "$hostname";
|
||||
ssh_symbol = "";
|
||||
aliases = {
|
||||
"vinzenz-lpt2" = "lpt";
|
||||
"vinzenz-pc2" = "pc";
|
||||
};
|
||||
};
|
||||
container = {
|
||||
format = "\[$symbol$name\]";
|
||||
};
|
||||
directory = {
|
||||
format = "$path[( $read_only)]($read_only_style)";
|
||||
truncate_to_repo = true;
|
||||
truncation_symbol = "…/";
|
||||
read_only = "";
|
||||
read_only_style = "fg:color_r bg:green";
|
||||
home_symbol = "";
|
||||
substitutions = {
|
||||
"Documents" = "";
|
||||
"Downloads" = "";
|
||||
"Music" = "";
|
||||
"Pictures" = "";
|
||||
"Developer" = "";
|
||||
};
|
||||
};
|
||||
|
||||
git_state = {
|
||||
style = "fg:text_b bg:color_b";
|
||||
};
|
||||
git_branch = {
|
||||
style = "fg:text_b bg:color_b";
|
||||
format = "[$symbol $branch(:$remote_branch) ]($style)";
|
||||
symbol = "";
|
||||
};
|
||||
git_commit = {
|
||||
format = "[$hash$tag ]($style)";
|
||||
style = "fg:text_b bg:color_b";
|
||||
tag_symbol = "";
|
||||
};
|
||||
git_status = {
|
||||
format = "[$all_status$ahead_behind]($style)";
|
||||
style = "fg:text_b bg:color_b";
|
||||
ahead = "⇡$count";
|
||||
behind = "⇣$count";
|
||||
diverged = "⇕⇡$ahead_count⇣$behind_count";
|
||||
};
|
||||
|
||||
package = {
|
||||
symbol = "";
|
||||
format = "$symbol$version ";
|
||||
version_format = "$\{raw\}";
|
||||
};
|
||||
rust = {
|
||||
symbol = "";
|
||||
format = "$symbol$version ";
|
||||
version_format = "$major.$minor";
|
||||
};
|
||||
nix_shell = {
|
||||
symbol = "";
|
||||
format = "$symbol( \($name\))";
|
||||
};
|
||||
|
||||
status = {
|
||||
disabled = false;
|
||||
format = "[$symbol$status_common_meaning$status_signal_name$status_maybe_int]($style)";
|
||||
map_symbol = true;
|
||||
pipestatus = true;
|
||||
style = "bg:color_y fg:text_y";
|
||||
};
|
||||
cmd_duration = {
|
||||
format = " $duration ";
|
||||
};
|
||||
|
||||
character = {
|
||||
success_symbol = "[](bold)";
|
||||
error_symbol = "[✗](bold fg:color_r)";
|
||||
};
|
||||
|
||||
# icons
|
||||
c.symbol = "";
|
||||
aws.symbol = " ";
|
||||
buf.symbol = "";
|
||||
bun.symbol = "";
|
||||
cpp.symbol = "";
|
||||
cmake.symbol = "";
|
||||
conda.symbol = "";
|
||||
crystal.symbol = "";
|
||||
dart.symbol = "";
|
||||
deno.symbol = "";
|
||||
docker_context.symbol = "";
|
||||
elixir.symbol = "";
|
||||
elm.symbol = "";
|
||||
fennel.symbol = "";
|
||||
fossil_branch.symbol = "";
|
||||
gcloud.symbol = " ";
|
||||
golang.symbol = "";
|
||||
guix_shell.symbol = "";
|
||||
haskell.symbol = "";
|
||||
haxe.symbol = "";
|
||||
hg_branch.symbol = "";
|
||||
java.symbol = "";
|
||||
julia.symbol = "";
|
||||
kotlin.symbol = "";
|
||||
lua.symbol = "";
|
||||
memory_usage.symbol = "";
|
||||
meson.symbol = "";
|
||||
nim.symbol = "";
|
||||
nodejs.symbol = "";
|
||||
ocaml.symbol = "";
|
||||
os.symbols = {
|
||||
Alpaquita = "";
|
||||
Alpine = "";
|
||||
AlmaLinux = "";
|
||||
Amazon = "";
|
||||
Android = "";
|
||||
Arch = "";
|
||||
Artix = "";
|
||||
CachyOS = "";
|
||||
CentOS = "";
|
||||
Debian = "";
|
||||
DragonFly = "";
|
||||
Emscripten = "";
|
||||
EndeavourOS = "";
|
||||
Fedora = "";
|
||||
FreeBSD = "";
|
||||
Garuda = "";
|
||||
Gentoo = "";
|
||||
HardenedBSD = "";
|
||||
Illumos = "";
|
||||
Kali = "";
|
||||
Linux = "";
|
||||
Mabox = "";
|
||||
Macos = "";
|
||||
Manjaro = "";
|
||||
Mariner = "";
|
||||
MidnightBSD = "";
|
||||
Mint = "";
|
||||
NetBSD = "";
|
||||
NixOS = "";
|
||||
Nobara = "";
|
||||
OpenBSD = "";
|
||||
openSUSE = "";
|
||||
OracleLinux = "";
|
||||
Pop = "";
|
||||
Raspbian = "";
|
||||
Redhat = "";
|
||||
RedHatEnterprise = "";
|
||||
RockyLinux = "";
|
||||
Redox = "";
|
||||
Solus = "";
|
||||
SUSE = "";
|
||||
Ubuntu = "";
|
||||
Unknown = "";
|
||||
Void = "";
|
||||
Windows = "";
|
||||
};
|
||||
perl.symbol = "";
|
||||
php.symbol = "";
|
||||
pijul_channel.symbol = "";
|
||||
pixi.symbol = "";
|
||||
python.symbol = "";
|
||||
rlang.symbol = "";
|
||||
ruby.symbol = "";
|
||||
scala.symbol = "";
|
||||
swift.symbol = "";
|
||||
zig.symbol = "";
|
||||
gradle.symbol = "";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
# based on https://codeberg.org/kiara/cfg/src/commit/b9c472acd78c9c08dfe8b6a643c5c82cc5828433/home-manager/kiara/swaylock.nix#
|
||||
{ pkgs, config, ... }:
|
||||
{
|
||||
config = {
|
||||
stylix.targets.swaylock = {
|
||||
enable = true;
|
||||
useWallpaper = true;
|
||||
};
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
package = pkgs.swaylock-effects;
|
||||
# https://github.com/jirutka/swaylock-effects/blob/master/swaylock.1.scd
|
||||
settings = {
|
||||
screenshot = false;
|
||||
effect-blur = "9x9";
|
||||
effect-vignette = "0.2:0.2";
|
||||
fade-in = 0.5;
|
||||
font-size = 75;
|
||||
indicator-caps-lock = true;
|
||||
clock = true;
|
||||
indicator-radius = 400;
|
||||
show-failed-attempts = true;
|
||||
ignore-empty-password = true;
|
||||
grace = 3.5;
|
||||
indicator-thickness = 20;
|
||||
};
|
||||
};
|
||||
|
||||
services.swayidle = {
|
||||
enable = true;
|
||||
systemdTarget = "graphical-session.target";
|
||||
timeouts = [
|
||||
{
|
||||
timeout = 60;
|
||||
command = "${config.programs.swaylock.package}/bin/swaylock";
|
||||
}
|
||||
{
|
||||
timeout = 60 * 10;
|
||||
command = "${pkgs.systemd}/bin/systemctl suspend";
|
||||
}
|
||||
];
|
||||
events = [
|
||||
{
|
||||
event = "before-sleep";
|
||||
command = "${pkgs.playerctl}/bin/playerctl pause; ${config.programs.swaylock.package}/bin/swaylock";
|
||||
}
|
||||
{
|
||||
event = "lock";
|
||||
command = "${config.programs.swaylock.package}/bin/swaylock";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
services.swaync = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"$schema" = "${pkgs.swaynotificationcenter}/etc/xdg/swaync/configSchema.json";
|
||||
|
||||
hide-on-clear = true;
|
||||
|
||||
positionX = "center";
|
||||
fit-to-screen = false;
|
||||
control-center-height = 750;
|
||||
|
||||
widgets = [
|
||||
"mpris"
|
||||
"volume"
|
||||
"title"
|
||||
"dnd"
|
||||
"inhibitors"
|
||||
"notifications"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
config = {
|
||||
home.sessionVariables = {
|
||||
NIXOS_OZONE_WL = "1";
|
||||
ELECTRON_OZONE_PLATFORM_HINT = "auto";
|
||||
};
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
profiles.default = {
|
||||
enableUpdateCheck = false;
|
||||
extensions =
|
||||
with pkgs.nix-vscode-extensions.open-vsx;
|
||||
[
|
||||
# keep-sorted start
|
||||
catppuccin.catppuccin-vsc-icons
|
||||
davidanson.vscode-markdownlint
|
||||
editorconfig.editorconfig
|
||||
jnoortheen.nix-ide
|
||||
llvm-vs-code-extensions.vscode-clangd
|
||||
mkhl.direnv
|
||||
ms-python.python
|
||||
muhammad-sammy.csharp
|
||||
redhat.vscode-yaml
|
||||
rust-lang.rust-analyzer
|
||||
tamasfe.even-better-toml
|
||||
yzhang.markdown-all-in-one
|
||||
# keep-sorted end
|
||||
]
|
||||
++ (with pkgs.vscode-extensions; [
|
||||
vadimcn.vscode-lldb
|
||||
RoweWilsonFrederiskHolme.wikitext
|
||||
ms-dotnettools.csharp
|
||||
]);
|
||||
userSettings = {
|
||||
"files.autoSave" = "afterDelay";
|
||||
"files.autoSaveWhenNoErrors" = true;
|
||||
"files.autoSaveWorkspaceFilesOnly" = true;
|
||||
|
||||
"editor.fontLigatures" = true;
|
||||
"editor.formatOnSave" = true;
|
||||
"editor.formatOnSaveMode" = "modificationsIfAvailable";
|
||||
"editor.minimap.autohide" = true;
|
||||
"editor.mouseWheelZoom" = true;
|
||||
"terminal.integrated.mouseWheelZoom" = true;
|
||||
|
||||
"workbench.startupEditor" = "readme";
|
||||
"workbench.enableExperiments" = false;
|
||||
"workbench.iconTheme" = "catppuchin-mocha";
|
||||
|
||||
"update.mode" = "none";
|
||||
"extensions.autoUpdate" = false;
|
||||
"extensions.autoCheckUpdates" = false;
|
||||
|
||||
"telemetry.telemetryLevel" = "off";
|
||||
"redhat.telemetry.enabled" = false;
|
||||
|
||||
"git.autofetch" = true;
|
||||
"git.path" = "${lib.getBin pkgs.git}/bin/git";
|
||||
"diffEditor.diffAlgorithm" = "advanced";
|
||||
"explorer.excludeGitIgnore" = false;
|
||||
"markdown.extension.tableFormatter.normalizeIndentation" = true;
|
||||
"markdown.extension.toc.orderedList" = false;
|
||||
|
||||
"rust-analyzer.checkOnSave.command" = "clippy";
|
||||
|
||||
"nix.formatterPath" = "${lib.getBin pkgs.nixfmt-tree}/bin/nixfmt-tree";
|
||||
"nix.enableLanguageServer" = true;
|
||||
"nix.serverPath" = "${lib.getBin pkgs.nil}/bin/nil";
|
||||
"nix.serverSettings" = {
|
||||
"nil" = {
|
||||
"formatting" = {
|
||||
"command" = [ "${lib.getBin pkgs.nixfmt-tree}/bin/nixfmt-tree" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
"dotnetAcquisitionExtension.sharedExistingDotnetPath" =
|
||||
"${lib.getBin pkgs.dotnetCorePackages.sdk_9_0}/bin/dotnet";
|
||||
|
||||
"\[makefile\]" = {
|
||||
"editor.insertSpaces" = false;
|
||||
"editor.detectIndentation" = false;
|
||||
};
|
||||
|
||||
"\[nix\]" = {
|
||||
"editor.formatOnSave" = false;
|
||||
};
|
||||
|
||||
"\[css\]" = {
|
||||
"editor.formatOnSave" = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,223 +0,0 @@
|
|||
/* #region stylix overrides*/
|
||||
.modules-left #workspaces button,
|
||||
.modules-left #workspaces button.focused,
|
||||
.modules-left #workspaces button.active,
|
||||
.modules-center #workspaces button,
|
||||
.modules-center #workspaces button.focused,
|
||||
.modules-center #workspaces button.active,
|
||||
.modules-right #workspaces button,
|
||||
.modules-right #workspaces button.focused,
|
||||
.modules-right #workspaces button.active {
|
||||
border-bottom: unset;
|
||||
}
|
||||
/* #endregion */
|
||||
|
||||
* {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
transition-property: background-color;
|
||||
transition-duration: 0.5s;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
window#waybar.termite {
|
||||
background-color: #3f3f3f;
|
||||
}
|
||||
|
||||
window#waybar.chromium {
|
||||
background-color: #000000;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-center,
|
||||
.modules-right {
|
||||
border: 0px solid #fff;
|
||||
padding-bottom: 4px;
|
||||
background-clip: content-box, padding-box;
|
||||
background-image:
|
||||
linear-gradient(90deg, @base01, @base01),
|
||||
linear-gradient(90deg, #a30262, #4a6bb1);
|
||||
}
|
||||
|
||||
.modules-center,
|
||||
.modules-left {
|
||||
border-bottom-right-radius: 15px;
|
||||
padding-right: 4px;
|
||||
}
|
||||
|
||||
.modules-center,
|
||||
.modules-right {
|
||||
border-bottom-left-radius: 15px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
widget {
|
||||
margin: 0px 4px;
|
||||
}
|
||||
|
||||
#workspaces,
|
||||
#window,
|
||||
#tray {
|
||||
padding: 4px 6px;
|
||||
margin-left: 6px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 5px;
|
||||
background-color: transparent;
|
||||
color: #ffffff;
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#workspaces button.focused,
|
||||
#workspaces button.active {
|
||||
background-color: @base03;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-color: #eb4d4b;
|
||||
}
|
||||
|
||||
#mode {
|
||||
background-color: #64727d;
|
||||
box-shadow: inset 0 -3px #ffffff;
|
||||
}
|
||||
|
||||
#clock,
|
||||
#battery,
|
||||
#cpu,
|
||||
#memory,
|
||||
#disk,
|
||||
#temperature,
|
||||
#backlight,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#wireplumber,
|
||||
#custom-media,
|
||||
#mode,
|
||||
#idle_inhibitor,
|
||||
#scratchpad,
|
||||
#power-profiles-daemon,
|
||||
#mpd {
|
||||
padding: 0 10px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#window,
|
||||
#workspaces {
|
||||
margin: 0 4px;
|
||||
}
|
||||
|
||||
/* If workspaces is the leftmost module, omit left margin */
|
||||
.modules-left > widget:first-child > #workspaces {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* If workspaces is the rightmost module, omit right margin */
|
||||
.modules-right > widget:last-child > #workspaces {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
|
||||
/* Using steps() instead of linear as a timing function to limit cpu usage */
|
||||
#battery.critical:not(.charging) {
|
||||
background-color: #f53c3c;
|
||||
color: #ffffff;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: steps(12);
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
#power-profiles-daemon {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
#power-profiles-daemon.performance {
|
||||
color: #f53c3c;
|
||||
}
|
||||
|
||||
#power-profiles-daemon.balanced {
|
||||
color: #2980b9;
|
||||
}
|
||||
|
||||
#power-profiles-daemon.power-saver {
|
||||
color: #2ecc71;
|
||||
}
|
||||
|
||||
#tray > .passive {
|
||||
-gtk-icon-effect: dim;
|
||||
}
|
||||
|
||||
#tray > .needs-attention {
|
||||
-gtk-icon-effect: highlight;
|
||||
background-color: #eb4d4b;
|
||||
}
|
||||
|
||||
#language {
|
||||
padding: 0 5px;
|
||||
margin: 0 5px;
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
#keyboard-state {
|
||||
padding: 0 0px;
|
||||
margin: 0 5px;
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
#keyboard-state > label {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
#keyboard-state > label.locked {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#scratchpad {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#scratchpad.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#privacy {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#privacy-item {
|
||||
padding: 0 5px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
#privacy-item.screenshare {
|
||||
background-color: #cf5700;
|
||||
}
|
||||
|
||||
#privacy-item.audio-in {
|
||||
background-color: #1ca000;
|
||||
}
|
||||
|
||||
#privacy-item.audio-out {
|
||||
background-color: #0069d4;
|
||||
}
|
||||
|
|
@ -1,290 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
playerctl
|
||||
];
|
||||
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
systemd.target = "graphical-session.target";
|
||||
style = lib.mkAfter (builtins.readFile ./waybar.css);
|
||||
settings = {
|
||||
mainBar = {
|
||||
layer = "top";
|
||||
position = "top";
|
||||
output = [
|
||||
"eDP-1"
|
||||
"HDMI-A-1"
|
||||
];
|
||||
mode = "dock";
|
||||
spacing = "8";
|
||||
modules-left = [
|
||||
"niri/workspaces"
|
||||
"tray"
|
||||
"niri/window"
|
||||
];
|
||||
modules-center = [
|
||||
"privacy"
|
||||
"clock"
|
||||
"custom/swaync"
|
||||
];
|
||||
modules-right = [
|
||||
#"image"
|
||||
"group/status-infos"
|
||||
"group/system-tray"
|
||||
"custom/wlogout"
|
||||
];
|
||||
|
||||
"group/system-tray" = {
|
||||
orientation = "inherit";
|
||||
modules = [
|
||||
"mpris"
|
||||
"wireplumber"
|
||||
"bluetooth"
|
||||
"backlight"
|
||||
"network"
|
||||
"power-profiles-daemon"
|
||||
"idle_inhibitor"
|
||||
];
|
||||
};
|
||||
"group/status-infos" = {
|
||||
orientation = "inherit";
|
||||
modules = [
|
||||
"battery"
|
||||
"custom/weather"
|
||||
"temperature"
|
||||
"cpu"
|
||||
"memory"
|
||||
"disk"
|
||||
];
|
||||
};
|
||||
|
||||
"niri/workspaces" = {
|
||||
format = "{icon}";
|
||||
};
|
||||
"niri/window" = {
|
||||
separate-outputs = true;
|
||||
icon = true;
|
||||
};
|
||||
network = {
|
||||
interface = "wlo1";
|
||||
format = "{ifname}";
|
||||
format-wifi = " ";
|
||||
format-ethernet = " ";
|
||||
format-linked = " ";
|
||||
format-disconnected = " ";
|
||||
tooltip-format = "{ifname} via {gwaddr}";
|
||||
tooltip-format-wifi = "{essid} ({signalStrength}%)";
|
||||
tooltip-format-ethernet = "{ifname} {ipaddr}/{cidr}";
|
||||
tooltip-format-disconnected = "Disconnected";
|
||||
max-length = 50;
|
||||
};
|
||||
clock = {
|
||||
format = "{:%a, %d. %b %H:%M}";
|
||||
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
||||
calendar = {
|
||||
mode = "month";
|
||||
weeks-pos = "right";
|
||||
on-scroll = 1;
|
||||
on-click-right = "mode";
|
||||
format = {
|
||||
#months = "<span color='#ffead3'><b>{}</b></span>";
|
||||
#days = "<span color='#ecc6d9'><b>{}</b></span>";
|
||||
#weeks = "<span color='#99ffdd'><b>W{}</b></span>";
|
||||
#weekdays = "<span color='#ffcc66'><b>{}</b></span>";
|
||||
#weekdays = "<b>{}</b>";
|
||||
today = "<span color='#0FBB0F'><b>{}</b></span>";
|
||||
};
|
||||
};
|
||||
actions = {
|
||||
on-click-right = "mode";
|
||||
on-click-forward = "tz_up";
|
||||
on-click-backward = "tz_down";
|
||||
on-scroll-up = "shift_down";
|
||||
on-scroll-down = "shift_up";
|
||||
};
|
||||
};
|
||||
battery = {
|
||||
format = "{capacity}% {icon}";
|
||||
format-icons = [
|
||||
"" # 0%
|
||||
"" # 10%
|
||||
"" # 20%
|
||||
"" # 30%
|
||||
"" # 40%
|
||||
"" # 50%
|
||||
"" # 60%
|
||||
"" # 70%
|
||||
"" # 80%
|
||||
"" # 90%
|
||||
"" # 100%
|
||||
];
|
||||
states = {
|
||||
warning = 25;
|
||||
critical = 15;
|
||||
};
|
||||
events =
|
||||
let
|
||||
mkNotifySendCommand =
|
||||
{
|
||||
summary,
|
||||
urgency ? null,
|
||||
body ? null,
|
||||
icon ? null,
|
||||
category ? null,
|
||||
}:
|
||||
let
|
||||
body-part = if body != null then "'${body}'" else "";
|
||||
urgency-part = if urgency != null then "--urgency ${urgency}" else "";
|
||||
icon-part = if icon != null then "--icon ${icon}" else "";
|
||||
category-part = if category != null then "--category ${category}" else "";
|
||||
in
|
||||
"${lib.getBin pkgs.libnotify}/bin/notify-send ${urgency-part} ${icon-part} ${category-part} '${summary}' ${body-part}";
|
||||
in
|
||||
{
|
||||
on-discharging-warning = mkNotifySendCommand {
|
||||
summary = "Low Battery";
|
||||
icon = "battery-caution";
|
||||
category = "device";
|
||||
};
|
||||
on-discharging-critical = mkNotifySendCommand {
|
||||
urgency = "critical";
|
||||
summary = "Very Low Battery";
|
||||
body = "Connect to power <i>now</i>!";
|
||||
icon = "battery-low";
|
||||
category = "device";
|
||||
};
|
||||
};
|
||||
};
|
||||
backlight = {
|
||||
device = "intel_backlight";
|
||||
format = "{percent}% ";
|
||||
on-scroll-down = "light -U 1";
|
||||
on-scroll-up = "light -A 1";
|
||||
};
|
||||
cpu = {
|
||||
interval = 1;
|
||||
format = "{usage:3}%@{avg_frequency:4}";
|
||||
};
|
||||
disk = {
|
||||
format = "{free}/{total}";
|
||||
};
|
||||
"custom/wlogout" = {
|
||||
format = " ";
|
||||
tooltip = false;
|
||||
on-click = "wlogout";
|
||||
min-width = 20;
|
||||
};
|
||||
idle_inhibitor = {
|
||||
format = "{icon} ";
|
||||
format-icons = {
|
||||
activated = "";
|
||||
deactivated = "";
|
||||
};
|
||||
};
|
||||
#image =
|
||||
# let
|
||||
# albumArtScript = pkgs.writeShellScriptBin "album-art.sh" ''
|
||||
# #!${pkgs.bash}/bin/bash
|
||||
# album_art=$(playerctl metadata mpris:artUrl)
|
||||
# if [[ -z $album_art ]]
|
||||
# then
|
||||
# exit
|
||||
# fi
|
||||
# curl -s "''${album_art}" --output "/tmp/cover.jpeg"
|
||||
# echo "/tmp/cover.jpeg"
|
||||
# '';
|
||||
# in
|
||||
# {
|
||||
# exec = "${albumArtScript}/bin/album-art.sh";
|
||||
# interval = 15;
|
||||
# on-click = "playerctl play-pause";
|
||||
# };
|
||||
mpris = {
|
||||
format = "{status_icon} {player} ";
|
||||
tooltip-format = "{player} ({status_icon} {status}) {dynamic}";
|
||||
status-icons = {
|
||||
playing = "";
|
||||
paused = "";
|
||||
stopped = "";
|
||||
};
|
||||
};
|
||||
memory = {
|
||||
format = "{}% ";
|
||||
};
|
||||
power-profiles-daemon = {
|
||||
format = "{icon}";
|
||||
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
|
||||
tooltip = true;
|
||||
format-icons = {
|
||||
default = "";
|
||||
performance = "";
|
||||
balanced = "";
|
||||
power-saver = "";
|
||||
};
|
||||
};
|
||||
wireplumber = {
|
||||
format = "{volume}% {icon}";
|
||||
format-muted = "";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
temperature = {
|
||||
format = "{temperatureC}°C ";
|
||||
};
|
||||
tray = {
|
||||
spacing = 4;
|
||||
show-passive-items = true;
|
||||
};
|
||||
bluetooth = {
|
||||
format = " {status} ";
|
||||
format-connected = " {device_alias} ";
|
||||
format-connected-battery = " {device_alias} {device_battery_percentage}% ";
|
||||
tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
|
||||
tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
|
||||
tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
|
||||
tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%";
|
||||
};
|
||||
"custom/swaync" =
|
||||
let
|
||||
swaync-client = "${lib.getBin config.services.swaync.package}/bin/swaync-client";
|
||||
in
|
||||
{
|
||||
tooltip = true;
|
||||
format = "{icon} {0} ";
|
||||
format-icons = {
|
||||
notification = "";
|
||||
none = "";
|
||||
dnd-notification = "";
|
||||
dnd-none = "";
|
||||
inhibited-notification = "";
|
||||
inhibited-none = "";
|
||||
dnd-inhibited-notification = "";
|
||||
dnd-inhibited-none = "";
|
||||
};
|
||||
return-type = "json";
|
||||
exec = "${swaync-client} --subscribe-waybar";
|
||||
on-click = "${swaync-client} --toggle-panel --skip-wait";
|
||||
on-click-right = "${swaync-client} --toggle-dnd --skip-wait";
|
||||
escape = true;
|
||||
};
|
||||
"custom/weather" = {
|
||||
format = "{}°";
|
||||
tooltip = true;
|
||||
interval = 3600;
|
||||
exec = "${lib.getBin pkgs.wttrbar}/bin/wttrbar --nerd";
|
||||
return-type = "json";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
{
|
||||
config.programs.wlogout = {
|
||||
enable = true;
|
||||
style = ''
|
||||
* {
|
||||
/*background-image: none;*/
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
window {
|
||||
background-color: rgba(30, 30, 46, 0.90);
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
border-color: #cba6f7;
|
||||
text-decoration-color: #cdd6f4;
|
||||
color: #cdd6f4;
|
||||
background-color: #181825;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 25%;
|
||||
}
|
||||
|
||||
button:focus, button:active, button:hover {
|
||||
/* 20% Overlay 2, 80% mantle */
|
||||
background-color: rgb(48, 50, 66);
|
||||
outline-style: none;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
config.programs.zsh = {
|
||||
initContent = ''
|
||||
export PATH=$PATH:/home/vinzenz/.cargo/bin
|
||||
|
||||
bindkey "^[[1;5C" forward-word
|
||||
bindkey "^[[1;5D" backward-word
|
||||
'';
|
||||
enableCompletion = true;
|
||||
|
||||
shellAliases = {
|
||||
myos-rebuild-boot = "sudo nixos-rebuild boot --flake .# --show-trace --log-format internal-json -v |& ${pkgs.nix-output-monitor}/bin/nom --json";
|
||||
myos-rebuild-switch = "sudo nixos-rebuild switch --flake .# --show-trace --log-format internal-json -v |& ${pkgs.nix-output-monitor}/bin/nom --json";
|
||||
|
||||
s = "nix-shell -p";
|
||||
|
||||
my-direnvallow = "echo \"use nix\" > .envrc && direnv allow";
|
||||
my-ip4 = "ip addr show | grep 192";
|
||||
deadnix = "nix run github:astro/deadnix -- ";
|
||||
statix = "nix run github:oppiliappan/statix -- ";
|
||||
};
|
||||
|
||||
history = {
|
||||
size = 10000;
|
||||
path = "${config.xdg.dataHome}/zsh/history";
|
||||
expireDuplicatesFirst = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
programs = {
|
||||
git = {
|
||||
enable = true;
|
||||
extraConfig.init.defaultBranch = "main";
|
||||
};
|
||||
|
||||
gh = {
|
||||
enable = true;
|
||||
gitCredentialHelper.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,101 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
osConfig,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
options.vinzenz.gnome-extensions =
|
||||
let
|
||||
mkDefaultEnabledOption =
|
||||
name:
|
||||
lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
description = "Whether to enable ${name}.";
|
||||
type = lib.types.bool;
|
||||
};
|
||||
in
|
||||
{
|
||||
enable = mkDefaultEnabledOption "gnome extended options";
|
||||
appindicator.enable = mkDefaultEnabledOption "appindicator";
|
||||
caffeine.enable = mkDefaultEnabledOption "caffeine";
|
||||
tailscale-qs.enable = lib.mkOption {
|
||||
default = osConfig.services.tailscale.enable;
|
||||
example = true;
|
||||
description = "Whether to enable tailscale quick setting.";
|
||||
type = lib.types.bool;
|
||||
};
|
||||
alphabetic-apps.enable = mkDefaultEnabledOption "alphabetic app grid";
|
||||
clock-show-seconds = mkDefaultEnabledOption "clock seconds";
|
||||
show-battery-percentage = mkDefaultEnabledOption "battery percentage";
|
||||
enable-numlock = mkDefaultEnabledOption "num lock on login";
|
||||
enable-systool-warning = lib.mkEnableOption "system configuration tool warning";
|
||||
edge-tiling = mkDefaultEnabledOption "edge tiling";
|
||||
dynamic-workspaces = mkDefaultEnabledOption "dynamic workspaces";
|
||||
tap-to-click = mkDefaultEnabledOption "tap to click";
|
||||
two-finger-scrolling = mkDefaultEnabledOption "two finger scrolling";
|
||||
};
|
||||
|
||||
config =
|
||||
let
|
||||
cfg = config.vinzenz.gnome-extensions;
|
||||
in
|
||||
lib.mkIf cfg.enable (
|
||||
lib.mkMerge [
|
||||
{
|
||||
dconf = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"org/gnome/shell" = {
|
||||
disable-user-extensions = false;
|
||||
disabled-extensions = [ ];
|
||||
enabled-extensions = [ ];
|
||||
};
|
||||
|
||||
"ca/desrt/dconf-editor".show-warning = cfg.enable-systool-warning;
|
||||
"org/gnome/tweaks".show-extensions-notice = cfg.enable-systool-warning;
|
||||
"org/gnome/mutter" = {
|
||||
inherit (cfg) edge-tiling dynamic-workspaces;
|
||||
};
|
||||
"org/gnome/desktop/peripherals/touchpad" = {
|
||||
inherit (cfg) tap-to-click;
|
||||
two-finger-scrolling-enabled = cfg.two-finger-scrolling;
|
||||
};
|
||||
"org/gnome/desktop/interface" = {
|
||||
inherit (cfg) clock-show-seconds show-battery-percentage;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
(lib.mkIf cfg.tailscale-qs.enable {
|
||||
home.packages = [ pkgs.gnomeExtensions.tailscale-qs ];
|
||||
dconf.settings."org/gnome/shell".enabled-extensions = [ "tailscale@joaophi.github.com" ];
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.appindicator.enable {
|
||||
home.packages = [ pkgs.gnomeExtensions.appindicator ];
|
||||
dconf.settings."org/gnome/shell".enabled-extensions = [ "appindicatorsupport@rgcjonas.gmail.com" ];
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.caffeine.enable {
|
||||
home.packages = [ pkgs.gnomeExtensions.caffeine ];
|
||||
dconf.settings."org/gnome/shell".enabled-extensions = [ "caffeine@patapon.info" ];
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.alphabetic-apps.enable {
|
||||
home.packages = [ pkgs.gnomeExtensions.alphabetical-app-grid ];
|
||||
dconf.settings = {
|
||||
"org/gnome/shell".enabled-extensions = [ "AlphabeticalAppGrid@stuarthayhurst" ];
|
||||
"org/gnome/shell/extensions/alphabetical-app-grid".folder-order-position = "start";
|
||||
};
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.enable-numlock {
|
||||
dconf.settings."org/gnome/desktop/peripherals/keyboard".numlock-state = true;
|
||||
})
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
home = {
|
||||
sessionVariables.EDITOR = "nano";
|
||||
file.".nanorc".text = ''
|
||||
set linenumbers
|
||||
set mouse
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
{
|
||||
home.file = {
|
||||
"Templates/Empty file".text = "";
|
||||
"Templates/Empty bash script".text = ''
|
||||
#!/usr/bin/env bash
|
||||
# abort on error, undefined variables
|
||||
set -eu
|
||||
# print commands before execution
|
||||
set -x
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
programs = {
|
||||
command-not-found.enable = true;
|
||||
dircolors.enable = true;
|
||||
|
||||
zsh = {
|
||||
enable = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
autosuggestion.enable = true;
|
||||
enableVteIntegration = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
options.programs.zsh-powerlevel10k = {
|
||||
enable = lib.mkEnableOption "powerlevel10k zsh theme";
|
||||
package = lib.mkPackageOption pkgs "zsh-powerlevel10k" { nullable = true; };
|
||||
};
|
||||
|
||||
config =
|
||||
let
|
||||
cfg = config.programs.zsh-powerlevel10k;
|
||||
p10k = if (cfg.package != null) then cfg.package else pkgs.zsh-powerlevel10k;
|
||||
in
|
||||
lib.mkIf cfg.enable {
|
||||
programs.zsh.initContent = ''
|
||||
source ${p10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme
|
||||
'';
|
||||
};
|
||||
}
|
||||
18
modules/default.nix
Normal file
18
modules/default.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
modulesCfg: {lib, ...}: {
|
||||
imports =
|
||||
[
|
||||
./i18n.nix
|
||||
./nixpkgs.nix
|
||||
./globalinstalls.nix
|
||||
./server.nix
|
||||
./desktop
|
||||
]
|
||||
++ (map (path: (import path modulesCfg)) [
|
||||
./hardware
|
||||
./users
|
||||
]);
|
||||
|
||||
config = {
|
||||
my.modulesCfg = modulesCfg;
|
||||
};
|
||||
}
|
||||
110
modules/desktop/default.nix
Normal file
110
modules/desktop/default.nix
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.my.desktop;
|
||||
in {
|
||||
imports = [
|
||||
./gnome.nix
|
||||
./kde.nix
|
||||
./gaming.nix
|
||||
];
|
||||
|
||||
options.my.desktop.enable = lib.mkEnableOption "desktop";
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.useGlobalPkgs = true;
|
||||
|
||||
services = {
|
||||
# Enable the X11 windowing system / wayland depending on DE
|
||||
xserver.enable = true;
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
printing.enable = true;
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PermitRootLogin = "no";
|
||||
PasswordAuthentication = false;
|
||||
KbdInteractiveAuthentication = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Enable sound with pipewire.
|
||||
sound.enable = true;
|
||||
hardware.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
programs = {
|
||||
git.package = pkgs.gitFull;
|
||||
steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||||
};
|
||||
};
|
||||
|
||||
# unblock kde connect / gsconnect
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
firewall.enable = true;
|
||||
|
||||
firewall = {
|
||||
allowedTCPPortRanges = [
|
||||
{
|
||||
# KDE Connect
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
}
|
||||
];
|
||||
allowedUDPPortRanges = [
|
||||
{
|
||||
# KDE Connect
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
systemd = {
|
||||
# save some boot time because nothing actually requires network connectivity
|
||||
services.NetworkManager-wait-online.enable = false;
|
||||
|
||||
extraConfig = ''
|
||||
DefaultTimeoutStopSec=12s
|
||||
'';
|
||||
};
|
||||
|
||||
environment = {
|
||||
pathsToLink = ["/share/zsh"];
|
||||
|
||||
systemPackages = with pkgs; [
|
||||
lm_sensors
|
||||
];
|
||||
};
|
||||
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
"electron-12.2.3"
|
||||
];
|
||||
|
||||
fonts = {
|
||||
fontconfig.defaultFonts.monospace = ["FiraCode Nerd Font"];
|
||||
fonts = with pkgs; [
|
||||
(nerdfonts.override {fonts = ["FiraCode"];})
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
32
modules/desktop/gaming.nix
Normal file
32
modules/desktop/gaming.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
isEnabled = config.my.desktop.enableGaming;
|
||||
in {
|
||||
imports = [];
|
||||
|
||||
options.my.desktop.enableGaming = lib.mkEnableOption "gaming with wine";
|
||||
|
||||
config = lib.mkIf isEnabled {
|
||||
hardware.opengl.driSupport32Bit = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
wineWowPackages.stagingFull
|
||||
wineWowPackages.fonts
|
||||
winetricks
|
||||
steam
|
||||
|
||||
(lutris.override {
|
||||
extraPkgs = pkgs: [
|
||||
# List package dependencies here
|
||||
];
|
||||
extraLibraries = pkgs: [
|
||||
# List library dependencies here
|
||||
];
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
66
modules/desktop/gnome.nix
Normal file
66
modules/desktop/gnome.nix
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
isEnabled = config.my.desktop.enableGnome;
|
||||
enableHomeManager = config.my.modulesCfg.enableHomeManager;
|
||||
in {
|
||||
options.my.desktop.enableGnome = lib.mkEnableOption "gnome desktop";
|
||||
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf isEnabled {
|
||||
my.desktop.enable = true;
|
||||
|
||||
services = {
|
||||
xserver = {
|
||||
# Enable the GNOME Desktop Environment.
|
||||
displayManager.gdm.enable = true;
|
||||
desktopManager.gnome.enable = true;
|
||||
};
|
||||
|
||||
gnome = {
|
||||
tracker-miners.enable = false;
|
||||
tracker.enable = false;
|
||||
};
|
||||
};
|
||||
|
||||
programs.gpaste.enable = true;
|
||||
|
||||
environment = {
|
||||
systemPackages = with pkgs; [
|
||||
gnomeExtensions.gsconnect
|
||||
];
|
||||
|
||||
# remove some gnome default apps
|
||||
gnome.excludePackages = with pkgs.gnome; [
|
||||
cheese # photo booth
|
||||
epiphany # web browser
|
||||
evince # document viewer
|
||||
geary # email client
|
||||
seahorse # password manager
|
||||
gnome-clocks
|
||||
gnome-maps
|
||||
gnome-weather
|
||||
gnome-music
|
||||
pkgs.gnome-connections
|
||||
];
|
||||
};
|
||||
})
|
||||
(lib.mkIf (isEnabled && enableHomeManager) {
|
||||
home-manager.sharedModules = [
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
amberol
|
||||
];
|
||||
dconf.settings = {
|
||||
"org/gnome/desktop/peripherals/keyboard" = {
|
||||
numlock-state = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
})
|
||||
];
|
||||
}
|
||||
61
modules/desktop/kde.nix
Normal file
61
modules/desktop/kde.nix
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
isEnabled = config.my.desktop.enableKde;
|
||||
enableHomeManager = config.my.modulesCfg.enableHomeManager;
|
||||
in {
|
||||
options.my.desktop.enableKde = lib.mkEnableOption "KDE desktop";
|
||||
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf isEnabled {
|
||||
my.desktop.enable = true;
|
||||
|
||||
# flatpak xdg-portal-kde crashes, otherwise this would be global
|
||||
services.flatpak.enable = false;
|
||||
|
||||
services = {
|
||||
# Enable the KDE Plasma Desktop Environment.
|
||||
xserver = {
|
||||
desktopManager.plasma5.enable = true;
|
||||
|
||||
displayManager = {
|
||||
sddm.enable = true;
|
||||
defaultSession = "plasmawayland";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
environment = {
|
||||
systemPackages = with pkgs; [
|
||||
libsForQt5.kate
|
||||
libsForQt5.kalk
|
||||
];
|
||||
|
||||
plasma5.excludePackages = with pkgs.libsForQt5; [
|
||||
elisa
|
||||
gwenview
|
||||
okular
|
||||
khelpcenter
|
||||
];
|
||||
};
|
||||
|
||||
programs = {
|
||||
dconf.enable = true;
|
||||
partition-manager.enable = true;
|
||||
};
|
||||
})
|
||||
(lib.mkIf (isEnabled && enableHomeManager) {
|
||||
home-manager.sharedModules = [
|
||||
{
|
||||
services.kdeconnect = {
|
||||
enable = true;
|
||||
indicator = true;
|
||||
};
|
||||
}
|
||||
];
|
||||
})
|
||||
];
|
||||
}
|
||||
18
modules/globalinstalls.nix
Normal file
18
modules/globalinstalls.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{pkgs, ...}: {
|
||||
config = {
|
||||
environment = {
|
||||
pathsToLink = ["/share/zsh"];
|
||||
systemPackages = with pkgs; [
|
||||
pciutils
|
||||
ncdu
|
||||
tldr
|
||||
];
|
||||
};
|
||||
|
||||
programs = {
|
||||
git.enable = true;
|
||||
zsh.enable = true;
|
||||
htop.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
15
modules/hardware/amdcpu.nix
Normal file
15
modules/hardware/amdcpu.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
isEnabled = config.my.hardware.isAmdCpu;
|
||||
in {
|
||||
options.my.hardware.isAmdCpu = lib.mkEnableOption "amd cpu";
|
||||
|
||||
config = lib.mkIf isEnabled {
|
||||
boot.kernelModules = ["kvm-amd"];
|
||||
hardware.cpu.amd.updateMicrocode = true;
|
||||
};
|
||||
}
|
||||
16
modules/hardware/amdgpu.nix
Normal file
16
modules/hardware/amdgpu.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
isEnabled = config.my.hardware.isAmdGpu;
|
||||
in {
|
||||
options.my.hardware.isAmdGpu = lib.mkEnableOption "amd gpu";
|
||||
|
||||
config = lib.mkIf isEnabled {
|
||||
environment.systemPackages = with pkgs; [
|
||||
radeontop
|
||||
];
|
||||
};
|
||||
}
|
||||
38
modules/hardware/common-desktop.nix
Normal file
38
modules/hardware/common-desktop.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
isEnabled = config.my.hardware.enableCommonDesktopSettings;
|
||||
in {
|
||||
options.my.hardware.enableCommonDesktopSettings = lib.mkEnableOption "common hw settings for desktops";
|
||||
|
||||
config = lib.mkIf isEnabled {
|
||||
boot = {
|
||||
kernelPackages = pkgs.linuxPackages_zen;
|
||||
kernelParams = ["quiet" "udev.log_level=3"];
|
||||
supportedFilesystems = ["btrfs"];
|
||||
initrd.supportedFilesystems = ["btrfs"];
|
||||
consoleLogLevel = 0;
|
||||
initrd.verbose = false;
|
||||
loader = {
|
||||
systemd-boot.enable = true;
|
||||
timeout = 3;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
};
|
||||
|
||||
# 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.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
};
|
||||
}
|
||||
41
modules/hardware/default.nix
Normal file
41
modules/hardware/default.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
modulesCfg: {
|
||||
modulesPath,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
hostName = modulesCfg.hostName;
|
||||
in {
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
(builtins.toString ./. + "/${hostName}.nix")
|
||||
./common-desktop.nix
|
||||
./amdcpu.nix
|
||||
./amdgpu.nix
|
||||
./intelcpu.nix
|
||||
];
|
||||
|
||||
options.my.modulesCfg.hostName = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
};
|
||||
|
||||
config = {
|
||||
networking.hostName = hostName;
|
||||
|
||||
boot.loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
|
||||
# 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.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
};
|
||||
}
|
||||
102
modules/hardware/hetzner-vpn1.nix
Normal file
102
modules/hardware/hetzner-vpn1.nix
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
{
|
||||
lib,
|
||||
modulesPath,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
(modulesPath + "/profiles/qemu-guest.nix")
|
||||
];
|
||||
|
||||
config = {
|
||||
nixpkgs = {
|
||||
hostPlatform = "aarch64-linux";
|
||||
system = "aarch64-linux";
|
||||
};
|
||||
|
||||
boot = {
|
||||
tmp.cleanOnBoot = true;
|
||||
loader = {
|
||||
systemd-boot.enable = lib.mkForce false;
|
||||
efi.canTouchEfiVariables = lib.mkForce false;
|
||||
grub = {
|
||||
enable = true;
|
||||
efiSupport = true;
|
||||
efiInstallAsRemovable = true;
|
||||
device = "nodev";
|
||||
};
|
||||
};
|
||||
initrd = {
|
||||
availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront"];
|
||||
kernelModules = ["nvme"];
|
||||
};
|
||||
};
|
||||
|
||||
zramSwap.enable = true;
|
||||
networking.domain = "";
|
||||
|
||||
fileSystems = {
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/77CF-345D";
|
||||
fsType = "vfat";
|
||||
};
|
||||
"/" = {
|
||||
device = "/dev/sda1";
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
|
||||
# This file was populated at runtime with the networking
|
||||
# details gathered from the active system.
|
||||
networking = {
|
||||
nameservers = ["8.8.8.8"];
|
||||
defaultGateway = "172.31.1.1";
|
||||
defaultGateway6 = {
|
||||
address = "fe80::1";
|
||||
interface = "eth0";
|
||||
};
|
||||
dhcpcd.enable = false;
|
||||
usePredictableInterfaceNames = lib.mkForce false;
|
||||
interfaces = {
|
||||
eth0 = {
|
||||
ipv4 = {
|
||||
addresses = [
|
||||
{
|
||||
address = "157.90.146.125";
|
||||
prefixLength = 32;
|
||||
}
|
||||
];
|
||||
routes = [
|
||||
{
|
||||
address = "172.31.1.1";
|
||||
prefixLength = 32;
|
||||
}
|
||||
];
|
||||
};
|
||||
ipv6 = {
|
||||
addresses = [
|
||||
{
|
||||
address = "2a01:4f8:c012:7137::1";
|
||||
prefixLength = 64;
|
||||
}
|
||||
{
|
||||
address = "fe80::9400:2ff:fe87:7fc9";
|
||||
prefixLength = 64;
|
||||
}
|
||||
];
|
||||
routes = [
|
||||
{
|
||||
address = "fe80::1";
|
||||
prefixLength = 128;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.udev.extraRules = ''
|
||||
ATTR{address}=="96:00:02:87:7f:c9", NAME="eth0"
|
||||
|
||||
'';
|
||||
};
|
||||
}
|
||||
14
modules/hardware/intelcpu.nix
Normal file
14
modules/hardware/intelcpu.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
isEnabled = config.my.hardware.isIntelCpu;
|
||||
in {
|
||||
options.my.hardware.isIntelCpu = lib.mkEnableOption "intel cpu";
|
||||
|
||||
config = lib.mkIf isEnabled {
|
||||
boot.kernelModules = ["kvm-intel"];
|
||||
hardware.cpu.intel.updateMicrocode = true;
|
||||
};
|
||||
}
|
||||
31
modules/hardware/vinzenz-lpt.nix
Normal file
31
modules/hardware/vinzenz-lpt.nix
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
{...}: {
|
||||
config = {
|
||||
my.hardware = {
|
||||
enableCommonDesktopSettings = true;
|
||||
isIntelCpu = true;
|
||||
isAmdGpu = true;
|
||||
};
|
||||
|
||||
boot = {
|
||||
initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci"];
|
||||
loader.efi.efiSysMountPoint = "/boot/efi";
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/34cb86c4-8823-4785-9672-92ef0bcd5eaf";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@"];
|
||||
};
|
||||
|
||||
"/boot/efi" = {
|
||||
device = "/dev/disk/by-uuid/2381-1CD2";
|
||||
fsType = "vfat";
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{device = "/dev/disk/by-uuid/f5932f70-60e4-4abe-b23d-2cab3c095c7d";}
|
||||
];
|
||||
};
|
||||
}
|
||||
54
modules/hardware/vinzenz-pc2.nix
Normal file
54
modules/hardware/vinzenz-pc2.nix
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
{...}: {
|
||||
config = {
|
||||
my.hardware = {
|
||||
enableCommonDesktopSettings = true;
|
||||
isAmdCpu = true;
|
||||
isAmdGpu = true;
|
||||
};
|
||||
|
||||
boot = {
|
||||
initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid" "sd_mod"]; # "usb_storage"
|
||||
loader.efi.efiSysMountPoint = "/boot";
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/0e9c983a-e733-447e-8181-f41d6670c4b8";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@"];
|
||||
};
|
||||
|
||||
"/home" = {
|
||||
device = "/dev/disk/by-uuid/0e9c983a-e733-447e-8181-f41d6670c4b8";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@home"];
|
||||
};
|
||||
|
||||
"/games" = {
|
||||
device = "/dev/disk/by-uuid/0e9c983a-e733-447e-8181-f41d6670c4b8";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@games"];
|
||||
};
|
||||
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/AF67-8F16";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
"/mnt/nixos_btrfs_root" = {
|
||||
# subvolume with id 5 is always the root volume
|
||||
# this is convenient for managing the flat subvolume hierarchy
|
||||
device = "/dev/disk/by-uuid/0e9c983a-e733-447e-8181-f41d6670c4b8";
|
||||
fsType = "btrfs";
|
||||
options = ["subvolid=5"];
|
||||
};
|
||||
|
||||
"/mnt/ssd2" = {
|
||||
device = "/dev/disk/by-uuid/6b2a647d-c68e-4c07-85bf-c9bfc5db7e8a";
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [];
|
||||
};
|
||||
}
|
||||
28
modules/i18n.nix
Normal file
28
modules/i18n.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{...}: {
|
||||
config = {
|
||||
time.timeZone = "Europe/Berlin";
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
extraLocaleSettings = {
|
||||
LC_ADDRESS = "de_DE.UTF-8";
|
||||
LC_IDENTIFICATION = "de_DE.UTF-8";
|
||||
LC_MEASUREMENT = "de_DE.UTF-8";
|
||||
LC_MONETARY = "de_DE.UTF-8";
|
||||
LC_NAME = "de_DE.UTF-8";
|
||||
LC_NUMERIC = "de_DE.UTF-8";
|
||||
LC_PAPER = "de_DE.UTF-8";
|
||||
LC_TELEPHONE = "de_DE.UTF-8";
|
||||
LC_TIME = "de_DE.UTF-8";
|
||||
};
|
||||
};
|
||||
|
||||
services.xserver = {
|
||||
# Configure keymap in X11
|
||||
layout = "de";
|
||||
xkbVariant = "";
|
||||
};
|
||||
|
||||
# Configure console keymap
|
||||
console.keyMap = "de";
|
||||
};
|
||||
}
|
||||
20
modules/nixpkgs.nix
Normal file
20
modules/nixpkgs.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{...}: {
|
||||
config = {
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
system = {
|
||||
stateVersion = "22.11";
|
||||
# enable auto updates
|
||||
autoUpgrade = {
|
||||
enable = true;
|
||||
dates = "weekly";
|
||||
};
|
||||
};
|
||||
|
||||
nix.gc = {
|
||||
automatic = true;
|
||||
dates = "monthly";
|
||||
options = "--delete-older-than 30d";
|
||||
};
|
||||
};
|
||||
}
|
||||
37
modules/server.nix
Normal file
37
modules/server.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.my.server;
|
||||
in {
|
||||
options.my.server = {
|
||||
enable = lib.mkEnableOption "server role";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services = {
|
||||
# Enable the OpenSSH daemon.
|
||||
openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
# PermitRootLogin = "no"; # this is managed through authorized keys
|
||||
PasswordAuthentication = false;
|
||||
KbdInteractiveAuthentication = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
allowedTCPPortRanges = [
|
||||
{
|
||||
# ssh
|
||||
from = 22;
|
||||
to = 22;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
69
modules/users/default.nix
Normal file
69
modules/users/default.nix
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
modulesCfg: {
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
enableHomeManager = modulesCfg.enableHomeManager;
|
||||
in {
|
||||
options.my = {
|
||||
modulesCfg.enableHomeManager = lib.mkEnableOption "enable home manager";
|
||||
enabledUsers = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
};
|
||||
};
|
||||
|
||||
imports =
|
||||
[
|
||||
./vinzenz.nix
|
||||
./ronja.nix
|
||||
]
|
||||
++ lib.optionals enableHomeManager [
|
||||
<home-manager/nixos>
|
||||
];
|
||||
|
||||
config = lib.mkIf enableHomeManager {
|
||||
home-manager.sharedModules = [
|
||||
# set stateVersion
|
||||
{home.stateVersion = "22.11";}
|
||||
# make nano the default editor
|
||||
{
|
||||
home = {
|
||||
sessionVariables.EDITOR = "nano";
|
||||
file.".nanorc".text = lib.mkDefault ''
|
||||
set linenumbers
|
||||
set mouse
|
||||
'';
|
||||
};
|
||||
}
|
||||
# command line niceness
|
||||
{
|
||||
programs = {
|
||||
command-not-found.enable = true;
|
||||
dircolors.enable = true;
|
||||
|
||||
zsh = {
|
||||
enable = true;
|
||||
enableSyntaxHighlighting = true;
|
||||
enableAutosuggestions = true;
|
||||
enableVteIntegration = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
# common git config
|
||||
{
|
||||
programs = {
|
||||
git = {
|
||||
enable = true;
|
||||
extraConfig.init.defaultBranch = "main";
|
||||
};
|
||||
|
||||
gh = {
|
||||
enable = true;
|
||||
enableGitCredentialHelper = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
55
modules/users/ronja-home.nix
Normal file
55
modules/users/ronja-home.nix
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home .packages = with pkgs; [
|
||||
## Apps
|
||||
telegram-desktop
|
||||
kdiff3
|
||||
];
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
firefox.enable = true;
|
||||
|
||||
zsh = {
|
||||
history = {
|
||||
size = 10000;
|
||||
path = "${config.xdg.dataHome}/zsh/history";
|
||||
expireDuplicatesFirst = true;
|
||||
};
|
||||
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
theme = "agnoster";
|
||||
plugins = ["git" "sudo" "systemadmin"];
|
||||
};
|
||||
};
|
||||
|
||||
git = {
|
||||
userName = "Ronja Spiegelberg";
|
||||
userEmail = "ronja.spiegelberg@gmail.com";
|
||||
|
||||
extraConfig = {
|
||||
pull.ff = "only";
|
||||
merge.tool = "kdiff3";
|
||||
};
|
||||
};
|
||||
|
||||
chromium = {
|
||||
enable = true;
|
||||
extensions = [
|
||||
{
|
||||
# ublock origin
|
||||
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
|
||||
}
|
||||
{
|
||||
id = "dcpihecpambacapedldabdbpakmachpb";
|
||||
updateUrl = "https://raw.githubusercontent.com/iamadamdev/bypass-paywalls-chrome/master/updates.xml";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
25
modules/users/ronja.nix
Normal file
25
modules/users/ronja.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
isUserEnabled = builtins.elem "ronja" config.my.enabledUsers;
|
||||
in {
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf isUserEnabled {
|
||||
# Define user account
|
||||
users.users.ronja = {
|
||||
isNormalUser = true;
|
||||
name = "ronja";
|
||||
description = "Ronja Spiegelberg";
|
||||
home = "/home/ronja";
|
||||
extraGroups = ["networkmanager" "wheel" "games"];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
})
|
||||
(lib.mkIf (isUserEnabled && config.my.modulesCfg.enableHomeManager) {
|
||||
home-manager.users.ronja = import ./ronja-home.nix;
|
||||
})
|
||||
];
|
||||
}
|
||||
173
modules/users/vinzenz-home.nix
Normal file
173
modules/users/vinzenz-home.nix
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home.packages = with pkgs; [
|
||||
keepassxc
|
||||
insync
|
||||
telegram-desktop
|
||||
simple-scan
|
||||
wireguard-tools
|
||||
element-desktop
|
||||
etcher
|
||||
iotop
|
||||
lsof
|
||||
wirelesstools
|
||||
thefuck
|
||||
dotnet-sdk_7
|
||||
jetbrains.rider
|
||||
alejandra
|
||||
arduino
|
||||
uucp
|
||||
screen
|
||||
jetbrains.pycharm-professional
|
||||
kdiff3
|
||||
docker
|
||||
youtube-music
|
||||
];
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
firefox.enable = true;
|
||||
fzf.enable = true;
|
||||
mangohud.enable = true;
|
||||
|
||||
zsh = {
|
||||
initExtra = ''
|
||||
eval "$(direnv hook zsh)";
|
||||
eval $(thefuck --alias);
|
||||
'';
|
||||
|
||||
shellAliases = {
|
||||
my-apply = "sudo nixos-rebuild boot";
|
||||
my-switch = "sudo nixos-rebuild switch";
|
||||
my-update = "sudo nixos-rebuild boot --upgrade";
|
||||
my-fmt = "alejandra .";
|
||||
my-test = "sudo nixos-rebuild test";
|
||||
my-direnvallow = "echo \"use nix\" > .envrc && direnv allow";
|
||||
my-ip4 = "ip addr show | grep 192";
|
||||
};
|
||||
|
||||
history = {
|
||||
size = 10000;
|
||||
path = "${config.xdg.dataHome}/zsh/history";
|
||||
expireDuplicatesFirst = true;
|
||||
};
|
||||
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
theme = "agnoster";
|
||||
plugins = ["git" "sudo" "docker" "systemadmin" "thefuck"];
|
||||
};
|
||||
};
|
||||
|
||||
git = {
|
||||
enable = true;
|
||||
userName = "Vinzenz Schroeter";
|
||||
userEmail = "vinzenz.f.s@gmail.com";
|
||||
|
||||
aliases = {
|
||||
prettylog = "log --pretty=oneline --graph";
|
||||
};
|
||||
|
||||
extraConfig = {
|
||||
pull.ff = "only";
|
||||
init.defaultBranch = "main";
|
||||
merge.tool = "kdiff3";
|
||||
push.autoSetupRemote = "true";
|
||||
};
|
||||
};
|
||||
|
||||
vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
enableUpdateCheck = false;
|
||||
extensions = with pkgs; [
|
||||
vscode-extensions.bbenoist.nix
|
||||
vscode-extensions.ms-python.python
|
||||
vscode-extensions.kamadorueda.alejandra
|
||||
];
|
||||
userSettings = {
|
||||
"git.autofetch" = true;
|
||||
"update.mode" = "none";
|
||||
"editor.fontFamily" = "'Fira Code', 'Droid Sans Mono', 'monospace', monospace";
|
||||
"editor.fontLigatures" = true;
|
||||
"editor.formatOnSave" = true;
|
||||
"editor.formatOnSaveMode" = "modificationsIfAvailable";
|
||||
"editor.minimap.autohide" = true;
|
||||
"diffEditor.diffAlgorithm" = "advanced";
|
||||
"explorer.excludeGitIgnore" = true;
|
||||
"workbench.startupEditor" = "readme";
|
||||
"markdown.extension.tableFormatter.normalizeIndentation" = true;
|
||||
"markdown.extension.toc.orderedList" = false;
|
||||
"telemetry.telemetryLevel" = "off";
|
||||
"redhat.telemetry.enabled" = false;
|
||||
"workbench.enableExperiments" = false;
|
||||
};
|
||||
};
|
||||
|
||||
direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
|
||||
chromium = {
|
||||
enable = true;
|
||||
extensions = [
|
||||
{
|
||||
# ublock origin
|
||||
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
|
||||
}
|
||||
{
|
||||
id = "dcpihecpambacapedldabdbpakmachpb";
|
||||
updateUrl = "https://raw.githubusercontent.com/iamadamdev/bypass-paywalls-chrome/master/updates.xml";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
exa = {
|
||||
enable = true;
|
||||
git = true;
|
||||
icons = true;
|
||||
enableAliases = true;
|
||||
extraOptions = [
|
||||
"--group-directories-first"
|
||||
"--header"
|
||||
];
|
||||
};
|
||||
|
||||
micro = {
|
||||
enable = true;
|
||||
settings = {
|
||||
colorcolumn = 120;
|
||||
hlsearch = true;
|
||||
savecursor = true;
|
||||
saveundo = true;
|
||||
scrollbar = true;
|
||||
smartpaste = true;
|
||||
};
|
||||
};
|
||||
|
||||
# checked https://rycee.gitlab.io/home-manager/options.html until "programs.notmuch"
|
||||
};
|
||||
|
||||
editorconfig = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"*" = {
|
||||
charset = "utf-8";
|
||||
end_of_line = "lf";
|
||||
trim_trailing_whitespace = true;
|
||||
insert_final_newline = true;
|
||||
max_line_width = 120;
|
||||
indent_style = "space";
|
||||
indent_size = 4;
|
||||
};
|
||||
"*.nix" = {
|
||||
indent_size = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
24
modules/users/vinzenz.nix
Normal file
24
modules/users/vinzenz.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
isUserEnabled = builtins.elem "vinzenz" config.my.enabledUsers;
|
||||
in {
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf isUserEnabled {
|
||||
users.users.vinzenz = {
|
||||
isNormalUser = true;
|
||||
name = "vinzenz";
|
||||
description = "Vinzenz Schroeter";
|
||||
home = "/home/vinzenz";
|
||||
extraGroups = ["networkmanager" "wheel" "games"];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
})
|
||||
(lib.mkIf (isUserEnabled && config.my.modulesCfg.enableHomeManager) {
|
||||
home-manager.users.vinzenz = import ./vinzenz-home.nix;
|
||||
})
|
||||
];
|
||||
}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
imports = [
|
||||
./hardware.nix
|
||||
./forgejo-runner.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
# uncomment for build check on non arm system (requires --impure)
|
||||
# nixpkgs.buildPlatform = builtins.currentSystem;
|
||||
services.tailscale.useRoutingFeatures = "both";
|
||||
system.autoUpgrade.allowReboot = true;
|
||||
|
||||
users.users = {
|
||||
root.openssh.authorizedKeys.keys = [
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJUpbpB3KEKVoKWsKoar9J4RNah8gmQoSH6jQEw5dY vinzenz-pixel-JuiceSSH''
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO1CRn4yYTL4XUdCebE8Z4ZeuMujBjorTdWifg911EOv vinzenz-pc2 home roaming''
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNpLDmctyqGpow/ElQvdhY4BLBPS/sigDJ1QEcC7wC vinzenz-lpt2-roaming''
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
config = {
|
||||
environment.systemPackages = with pkgs; [
|
||||
forgejo-runner
|
||||
];
|
||||
|
||||
# https://wiki.nixos.org/wiki/Forgejo
|
||||
|
||||
services.gitea-actions-runner = {
|
||||
package = pkgs.forgejo-actions-runner;
|
||||
instances.default = {
|
||||
enable = true;
|
||||
name = "cccb";
|
||||
url = "https://git.berlin.ccc.de";
|
||||
# Obtaining the path to the runner token file may differ
|
||||
# tokenFile should be in format TOKEN=<secret>, since it's EnvironmentFile for systemd
|
||||
tokenFile = "/etc/forgejo-runner/registration_token";
|
||||
labels = [
|
||||
"ubuntu-latest:docker://ghcr.io/catthehacker/ubuntu:rust-24.04"
|
||||
"ubuntu-24.04:docker://ghcr.io/catthehacker/ubuntu:rust-24.04"
|
||||
];
|
||||
settings = {
|
||||
container.network = "bridge";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
{ modulesPath, ... }:
|
||||
{
|
||||
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
|
||||
|
||||
config = {
|
||||
boot = {
|
||||
tmp.cleanOnBoot = true;
|
||||
kernelParams = [ "console=tty" ];
|
||||
loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
initrd = {
|
||||
availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"virtio_scsi"
|
||||
"sr_mod"
|
||||
"virtio_gpu"
|
||||
];
|
||||
kernelModules = [ ];
|
||||
};
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/47bc77ff-12e1-4d39-bb5c-fb100ccd3aab";
|
||||
fsType = "ext4";
|
||||
};
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/05F2-8F9A";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0077"
|
||||
"dmask=0077"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{ device = "/dev/disk/by-uuid/bbd18a70-b0bb-4e1a-b45b-3c1f8ecc0c10"; }
|
||||
];
|
||||
|
||||
networking.useNetworkd = true;
|
||||
systemd.network = {
|
||||
enable = true;
|
||||
networks."10-wan" = {
|
||||
matchConfig.Name = "enp1s0";
|
||||
networkConfig.DHCP = "ipv4";
|
||||
address = [
|
||||
"2a01:4f8:c013:a524::1/64"
|
||||
];
|
||||
routes = [
|
||||
{ Gateway = "fe80::1"; }
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
{
|
||||
imports = [
|
||||
./hardware.nix
|
||||
./nginx.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
# uncomment for build check on non arm system (requires --impure)
|
||||
# nixpkgs.buildPlatform = builtins.currentSystem;
|
||||
|
||||
services.tailscale.useRoutingFeatures = "both";
|
||||
|
||||
users.users = {
|
||||
root.openssh.authorizedKeys.keys = [
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICdYqY3Y1/f1bsAi5Qfyr/UWuX9ixu96IeAlhoQaJkbf''
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJUpbpB3KEKVoKWsKoar9J4RNah8gmQoSH6jQEw5dY vinzenz-pixel-JuiceSSH''
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO1CRn4yYTL4XUdCebE8Z4ZeuMujBjorTdWifg911EOv vinzenz-pc2 home roaming''
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNpLDmctyqGpow/ElQvdhY4BLBPS/sigDJ1QEcC7wC vinzenz-lpt2-roaming''
|
||||
];
|
||||
#ronja.openssh.authorizedKeys.keys = [
|
||||
# ''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIALWKm+d6KL6Vl3grPOcGouiNTkvdhXuWJmcrdEBY2nw ronja-ssh-host-key''
|
||||
#];
|
||||
};
|
||||
|
||||
system.autoUpgrade.allowReboot = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
{ modulesPath, ... }:
|
||||
{
|
||||
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
|
||||
|
||||
config = {
|
||||
boot = {
|
||||
tmp.cleanOnBoot = true;
|
||||
kernelParams = [ "console=tty" ];
|
||||
loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
initrd = {
|
||||
availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"virtio_scsi"
|
||||
"sr_mod"
|
||||
"virtio_gpu"
|
||||
];
|
||||
kernelModules = [ ];
|
||||
};
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/3263489d-9819-433c-b198-9d2e732a94e4";
|
||||
fsType = "ext4";
|
||||
};
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/6C25-6BDC";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0077"
|
||||
"dmask=0077"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{ device = "/dev/disk/by-uuid/e147721d-86b5-40d7-a231-c6ea391c563d"; }
|
||||
];
|
||||
|
||||
networking.useNetworkd = true;
|
||||
systemd.network = {
|
||||
enable = true;
|
||||
networks."10-wan" = {
|
||||
matchConfig.Name = "enp1s0";
|
||||
networkConfig.DHCP = "ipv4";
|
||||
address = [
|
||||
"2a01:4f8:c013:65dd::1/64"
|
||||
];
|
||||
routes = [
|
||||
{ Gateway = "fe80::1"; }
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
blog-domain-socket = "/run/nginx/blog.sock";
|
||||
anubis-domain-socket = "/run/anubis/anubis-blog.sock";
|
||||
in
|
||||
{
|
||||
security.acme = {
|
||||
acceptTerms = true;
|
||||
defaults.email = "acme@zerforschen.plus";
|
||||
};
|
||||
|
||||
systemd.services = {
|
||||
nginx.serviceConfig.SupplementaryGroups = [ "anubis" ];
|
||||
anubis-main.serviceConfig.SupplementaryGroups = [ "nginx" ];
|
||||
};
|
||||
|
||||
services = {
|
||||
nginx = {
|
||||
enable = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
recommendedGzipSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
|
||||
virtualHosts = {
|
||||
"zerforschen.plus" = {
|
||||
addSSL = true;
|
||||
enableACME = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://unix:" + anubis-domain-socket;
|
||||
};
|
||||
};
|
||||
|
||||
"blog-in-anubis" = {
|
||||
root = pkgs.zerforschen-plus-content;
|
||||
listen = [
|
||||
{
|
||||
addr = "unix:" + blog-domain-socket;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
anubis.instances.main = {
|
||||
enable = true;
|
||||
settings = {
|
||||
BIND = anubis-domain-socket;
|
||||
TARGET = "unix://" + blog-domain-socket;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
80
|
||||
443
|
||||
5201
|
||||
];
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./hardware.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
# Configure keymap in X11
|
||||
services.xserver.xkb = {
|
||||
layout = "de";
|
||||
variant = "";
|
||||
};
|
||||
|
||||
# Configure console keymap
|
||||
console.keyMap = "de";
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
# wget
|
||||
];
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
boot = {
|
||||
supportedFilesystems = [ "btrfs" ];
|
||||
initrd.supportedFilesystems = [ "btrfs" ];
|
||||
kernelModules = [ "kvm-intel" ];
|
||||
extraModulePackages = [ ];
|
||||
initrd = {
|
||||
availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"nvme"
|
||||
"usbhid"
|
||||
"usb_storage"
|
||||
"sd_mod"
|
||||
];
|
||||
kernelModules = [ ];
|
||||
};
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/27eccf93-a79f-4fcb-8588-ec55d913508f";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@" ];
|
||||
};
|
||||
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/85D4-43FC";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0077"
|
||||
"dmask=0077"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{ device = "/dev/disk/by-uuid/bf9d19fb-499b-4bfb-b67d-131fa5bf8259"; }
|
||||
];
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
useDHCP = lib.mkDefault true;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
{
|
||||
imports = [
|
||||
./hardware.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
nix.settings.extra-platforms = [
|
||||
"aarch64-linux"
|
||||
"i686-linux"
|
||||
];
|
||||
|
||||
services.xserver.xkb = {
|
||||
# Configure keymap in X11
|
||||
layout = "de";
|
||||
variant = "";
|
||||
};
|
||||
|
||||
# Configure console keymap
|
||||
console.keyMap = "de";
|
||||
|
||||
users.users.vinzenz.openssh.authorizedKeys.keys = [
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJUpbpB3KEKVoKWsKoar9J4RNah8gmQoSH6jQEw5dY vinzenz-pixel-JuiceSSH''
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO1CRn4yYTL4XUdCebE8Z4ZeuMujBjorTdWifg911EOv vinzenz-pc2 home roaming''
|
||||
];
|
||||
|
||||
#users.users.ronja.openssh.authorizedKeys.keys = [
|
||||
# ''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIALWKm+d6KL6Vl3grPOcGouiNTkvdhXuWJmcrdEBY2nw ronja-ssh-host-key''
|
||||
#];
|
||||
|
||||
programs = {
|
||||
adb.enable = true;
|
||||
light = {
|
||||
enable = true;
|
||||
brightnessKeys = {
|
||||
enable = true;
|
||||
step = 5;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
8776
|
||||
1337
|
||||
];
|
||||
|
||||
services.servicepoint-tanks = {
|
||||
enable = false;
|
||||
urls = [
|
||||
"http://localhost:5666"
|
||||
"http://localhost:5667"
|
||||
];
|
||||
};
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
"mbedtls-2.28.10"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
# intel cpu
|
||||
boot.kernelModules = [
|
||||
"kvm-intel"
|
||||
"xe"
|
||||
];
|
||||
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
useDHCP = lib.mkDefault true;
|
||||
};
|
||||
|
||||
boot = {
|
||||
kernelPackages = pkgs.linuxPackages_zen;
|
||||
supportedFilesystems = [ "btrfs" ];
|
||||
initrd = {
|
||||
supportedFilesystems = [ "btrfs" ];
|
||||
availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"thunderbolt"
|
||||
"nvme"
|
||||
];
|
||||
luks.devices = {
|
||||
"luks-2c654ff2-3c42-48d3-a1e3-9545679afaa3" = {
|
||||
device = "/dev/disk/by-uuid/2c654ff2-3c42-48d3-a1e3-9545679afaa3";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/e4dad0c8-26a1-45e9-bbd9-48565eb6574e";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@" ];
|
||||
};
|
||||
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/E2B7-2BC1";
|
||||
fsType = "vfat";
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{
|
||||
device = "/var/lib/swapfile";
|
||||
size = 32 * 1024;
|
||||
}
|
||||
];
|
||||
|
||||
services.thermald.enable = true;
|
||||
services.hardware.bolt.enable = true; # thunderbolt security
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
./hardware.nix
|
||||
./vscode-server.nix
|
||||
./hass.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
nix.settings.extra-platforms = [
|
||||
"aarch64-linux"
|
||||
"i686-linux"
|
||||
];
|
||||
|
||||
services.xserver.xkb = {
|
||||
# Configure keymap in X11
|
||||
layout = "de";
|
||||
variant = "";
|
||||
};
|
||||
|
||||
# Configure console keymap
|
||||
console.keyMap = "de";
|
||||
|
||||
users.users.vinzenz.openssh.authorizedKeys.keys = [
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrY6tcgnoC/xbgL7vxSjddEY9MBxRXe9n2cAHt88/TT home roaming''
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJUpbpB3KEKVoKWsKoar9J4RNah8gmQoSH6jQEw5dY vinzenz-pixel-JuiceSSH''
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNpLDmctyqGpow/ElQvdhY4BLBPS/sigDJ1QEcC7wC vinzenz-lpt2-roaming''
|
||||
];
|
||||
|
||||
users.users.ronja.openssh.authorizedKeys.keys = [
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIALWKm+d6KL6Vl3grPOcGouiNTkvdhXuWJmcrdEBY2nw ssh-host-key''
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEgN6J8KyVyQqBAz+y3drXDmIsxOPkdPB+ISgpIP9Eld Generated By Termius''
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [ lact ];
|
||||
|
||||
networking.firewall.allowedUDPPorts = [
|
||||
# Factorio
|
||||
34197
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
{
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/0e9c983a-e733-447e-8181-f41d6670c4b8";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@" ];
|
||||
};
|
||||
|
||||
"/home" = {
|
||||
device = "/dev/disk/by-uuid/0e9c983a-e733-447e-8181-f41d6670c4b8";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@home" ];
|
||||
};
|
||||
|
||||
"/games" = {
|
||||
device = "/dev/disk/by-uuid/0e9c983a-e733-447e-8181-f41d6670c4b8";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@games" ];
|
||||
};
|
||||
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/AF67-8F16";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
#"/mnt/nixos_btrfs_root" = {
|
||||
# # subvolume with id 5 is always the root volume
|
||||
# # this is convenient for managing the flat subvolume hierarchy
|
||||
# device = "/dev/disk/by-uuid/0e9c983a-e733-447e-8181-f41d6670c4b8";
|
||||
# fsType = "btrfs";
|
||||
# options = [ "subvolid=5" ];
|
||||
#};
|
||||
|
||||
"/mnt/ssd2" = {
|
||||
device = "/dev/disk/by-uuid/6b2a647d-c68e-4c07-85bf-c9bfc5db7e8a";
|
||||
fsType = "ext4";
|
||||
};
|
||||
}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
# amd cpu
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
|
||||
boot = {
|
||||
initrd.availableKernelModules = [
|
||||
"nvme"
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
]; # "usb_storage"
|
||||
kernelPackages = pkgs.linuxPackages_zen;
|
||||
supportedFilesystems = [ "btrfs" ];
|
||||
initrd.supportedFilesystems = [ "btrfs" ];
|
||||
loader.efi.efiSysMountPoint = "/boot";
|
||||
};
|
||||
|
||||
fileSystems = import ./fstab.nix;
|
||||
swapDevices = [ ];
|
||||
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
useDHCP = lib.mkDefault true;
|
||||
interfaces.eno1.wakeOnLan.enable = true;
|
||||
};
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
}
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
hass-image = "ghcr.io/home-assistant/home-assistant:stable";
|
||||
hass-service = "podman-homeassistant";
|
||||
in
|
||||
{
|
||||
virtualisation.oci-containers = {
|
||||
backend = "podman";
|
||||
containers.homeassistant = {
|
||||
image = hass-image;
|
||||
hostname = "hass.lan";
|
||||
serviceName = hass-service;
|
||||
volumes = [ "home-assistant:/config" ];
|
||||
environment.TZ = "Europe/Berlin";
|
||||
extraOptions = [ "--network=host" ];
|
||||
};
|
||||
};
|
||||
|
||||
systemd = {
|
||||
timers.update-hass = {
|
||||
timerConfig = {
|
||||
Unit = "update-hass.service";
|
||||
OnCalendar = "Sun 02:00";
|
||||
};
|
||||
wantedBy = [ "timers.target" ];
|
||||
};
|
||||
|
||||
services.update-hass = {
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = pkgs.writeShellScriptBin "update-hass" ''
|
||||
podman pull ${hass-image};
|
||||
systemctl restart ${hass-service};
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
mosquitto = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
nginx = {
|
||||
enable = true;
|
||||
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
recommendedGzipSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
|
||||
# TODO: add ssl
|
||||
# TODO: add pam auth
|
||||
|
||||
virtualHosts."hass.lan" = {
|
||||
locations."/" = {
|
||||
proxyPass = "localhost:8123";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
services.openvscode-server = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.openvscode-server;
|
||||
telemetryLevel = "off";
|
||||
port = 8542;
|
||||
host = "127.0.0.1";
|
||||
withoutConnectionToken = true;
|
||||
extraPackages = with pkgs; [
|
||||
nodejs
|
||||
git
|
||||
gh
|
||||
direnv
|
||||
];
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
8542
|
||||
8543
|
||||
8544
|
||||
80
|
||||
1313
|
||||
5201
|
||||
];
|
||||
}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
options.allowedUnfreePackages = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ "steam" ];
|
||||
};
|
||||
|
||||
config = {
|
||||
nixpkgs.config = {
|
||||
# https://github.com/NixOS/nixpkgs/issues/197325#issuecomment-1579420085
|
||||
allowUnfreePredicate = lib.mkDefault (
|
||||
pkg: builtins.elem (lib.getName pkg) config.allowedUnfreePackages
|
||||
);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
boot.kernelModules = [ "amdgpu" ];
|
||||
services.xserver.videoDrivers = [ "amdgpu" ];
|
||||
|
||||
hardware = {
|
||||
graphics.enable = true;
|
||||
amdgpu = {
|
||||
opencl.enable = true;
|
||||
amdvlk = {
|
||||
# TODO: this creates black borders around GNOME apps
|
||||
# enable = true;
|
||||
# support32Bit.enable = config.hardware.graphics.enable32Bit;
|
||||
};
|
||||
overdrive.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [ nvtopPackages.amd ];
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
{
|
||||
nix = {
|
||||
optimise.automatic = true;
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "daily";
|
||||
options = "--delete-older-than 7d";
|
||||
};
|
||||
};
|
||||
|
||||
system.autoUpgrade = {
|
||||
enable = true;
|
||||
dates = "daily";
|
||||
# do not forget to set `flake` when using this module!
|
||||
};
|
||||
}
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
extraLocales = [
|
||||
"de_DE.UTF-8/UTF-8"
|
||||
];
|
||||
extraLocaleSettings = {
|
||||
LC_ADDRESS = "de_DE.UTF-8";
|
||||
LC_IDENTIFICATION = "de_DE.UTF-8";
|
||||
LC_MEASUREMENT = "de_DE.UTF-8";
|
||||
LC_MONETARY = "de_DE.UTF-8";
|
||||
LC_NAME = "de_DE.UTF-8";
|
||||
LC_NUMERIC = "de_DE.UTF-8";
|
||||
LC_PAPER = "de_DE.UTF-8";
|
||||
LC_TELEPHONE = "de_DE.UTF-8";
|
||||
LC_TIME = "de_DE.UTF-8";
|
||||
};
|
||||
};
|
||||
|
||||
programs.firefox.languagePacks = [
|
||||
"en-US"
|
||||
"de"
|
||||
];
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.hunspell
|
||||
pkgs.hunspellDicts.de-de
|
||||
pkgs.hunspellDicts.en-us
|
||||
];
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
{
|
||||
nix.settings = {
|
||||
substituters = [
|
||||
"https://cache.nixos.org/"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.lix.systems"
|
||||
"https://niri.cachix.org"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
|
||||
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
hardware = {
|
||||
enableRedistributableFirmware = true;
|
||||
cpu = {
|
||||
amd.updateMicrocode = true;
|
||||
intel.updateMicrocode = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.fwupd.enable = true;
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
ncdu
|
||||
glances
|
||||
lsof
|
||||
dig
|
||||
screen
|
||||
tldr
|
||||
nix-output-monitor
|
||||
];
|
||||
|
||||
programs = {
|
||||
zsh.enable = true;
|
||||
htop.enable = true;
|
||||
iotop.enable = true;
|
||||
git.enable = true;
|
||||
nano = {
|
||||
enable = true;
|
||||
syntaxHighlight = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
options.vinzenz = {
|
||||
keep-gnome-default-apps = lib.mkEnableOption "keep gnome default apps";
|
||||
};
|
||||
|
||||
config = lib.mkMerge [
|
||||
{
|
||||
services = {
|
||||
xserver = {
|
||||
# Enable the GNOME Desktop Environment.
|
||||
desktopManager.gnome = {
|
||||
enable = true;
|
||||
extraGSettingsOverridePackages = [ pkgs.mutter ];
|
||||
extraGSettingsOverrides = ''
|
||||
[org.gnome.mutter]
|
||||
experimental-features=['scale-monitor-framebuffer']
|
||||
'';
|
||||
};
|
||||
displayManager.gdm.enable = true;
|
||||
excludePackages = [ pkgs.xterm ];
|
||||
};
|
||||
|
||||
gnome = {
|
||||
tinysparql.enable = false;
|
||||
localsearch.enable = false;
|
||||
sushi.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
programs = {
|
||||
dconf.enable = true;
|
||||
gpaste.enable = true;
|
||||
};
|
||||
}
|
||||
(lib.mkIf (!config.vinzenz.keep-gnome-default-apps) {
|
||||
environment.gnome.excludePackages = with pkgs; [
|
||||
cheese # photo booth
|
||||
epiphany # web browser
|
||||
evince # document viewer
|
||||
geary # email client
|
||||
gnome-maps
|
||||
gnome-weather
|
||||
gnome-tour
|
||||
sysprof
|
||||
orca # screen reader
|
||||
gnome-weather
|
||||
gnome-backgrounds
|
||||
gnome-user-docs
|
||||
yelp # help app
|
||||
gnome-music
|
||||
totem # video player
|
||||
snapshot # camera
|
||||
baobab # disk usage
|
||||
];
|
||||
})
|
||||
];
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
config = {
|
||||
hardware.graphics = {
|
||||
extraPackages = with pkgs; [
|
||||
intel-media-driver
|
||||
intel-vaapi-driver
|
||||
intel-ocl
|
||||
intel-compute-runtime
|
||||
vpl-gpu-rt
|
||||
];
|
||||
extraPackages32 = with pkgs.driversi686Linux; [
|
||||
intel-vaapi-driver
|
||||
intel-media-driver
|
||||
];
|
||||
};
|
||||
environment.systemPackages = with pkgs; [ nvtopPackages.intel ];
|
||||
allowedUnfreePackages = [ "intel-ocl" ];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
config = lib.mkMerge [
|
||||
{
|
||||
networking.firewall =
|
||||
let
|
||||
kdeconnect-range = {
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
};
|
||||
in
|
||||
{
|
||||
allowedTCPPortRanges = [ kdeconnect-range ];
|
||||
allowedUDPPortRanges = [ kdeconnect-range ];
|
||||
};
|
||||
|
||||
programs.kdeconnect.enable = true;
|
||||
home-manager.sharedModules = [
|
||||
{
|
||||
services.kdeconnect = {
|
||||
enable = true;
|
||||
# this still shows up in gnome session starting with 25.05
|
||||
# indicator = true;
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
(lib.mkIf config.services.xserver.desktopManager.gnome.enable {
|
||||
# replace kdeconnect with gsconnect
|
||||
programs.kdeconnect.package = pkgs.gnomeExtensions.gsconnect;
|
||||
|
||||
home-manager.sharedModules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = [ pkgs.gnomeExtensions.gsconnect ];
|
||||
# enable gsconnect extension
|
||||
dconf.settings = {
|
||||
"org/gnome/shell".enabled-extensions = [ "gsconnect@andyholmes.github.io" ];
|
||||
"org/gnome/shell/extensions/gsconnect".enabled = true;
|
||||
};
|
||||
}
|
||||
)
|
||||
];
|
||||
})
|
||||
];
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
config = {
|
||||
environment.systemPackages = with pkgs; [
|
||||
fontconfig
|
||||
texliveFull
|
||||
texstudio
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
inherit (prev.lixPackageSets.stable)
|
||||
nixpkgs-review
|
||||
nix-eval-jobs
|
||||
nix-fast-build
|
||||
colmena
|
||||
;
|
||||
})
|
||||
];
|
||||
|
||||
nix.package = pkgs.lixPackageSets.latest.lix;
|
||||
}
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
{
|
||||
services = {
|
||||
xserver.enable = true;
|
||||
libinput.enable = true;
|
||||
flatpak.enable = true;
|
||||
fstrim.enable = true;
|
||||
earlyoom = {
|
||||
enable = true;
|
||||
freeMemThreshold = 5;
|
||||
};
|
||||
};
|
||||
|
||||
# Enable sound with pipewire.
|
||||
security.rtkit.enable = true;
|
||||
services = {
|
||||
pulseaudio.enable = false;
|
||||
pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
#jack.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
systemd = {
|
||||
# save some boot time because nothing actually requires network connectivity
|
||||
services.NetworkManager-wait-online.enable = false;
|
||||
|
||||
# prevent stuck units from preventing shutdown (default is 120s)
|
||||
extraConfig = ''
|
||||
DefaultTimeoutStopSec=10s
|
||||
'';
|
||||
};
|
||||
|
||||
programs = {
|
||||
xwayland.enable = true;
|
||||
|
||||
appimage = {
|
||||
enable = true;
|
||||
binfmt = true;
|
||||
};
|
||||
};
|
||||
|
||||
system.autoUpgrade = {
|
||||
allowReboot = false;
|
||||
operation = "boot";
|
||||
};
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
programs.nix-ld = {
|
||||
enable = true;
|
||||
libraries = with pkgs; [
|
||||
stdenv.cc.cc
|
||||
zlib
|
||||
zstd
|
||||
curl
|
||||
openssl
|
||||
attr
|
||||
libssh
|
||||
bzip2
|
||||
libxml2
|
||||
acl
|
||||
libsodium
|
||||
util-linux
|
||||
xz
|
||||
systemd
|
||||
icu
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
settings = {
|
||||
PermitRootLogin = "without-password";
|
||||
PasswordAuthentication = false;
|
||||
KbdInteractiveAuthentication = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
virtualisation = {
|
||||
containers.enable = true;
|
||||
podman = {
|
||||
enable = true;
|
||||
dockerCompat = true;
|
||||
dockerSocket.enable = true;
|
||||
autoPrune.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
{
|
||||
services = {
|
||||
# Enable CUPS to print documents.
|
||||
printing.enable = true;
|
||||
|
||||
avahi = {
|
||||
enable = true; # runs the Avahi daemon
|
||||
nssmdns4 = true; # enables the mDNS NSS plug-in
|
||||
openFirewall = true; # opens the firewall for UDP port 5353
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
boot = {
|
||||
kernelParams = [
|
||||
"quiet"
|
||||
"udev.log_level=3"
|
||||
"udev.log_priority=3"
|
||||
"rd.systemd.show_status=auto"
|
||||
];
|
||||
consoleLogLevel = 0;
|
||||
initrd = {
|
||||
verbose = false;
|
||||
systemd.enable = true; # required fpr graphical LUKS prompt
|
||||
};
|
||||
plymouth = {
|
||||
enable = true;
|
||||
theme = "catppuccin-mocha";
|
||||
themePackages = [
|
||||
(pkgs.catppuccin-plymouth.override {
|
||||
variant = "mocha";
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
# https://github.com/nix-community/lanzaboote/blob/70be03ab23d0988224e152f5b52e2fbf44a6d8ee/docs/QUICK_START.md
|
||||
# To enroll:
|
||||
# 1. sudo sbctl create-keys
|
||||
# 2. import this module, rebuild
|
||||
# 3. Put Secure Boot in Setup mode
|
||||
# 4. sudo sbctl verify
|
||||
# 5. sudo sbctl enroll-keys --microsoft
|
||||
# 6, reboot
|
||||
# 7. sudo sbctl status
|
||||
|
||||
environment.systemPackages = [
|
||||
# For debugging and troubleshooting Secure Boot.
|
||||
pkgs.sbctl
|
||||
];
|
||||
|
||||
# Lanzaboote currently replaces the systemd-boot module.
|
||||
# This setting is usually set to true in configuration.nix
|
||||
# generated at installation time. So we force it to false
|
||||
# for now.
|
||||
boot.loader.systemd-boot.enable = lib.mkForce false;
|
||||
|
||||
boot.lanzaboote = {
|
||||
enable = true;
|
||||
pkiBundle = "/var/lib/sbctl";
|
||||
};
|
||||
}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
{
|
||||
hardware.steam-hardware.enable = true;
|
||||
|
||||
programs = {
|
||||
steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true;
|
||||
dedicatedServer.openFirewall = true;
|
||||
localNetworkGameTransfers.openFirewall = true;
|
||||
gamescopeSession.enable = false;
|
||||
};
|
||||
gamemode.enable = true;
|
||||
};
|
||||
|
||||
# steam network transfer
|
||||
networking.firewall = {
|
||||
allowedUDPPorts = [ 3478 ];
|
||||
allowedTCPPorts = [ 24070 ];
|
||||
|
||||
allowedTCPPortRanges = [
|
||||
{
|
||||
from = 27015;
|
||||
to = 27050;
|
||||
}
|
||||
];
|
||||
|
||||
allowedUDPPortRanges = [
|
||||
{
|
||||
from = 4379;
|
||||
to = 4380;
|
||||
}
|
||||
{
|
||||
from = 27000;
|
||||
to = 27100;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
allowedUnfreePackages = [
|
||||
"steam"
|
||||
"steam-original"
|
||||
"steam-run"
|
||||
"steam-unwrapped"
|
||||
];
|
||||
}
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
{ pkgs, config, ... }:
|
||||
{
|
||||
stylix = {
|
||||
enable = true;
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
||||
override = {
|
||||
scheme = "Catppuccin Mocha Pride";
|
||||
|
||||
base09 = "#6f9dff";
|
||||
base0A = "#d162a4";
|
||||
base0B = "#a8c9ff";
|
||||
base0C = "#a30262";
|
||||
|
||||
# pink_light = "#d162a4";
|
||||
# pink_dark = "#a30262";
|
||||
# blue_light = "#5BCEFA";
|
||||
# blue_dark = "#4a6bb1";
|
||||
|
||||
# original values
|
||||
# base00: "#1e1e2e" # base -
|
||||
# base01: "#181825" # mantle
|
||||
# base02: "#313244" # surface0
|
||||
# base03: "#45475a" # surface1
|
||||
# base04: "#585b70" # surface2
|
||||
# base05: "#cdd6f4" # text
|
||||
# base06: "#f5e0dc" # rosewater
|
||||
# base07: "#b4befe" # lavender
|
||||
# base08: "#f38ba8" # red
|
||||
# base09: "#fab387" # peach
|
||||
# base0A: "#f9e2af" # yellow
|
||||
# base0B: "#a6e3a1" # green
|
||||
# base0C: "#94e2d5" # teal
|
||||
# base0D: "#89b4fa" # blue
|
||||
# base0E: "#cba6f7" # mauve
|
||||
# base0F: "#f2cdcd" # flamingo
|
||||
|
||||
# https://github.com/chriskempson/base16/blob/main/styling.md
|
||||
# base00 - Default Background
|
||||
# base01 - Lighter Background (Used for status bars, line number and folding marks)
|
||||
# base02 - Selection Background
|
||||
# base03 - Comments, Invisibles, Line Highlighting
|
||||
# base04 - Dark Foreground (Used for status bars)
|
||||
# base05 - Default Foreground, Caret, Delimiters, Operators
|
||||
# base06 - Light Foreground (Not often used)
|
||||
# base07 - Light Background (Not often used)
|
||||
# base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
||||
# base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
||||
# base0A - Classes, Markup Bold, Search Text Background
|
||||
# base0B - Strings, Inherited Class, Markup Code, Diff Inserted
|
||||
# base0C - Support, Regular Expressions, Escape Characters, Markup Quotes
|
||||
# base0D - Functions, Methods, Attribute IDs, Headings
|
||||
# base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed
|
||||
# base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
||||
};
|
||||
image = config.lib.stylix.pixel "base00";
|
||||
polarity = "dark";
|
||||
targets = {
|
||||
gnome.enable = false;
|
||||
gtk.enable = false;
|
||||
gtksourceview.enable = false;
|
||||
fontconfig.enable = true;
|
||||
plymouth.enable = false;
|
||||
};
|
||||
fonts = {
|
||||
sansSerif = {
|
||||
name = "Inter Nerd Font";
|
||||
package = pkgs.inter-nerdfont;
|
||||
};
|
||||
monospace = {
|
||||
name = "FiraCode Nerd Font Mono";
|
||||
package = pkgs.nerd-fonts.fira-code;
|
||||
};
|
||||
};
|
||||
icons = {
|
||||
enable = true;
|
||||
dark = "Adwaita";
|
||||
light = "Adwaita";
|
||||
package = pkgs.adwaita-icon-theme;
|
||||
};
|
||||
cursor = {
|
||||
name = "Adwaita";
|
||||
size = 16;
|
||||
package = pkgs.adwaita-icon-theme;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
boot.loader = {
|
||||
timeout = 3;
|
||||
efi.canTouchEfiVariables = true;
|
||||
systemd-boot = {
|
||||
enable = true;
|
||||
editor = false; # do not allow changing kernel parameters
|
||||
consoleMode = "max";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
services.tailscale = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
|
||||
networking.firewall.checkReversePath = "loose";
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
users.users.ronja = {
|
||||
isNormalUser = true;
|
||||
name = "ronja";
|
||||
description = "Ronja";
|
||||
home = "/home/ronja";
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"games"
|
||||
"podman"
|
||||
"openvscode-server"
|
||||
];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
nix.settings.trusted-users = [ "ronja" ];
|
||||
}
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
users.users.vinzenz = {
|
||||
isNormalUser = true;
|
||||
name = "vinzenz";
|
||||
description = "müde";
|
||||
home = "/home/vinzenz";
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"games"
|
||||
"dialout"
|
||||
"podman"
|
||||
"nginx"
|
||||
"adbusers"
|
||||
"kvm"
|
||||
"input"
|
||||
"video"
|
||||
];
|
||||
shell = pkgs.zsh;
|
||||
autoSubUidGidRange = true;
|
||||
};
|
||||
|
||||
nix.settings.trusted-users = [ "vinzenz" ];
|
||||
|
||||
allowedUnfreePackages = [
|
||||
"rider"
|
||||
"pycharm-professional"
|
||||
"jetbrains-toolbox"
|
||||
|
||||
"anydesk"
|
||||
|
||||
"vscode-extension-ms-dotnettools-csharp"
|
||||
];
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
programs.firefox.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
lm_sensors
|
||||
libreoffice-qt6
|
||||
];
|
||||
|
||||
fonts.enableDefaultPackages = true;
|
||||
|
||||
hardware.logitech.wireless = {
|
||||
enable = true;
|
||||
enableGraphical = true;
|
||||
};
|
||||
|
||||
# RDP connections
|
||||
services.gnome.gnome-remote-desktop.enable = true;
|
||||
networking.firewall.allowedTCPPorts = [ 3389 ];
|
||||
}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
hardware = {
|
||||
graphics = {
|
||||
enable32Bit = true;
|
||||
extraPackages = with pkgs; [ mangohud ];
|
||||
extraPackages32 = with pkgs; [ mangohud ];
|
||||
};
|
||||
|
||||
xpadneo.enable = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
wineWowPackages.stagingFull
|
||||
wineWowPackages.fonts
|
||||
winetricks
|
||||
dxvk
|
||||
mangohud
|
||||
vulkan-tools
|
||||
glxinfo
|
||||
];
|
||||
}
|
||||
21
vinzenz-lpt.nix
Normal file
21
vinzenz-lpt.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
(import ./modules {
|
||||
hostName = "vinzenz-lpt";
|
||||
enableHomeManager = true;
|
||||
})
|
||||
];
|
||||
|
||||
config = {
|
||||
my = {
|
||||
enabledUsers = ["vinzenz"];
|
||||
desktop = {
|
||||
enableGnome = true;
|
||||
enableGaming = true;
|
||||
};
|
||||
};
|
||||
|
||||
# flatpak xdg-portal-kde crashes, otherwise this would be global
|
||||
services.flatpak.enable = true;
|
||||
};
|
||||
}
|
||||
22
vinzenz-pc2.nix
Normal file
22
vinzenz-pc2.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{pkgs, ...}: {
|
||||
imports = [
|
||||
(import ./modules {
|
||||
hostName = "vinzenz-pc2";
|
||||
enableHomeManager = true;
|
||||
})
|
||||
];
|
||||
|
||||
config = {
|
||||
my = {
|
||||
enabledUsers = ["vinzenz" "ronja"];
|
||||
desktop = {
|
||||
enableKde = true;
|
||||
enableGaming = true;
|
||||
};
|
||||
};
|
||||
|
||||
users.users.vinzenz.openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrY6tcgnoC/xbgL7vxSjddEY9MBxRXe9n2cAHt88/TT home roaming"
|
||||
];
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue