mirror of
https://github.com/tboerger/nixos-config
synced 2024-11-22 09:11:57 +01:00
chore: initial commit
This commit is contained in:
commit
f7ff1dcec9
16
.editorconfig
Normal file
16
.editorconfig
Normal file
@ -0,0 +1,16 @@
|
||||
# http://editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[Makefile]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
[*.nix]
|
||||
indent_style = space
|
||||
indent_size = 2
|
9
.github/dependabot.yml
vendored
Normal file
9
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
|
||||
...
|
8
.github/renovate.json
vendored
Normal file
8
.github/renovate.json
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"extends": [
|
||||
"config:base"
|
||||
],
|
||||
"labels": [
|
||||
"renovate"
|
||||
]
|
||||
}
|
68
.github/settings.yml
vendored
Normal file
68
.github/settings.yml
vendored
Normal file
@ -0,0 +1,68 @@
|
||||
---
|
||||
repository:
|
||||
name: nixos-config
|
||||
description: Configuration for Nix on my NixOS machines
|
||||
topics: workstation, nix, nixpkgs, nixos, home-manager
|
||||
|
||||
private: false
|
||||
has_issues: true
|
||||
has_projects: false
|
||||
has_wiki: false
|
||||
has_downloads: false
|
||||
|
||||
default_branch: master
|
||||
|
||||
allow_squash_merge: true
|
||||
allow_merge_commit: true
|
||||
allow_rebase_merge: true
|
||||
|
||||
labels:
|
||||
- name: bug
|
||||
color: d73a4a
|
||||
description: Something isn't working
|
||||
- name: documentation
|
||||
color: 0075ca
|
||||
description: Improvements or additions to documentation
|
||||
- name: duplicate
|
||||
color: cfd3d7
|
||||
description: This issue or pull request already exists
|
||||
- name: enhancement
|
||||
color: a2eeef
|
||||
description: New feature or request
|
||||
- name: good first issue
|
||||
color: 7057ff
|
||||
description: Good for newcomers
|
||||
- name: help wanted
|
||||
color: 008672
|
||||
description: Extra attention is needed
|
||||
- name: invalid
|
||||
color: e4e669
|
||||
description: This doesn't seem right
|
||||
- name: question
|
||||
color: d876e3
|
||||
description: Further information is requested
|
||||
- name: renovate
|
||||
color: 1d76db
|
||||
description: Automated action from Renovate
|
||||
- name: wontfix
|
||||
color: ffffff
|
||||
description: This will not be worked on
|
||||
- name: hacktoberfest
|
||||
color: d4c5f9
|
||||
description: Contribution at Hacktoberfest appreciated
|
||||
|
||||
branches:
|
||||
- name: master
|
||||
protection:
|
||||
required_status_checks:
|
||||
strict: true
|
||||
contexts:
|
||||
- build
|
||||
enforce_admins: false
|
||||
restrictions:
|
||||
apps:
|
||||
- renovate
|
||||
users: []
|
||||
teams: []
|
||||
|
||||
...
|
18
.github/workflows/build.yml
vendored
Normal file
18
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
name: build
|
||||
|
||||
"on":
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Clone source
|
||||
uses: actions/checkout@v2.4.0
|
||||
|
||||
...
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/result
|
202
LICENSE
Normal file
202
LICENSE
Normal file
@ -0,0 +1,202 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright {yyyy} {name of copyright owner}
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
9
Makefile
Normal file
9
Makefile
Normal file
@ -0,0 +1,9 @@
|
||||
SHELL := bash
|
||||
|
||||
.PHONY: update
|
||||
update:
|
||||
nix --extra-experimental-features "nix-command flakes" flake update
|
||||
|
||||
.PHONY: switch
|
||||
switch:
|
||||
nixos-rebuild switch --flake .
|
100
README.md
Normal file
100
README.md
Normal file
@ -0,0 +1,100 @@
|
||||
# nixos-config
|
||||
|
||||
[![Build](https://github.com/tboerger/nixos-config/actions/workflows/build.yml/badge.svg)](https://github.com/tboerger/nixos-config/actions/workflows/build.yml)
|
||||
|
||||
Provisioning for my NixOS systems based on [Nix][nix].
|
||||
|
||||
## Secrets
|
||||
|
||||
Generally all secrets are encrypted with [agenix][agenix], so make sure to copy
|
||||
the SSH keys from the `secrets` stick with these commands:
|
||||
|
||||
```console
|
||||
mkdir -p $HOME/.ssh
|
||||
cp /mnt/secrets/ssh/id_* $HOME/.ssh/
|
||||
chmod u=rw,g=,o= $HOME/.ssh/id_*
|
||||
```
|
||||
|
||||
## Prepare
|
||||
|
||||
## Midgard
|
||||
|
||||
### Bootstrap
|
||||
|
||||
```console
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/tboerger/nixos-config/master/scripts/partitions)" midgard
|
||||
nixos-install --root /mnt --flake github:tboerger/nixos-config\#midgard
|
||||
```
|
||||
|
||||
### Updates
|
||||
|
||||
If the repository had been cloned you could just execute `make switch`,
|
||||
otherwise there is still this long option to update the deployment:
|
||||
|
||||
```console
|
||||
nixos-rebuild switch \
|
||||
--flake github:tboerger/nixos-config\#midgard
|
||||
```
|
||||
|
||||
## Utgard
|
||||
|
||||
### Bootstrap
|
||||
|
||||
```console
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/tboerger/nixos-config/master/scripts/partitions)" utgard
|
||||
nixos-install --root /mnt --flake github:tboerger/nixos-config\#utgard
|
||||
```
|
||||
|
||||
### Updates
|
||||
|
||||
If the repository had been cloned you could just execute `make switch`,
|
||||
otherwise there is still this long option to update the deployment:
|
||||
|
||||
```console
|
||||
nixos-rebuild switch \
|
||||
--flake github:tboerger/nixos-config\#utgard
|
||||
```
|
||||
|
||||
## Asgard
|
||||
|
||||
### Bootstrap
|
||||
|
||||
```console
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/tboerger/nixos-config/master/scripts/partitions)" asgard
|
||||
nixos-install --root /mnt --flake github:tboerger/nixos-config\#asgard
|
||||
```
|
||||
|
||||
### Updates
|
||||
|
||||
If the repository had been cloned you could just execute `make switch`,
|
||||
otherwise there is still this long option to update the deployment:
|
||||
|
||||
```console
|
||||
nixos-rebuild switch \
|
||||
--flake github:tboerger/nixos-config\#asgard
|
||||
```
|
||||
|
||||
## Security
|
||||
|
||||
If you find a security issue please contact thomas@webhippie.de first.
|
||||
|
||||
## Contributing
|
||||
|
||||
Fork -> Patch -> Push -> Pull Request
|
||||
|
||||
## Authors
|
||||
|
||||
- [Thomas Boerger](https://github.com/tboerger)
|
||||
|
||||
## License
|
||||
|
||||
Apache-2.0
|
||||
|
||||
## Copyright
|
||||
|
||||
```console
|
||||
Copyright (c) 2021 Thomas Boerger <thomas@webhippie.de>
|
||||
```
|
||||
|
||||
[nix]: https://nixos.org/manual/nix/stable/
|
||||
[agenix]: https://github.com/ryantm/agenix
|
114
flake.nix
Normal file
114
flake.nix
Normal file
@ -0,0 +1,114 @@
|
||||
{
|
||||
description = "NixOS configurations by tboerger";
|
||||
|
||||
inputs = {
|
||||
nixpkgs = {
|
||||
url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||
};
|
||||
|
||||
nur = {
|
||||
url = "github:nix-community/NUR";
|
||||
};
|
||||
|
||||
agenix = {
|
||||
url = "github:ryantm/agenix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
homemanager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nur, ... }@inputs:
|
||||
let
|
||||
sharedNixosConfiguration = { config, pkgs, ... }: {
|
||||
nix = {
|
||||
package = pkgs.nixFlakes;
|
||||
|
||||
extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
'';
|
||||
|
||||
binaryCaches = [
|
||||
"https://cache.nixos.org"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://nixpkgs.cachix.org"
|
||||
"https://tboerger.cachix.org"
|
||||
];
|
||||
|
||||
binaryCachePublicKeys = [
|
||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"nixpkgs.cachix.org-1:q91R6hxbwFvDqTSDKwDAV4T5PxqXGxswD8vhONFMeOE="
|
||||
"tboerger.cachix.org-1:3Q1gyqgA9NsOshOgknDvc6fhA8gw0PFAf2qs5vJpeLU="
|
||||
];
|
||||
|
||||
gc = {
|
||||
automatic = true;
|
||||
persistent = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 2w";
|
||||
};
|
||||
};
|
||||
|
||||
nixpkgs = {
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
};
|
||||
|
||||
overlays = [
|
||||
self.overlay
|
||||
nur.overlay
|
||||
];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
overlay = import ./overlays;
|
||||
|
||||
nixosConfigurations = {
|
||||
midgard = {
|
||||
system = "x86_64-linux";
|
||||
inherit inputs;
|
||||
|
||||
modules = [
|
||||
inputs.homemanager.nixosModules.home-manager
|
||||
inputs.agenix.nixosModules.age
|
||||
sharedNixosConfiguration
|
||||
./machines/midgard
|
||||
./profiles/thomas
|
||||
];
|
||||
};
|
||||
utgard = {
|
||||
system = "x86_64-linux";
|
||||
inherit inputs;
|
||||
|
||||
modules = [
|
||||
inputs.homemanager.nixosModules.home-manager
|
||||
inputs.agenix.nixosModules.age
|
||||
sharedNixosConfiguration
|
||||
./machines/utgard
|
||||
./profiles/thomas
|
||||
];
|
||||
};
|
||||
asgard = {
|
||||
system = "x86_64-linux";
|
||||
inherit inputs;
|
||||
|
||||
modules = [
|
||||
inputs.homemanager.nixosModules.home-manager
|
||||
inputs.agenix.nixosModules.age
|
||||
sharedNixosConfiguration
|
||||
./machines/asgard
|
||||
./profiles/thomas
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
midgard = self.nixosConfigurations.midgard.system;
|
||||
utgard = self.nixosConfigurations.utgard.system;
|
||||
asgard = self.nixosConfigurations.asgard.system;
|
||||
};
|
||||
}
|
5
machines/asgard/boot.nix
Normal file
5
machines/asgard/boot.nix
Normal file
@ -0,0 +1,5 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
boot = { };
|
||||
}
|
16
machines/asgard/default.nix
Normal file
16
machines/asgard/default.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../modules
|
||||
|
||||
./filesystems.nix
|
||||
./boot.nix
|
||||
./hardware.nix
|
||||
./networking.nix
|
||||
];
|
||||
|
||||
system = {
|
||||
stateVersion = "21.11";
|
||||
};
|
||||
}
|
30
machines/asgard/filesystems.nix
Normal file
30
machines/asgard/filesystems.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
# swapDevices = [{
|
||||
# device = "/dev/disk/by-label/swap";
|
||||
# }];
|
||||
|
||||
# fileSystems."/" = {
|
||||
# device = "/dev/disk/by-label/root";
|
||||
# fsType = "ext4";
|
||||
# options = [
|
||||
# "noatime"
|
||||
# "discard"
|
||||
# ];
|
||||
# };
|
||||
|
||||
# fileSystems."/home" = {
|
||||
# device = "/dev/disk/by-label/home";
|
||||
# fsType = "ext4";
|
||||
# options = [
|
||||
# "noatime"
|
||||
# "discard"
|
||||
# ];
|
||||
# };
|
||||
|
||||
# fileSystems."/boot" = {
|
||||
# device = "/dev/disk/by-label/boot";
|
||||
# fsType = "vfat";
|
||||
# };
|
||||
}
|
9
machines/asgard/hardware.nix
Normal file
9
machines/asgard/hardware.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
hardware = { };
|
||||
}
|
24
machines/asgard/networking.nix
Normal file
24
machines/asgard/networking.nix
Normal file
@ -0,0 +1,24 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
networking = {
|
||||
hostName = "asgard";
|
||||
defaultGateway = "192.168.1.1";
|
||||
|
||||
nameservers = [
|
||||
"1.1.1.1"
|
||||
"8.8.8.8"
|
||||
];
|
||||
|
||||
interfaces = {
|
||||
enp2s0f0 = {
|
||||
ipv4 = {
|
||||
addresses = [{
|
||||
address = "192.168.1.10";
|
||||
prefixLength = 24;
|
||||
}];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
5
machines/midgard/boot.nix
Normal file
5
machines/midgard/boot.nix
Normal file
@ -0,0 +1,5 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
boot = { };
|
||||
}
|
16
machines/midgard/default.nix
Normal file
16
machines/midgard/default.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../modules
|
||||
|
||||
./filesystems.nix
|
||||
./boot.nix
|
||||
./hardware.nix
|
||||
./networking.nix
|
||||
];
|
||||
|
||||
system = {
|
||||
stateVersion = "21.11";
|
||||
};
|
||||
}
|
30
machines/midgard/filesystems.nix
Normal file
30
machines/midgard/filesystems.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
# swapDevices = [{
|
||||
# device = "/dev/disk/by-label/swap";
|
||||
# }];
|
||||
|
||||
# fileSystems."/" = {
|
||||
# device = "/dev/disk/by-label/root";
|
||||
# fsType = "ext4";
|
||||
# options = [
|
||||
# "noatime"
|
||||
# "discard"
|
||||
# ];
|
||||
# };
|
||||
|
||||
# fileSystems."/home" = {
|
||||
# device = "/dev/disk/by-label/home";
|
||||
# fsType = "ext4";
|
||||
# options = [
|
||||
# "noatime"
|
||||
# "discard"
|
||||
# ];
|
||||
# };
|
||||
|
||||
# fileSystems."/boot" = {
|
||||
# device = "/dev/disk/by-label/boot";
|
||||
# fsType = "vfat";
|
||||
# };
|
||||
}
|
9
machines/midgard/hardware.nix
Normal file
9
machines/midgard/hardware.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
hardware = { };
|
||||
}
|
24
machines/midgard/networking.nix
Normal file
24
machines/midgard/networking.nix
Normal file
@ -0,0 +1,24 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
networking = {
|
||||
hostName = "midgard";
|
||||
defaultGateway = "192.168.1.1";
|
||||
|
||||
nameservers = [
|
||||
"1.1.1.1"
|
||||
"8.8.8.8"
|
||||
];
|
||||
|
||||
interfaces = {
|
||||
enp2s0f0 = {
|
||||
ipv4 = {
|
||||
addresses = [{
|
||||
address = "192.168.1.5";
|
||||
prefixLength = 24;
|
||||
}];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
40
machines/modules/boot.nix
Normal file
40
machines/modules/boot.nix
Normal file
@ -0,0 +1,40 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.boot;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
boot = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable boot module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
boot = {
|
||||
kernelPackages = pkgs.linuxPackages_latest;
|
||||
cleanTmpDir = true;
|
||||
|
||||
loader = {
|
||||
efi = {
|
||||
canTouchEfiVariables = true;
|
||||
};
|
||||
|
||||
systemd-boot = {
|
||||
enable = true;
|
||||
consoleMode = "2";
|
||||
editor = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
57
machines/modules/default.nix
Normal file
57
machines/modules/default.nix
Normal file
@ -0,0 +1,57 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./settings.nix
|
||||
|
||||
./boot.nix
|
||||
./haveged.nix
|
||||
./network.nix
|
||||
./nix.nix
|
||||
./openssh.nix
|
||||
./shells.nix
|
||||
./timesyncd.nix
|
||||
./tools.nix
|
||||
./users.nix
|
||||
];
|
||||
|
||||
my = {
|
||||
modules = {
|
||||
boot = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
haveged = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
network = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
nix = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
openssh = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
shells = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
timesyncd = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
tools = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
users = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
29
machines/modules/haveged.nix
Normal file
29
machines/modules/haveged.nix
Normal file
@ -0,0 +1,29 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.haveged;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
haveged = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable haveged module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
services = {
|
||||
haveged = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
37
machines/modules/network.nix
Normal file
37
machines/modules/network.nix
Normal file
@ -0,0 +1,37 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.network;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
network = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable network module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
programs = {
|
||||
iftop = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
iotop = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
mtr = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
29
machines/modules/nix.nix
Normal file
29
machines/modules/nix.nix
Normal file
@ -0,0 +1,29 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.nix;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
nix = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable nix module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
services = {
|
||||
nix-daemon = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
30
machines/modules/openssh.nix
Normal file
30
machines/modules/openssh.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.openssh;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
openssh = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable openssh module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
services = {
|
||||
openssh = {
|
||||
enable = true;
|
||||
permitRootLogin = "yes";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
35
machines/modules/settings.nix
Normal file
35
machines/modules/settings.nix
Normal file
@ -0,0 +1,35 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = { };
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
};
|
||||
|
||||
time = {
|
||||
timeZone = "Europe/Berlin";
|
||||
};
|
||||
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
};
|
||||
|
||||
hardware = {
|
||||
enableAllFirmware = true;
|
||||
enableRedistributableFirmware = true;
|
||||
};
|
||||
|
||||
security = {
|
||||
sudo = {
|
||||
wheelNeedsPassword = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
33
machines/modules/shells.nix
Normal file
33
machines/modules/shells.nix
Normal file
@ -0,0 +1,33 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.shells;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
shells = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable shells module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
programs = {
|
||||
bash = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
zsh = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
29
machines/modules/timesyncd.nix
Normal file
29
machines/modules/timesyncd.nix
Normal file
@ -0,0 +1,29 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.timesyncd;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
timesyncd = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable timesyncd module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
services = {
|
||||
timesyncd = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
37
machines/modules/tools.nix
Normal file
37
machines/modules/tools.nix
Normal file
@ -0,0 +1,37 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.tools;
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
tools = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable tools module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
environment = {
|
||||
systemPackages = with pkgs; [
|
||||
coreutils
|
||||
htop
|
||||
jq
|
||||
nmap
|
||||
rsync
|
||||
tmux
|
||||
tree
|
||||
vim
|
||||
wget
|
||||
yq
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
41
machines/modules/users.nix
Normal file
41
machines/modules/users.nix
Normal file
@ -0,0 +1,41 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.users;
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
users = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable users module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
users = {
|
||||
defaultUserShell = pkgs.zsh;
|
||||
mutableUsers = false;
|
||||
};
|
||||
|
||||
users = {
|
||||
root = {
|
||||
shell = pkgs.zsh;
|
||||
hashedPassword = "$6$yuwsoikF5utqohar$fdcvq0iXdmiioiRyBGeVZICzQm4nKlv6.pj9AWh13VRCsE07dN9StDnXV0aslIBb0SWRFC4dY5Um2MYiAMfmH0";
|
||||
openssh = {
|
||||
authorizedKeys = {
|
||||
keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINaQYR0/Oj6k1H03kshz2J7rlGCaDSuaGPhhOs9FcZfn thomas@osiris"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
31
machines/utgard/boot.nix
Normal file
31
machines/utgard/boot.nix
Normal file
@ -0,0 +1,31 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
boot = {
|
||||
kernelModules = [
|
||||
"kvm-intel"
|
||||
"wl"
|
||||
];
|
||||
|
||||
extraModulePackages = [
|
||||
config.boot.kernelPackages.broadcom_sta
|
||||
];
|
||||
|
||||
initrd = {
|
||||
availableKernelModules = [
|
||||
"uhci_hcd"
|
||||
"ehci_pci"
|
||||
"ahci"
|
||||
"firewire_ohci"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
"sdhci_pci"
|
||||
];
|
||||
|
||||
kernelModules = [
|
||||
"dm-snapshot"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
16
machines/utgard/default.nix
Normal file
16
machines/utgard/default.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../modules
|
||||
|
||||
./filesystems.nix
|
||||
./boot.nix
|
||||
./hardware.nix
|
||||
./networking.nix
|
||||
];
|
||||
|
||||
system = {
|
||||
stateVersion = "21.11";
|
||||
};
|
||||
}
|
30
machines/utgard/filesystems.nix
Normal file
30
machines/utgard/filesystems.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
swapDevices = [{
|
||||
device = "/dev/disk/by-label/swap";
|
||||
}];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-label/root";
|
||||
fsType = "ext4";
|
||||
options = [
|
||||
"noatime"
|
||||
"discard"
|
||||
];
|
||||
};
|
||||
|
||||
fileSystems."/home" = {
|
||||
device = "/dev/disk/by-label/home";
|
||||
fsType = "ext4";
|
||||
options = [
|
||||
"noatime"
|
||||
"discard"
|
||||
];
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-label/boot";
|
||||
fsType = "vfat";
|
||||
};
|
||||
}
|
15
machines/utgard/hardware.nix
Normal file
15
machines/utgard/hardware.nix
Normal file
@ -0,0 +1,15 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
hardware = {
|
||||
cpu = {
|
||||
intel = {
|
||||
updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
24
machines/utgard/networking.nix
Normal file
24
machines/utgard/networking.nix
Normal file
@ -0,0 +1,24 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
networking = {
|
||||
hostName = "utgard";
|
||||
defaultGateway = "192.168.1.1";
|
||||
|
||||
nameservers = [
|
||||
"1.1.1.1"
|
||||
"8.8.8.8"
|
||||
];
|
||||
|
||||
interfaces = {
|
||||
enp2s0f0 = {
|
||||
ipv4 = {
|
||||
addresses = [{
|
||||
address = "192.168.1.11";
|
||||
prefixLength = 24;
|
||||
}];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
3
overlays/default.nix
Normal file
3
overlays/default.nix
Normal file
@ -0,0 +1,3 @@
|
||||
self: super:
|
||||
|
||||
{ }
|
42
profiles/modules/default.nix
Normal file
42
profiles/modules/default.nix
Normal file
@ -0,0 +1,42 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./settings.nix
|
||||
|
||||
./dircolors.nix
|
||||
./lsd.nix
|
||||
./neovim.nix
|
||||
./readline.nix
|
||||
./starship.nix
|
||||
./zsh.nix
|
||||
];
|
||||
|
||||
my = {
|
||||
modules = {
|
||||
dircolors = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
lsd = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
neovim = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
readline = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
starship = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
zsh = {
|
||||
enable = lib.mkDefault true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
220
profiles/modules/dircolors.nix
Normal file
220
profiles/modules/dircolors.nix
Normal file
@ -0,0 +1,220 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.dircolors;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
dircolors = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable dircolors module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
home-manager.users."${config.my.username}" = { config, ... }: {
|
||||
programs = {
|
||||
dircolors = {
|
||||
enable = true;
|
||||
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
|
||||
settings = {
|
||||
RESET = "0";
|
||||
DIR = "00;38;5;33";
|
||||
LINK = "01;38;5;37";
|
||||
MULTIHARDLINK = "00";
|
||||
FIFO = "48;5;230;38;5;136;01";
|
||||
SOCK = "48;5;230;38;5;136;01";
|
||||
DOOR = "48;5;230;38;5;136;01";
|
||||
BLK = "48;5;230;38;5;244;01";
|
||||
CHR = "48;5;230;38;5;244;01";
|
||||
ORPHAN = "48;5;235;38;5;160";
|
||||
MISSING = "00";
|
||||
SETUID = "48;5;160;38;5;230";
|
||||
SETGID = "48;5;136;38;5;230";
|
||||
CAPABILITY = "30;41";
|
||||
STICKY_OTHER_WRITABLE = "48;5;64;38;5;230";
|
||||
OTHER_WRITABLE = "48;5;235;38;5;33";
|
||||
STICKY = "48;5;33;38;5;230";
|
||||
EXEC = "01;38;5;64";
|
||||
".tar" = "00;38;5;61";
|
||||
".tgz" = "01;38;5;61";
|
||||
".arj" = "01;38;5;61";
|
||||
".taz" = "01;38;5;61";
|
||||
".lzh" = "01;38;5;61";
|
||||
".lzma" = "01;38;5;61";
|
||||
".tlz" = "01;38;5;61";
|
||||
".txz" = "01;38;5;61";
|
||||
".zip" = "01;38;5;61";
|
||||
".zst" = "01;38;5;61";
|
||||
".z" = "01;38;5;61";
|
||||
".Z" = "01;38;5;61";
|
||||
".dz" = "01;38;5;61";
|
||||
".gz" = "01;38;5;61";
|
||||
".lz" = "01;38;5;61";
|
||||
".xz" = "01;38;5;61";
|
||||
".bz2" = "01;38;5;61";
|
||||
".bz" = "01;38;5;61";
|
||||
".tbz" = "01;38;5;61";
|
||||
".tbz2" = "01;38;5;61";
|
||||
".tz" = "01;38;5;61";
|
||||
".deb" = "01;38;5;61";
|
||||
".rpm" = "01;38;5;61";
|
||||
".jar" = "01;38;5;61";
|
||||
".rar" = "01;38;5;61";
|
||||
".ace" = "01;38;5;61";
|
||||
".zoo" = "01;38;5;61";
|
||||
".cpio" = "01;38;5;61";
|
||||
".7z" = "01;38;5;61";
|
||||
".rz" = "01;38;5;61";
|
||||
".apk" = "01;38;5;61";
|
||||
".gem" = "01;38;5;61";
|
||||
".jpg" = "00;38;5;136";
|
||||
".JPG" = "00;38;5;136";
|
||||
".jpeg" = "00;38;5;136";
|
||||
".gif" = "00;38;5;136";
|
||||
".bmp" = "00;38;5;136";
|
||||
".pbm" = "00;38;5;136";
|
||||
".pgm" = "00;38;5;136";
|
||||
".ppm" = "00;38;5;136";
|
||||
".tga" = "00;38;5;136";
|
||||
".xbm" = "00;38;5;136";
|
||||
".xpm" = "00;38;5;136";
|
||||
".tif" = "00;38;5;136";
|
||||
".tiff" = "00;38;5;136";
|
||||
".png" = "00;38;5;136";
|
||||
".PNG" = "00;38;5;136";
|
||||
".svg" = "00;38;5;136";
|
||||
".svgz" = "00;38;5;136";
|
||||
".mng" = "00;38;5;136";
|
||||
".pcx" = "00;38;5;136";
|
||||
".dl" = "00;38;5;136";
|
||||
".xcf" = "00;38;5;136";
|
||||
".xwd" = "00;38;5;136";
|
||||
".yuv" = "00;38;5;136";
|
||||
".cgm" = "00;38;5;136";
|
||||
".emf" = "00;38;5;136";
|
||||
".eps" = "00;38;5;136";
|
||||
".CR2" = "00;38;5;136";
|
||||
".ico" = "00;38;5;136";
|
||||
".nef" = "00;38;5;136";
|
||||
".NEF" = "00;38;5;136";
|
||||
".webp" = "00;38;5;136";
|
||||
".tex" = "01;38;5;245";
|
||||
".rdf" = "01;38;5;245";
|
||||
".owl" = "01;38;5;245";
|
||||
".n3" = "01;38;5;245";
|
||||
".ttl" = "01;38;5;245";
|
||||
".nt" = "01;38;5;245";
|
||||
".torrent" = "01;38;5;245";
|
||||
".xml" = "01;38;5;245";
|
||||
"*Makefile" = "01;38;5;245";
|
||||
"*Rakefile" = "01;38;5;245";
|
||||
"*Dockerfile" = "01;38;5;245";
|
||||
"*build.xml" = "01;38;5;245";
|
||||
"*rc" = "01;38;5;245";
|
||||
"*1" = "01;38;5;245";
|
||||
".nfo" = "01;38;5;245";
|
||||
"*README" = "01;38;5;245";
|
||||
"*README.txt" = "01;38;5;245";
|
||||
"*readme.txt" = "01;38;5;245";
|
||||
".md" = "01;38;5;245";
|
||||
"*README.markdown" = "01;38;5;245";
|
||||
".ini" = "01;38;5;245";
|
||||
".yml" = "01;38;5;245";
|
||||
".cfg" = "01;38;5;245";
|
||||
".conf" = "01;38;5;245";
|
||||
".h" = "01;38;5;245";
|
||||
".hpp" = "01;38;5;245";
|
||||
".c" = "01;38;5;245";
|
||||
".cpp" = "01;38;5;245";
|
||||
".cxx" = "01;38;5;245";
|
||||
".cc" = "01;38;5;245";
|
||||
".objc" = "01;38;5;245";
|
||||
".sqlite" = "01;38;5;245";
|
||||
".go" = "01;38;5;245";
|
||||
".sql" = "01;38;5;245";
|
||||
".csv" = "01;38;5;245";
|
||||
".log" = "00;38;5;240";
|
||||
".bak" = "00;38;5;240";
|
||||
".aux" = "00;38;5;240";
|
||||
".lof" = "00;38;5;240";
|
||||
".lol" = "00;38;5;240";
|
||||
".lot" = "00;38;5;240";
|
||||
".out" = "00;38;5;240";
|
||||
".toc" = "00;38;5;240";
|
||||
".bbl" = "00;38;5;240";
|
||||
".blg" = "00;38;5;240";
|
||||
"*~" = "00;38;5;240";
|
||||
"*#" = "00;38;5;240";
|
||||
".part" = "00;38;5;240";
|
||||
".incomplete" = "00;38;5;240";
|
||||
".swp" = "00;38;5;240";
|
||||
".tmp" = "00;38;5;240";
|
||||
".temp" = "00;38;5;240";
|
||||
".o" = "00;38;5;240";
|
||||
".pyc" = "00;38;5;240";
|
||||
".class" = "00;38;5;240";
|
||||
".cache" = "00;38;5;240";
|
||||
".aac" = "00;38;5;166";
|
||||
".au" = "00;38;5;166";
|
||||
".flac" = "00;38;5;166";
|
||||
".mid" = "00;38;5;166";
|
||||
".midi" = "00;38;5;166";
|
||||
".mka" = "00;38;5;166";
|
||||
".mp3" = "00;38;5;166";
|
||||
".mpc" = "00;38;5;166";
|
||||
".ogg" = "00;38;5;166";
|
||||
".opus" = "00;38;5;166";
|
||||
".ra" = "00;38;5;166";
|
||||
".wav" = "00;38;5;166";
|
||||
".m4a" = "00;38;5;166";
|
||||
".axa" = "00;38;5;166";
|
||||
".oga" = "00;38;5;166";
|
||||
".spx" = "00;38;5;166";
|
||||
".xspf" = "00;38;5;166";
|
||||
".mov" = "01;38;5;166";
|
||||
".MOV" = "01;38;5;166";
|
||||
".mpg" = "01;38;5;166";
|
||||
".mpeg" = "01;38;5;166";
|
||||
".m2v" = "01;38;5;166";
|
||||
".mkv" = "01;38;5;166";
|
||||
".ogm" = "01;38;5;166";
|
||||
".mp4" = "01;38;5;166";
|
||||
".m4v" = "01;38;5;166";
|
||||
".mp4v" = "01;38;5;166";
|
||||
".vob" = "01;38;5;166";
|
||||
".qt" = "01;38;5;166";
|
||||
".nuv" = "01;38;5;166";
|
||||
".wmv" = "01;38;5;166";
|
||||
".asf" = "01;38;5;166";
|
||||
".rm" = "01;38;5;166";
|
||||
".rmvb" = "01;38;5;166";
|
||||
".flc" = "01;38;5;166";
|
||||
".avi" = "01;38;5;166";
|
||||
".fli" = "01;38;5;166";
|
||||
".flv" = "01;38;5;166";
|
||||
".gl" = "01;38;5;166";
|
||||
".m2ts" = "01;38;5;166";
|
||||
".divx" = "01;38;5;166";
|
||||
".webm" = "01;38;5;166";
|
||||
".axv" = "01;38;5;166";
|
||||
".anx" = "01;38;5;166";
|
||||
".ogv" = "01;38;5;166";
|
||||
".ogx" = "01;38;5;166";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
32
profiles/modules/lsd.nix
Normal file
32
profiles/modules/lsd.nix
Normal file
@ -0,0 +1,32 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.lsd;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
lsd = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable lsd module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
home-manager.users."${config.my.username}" = { config, ... }: {
|
||||
programs = {
|
||||
lsd = {
|
||||
enable = true;
|
||||
enableAliases = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
31
profiles/modules/neovim.nix
Normal file
31
profiles/modules/neovim.nix
Normal file
@ -0,0 +1,31 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.neovim;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
neovim = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable neovim module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
home-manager.users."${config.my.username}" = { config, ... }: {
|
||||
programs = {
|
||||
neovim = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
36
profiles/modules/readline.nix
Normal file
36
profiles/modules/readline.nix
Normal file
@ -0,0 +1,36 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.readline;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
readline = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable readline module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
home-manager.users."${config.my.username}" = { config, ... }: {
|
||||
programs = {
|
||||
readline = {
|
||||
enable = true;
|
||||
|
||||
bindings = {
|
||||
"\e[5~" = "history-search-backward";
|
||||
"\e[6~" = "history-search-forward";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
11
profiles/modules/settings.nix
Normal file
11
profiles/modules/settings.nix
Normal file
@ -0,0 +1,11 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
username = mkOption {
|
||||
type = types.str;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
43
profiles/modules/starship.nix
Normal file
43
profiles/modules/starship.nix
Normal file
@ -0,0 +1,43 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.starship;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
starship = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable starship module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
home-manager.users."${config.my.username}" = { config, ... }: {
|
||||
programs = {
|
||||
starship = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
add_newline = true;
|
||||
battery = {
|
||||
disabled = true;
|
||||
};
|
||||
directory = {
|
||||
truncation_length = 5;
|
||||
truncate_to_repo = false;
|
||||
truncation_symbol = "…/";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
71
profiles/modules/zsh.nix
Normal file
71
profiles/modules/zsh.nix
Normal file
@ -0,0 +1,71 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.my.modules.zsh;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = with lib; {
|
||||
my = {
|
||||
modules = {
|
||||
zsh = {
|
||||
enable = mkEnableOption ''
|
||||
Whether to enable zsh module
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = with lib;
|
||||
mkIf cfg.enable {
|
||||
home-manager.users."${config.my.username}" = { config, ... }: {
|
||||
programs = {
|
||||
zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
enableAutosuggestions = true;
|
||||
enableSyntaxHighlighting = true;
|
||||
|
||||
history = {
|
||||
size = 10000000;
|
||||
save = 10000000;
|
||||
extended = true;
|
||||
};
|
||||
|
||||
shellAliases = {
|
||||
".." = "cd ..";
|
||||
"..." = "cd ../..";
|
||||
|
||||
rgrep = "grep -Rn";
|
||||
hgrep = "fc -El 0 | grep";
|
||||
history = "fc -l 1";
|
||||
sha256sum = "shasum -a 256";
|
||||
};
|
||||
|
||||
sessionVariables = {
|
||||
EDITOR = "vim";
|
||||
PAGER = "less";
|
||||
CLICOLOR = "1";
|
||||
GREP_COLOR = "1;33";
|
||||
IGNOREEOF = "1";
|
||||
};
|
||||
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
|
||||
plugins = [
|
||||
"systemd"
|
||||
"sudo"
|
||||
"history-substring-search"
|
||||
"encode64"
|
||||
"rsync"
|
||||
"tmux"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
50
profiles/thomas/default.nix
Normal file
50
profiles/thomas/default.nix
Normal file
@ -0,0 +1,50 @@
|
||||
{ pkgs, inputs, system, lib, ... }:
|
||||
|
||||
let
|
||||
username = "thomas";
|
||||
fullname = "Thomas Boerger";
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
imports = [
|
||||
../modules
|
||||
];
|
||||
|
||||
my = {
|
||||
username = "${username}";
|
||||
|
||||
modules = { };
|
||||
};
|
||||
|
||||
users = {
|
||||
users = {
|
||||
"${username}" = {
|
||||
description = "${fullname}";
|
||||
shell = pkgs.zsh;
|
||||
isNormalUser = true;
|
||||
hashedPassword = "$6$yuwsoikF5utqohar$fdcvq0iXdmiioiRyBGeVZICzQm4nKlv6.pj9AWh13VRCsE07dN9StDnXV0aslIBb0SWRFC4dY5Um2MYiAMfmH0";
|
||||
openssh = {
|
||||
authorizedKeys = {
|
||||
keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINaQYR0/Oj6k1H03kshz2J7rlGCaDSuaGPhhOs9FcZfn thomas@osiris"
|
||||
];
|
||||
};
|
||||
};
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.users."${username}" = { config, ... }: {
|
||||
home = {
|
||||
homeDirectory = "/home/${username}";
|
||||
|
||||
sessionPath = [
|
||||
"$HOME/.local/bin"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
155
scripts/partitions
Executable file
155
scripts/partitions
Executable file
@ -0,0 +1,155 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
|
||||
if [ "${#}" -ne 1 ]; then
|
||||
echo "Missing host name!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${EUID}" -ne 0 ]; then
|
||||
echo "Please run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while true; do
|
||||
read -p "Are you sure you want to wipe all partitions? " awnser
|
||||
|
||||
case ${awnser} in
|
||||
[Yy]*)
|
||||
break
|
||||
;;
|
||||
[Nn]*)
|
||||
exit
|
||||
;;
|
||||
*)
|
||||
echo "Please answer yes or no!"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
case "${1}" in
|
||||
"utgard")
|
||||
SWAP_SIZE=24G
|
||||
ROOT_SIZE=50G
|
||||
HOME_SIZE=50G
|
||||
ROOT_DISK=/dev/sda
|
||||
|
||||
echo "----> Drop existing partitions"
|
||||
sgdisk --zap-all /dev/sda
|
||||
sgdisk -og /dev/sda
|
||||
sgdisk --zap-all /dev/sdb
|
||||
sgdisk -og /dev/sdb
|
||||
|
||||
;;
|
||||
"asgard")
|
||||
SWAP_SIZE=24G
|
||||
ROOT_SIZE=50G
|
||||
HOME_SIZE=50G
|
||||
ROOT_DISK=/dev/sde
|
||||
|
||||
echo "----> Drop existing partitions"
|
||||
sgdisk --zap-all /dev/sda
|
||||
sgdisk -og /dev/sda
|
||||
sgdisk --zap-all /dev/sdb
|
||||
sgdisk -og /dev/sdb
|
||||
sgdisk --zap-all /dev/sdc
|
||||
sgdisk -og /dev/sdc
|
||||
sgdisk --zap-all /dev/sdd
|
||||
sgdisk -og /dev/sdd
|
||||
sgdisk --zap-all /dev/sde
|
||||
sgdisk -og /dev/sde
|
||||
|
||||
;;
|
||||
*)
|
||||
SWAP_SIZE=24G
|
||||
ROOT_SIZE=50G
|
||||
HOME_SIZE=50G
|
||||
ROOT_DISK=/dev/sda
|
||||
|
||||
echo "----> Drop existing partitions"
|
||||
sgdisk --zap-all /dev/sda
|
||||
sgdisk -og /dev/sda
|
||||
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "-----> Create boot partition"
|
||||
sgdisk -n 0:0:+1G -t 0:ef00 -c 0:boot ${ROOT_DISK}
|
||||
|
||||
echo "-----> Create root partition"
|
||||
sgdisk -n 0:0:0 -t 0:8300 -c 0:data ${ROOT_DISK}
|
||||
|
||||
echo "-----> Create data pv"
|
||||
pvcreate /dev/disk/by-partlabel/data
|
||||
|
||||
echo "-----> Create data vg"
|
||||
vgcreate system /dev/disk/by-partlabel/data
|
||||
|
||||
echo "-----> Create swap volume"
|
||||
lvcreate --size ${SWAP_SIZE} --name swap system
|
||||
|
||||
echo "-----> Create root volume"
|
||||
lvcreate --size ${ROOT_SIZE} --name root system
|
||||
|
||||
echo "-----> Create home volume"
|
||||
lvcreate --size ${HOME_SIZE} --name home system
|
||||
|
||||
echo "-----> Enable swap partition"
|
||||
mkswap -L swap /dev/system/swap
|
||||
swapon /dev/system/swap
|
||||
|
||||
echo "-----> Create root filesystem"
|
||||
mkfs.ext4 -L root /dev/system/root
|
||||
|
||||
echo "-----> Mount root filesystem"
|
||||
mount -t ext4 /dev/system/root /mnt
|
||||
|
||||
echo "-----> Create home filesystem"
|
||||
mkfs.ext4 -L home /dev/system/home
|
||||
|
||||
echo "-----> Mount home filesystem"
|
||||
mkdir /mnt/home
|
||||
mount -t ext4 /dev/system/home /mnt/home
|
||||
|
||||
echo "-----> Create boot filesystem"
|
||||
mkfs.vfat -n boot /dev/disk/by-partlabel/boot
|
||||
|
||||
echo "-----> Wait for boot"
|
||||
sleep 3
|
||||
|
||||
echo "-----> Mount boot filesystem"
|
||||
mkdir /mnt/boot
|
||||
mount /dev/disk/by-label/boot /mnt/boot
|
||||
|
||||
case "${1}" in
|
||||
"utgard")
|
||||
echo "-----> Create tank partition"
|
||||
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sdb
|
||||
|
||||
echo "-----> Create tank pv"
|
||||
pvcreate /dev/disk/by-partlabel/tank
|
||||
|
||||
echo "-----> Create tank vg"
|
||||
vgcreate tank /dev/disk/by-partlabel/tank
|
||||
|
||||
;;
|
||||
|
||||
"asgard")
|
||||
echo "-----> Create tank partition"
|
||||
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sda
|
||||
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sdb
|
||||
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sdc
|
||||
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sdd
|
||||
|
||||
echo "-----> Create raid volume"
|
||||
mdadm --create /dev/md0 --level=1 --raid-devices=4 /dev/sda1 /dev/sdb1
|
||||
mdadm --create /dev/md1 --level=1 --raid-devices=4 /dev/sdc1 /dev/sdd1
|
||||
|
||||
echo "-----> Create tank pv"
|
||||
pvcreate /dev/md0 /dev/md1
|
||||
|
||||
echo "-----> Create tank vg"
|
||||
vgcreate tank /dev/md0 /dev/md1
|
||||
|
||||
;;
|
||||
esac
|
9
shell.nix
Normal file
9
shell.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{ pkgs ? import <nixpkgs> { } }:
|
||||
|
||||
pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
nixpkgs-fmt
|
||||
gnumake
|
||||
nixUnstable
|
||||
];
|
||||
}
|
Loading…
Reference in New Issue
Block a user