Compare commits
71 Commits
home-manag
...
kodi-hdr
| Author | SHA1 | Date | |
|---|---|---|---|
| f9541ba01b | |||
| b9097e91d5 | |||
| abf8fe9ad2 | |||
| 926b47f07f | |||
| 749ef988f1 | |||
| dfa91d327f | |||
| 37c455d75e | |||
| c0d7d934f3 | |||
| cb91f69c49 | |||
| bc6378cb22 | |||
| a13676311a | |||
| ec57592715 | |||
| 051c223eb7 | |||
| 6030f6ea42 | |||
| df77fd5c74 | |||
| 458bcb4cdf | |||
| 40e10bab34 | |||
| 3477a3480f | |||
| d2ae7f8e11 | |||
| ff3a0a4738 | |||
| 1a857399a6 | |||
| 4620288747 | |||
| b5f2e1738f | |||
| 8e27017aa4 | |||
| 4ca9804db8 | |||
| 6417540b51 | |||
| 3f1bdc7af0 | |||
| 4d39f8a635 | |||
| 736194b8b4 | |||
| 4096dc75b9 | |||
| 18afc61e33 | |||
| 9ba6006fca | |||
| 000db04502 | |||
| 42a34a6c40 | |||
| 5e029720ef | |||
| 5289d8847b | |||
| d9e5fdb0df | |||
| fb8431da2d | |||
| e9d14167aa | |||
| 3a9348730b | |||
| 1da9e92a24 | |||
| 75baf55d5b | |||
| 692cebc839 | |||
| f22ff0e286 | |||
| 811b61e9e2 | |||
| 2390d55782 | |||
| 609e5f4548 | |||
| bc5d69e4cf | |||
| 637c0cca2b | |||
| c82a85a630 | |||
| 3b40ecbad1 | |||
| 8b311d4ed0 | |||
| 23639bee01 | |||
| 5d101928f6 | |||
| 4ba82961cd | |||
| c61ee69500 | |||
| 5571ac8657 | |||
| a753164efc | |||
| 645e34320c | |||
| 48add8c1f3 | |||
| 27c10f9a20 | |||
| ecde6caa38 | |||
| d134adb40f | |||
| d330faf646 | |||
| 67ed1a44b1 | |||
| 65bc26c017 | |||
| b176707b41 | |||
| b851c0fed3 | |||
| 6ea46d6e9c | |||
| 368b3040c3 | |||
| c4be32f75b |
11
.sops.yaml
Normal file
11
.sops.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
keys:
|
||||||
|
- &admin_johno age1ls6a033d4p4u8h4rwazjwt8w4c4xg73wq0mdnm64jajxzcz4k9asvjnks3
|
||||||
|
- &host_z790prors age12l5u7sw59u5pkwp83qm8t3ff7uv0ld2c9k3zh5j4ame9k2szcynqu7ftqe
|
||||||
|
- &host_nixbook age1fa3zqavfmqk4ssa22yne9td90gyqv9q5a8y0s8jp3xak8q7p3yjqyn7rkg
|
||||||
|
creation_rules:
|
||||||
|
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *admin_johno
|
||||||
|
- *host_z790prors
|
||||||
|
- *host_nixbook
|
||||||
310
flake.lock
generated
310
flake.lock
generated
@@ -1,38 +1,5 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"aquamarine": {
|
|
||||||
"inputs": {
|
|
||||||
"hyprutils": [
|
|
||||||
"hyprland",
|
|
||||||
"hyprutils"
|
|
||||||
],
|
|
||||||
"hyprwayland-scanner": [
|
|
||||||
"hyprland",
|
|
||||||
"hyprwayland-scanner"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"hyprland",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": [
|
|
||||||
"hyprland",
|
|
||||||
"systems"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1722347739,
|
|
||||||
"narHash": "sha256-rAoh+K6KG+b1DwSWtqRVocdojnH6nGk6q07mNltoUSM=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "aquamarine",
|
|
||||||
"rev": "7c3565f9bedc7cb601cc0baa14792247e4dc1d5a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "aquamarine",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -40,11 +7,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723986931,
|
"lastModified": 1729459288,
|
||||||
"narHash": "sha256-Fy+KEvDQ+Hc8lJAV3t6leXhZJ2ncU5/esxkgt3b8DEY=",
|
"narHash": "sha256-gBOVJv+q6Mx8jGvwX7cE6J8+sZmi1uxpRVsO7WxvVuQ=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "2598861031b78aadb4da7269df7ca9ddfc3e1671",
|
"rev": "1e27f213d77fc842603628bcf2df6681d7d08f7e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -53,197 +20,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hy3": {
|
|
||||||
"inputs": {
|
|
||||||
"hyprland": [
|
|
||||||
"hyprland"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1724185071,
|
|
||||||
"narHash": "sha256-5ykCHWCX0P+cN2mZsJpPh1rW83tqDQ7KgeAimeh+kQo=",
|
|
||||||
"owner": "outfoxxed",
|
|
||||||
"repo": "hy3",
|
|
||||||
"rev": "23682f7707e7f051618c1c35ce09708b80164c62",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "outfoxxed",
|
|
||||||
"repo": "hy3",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hyprcursor": {
|
|
||||||
"inputs": {
|
|
||||||
"hyprlang": [
|
|
||||||
"hyprland",
|
|
||||||
"hyprlang"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"hyprland",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": [
|
|
||||||
"hyprland",
|
|
||||||
"systems"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1721330371,
|
|
||||||
"narHash": "sha256-aYlHTWylczLt6ERJyg6E66Y/XSCbVL7leVcRuJmVbpI=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprcursor",
|
|
||||||
"rev": "4493a972b48f9c3014befbbf381ed5fff91a65dc",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprcursor",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hyprland": {
|
|
||||||
"inputs": {
|
|
||||||
"aquamarine": "aquamarine",
|
|
||||||
"hyprcursor": "hyprcursor",
|
|
||||||
"hyprlang": "hyprlang",
|
|
||||||
"hyprutils": "hyprutils",
|
|
||||||
"hyprwayland-scanner": "hyprwayland-scanner",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": "systems",
|
|
||||||
"xdph": "xdph"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1724517953,
|
|
||||||
"narHash": "sha256-EjlyG4Q2cJZOJ7iuCSu/EfY1Jb5dMJOpggN9+WcLxg0=",
|
|
||||||
"ref": "refs/heads/main",
|
|
||||||
"rev": "66586c38f53f16bcf762f019359a3c9042546a72",
|
|
||||||
"revCount": 5134,
|
|
||||||
"submodules": true,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/hyprwm/Hyprland"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"submodules": true,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/hyprwm/Hyprland"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hyprland-protocols": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"hyprland",
|
|
||||||
"xdph",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": [
|
|
||||||
"hyprland",
|
|
||||||
"xdph",
|
|
||||||
"systems"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1721326555,
|
|
||||||
"narHash": "sha256-zCu4R0CSHEactW9JqYki26gy8h9f6rHmSwj4XJmlHgg=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-protocols",
|
|
||||||
"rev": "5a11232266bf1a1f5952d5b179c3f4b2facaaa84",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-protocols",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hyprlang": {
|
|
||||||
"inputs": {
|
|
||||||
"hyprutils": [
|
|
||||||
"hyprland",
|
|
||||||
"hyprutils"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"hyprland",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": [
|
|
||||||
"hyprland",
|
|
||||||
"systems"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1721324361,
|
|
||||||
"narHash": "sha256-BiJKO0IIdnSwHQBSrEJlKlFr753urkLE48wtt0UhNG4=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprlang",
|
|
||||||
"rev": "adbefbf49664a6c2c8bf36b6487fd31e3eb68086",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprlang",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hyprutils": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"hyprland",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": [
|
|
||||||
"hyprland",
|
|
||||||
"systems"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1722098849,
|
|
||||||
"narHash": "sha256-D3wIZlBNh7LuZ0NaoCpY/Pvu+xHxIVtSN+KkWZYvvVs=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprutils",
|
|
||||||
"rev": "5dcbbc1e3de40b2cecfd2007434d86e924468f1f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprutils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hyprwayland-scanner": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"hyprland",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": [
|
|
||||||
"hyprland",
|
|
||||||
"systems"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1721324119,
|
|
||||||
"narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprwayland-scanner",
|
|
||||||
"rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprwayland-scanner",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723637854,
|
"lastModified": 1729256560,
|
||||||
"narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=",
|
"narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9",
|
"rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -253,56 +36,71 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"nixpkgs-stable": {
|
||||||
"inputs": {
|
|
||||||
"home-manager": "home-manager",
|
|
||||||
"hy3": "hy3",
|
|
||||||
"hyprland": "hyprland",
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689347949,
|
"lastModified": 1729357638,
|
||||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
"narHash": "sha256-66RHecx+zohbZwJVEPF7uuwHeqf8rykZTMCTqIrOew4=",
|
||||||
"owner": "nix-systems",
|
"owner": "NixOS",
|
||||||
"repo": "default-linux",
|
"repo": "nixpkgs",
|
||||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
"rev": "bb8c2cf7ea0dd2e18a52746b2c3a5b0c73b93c22",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-systems",
|
"owner": "NixOS",
|
||||||
"repo": "default-linux",
|
"ref": "release-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"xdph": {
|
"plasma-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"hyprland-protocols": "hyprland-protocols",
|
"home-manager": [
|
||||||
"hyprlang": [
|
"home-manager"
|
||||||
"hyprland",
|
|
||||||
"hyprlang"
|
|
||||||
],
|
],
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"hyprland",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
|
||||||
"systems": [
|
|
||||||
"hyprland",
|
|
||||||
"systems"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722365976,
|
"lastModified": 1729372184,
|
||||||
"narHash": "sha256-Khdm+mDzYA//XaU0M+hftod+rKr5q9SSHSEuiQ0/9ow=",
|
"narHash": "sha256-Tb2/jJ74pt0nmfprkOW1g5zZphJTNbzLnyDENM+c5+I=",
|
||||||
"owner": "hyprwm",
|
"owner": "nix-community",
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "plasma-manager",
|
||||||
"rev": "7f2a77ddf60390248e2a3de2261d7102a13e5341",
|
"rev": "9390dadadc58ffda8e494b31ef66a4ae041f6dd1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "hyprwm",
|
"owner": "nix-community",
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "plasma-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"plasma-manager": "plasma-manager",
|
||||||
|
"sops-nix": "sops-nix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sops-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1729394972,
|
||||||
|
"narHash": "sha256-fADlzOzcSaGsrO+THUZ8SgckMMc7bMQftztKFCLVcFI=",
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"rev": "c504fd7ac946d7a1b17944d73b261ca0a0b226a5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
76
flake.nix
76
flake.nix
@@ -2,51 +2,73 @@
|
|||||||
description = "A very basic flake";
|
description = "A very basic flake";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
|
sops-nix = {
|
||||||
|
url = "github:Mic92/sops-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
hyprland = {
|
plasma-manager = {
|
||||||
type = "git";
|
url = "github:nix-community/plasma-manager";
|
||||||
url = "https://github.com/hyprwm/Hyprland";
|
|
||||||
submodules = true;
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
inputs.home-manager.follows = "home-manager";
|
||||||
hy3 = {
|
|
||||||
url = "github:outfoxxed/hy3";
|
|
||||||
inputs.hyprland.follows = "hyprland";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, ... } @ inputs: {
|
outputs = { self, nixpkgs, ... } @ inputs: let
|
||||||
nixosConfigurations.z790prors-nix = nixpkgs.lib.nixosSystem {
|
baseModules = [
|
||||||
|
./roles
|
||||||
|
inputs.sops-nix.nixosModules.sops
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.sharedModules = [ inputs.plasma-manager.homeManagerModules.plasma-manager ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
nixosConfigurations.z790prors-nix = nixpkgs.lib.nixosSystem rec {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
specialArgs = { inherit inputs; };
|
specialArgs = { inherit inputs; };
|
||||||
modules = [ ./machines/z790prors/configuration.nix ];
|
modules = baseModules ++ [
|
||||||
|
./machines/z790prors/configuration.nix
|
||||||
|
{
|
||||||
|
home-manager.users.johno = import ./home/home-z790prors.nix;
|
||||||
|
home-manager.extraSpecialArgs.customPkgs =
|
||||||
|
nixpkgs.legacyPackages."${system}".callPackage ./packages {};
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
nixosConfigurations.nix-book = nixpkgs.lib.nixosSystem {
|
nixosConfigurations.nix-book = nixpkgs.lib.nixosSystem rec {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
specialArgs = { inherit inputs; };
|
modules = baseModules ++ [
|
||||||
modules = [ ./machines/nix-book/configuration.nix ];
|
./machines/nix-book/configuration.nix
|
||||||
|
{
|
||||||
|
home-manager.users.johno = import ./home/home-nix-book.nix;
|
||||||
|
home-manager.extraSpecialArgs.customPkgs =
|
||||||
|
nixpkgs.legacyPackages."${system}".callPackage ./packages {};
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
homeConfigurations = let
|
nixosConfigurations.boxy = nixpkgs.lib.nixosSystem rec {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
modules = baseModules ++ [
|
||||||
in {
|
./machines/boxy/configuration.nix
|
||||||
"johno@nix-book" = inputs.home-manager.lib.homeManagerConfiguration {
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inherit pkgs;
|
{
|
||||||
|
home-manager.users.johno = import ./home/home-default.nix;
|
||||||
extraSpecialArgs = { inherit inputs; };
|
home-manager.extraSpecialArgs.customPkgs =
|
||||||
modules = [
|
nixpkgs.legacyPackages."${system}".callPackage ./packages {};
|
||||||
inputs.hyprland.homeManagerModules.default
|
}
|
||||||
/home/johno/.config/home-manager/home-nix-book.nix
|
];
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
199
home/home-default.nix
Normal file
199
home/home-default.nix
Normal file
@@ -0,0 +1,199 @@
|
|||||||
|
{ pkgs, customPkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# Home Manager needs a bit of information about you and the paths it should
|
||||||
|
# manage.
|
||||||
|
home.username = "johno";
|
||||||
|
home.homeDirectory = "/home/johno";
|
||||||
|
|
||||||
|
# This value determines the Home Manager release that your configuration is
|
||||||
|
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||||
|
# introduces backwards incompatible changes.
|
||||||
|
#
|
||||||
|
# You should not change this value, even if you update Home Manager. If you do
|
||||||
|
# want to update the value, then make sure to first check the Home Manager
|
||||||
|
# release notes.
|
||||||
|
home.stateVersion = "24.05"; # Please read the comment before changing.
|
||||||
|
|
||||||
|
# The home.packages option allows you to install Nix packages into your
|
||||||
|
# environment.
|
||||||
|
home.packages = [
|
||||||
|
# # Adds the 'hello' command to your environment. It prints a friendly
|
||||||
|
# # "Hello, world!" when run.
|
||||||
|
# pkgs.hello
|
||||||
|
|
||||||
|
# # It is sometimes useful to fine-tune packages, for example, by applying
|
||||||
|
# # overrides. You can do that directly here, just don't forget the
|
||||||
|
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
||||||
|
# # fonts?
|
||||||
|
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
|
||||||
|
|
||||||
|
# # You can also create simple shell scripts directly inside your
|
||||||
|
# # configuration. For example, this adds a command 'my-hello' to your
|
||||||
|
# # environment:
|
||||||
|
# (pkgs.writeShellScriptBin "my-hello" ''
|
||||||
|
# echo "Hello, ${config.home.username}!"
|
||||||
|
# '')
|
||||||
|
|
||||||
|
pkgs.bitwarden
|
||||||
|
pkgs.dunst
|
||||||
|
pkgs.element-desktop
|
||||||
|
pkgs.fd
|
||||||
|
#pkgs.fluffychat # security vulnerability in current version
|
||||||
|
pkgs.gzip
|
||||||
|
pkgs.htop
|
||||||
|
pkgs.jellyfin-media-player
|
||||||
|
pkgs.keepassxc
|
||||||
|
pkgs.killall
|
||||||
|
pkgs.kitty
|
||||||
|
pkgs.less
|
||||||
|
pkgs.moonlight-qt
|
||||||
|
pkgs.ncdu
|
||||||
|
pkgs.pandoc
|
||||||
|
pkgs.pinentry-qt
|
||||||
|
#pkgs.pytest
|
||||||
|
pkgs.shellcheck
|
||||||
|
pkgs.solaar # Logitech management software
|
||||||
|
pkgs.tmux
|
||||||
|
pkgs.waybar
|
||||||
|
pkgs.wofi
|
||||||
|
pkgs.vlc
|
||||||
|
|
||||||
|
customPkgs.nextcloudTalkDesktop
|
||||||
|
];
|
||||||
|
|
||||||
|
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||||
|
# plain files is through 'home.file'.
|
||||||
|
home.file = {
|
||||||
|
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
||||||
|
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
||||||
|
# # symlink to the Nix store copy.
|
||||||
|
# ".screenrc".source = dotfiles/screenrc;
|
||||||
|
|
||||||
|
# # You can also set the file content immediately.
|
||||||
|
# ".gradle/gradle.properties".text = ''
|
||||||
|
# org.gradle.console=verbose
|
||||||
|
# org.gradle.daemon.idletimeout=3600000
|
||||||
|
# '';
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Home Manager can also manage your environment variables through
|
||||||
|
# 'home.sessionVariables'. These will be explicitly sourced when using a
|
||||||
|
# shell provided by Home Manager. If you don't want to manage your shell
|
||||||
|
# through Home Manager then you have to manually source 'hm-session-vars.sh'
|
||||||
|
# located at either
|
||||||
|
#
|
||||||
|
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||||
|
#
|
||||||
|
# or
|
||||||
|
#
|
||||||
|
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
|
||||||
|
#
|
||||||
|
# or
|
||||||
|
#
|
||||||
|
# /etc/profiles/per-user/johno/etc/profile.d/hm-session-vars.sh
|
||||||
|
#
|
||||||
|
home.sessionVariables = {
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionPath = [
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./modules/emacs
|
||||||
|
./modules/i3+sway
|
||||||
|
./modules/lutris
|
||||||
|
./modules/plasma-manager
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.bash.enable = true;
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
programs.command-not-found.enable = true;
|
||||||
|
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "John Ogle";
|
||||||
|
userEmail = "john@ogle.fyi";
|
||||||
|
extraConfig = {
|
||||||
|
safe.directory = "/etc/nixos";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.gpg.enable = true;
|
||||||
|
|
||||||
|
services.gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSshSupport = true;
|
||||||
|
defaultCacheTtl = 1800;
|
||||||
|
pinentryPackage = pkgs.pinentry-qt;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.jq.enable = true;
|
||||||
|
|
||||||
|
programs.k9s.enable = true;
|
||||||
|
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.rbw = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
email = "john@johnogle.info";
|
||||||
|
base_url = "https://bitwarden.johnogle.info";
|
||||||
|
pinentry = pkgs.pinentry-qt;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.spotify-player.enable = true;
|
||||||
|
|
||||||
|
programs.ssh = {
|
||||||
|
enable = true;
|
||||||
|
addKeysToAgent = "yes";
|
||||||
|
matchBlocks = {
|
||||||
|
"nucdeb1" = {
|
||||||
|
hostname = "nucdeb1.oglehome";
|
||||||
|
user = "root";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.home-manager.autoUpgrade = {
|
||||||
|
enable = true;
|
||||||
|
frequency = "weekly";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.kdeconnect = {
|
||||||
|
enable = true;
|
||||||
|
indicator = true;
|
||||||
|
package = pkgs.kdePackages.kdeconnect-kde;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.syncthing = {
|
||||||
|
enable = true;
|
||||||
|
tray = {
|
||||||
|
enable = true;
|
||||||
|
command = "syncthingtray --wait";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.enable = true;
|
||||||
|
}
|
||||||
12
home/home-nix-book.nix
Normal file
12
home/home-nix-book.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./home-default.nix
|
||||||
|
./modules/hyprland/nix-book.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.i3_sway.extraSwayConfig = {
|
||||||
|
output.eDP-1.scale = "1.75";
|
||||||
|
};
|
||||||
|
}
|
||||||
8
home/home-z790prors.nix
Normal file
8
home/home-z790prors.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./home-default.nix
|
||||||
|
./modules/hyprland/z790prors.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
67
home/modules/emacs/default.nix
Normal file
67
home/modules/emacs/default.nix
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
doomSync = (let
|
||||||
|
git = pkgs.git;
|
||||||
|
in ''
|
||||||
|
export PATH=${pkgs.emacs}/bin:${git}/bin:$PATH
|
||||||
|
${config.xdg.configHome}/emacs/bin/doom sync -u -j $((`nproc`/4*3))
|
||||||
|
'');
|
||||||
|
in {
|
||||||
|
config = {
|
||||||
|
home.packages = [
|
||||||
|
pkgs.emacs-all-the-icons-fonts
|
||||||
|
pkgs.fontconfig
|
||||||
|
pkgs.graphviz
|
||||||
|
pkgs.isort
|
||||||
|
pkgs.nerdfonts
|
||||||
|
pkgs.nil # nix lsp language server
|
||||||
|
pkgs.nixfmt-rfc-style
|
||||||
|
(pkgs.ripgrep.override {withPCRE2 = true;})
|
||||||
|
pkgs.pipenv
|
||||||
|
pkgs.poetry
|
||||||
|
pkgs.python3
|
||||||
|
];
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
".config/emacs" = {
|
||||||
|
source = fetchGit {
|
||||||
|
url = "https://github.com/doomemacs/doomemacs.git";
|
||||||
|
# When updating me, remember to run `doom sync`
|
||||||
|
rev = "5ad99220b86ae1bf421861dfad24492d768ac4d9";
|
||||||
|
};
|
||||||
|
# We need to use recursive mode here or else doom fails to sync for
|
||||||
|
# some reason related to the permissions on the synced path. I'm not
|
||||||
|
# quite sure of everything that's going on here.
|
||||||
|
recursive = true;
|
||||||
|
|
||||||
|
# Because `recursive = true` will cause this to sync every single
|
||||||
|
# activation, we turn this off here.
|
||||||
|
#
|
||||||
|
# There's probably a way we could do better detection of this within
|
||||||
|
# our onChange shell?
|
||||||
|
#
|
||||||
|
# onChange = doomSync;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
DOOMLOCALDIR = "${config.xdg.dataHome}/doom";
|
||||||
|
EDITOR = "emacs -nw";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionPath = [
|
||||||
|
"${config.xdg.configHome}/emacs/bin"
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.configFile."doom" = {
|
||||||
|
source = ./doom;
|
||||||
|
# Sync doom if we updated the config
|
||||||
|
onChange = doomSync;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
101
home/modules/emacs/doom/config.el
Normal file
101
home/modules/emacs/doom/config.el
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||||
|
;; sync' after modifying this file!
|
||||||
|
|
||||||
|
|
||||||
|
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||||
|
;; clients, file templates and snippets. It is optional.
|
||||||
|
;; (setq user-full-name "John Doe"
|
||||||
|
;; user-mail-address "john@doe.com")
|
||||||
|
|
||||||
|
;; Doom exposes five (optional) variables for controlling fonts in Doom:
|
||||||
|
;;
|
||||||
|
;; - `doom-font' -- the primary font to use
|
||||||
|
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
|
||||||
|
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||||
|
;; presentations or streaming.
|
||||||
|
;; - `doom-symbol-font' -- for symbols
|
||||||
|
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
|
||||||
|
;;
|
||||||
|
;; See 'C-h v doom-font' for documentation and more examples of what they
|
||||||
|
;; accept. For example:
|
||||||
|
;;
|
||||||
|
;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light)
|
||||||
|
;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
|
||||||
|
;;
|
||||||
|
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
|
||||||
|
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
|
||||||
|
;; refresh your font settings. If Emacs still can't find your font, it likely
|
||||||
|
;; wasn't installed correctly. Font issues are rarely Doom issues!
|
||||||
|
|
||||||
|
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||||
|
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||||
|
;; `load-theme' function. This is the default:
|
||||||
|
(setq doom-theme 'doom-one)
|
||||||
|
|
||||||
|
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||||
|
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||||
|
(setq display-line-numbers-type t)
|
||||||
|
|
||||||
|
;; If you use `org' and don't want your org files in the default location below,
|
||||||
|
;; change `org-directory'. It must be set before org loads!
|
||||||
|
(setq org-directory "~/org/")
|
||||||
|
(after! org
|
||||||
|
(setq org-agenda-span 'week
|
||||||
|
org-agenda-files `(,org-directory ,(concat org-directory "roam/"))
|
||||||
|
org-log-done 'time
|
||||||
|
org-agenda-custom-commands '(("n" "Agenda"
|
||||||
|
((agenda "")
|
||||||
|
(tags-todo "-someday-recurring")))
|
||||||
|
("s" "Someday Items"
|
||||||
|
((tags-todo "+someday"))))
|
||||||
|
org-todo-keywords '((sequence "TODO(t)" "IN-PROGRESS(p)" "WAIT(w)" "|" "DONE(d)" "KILL(k)"))
|
||||||
|
org-journal-file-type 'weekly
|
||||||
|
org-journal-file-format "%Y-%m-%d.org"
|
||||||
|
org-capture-templates
|
||||||
|
'(("t" "Todo" entry (file+headline "~/org/todo.org" "Inbox")
|
||||||
|
"* TODO %? \n %i \n%a" :prepend t))))
|
||||||
|
|
||||||
|
;; (use-package! org-caldav
|
||||||
|
;; :defer t
|
||||||
|
;; :config
|
||||||
|
;; (setq org-caldav-url "https://nextcloud.johnogle.info/remote.php/dav/calendars/johno"
|
||||||
|
;; org-caldav-calendar-id "personal"
|
||||||
|
;; org-icalendar-timezone "America/Los_Angeles"
|
||||||
|
;; org-caldav-inbox "~/org/calendar.org"
|
||||||
|
;; org-caldav-files nil
|
||||||
|
;; org-caldav-sync-direction 'cal->org))
|
||||||
|
|
||||||
|
|
||||||
|
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
||||||
|
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
||||||
|
;;
|
||||||
|
;; (after! PACKAGE
|
||||||
|
;; (setq x y))
|
||||||
|
;;
|
||||||
|
;; The exceptions to this rule:
|
||||||
|
;;
|
||||||
|
;; - Setting file/directory variables (like `org-directory')
|
||||||
|
;; - Setting variables which explicitly tell you to set them before their
|
||||||
|
;; package is loaded (see 'C-h v VARIABLE' to look up their documentation).
|
||||||
|
;; - Setting doom variables (which start with 'doom-' or '+').
|
||||||
|
;;
|
||||||
|
;; Here are some additional functions/macros that will help you configure Doom.
|
||||||
|
;;
|
||||||
|
;; - `load!' for loading external *.el files relative to this one
|
||||||
|
;; - `use-package!' for configuring packages
|
||||||
|
;; - `after!' for running code after a package has loaded
|
||||||
|
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||||
|
;; this file. Emacs searches the `load-path' when you load packages with
|
||||||
|
;; `require' or `use-package'.
|
||||||
|
;; - `map!' for binding new keys
|
||||||
|
;;
|
||||||
|
;; To get information about any of these functions/macros, move the cursor over
|
||||||
|
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||||
|
;; This will open documentation for it, including demos of how they are used.
|
||||||
|
;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces,
|
||||||
|
;; etc).
|
||||||
|
;;
|
||||||
|
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||||
|
;; they are implemented.
|
||||||
191
home/modules/emacs/doom/init.el
Normal file
191
home/modules/emacs/doom/init.el
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
;;; init.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; This file controls what Doom modules are enabled and what order they load
|
||||||
|
;; in. Remember to run 'doom sync' after modifying it!
|
||||||
|
|
||||||
|
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||||
|
;; documentation. There you'll find a link to Doom's Module Index where all
|
||||||
|
;; of our modules are listed, including what flags they support.
|
||||||
|
|
||||||
|
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||||
|
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||||
|
;; flags as well (those symbols that start with a plus).
|
||||||
|
;;
|
||||||
|
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||||
|
;; directory (for easy access to its source code).
|
||||||
|
|
||||||
|
(doom! :input
|
||||||
|
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||||
|
;;chinese
|
||||||
|
;;japanese
|
||||||
|
;;layout ; auie,ctsrnm is the superior home row
|
||||||
|
|
||||||
|
:completion
|
||||||
|
;;company ; the ultimate code completion backend
|
||||||
|
(corfu +orderless) ; complete with cap(f), cape and a flying feather!
|
||||||
|
;;helm ; the *other* search engine for love and life
|
||||||
|
;;ido ; the other *other* search engine...
|
||||||
|
;;ivy ; a search engine for love and life
|
||||||
|
vertico ; the search engine of the future
|
||||||
|
|
||||||
|
:ui
|
||||||
|
;;deft ; notational velocity for Emacs
|
||||||
|
doom ; what makes DOOM look the way it does
|
||||||
|
doom-dashboard ; a nifty splash screen for Emacs
|
||||||
|
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||||
|
(emoji +unicode) ; 🙂
|
||||||
|
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||||
|
;;indent-guides ; highlighted indent columns
|
||||||
|
;;ligatures ; ligatures and symbols to make your code pretty again
|
||||||
|
;;minimap ; show a map of the code on the side
|
||||||
|
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||||
|
;;nav-flash ; blink cursor line after big motions
|
||||||
|
;;neotree ; a project drawer, like NERDTree for vim
|
||||||
|
ophints ; highlight the region an operation acts on
|
||||||
|
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||||
|
;;tabs ; a tab bar for Emacs
|
||||||
|
;;treemacs ; a project drawer, like neotree but cooler
|
||||||
|
;;unicode ; extended unicode support for various languages
|
||||||
|
(vc-gutter +pretty) ; vcs diff in the fringe
|
||||||
|
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||||
|
;;window-select ; visually switch windows
|
||||||
|
workspaces ; tab emulation, persistence & separate workspaces
|
||||||
|
;;zen ; distraction-free coding or writing
|
||||||
|
|
||||||
|
:editor
|
||||||
|
(evil +everywhere); come to the dark side, we have cookies
|
||||||
|
file-templates ; auto-snippets for empty files
|
||||||
|
fold ; (nigh) universal code folding
|
||||||
|
;;(format +onsave) ; automated prettiness
|
||||||
|
;;god ; run Emacs commands without modifier keys
|
||||||
|
;;lispy ; vim for lisp, for people who don't like vim
|
||||||
|
;;multiple-cursors ; editing in many places at once
|
||||||
|
;;objed ; text object editing for the innocent
|
||||||
|
;;parinfer ; turn lisp into python, sort of
|
||||||
|
;;rotate-text ; cycle region at point between text candidates
|
||||||
|
snippets ; my elves. They type so I don't have to
|
||||||
|
;;word-wrap ; soft wrapping with language-aware indent
|
||||||
|
|
||||||
|
:emacs
|
||||||
|
dired ; making dired pretty [functional]
|
||||||
|
electric ; smarter, keyword-based electric-indent
|
||||||
|
;;ibuffer ; interactive buffer management
|
||||||
|
undo ; persistent, smarter undo for your inevitable mistakes
|
||||||
|
vc ; version-control and Emacs, sitting in a tree
|
||||||
|
|
||||||
|
:term
|
||||||
|
;;eshell ; the elisp shell that works everywhere
|
||||||
|
;;shell ; simple shell REPL for Emacs
|
||||||
|
;;term ; basic terminal emulator for Emacs
|
||||||
|
;;vterm ; the best terminal emulation in Emacs
|
||||||
|
|
||||||
|
:checkers
|
||||||
|
syntax ; tasing you for every semicolon you forget
|
||||||
|
;;(spell +flyspell) ; tasing you for misspelling mispelling
|
||||||
|
;;grammar ; tasing grammar mistake every you make
|
||||||
|
|
||||||
|
:tools
|
||||||
|
ansible
|
||||||
|
;;biblio ; Writes a PhD for you (citation needed)
|
||||||
|
;;collab ; buffers with friends
|
||||||
|
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||||
|
;;direnv
|
||||||
|
docker
|
||||||
|
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||||
|
;;ein ; tame Jupyter notebooks with emacs
|
||||||
|
(eval +overlay) ; run code, run (also, repls)
|
||||||
|
lookup ; navigate your code and its documentation
|
||||||
|
lsp ; M-x vscode
|
||||||
|
magit ; a git porcelain for Emacs
|
||||||
|
;;make ; run make tasks from Emacs
|
||||||
|
;;pass ; password manager for nerds
|
||||||
|
pdf ; pdf enhancements
|
||||||
|
;;prodigy ; FIXME managing external services & code builders
|
||||||
|
;;terraform ; infrastructure as code
|
||||||
|
;;tmux ; an API for interacting with tmux
|
||||||
|
tree-sitter ; syntax and parsing, sitting in a tree...
|
||||||
|
;;upload ; map local to remote projects via ssh/ftp
|
||||||
|
|
||||||
|
:os
|
||||||
|
(:if (featurep :system 'macos) macos) ; improve compatibility with macOS
|
||||||
|
;;tty ; improve the terminal Emacs experience
|
||||||
|
|
||||||
|
:lang
|
||||||
|
;;agda ; types of types of types of types...
|
||||||
|
;;beancount ; mind the GAAP
|
||||||
|
;;(cc +lsp) ; C > C++ == 1
|
||||||
|
;;clojure ; java with a lisp
|
||||||
|
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||||
|
;;coq ; proofs-as-programs
|
||||||
|
;;crystal ; ruby at the speed of c
|
||||||
|
;;csharp ; unity, .NET, and mono shenanigans
|
||||||
|
;;data ; config/data formats
|
||||||
|
;;(dart +flutter) ; paint ui and not much else
|
||||||
|
;;dhall
|
||||||
|
;;elixir ; erlang done right
|
||||||
|
;;elm ; care for a cup of TEA?
|
||||||
|
emacs-lisp ; drown in parentheses
|
||||||
|
;;erlang ; an elegant language for a more civilized age
|
||||||
|
;;ess ; emacs speaks statistics
|
||||||
|
;;factor
|
||||||
|
;;faust ; dsp, but you get to keep your soul
|
||||||
|
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||||
|
;;fsharp ; ML stands for Microsoft's Language
|
||||||
|
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||||
|
;;gdscript ; the language you waited for
|
||||||
|
;;(go +lsp) ; the hipster dialect
|
||||||
|
;;(graphql +lsp) ; Give queries a REST
|
||||||
|
;;(haskell +lsp) ; a language that's lazier than I am
|
||||||
|
;;hy ; readability of scheme w/ speed of python
|
||||||
|
;;idris ; a language you can depend on
|
||||||
|
;;json ; At least it ain't XML
|
||||||
|
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||||
|
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||||
|
;;julia ; a better, faster MATLAB
|
||||||
|
;;kotlin ; a better, slicker Java(Script)
|
||||||
|
;;latex ; writing papers in Emacs has never been so fun
|
||||||
|
;;lean ; for folks with too much to prove
|
||||||
|
;;ledger ; be audit you can be
|
||||||
|
;;lua ; one-based indices? one-based indices
|
||||||
|
markdown ; writing docs for people to ignore
|
||||||
|
;;nim ; python + lisp at the speed of c
|
||||||
|
(nix +tree-sitter +lsp) ; I hereby declare "nix geht mehr!"
|
||||||
|
;;ocaml ; an objective camel
|
||||||
|
(org +roam2) ; organize your plain life in plain text
|
||||||
|
;;php ; perl's insecure younger brother
|
||||||
|
;;plantuml ; diagrams for confusing people more
|
||||||
|
;;purescript ; javascript, but functional
|
||||||
|
(python +poetry) ; beautiful is better than ugly
|
||||||
|
;;qt ; the 'cutest' gui framework ever
|
||||||
|
;;racket ; a DSL for DSLs
|
||||||
|
;;raku ; the artist formerly known as perl6
|
||||||
|
;;rest ; Emacs as a REST client
|
||||||
|
;;rst ; ReST in peace
|
||||||
|
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||||
|
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||||
|
;;scala ; java, but good
|
||||||
|
;;(scheme +guile) ; a fully conniving family of lisps
|
||||||
|
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||||
|
;;sml
|
||||||
|
;;solidity ; do you need a blockchain? No.
|
||||||
|
;;swift ; who asked for emoji variables?
|
||||||
|
;;terra ; Earth and Moon in alignment for performance.
|
||||||
|
;;web ; the tubes
|
||||||
|
;;yaml ; JSON, but readable
|
||||||
|
;;zig ; C, but simpler
|
||||||
|
|
||||||
|
:email
|
||||||
|
;;(mu4e +org +gmail)
|
||||||
|
;;notmuch
|
||||||
|
;;(wanderlust +gmail)
|
||||||
|
|
||||||
|
:app
|
||||||
|
;;calendar
|
||||||
|
;;emms
|
||||||
|
;;everywhere ; *leave* Emacs!? You must be joking
|
||||||
|
;;irc ; how neckbeards socialize
|
||||||
|
;;(rss +org) ; emacs as an RSS reader
|
||||||
|
|
||||||
|
:config
|
||||||
|
;;literate
|
||||||
|
(default +bindings +smartparens))
|
||||||
52
home/modules/emacs/doom/packages.el
Normal file
52
home/modules/emacs/doom/packages.el
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
;; -*- no-byte-compile: t; -*-
|
||||||
|
;;; $DOOMDIR/packages.el
|
||||||
|
|
||||||
|
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||||
|
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||||
|
;; use 'M-x doom/reload'.
|
||||||
|
|
||||||
|
|
||||||
|
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||||
|
;; (package! some-package)
|
||||||
|
|
||||||
|
;; To install a package directly from a remote git repo, you must specify a
|
||||||
|
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||||
|
;; https://github.com/radian-software/straight.el#the-recipe-format
|
||||||
|
;; (package! another-package
|
||||||
|
;; :recipe (:host github :repo "username/repo"))
|
||||||
|
|
||||||
|
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||||
|
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||||
|
;; `:files' in the `:recipe':
|
||||||
|
;; (package! this-package
|
||||||
|
;; :recipe (:host github :repo "username/repo"
|
||||||
|
;; :files ("some-file.el" "src/lisp/*.el")))
|
||||||
|
|
||||||
|
;; If you'd like to disable a package included with Doom, you can do so here
|
||||||
|
;; with the `:disable' property:
|
||||||
|
;; (package! builtin-package :disable t)
|
||||||
|
|
||||||
|
;; You can override the recipe of a built in package without having to specify
|
||||||
|
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||||
|
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||||
|
;; (package! builtin-package :recipe (:nonrecursive t))
|
||||||
|
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||||
|
|
||||||
|
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||||
|
;; This is required for some packages whose default branch isn't 'master' (which
|
||||||
|
;; our package manager can't deal with; see radian-software/straight.el#279)
|
||||||
|
;; (package! builtin-package :recipe (:branch "develop"))
|
||||||
|
|
||||||
|
;; Use `:pin' to specify a particular commit to install.
|
||||||
|
;; (package! builtin-package :pin "1a2b3c4d5e")
|
||||||
|
|
||||||
|
|
||||||
|
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||||
|
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||||
|
;; (unpin! pinned-package)
|
||||||
|
;; ...or multiple packages
|
||||||
|
;; (unpin! pinned-package another-pinned-package)
|
||||||
|
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||||
|
;; (unpin! t)
|
||||||
|
|
||||||
|
;; (package! org-caldav)
|
||||||
94
home/modules/hyprland/default.nix
Normal file
94
home/modules/hyprland/default.nix
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
{ inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hyprpaper.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
plugins = [ inputs.hy3.packages.x86_64-linux.hy3 ];
|
||||||
|
settings = {
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
"$terminal" = "kitty";
|
||||||
|
"$fileManager" = "dolphin";
|
||||||
|
"$menu" = "wofi --show drun";
|
||||||
|
|
||||||
|
exec-once = [
|
||||||
|
"waybar"
|
||||||
|
"dunst"
|
||||||
|
];
|
||||||
|
|
||||||
|
xwayland = {
|
||||||
|
force_zero_scaling = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
input = {
|
||||||
|
kb_layout = "us";
|
||||||
|
kb_options = "caps:escape";
|
||||||
|
follow_mouse = 1;
|
||||||
|
touchpad.natural_scroll = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
windowrulev2 = [
|
||||||
|
# I can guess, but I should figure out what this actually does
|
||||||
|
"suppressevent maximize, class:.*"
|
||||||
|
];
|
||||||
|
|
||||||
|
general.layout = "hy3";
|
||||||
|
|
||||||
|
bind =
|
||||||
|
[
|
||||||
|
"SHIFT_$mod, Q, killactive"
|
||||||
|
"SHIFT_$mod, M, exit"
|
||||||
|
|
||||||
|
"$mod, D, exec, $menu"
|
||||||
|
"$mod, Return, exec, $terminal"
|
||||||
|
|
||||||
|
"$mod, H, hy3:movefocus, l"
|
||||||
|
"$mod, L, hy3:movefocus, r"
|
||||||
|
"$mod, K, hy3:movefocus, u"
|
||||||
|
"$mod, J, hy3:movefocus, d"
|
||||||
|
|
||||||
|
"SHIFT_$mod, H, hy3:movewindow, l"
|
||||||
|
"SHIFT_$mod, L, hy3:movewindow, r"
|
||||||
|
"SHIFT_$mod, K, hy3:movewindow, u"
|
||||||
|
"SHIFT_$mod, J, hy3:movewindow, d"
|
||||||
|
|
||||||
|
"$mod, V, hy3:makegroup, opposite"
|
||||||
|
"$mod, W, hy3:changegroup, toggletab"
|
||||||
|
|
||||||
|
"$mod, A, hy3:changefocus, raise"
|
||||||
|
"SHIFT_$mod, A, hy3:changefocus, lower"
|
||||||
|
|
||||||
|
"$mod, M, fullscreen, 0"
|
||||||
|
"$mod, E, hy3:expand, expand"
|
||||||
|
"SHIFT_$mod, E, hy3:expand, base"
|
||||||
|
|
||||||
|
"$mod, Q, hy3:warpcursor"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# workspaces
|
||||||
|
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
|
||||||
|
builtins.concatLists (builtins.genList (
|
||||||
|
x: let
|
||||||
|
ws = let
|
||||||
|
c = (x + 1) / 10;
|
||||||
|
in
|
||||||
|
builtins.toString (x + 1 - (c * 10));
|
||||||
|
in [
|
||||||
|
"$mod, ${ws}, workspace, ${toString (x + 1)}"
|
||||||
|
"$mod SHIFT, ${ws}, hy3:movetoworkspace, ${toString (x + 1)}"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
10)
|
||||||
|
);
|
||||||
|
|
||||||
|
bindm =
|
||||||
|
[
|
||||||
|
"$mod, mouse:272, movewindow"
|
||||||
|
"$mod, mouse:273, resizewindow"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
21
home/modules/hyprland/hyprpaper.nix
Normal file
21
home/modules/hyprland/hyprpaper.nix
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.hyprpaper = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
ipc = "on";
|
||||||
|
splash = false;
|
||||||
|
preload = [
|
||||||
|
"${config.xdg.dataHome}/wallpaper.jpg"
|
||||||
|
];
|
||||||
|
wallpaper = [
|
||||||
|
",${config.xdg.dataHome}/wallpaper.jpg"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.dataFile."wallpaper.jpg" = {
|
||||||
|
source = ./wallpaper.jpg;
|
||||||
|
};
|
||||||
|
}
|
||||||
5
home/modules/hyprland/nix-book.nix
Normal file
5
home/modules/hyprland/nix-book.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings.monitor = ",preferred,2880x1800@90.00Hz,1.33333";
|
||||||
|
}
|
||||||
BIN
home/modules/hyprland/wallpaper.jpg
Normal file
BIN
home/modules/hyprland/wallpaper.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 842 KiB |
16
home/modules/hyprland/z790prors.nix
Normal file
16
home/modules/hyprland/z790prors.nix
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings.monitor = "DP-1,3440x1440@164.90,0x0,1.33333,vrr,1";
|
||||||
|
wayland.windowManager.hyprland.settings.env = [
|
||||||
|
"LIBVA_DRIVER_NAME,nvidia"
|
||||||
|
"XDG_SESSION_TYPE,wayland"
|
||||||
|
"GBM_BACKEND,nvidia-drm"
|
||||||
|
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
|
||||||
|
"NVD_BACKEND,direct"
|
||||||
|
"ELECTRON_OZONE_PLATFORM_HINT,auto"
|
||||||
|
"NIXOS_OZONE_WL,1"
|
||||||
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.settings.cursor.no_hardware_cursors = true;
|
||||||
|
}
|
||||||
146
home/modules/i3+sway/default.nix
Normal file
146
home/modules/i3+sway/default.nix
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.home.i3_sway;
|
||||||
|
i3_cfg = config.xsession.windowManager.i3.config;
|
||||||
|
|
||||||
|
shared_config = recursiveUpdate rec {
|
||||||
|
modifier = "Mod4";
|
||||||
|
terminal = "kitty";
|
||||||
|
defaultWorkspace = "workspace number 1";
|
||||||
|
|
||||||
|
keybindings = {
|
||||||
|
"${shared_config.modifier}+Return" = "exec ${terminal}";
|
||||||
|
"${shared_config.modifier}+Shift+q" = "kill";
|
||||||
|
"${shared_config.modifier}+d" = "exec ${i3_cfg.menu}";
|
||||||
|
|
||||||
|
"${shared_config.modifier}+h" = "focus left";
|
||||||
|
"${shared_config.modifier}+j" = "focus down";
|
||||||
|
"${shared_config.modifier}+k" = "focus up";
|
||||||
|
"${shared_config.modifier}+l" = "focus right";
|
||||||
|
|
||||||
|
"${shared_config.modifier}+Shift+h" = "move left";
|
||||||
|
"${shared_config.modifier}+Shift+j" = "move down";
|
||||||
|
"${shared_config.modifier}+Shift+k" = "move up";
|
||||||
|
"${shared_config.modifier}+Shift+l" = "move right";
|
||||||
|
|
||||||
|
"${shared_config.modifier}+Left" = "focus left";
|
||||||
|
"${shared_config.modifier}+Down" = "focus down";
|
||||||
|
"${shared_config.modifier}+Up" = "focus up";
|
||||||
|
"${shared_config.modifier}+Right" = "focus right";
|
||||||
|
|
||||||
|
"${shared_config.modifier}+Shift+Left" = "move left";
|
||||||
|
"${shared_config.modifier}+Shift+Down" = "move down";
|
||||||
|
"${shared_config.modifier}+Shift+Up" = "move up";
|
||||||
|
"${shared_config.modifier}+Shift+Right" = "move right";
|
||||||
|
|
||||||
|
#"${shared_config.modifier}+h" = "split h";
|
||||||
|
"${shared_config.modifier}+v" = "split v";
|
||||||
|
"${shared_config.modifier}+f" = "fullscreen toggle";
|
||||||
|
|
||||||
|
"${shared_config.modifier}+s" = "layout stacking";
|
||||||
|
"${shared_config.modifier}+w" = "layout tabbed";
|
||||||
|
"${shared_config.modifier}+e" = "layout toggle split";
|
||||||
|
|
||||||
|
"${shared_config.modifier}+Shift+space" = "floating toggle";
|
||||||
|
"${shared_config.modifier}+space" = "focus mode_toggle";
|
||||||
|
|
||||||
|
"${shared_config.modifier}+a" = "focus parent";
|
||||||
|
|
||||||
|
"${shared_config.modifier}+Shift+minus" = "move scratchpad";
|
||||||
|
"${shared_config.modifier}+minus" = "scratchpad show";
|
||||||
|
|
||||||
|
"${shared_config.modifier}+1" = "workspace number 1";
|
||||||
|
"${shared_config.modifier}+2" = "workspace number 2";
|
||||||
|
"${shared_config.modifier}+3" = "workspace number 3";
|
||||||
|
"${shared_config.modifier}+4" = "workspace number 4";
|
||||||
|
"${shared_config.modifier}+5" = "workspace number 5";
|
||||||
|
"${shared_config.modifier}+6" = "workspace number 6";
|
||||||
|
"${shared_config.modifier}+7" = "workspace number 7";
|
||||||
|
"${shared_config.modifier}+8" = "workspace number 8";
|
||||||
|
"${shared_config.modifier}+9" = "workspace number 9";
|
||||||
|
"${shared_config.modifier}+0" = "workspace number 10";
|
||||||
|
|
||||||
|
"${shared_config.modifier}+Shift+1" =
|
||||||
|
"move container to workspace number 1";
|
||||||
|
"${shared_config.modifier}+Shift+2" =
|
||||||
|
"move container to workspace number 2";
|
||||||
|
"${shared_config.modifier}+Shift+3" =
|
||||||
|
"move container to workspace number 3";
|
||||||
|
"${shared_config.modifier}+Shift+4" =
|
||||||
|
"move container to workspace number 4";
|
||||||
|
"${shared_config.modifier}+Shift+5" =
|
||||||
|
"move container to workspace number 5";
|
||||||
|
"${shared_config.modifier}+Shift+6" =
|
||||||
|
"move container to workspace number 6";
|
||||||
|
"${shared_config.modifier}+Shift+7" =
|
||||||
|
"move container to workspace number 7";
|
||||||
|
"${shared_config.modifier}+Shift+8" =
|
||||||
|
"move container to workspace number 8";
|
||||||
|
"${shared_config.modifier}+Shift+9" =
|
||||||
|
"move container to workspace number 9";
|
||||||
|
"${shared_config.modifier}+Shift+0" =
|
||||||
|
"move container to workspace number 10";
|
||||||
|
|
||||||
|
"${shared_config.modifier}+Shift+c" = "reload";
|
||||||
|
"${shared_config.modifier}+Shift+r" = "restart";
|
||||||
|
|
||||||
|
"${shared_config.modifier}+r" = "mode resize";
|
||||||
|
|
||||||
|
"XF86MonBrightnessUp" = "exec brightnessctl s +5%";
|
||||||
|
"XF86MonBrightnessDown" = "exec brightnessctl s 5%-";
|
||||||
|
};
|
||||||
|
} cfg.extraSharedConfig;
|
||||||
|
in {
|
||||||
|
options.home.i3_sway = {
|
||||||
|
extraSharedConfig = mkOption {
|
||||||
|
default = {};
|
||||||
|
};
|
||||||
|
extraI3Config = mkOption {
|
||||||
|
default = {};
|
||||||
|
};
|
||||||
|
extraSwayConfig = mkOption {
|
||||||
|
default = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
xsession.windowManager.i3 = let
|
||||||
|
base_i3_config = recursiveUpdate shared_config {
|
||||||
|
keybindings = {
|
||||||
|
"${shared_config.modifier}+Shift+e" =
|
||||||
|
"exec i3-nagbar -t warning -m 'Do you want to exit i3?' -b 'Yes' 'i3-msg exit'";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
config = recursiveUpdate base_i3_config cfg.extraI3Config;
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.sway = let
|
||||||
|
base_sway_config = recursiveUpdate shared_config {
|
||||||
|
keybindings = {
|
||||||
|
"${shared_config.modifier}+Shift+e" =
|
||||||
|
"exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'";
|
||||||
|
};
|
||||||
|
input = {
|
||||||
|
"type:keyboard" = {
|
||||||
|
xkb_options = "caps:escape";
|
||||||
|
};
|
||||||
|
"type:touchpad" = {
|
||||||
|
tap = "enabled";
|
||||||
|
tap_button_map = "lrm";
|
||||||
|
drag = "enabled";
|
||||||
|
natural_scroll = "disabled";
|
||||||
|
dwt = "enabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
config = recursiveUpdate base_sway_config cfg.extraSwayConfig;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
9
home/modules/lutris/default.nix
Normal file
9
home/modules/lutris/default.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
pkgs.gamescope
|
||||||
|
pkgs.lutris
|
||||||
|
pkgs.mangohud
|
||||||
|
];
|
||||||
|
}
|
||||||
163
home/modules/plasma-manager/default.nix
Normal file
163
home/modules/plasma-manager/default.nix
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
|
||||||
|
# The following can be generated with the command:
|
||||||
|
# nix run github:nix-community/plasma-manager
|
||||||
|
#
|
||||||
|
# Plasma-manager options documentation
|
||||||
|
# https://nix-community.github.io/plasma-manager/options.xhtml
|
||||||
|
#
|
||||||
|
# Polonium usage
|
||||||
|
# https://github.com/zeroxoneafour/polonium/blob/master/docs/usage.md
|
||||||
|
#
|
||||||
|
# TODO: Extract this configuration into something that's a bit easier to manage
|
||||||
|
# TODO: Update shortcuts for better window/tiling/desktop management akin to i3wm
|
||||||
|
# TODO(ambitious): Add Kmail support to plasma-manager
|
||||||
|
{
|
||||||
|
programs.plasma = {
|
||||||
|
enable = true;
|
||||||
|
overrideConfig = true;
|
||||||
|
|
||||||
|
kwin = {
|
||||||
|
scripts.polonium.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hotkeys.commands."launch-konsole" = {
|
||||||
|
name = "Launch Konsole";
|
||||||
|
key = "Meta+Return";
|
||||||
|
command = "konsole";
|
||||||
|
};
|
||||||
|
|
||||||
|
shortcuts = {
|
||||||
|
kmix = {
|
||||||
|
"decrease_microphone_volume" = "Microphone Volume Down";
|
||||||
|
"decrease_volume" = "Volume Down";
|
||||||
|
"decrease_volume_small" = "Shift+Volume Down";
|
||||||
|
"increase_microphone_volume" = "Microphone Volume Up";
|
||||||
|
"increase_volume" = "Volume Up";
|
||||||
|
"increase_volume_small" = "Shift+Volume Up";
|
||||||
|
"mic_mute" = ["Microphone Mute" "Meta+Volume Mute,Microphone Mute" "Meta+Volume Mute,Mute Microphone"];
|
||||||
|
"mute" = "Volume Mute";
|
||||||
|
};
|
||||||
|
|
||||||
|
mediacontrol = {
|
||||||
|
"mediavolumedown" = "none,,Media volume down";
|
||||||
|
"mediavolumeup" = "none,,Media volume up";
|
||||||
|
"nextmedia" = "Media Next";
|
||||||
|
"pausemedia" = "Media Pause";
|
||||||
|
"playmedia" = "none,,Play media playback";
|
||||||
|
"playpausemedia" = "Media Play";
|
||||||
|
"previousmedia" = "Media Previous";
|
||||||
|
"stopmedia" = "Media Stop";
|
||||||
|
};
|
||||||
|
|
||||||
|
ksmserver = {
|
||||||
|
"Lock Session" = ["Meta+Ctrl+Q" "Screensaver" "Screensaver,Lock Session"];
|
||||||
|
};
|
||||||
|
|
||||||
|
kwin = {
|
||||||
|
"Window Close" = "Meta+Shift+Q";
|
||||||
|
"Kill Window" = "Meta+Ctrl+Esc";
|
||||||
|
"Window Operations Menu" = "Alt+F3";
|
||||||
|
"Window Resize" = "Meta+R,,Resize Window";
|
||||||
|
|
||||||
|
"Overview" = "Meta+W";
|
||||||
|
"Grid View" = "Meta+G";
|
||||||
|
"Edit Tiles" = "Meta+T";
|
||||||
|
|
||||||
|
"Activate Window Demanding Attention" = "Meta+Ctrl+A";
|
||||||
|
|
||||||
|
"PoloniumCycleEngine" = "Meta+|,none,Polonium: Cycle Engine";
|
||||||
|
"PoloniumFocusAbove" = "Meta+K,none,Polonium: Focus Above";
|
||||||
|
"PoloniumFocusBelow" = "Meta+J,none,Polonium: Focus Below";
|
||||||
|
"PoloniumFocusLeft" = "Meta+H,none,Polonium: Focus Left";
|
||||||
|
"PoloniumFocusRight" = "Meta+L,none,Polonium: Focus Right";
|
||||||
|
"PoloniumInsertAbove" = "Meta+Shift+K,none,Polonium: Insert Above";
|
||||||
|
"PoloniumInsertBelow" = "Meta+Shift+J,none,Polonium: Insert Below";
|
||||||
|
"PoloniumInsertLeft" = "Meta+Shift+H,none,Polonium: Insert Left";
|
||||||
|
"PoloniumInsertRight" = "Meta+Shift+L,none,Polonium: Insert Right";
|
||||||
|
"PoloniumOpenSettings" = "Meta+\\\\,none,Polonium: Open Settings Dialog";
|
||||||
|
"PoloniumResizeAbove" = "Meta+Ctrl+K,none,Polonium: Resize Above";
|
||||||
|
"PoloniumResizeBelow" = "Meta+Ctrl+J,none,Polonium: Resize Below";
|
||||||
|
"PoloniumResizeLeft" = "Meta+Ctrl+H,none,Polonium: Resize Left";
|
||||||
|
"PoloniumResizeRight" = "Meta+Ctrl+L,none,Polonium: Resize Right";
|
||||||
|
"PoloniumRetileWindow" = "Meta+Shift+Space,none,Polonium: Retile Window";
|
||||||
|
"PoloniumSwitchBTree" = [ ];
|
||||||
|
"PoloniumSwitchHalf" = [ ];
|
||||||
|
"PoloniumSwitchKwin" = [ ];
|
||||||
|
"PoloniumSwitchMonocle" = [ ];
|
||||||
|
"PoloniumSwitchThreeColumn" = [ ];
|
||||||
|
|
||||||
|
"Show Desktop" = "Meta+D";
|
||||||
|
"Switch to Desktop 1" = "Meta+1,,Switch to Desktop 1";
|
||||||
|
"Switch to Desktop 2" = "Meta+2,,Switch to Desktop 2";
|
||||||
|
"Switch to Desktop 3" = "Meta+3,,Switch to Desktop 3";
|
||||||
|
"Switch to Desktop 4" = "Meta+4,,Switch to Desktop 4";
|
||||||
|
"Switch to Desktop 5" = "Meta+5,,Switch to Desktop 5";
|
||||||
|
"Switch to Desktop 6" = "none,,Switch to Desktop 6";
|
||||||
|
"Switch to Desktop 7" = "none,,Switch to Desktop 7";
|
||||||
|
"Switch to Desktop 8" = "none,,Switch to Desktop 8";
|
||||||
|
"Switch to Desktop 9" = "none,,Switch to Desktop 9";
|
||||||
|
"Window to Desktop 1" = "Meta+!,,Window to Desktop 1";
|
||||||
|
"Window to Desktop 2" = "Meta+@,,Window to Desktop 2";
|
||||||
|
"Window to Desktop 3" = "Meta+#,,Window to Desktop 3";
|
||||||
|
"Window to Desktop 4" = "Meta+$,,Window to Desktop 4";
|
||||||
|
"Window to Desktop 5" = "Meta+%,,Window to Desktop 5";
|
||||||
|
"Window to Desktop 6" = "none,,Window to Desktop 6";
|
||||||
|
"Window to Desktop 7" = "none,,Window to Desktop 7";
|
||||||
|
"Window to Desktop 8" = "none,,Window to Desktop 8";
|
||||||
|
"Window to Desktop 9" = "none,,Window to Desktop 9";
|
||||||
|
|
||||||
|
"Walk Through Windows" = "Alt+Tab";
|
||||||
|
"Walk Through Windows (Reverse)" = "Alt+Shift+Tab";
|
||||||
|
"Walk Through Windows of Current Application" = "Alt+`";
|
||||||
|
"Walk Through Windows of Current Application (Reverse)" = "Alt+~";
|
||||||
|
"Window Fullscreen" = "Meta+Shift+F,,Make Window Fullscreen";
|
||||||
|
|
||||||
|
"Window Quick Tile Bottom" = "Meta+Down";
|
||||||
|
"Window Quick Tile Left" = "Meta+Left";
|
||||||
|
"Window Quick Tile Right" = "Meta+Right";
|
||||||
|
"Window Quick Tile Top" = "Meta+Up";
|
||||||
|
|
||||||
|
"view_actual_size" = "Meta+0";
|
||||||
|
"view_zoom_in" = ["Meta++" "Meta+=,Meta++" "Meta+=,Zoom In"];
|
||||||
|
"view_zoom_out" = "Meta+-";
|
||||||
|
};
|
||||||
|
"org_kde_powerdevil"."Decrease Keyboard Brightness" = "Keyboard Brightness Down";
|
||||||
|
"org_kde_powerdevil"."Decrease Screen Brightness" = "Monitor Brightness Down";
|
||||||
|
"org_kde_powerdevil"."Decrease Screen Brightness Small" = "Shift+Monitor Brightness Down";
|
||||||
|
"org_kde_powerdevil"."Hibernate" = "Hibernate";
|
||||||
|
"org_kde_powerdevil"."Increase Keyboard Brightness" = "Keyboard Brightness Up";
|
||||||
|
"org_kde_powerdevil"."Increase Screen Brightness" = "Monitor Brightness Up";
|
||||||
|
"org_kde_powerdevil"."Increase Screen Brightness Small" = "Shift+Monitor Brightness Up";
|
||||||
|
"org_kde_powerdevil"."PowerDown" = "Power Down";
|
||||||
|
"org_kde_powerdevil"."PowerOff" = "Power Off";
|
||||||
|
"org_kde_powerdevil"."Sleep" = "Sleep";
|
||||||
|
"org_kde_powerdevil"."Toggle Keyboard Backlight" = "Keyboard Light On/Off";
|
||||||
|
"org_kde_powerdevil"."Turn Off Screen" = [ ];
|
||||||
|
"org_kde_powerdevil"."powerProfile" = ["Battery" "Meta+B,Battery" "Meta+B,Switch Power Profile"];
|
||||||
|
|
||||||
|
plasmashell = {
|
||||||
|
"activate application launcher" = ["Meta" "Alt+F1,Meta" "Alt+F1,Activate Application Launcher"];
|
||||||
|
"activate task manager entry 1" = "none,,";
|
||||||
|
"activate task manager entry 2" = "none,,";
|
||||||
|
"activate task manager entry 3" = "none,,";
|
||||||
|
"activate task manager entry 4" = "none,,";
|
||||||
|
"activate task manager entry 5" = "none,,";
|
||||||
|
"activate task manager entry 6" = "none,,";
|
||||||
|
"activate task manager entry 7" = "none,,";
|
||||||
|
"activate task manager entry 8" = "none,,";
|
||||||
|
"activate task manager entry 9" = "none,,";
|
||||||
|
"activate task manager entry 10" = "none,,";
|
||||||
|
"show activity switcher" = "none,,";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
configFile = {
|
||||||
|
kwinrc.Desktops.Number = {
|
||||||
|
value = 9;
|
||||||
|
immutable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
59
machines/boxy/configuration.nix
Normal file
59
machines/boxy/configuration.nix
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page, on
|
||||||
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||||
|
|
||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ # Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
roles = {
|
||||||
|
audio.enable = true;
|
||||||
|
kodi = {
|
||||||
|
enable = true;
|
||||||
|
autologin = true;
|
||||||
|
wayland = true;
|
||||||
|
};
|
||||||
|
spotifyd = {
|
||||||
|
enable = true;
|
||||||
|
deviceType = "t_v";
|
||||||
|
};
|
||||||
|
users.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
networking.hostName = "boxy"; # Define your hostname.
|
||||||
|
|
||||||
|
hardware.graphics.enable = true;
|
||||||
|
|
||||||
|
services.displayManager.enable = mkForce false;
|
||||||
|
|
||||||
|
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||||
|
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||||
|
#
|
||||||
|
# Most users should NEVER change this value after the initial install, for any reason,
|
||||||
|
# even if you've upgraded your system to a new NixOS release.
|
||||||
|
#
|
||||||
|
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||||
|
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||||
|
# to actually do that.
|
||||||
|
#
|
||||||
|
# This value being lower than the current NixOS release does NOT mean your system is
|
||||||
|
# out of date, out of support, or vulnerable.
|
||||||
|
#
|
||||||
|
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||||
|
# and migrated your data accordingly.
|
||||||
|
#
|
||||||
|
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
|
system.stateVersion = "24.05"; # Did you read the comment?
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
39
machines/boxy/hardware-configuration.nix
Normal file
39
machines/boxy/hardware-configuration.nix
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "thunderbolt" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/5b0e8428-c9ef-41f9-8beb-a8ccb65ab573";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/59A7-C2A3";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# 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.wlp3s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@@ -2,43 +2,25 @@
|
|||||||
# your system. Help is available in the configuration.nix(5) man page
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
|
||||||
{ config, pkgs, inputs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
[ # Include the results of the hardware scan.
|
[ # Include the results of the hardware scan.
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
nix = {
|
roles = {
|
||||||
package = pkgs.nixFlakes;
|
audio.enable = true;
|
||||||
|
bluetooth.enable = true;
|
||||||
distributedBuilds = true;
|
desktop.enable = true;
|
||||||
buildMachines = [{
|
nfs-mounts.enable = true;
|
||||||
hostName = "z790prors.oglehome";
|
printing.enable = true;
|
||||||
system = "x86_64-linux";
|
spotifyd.enable = true;
|
||||||
protocol = "ssh-ng";
|
users = {
|
||||||
sshUser = "johno";
|
enable = true;
|
||||||
sshKey = "/root/.ssh/id_ed25519";
|
extraGroups = [ "video" ];
|
||||||
maxJobs = 3;
|
|
||||||
speedFactor = 2;
|
|
||||||
}];
|
|
||||||
settings = {
|
|
||||||
experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
|
|
||||||
substituters = [
|
|
||||||
"https://hyprland.cachix.org"
|
|
||||||
#"ssh://johno@z790prors.oglehome"
|
|
||||||
];
|
|
||||||
|
|
||||||
builders-use-substitutes = true;
|
|
||||||
|
|
||||||
trusted-public-keys = [
|
|
||||||
"arch-store:lBSsckiRVH+A2ZyZWIzPwpSFstAGXcf/d7H1lSmiFo8="
|
|
||||||
"z790prors:2zFp1rh6cS+2aAHwmcKKkkg13LV+x2YVuAh7TCWSckw="
|
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
virtualisation.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
@@ -51,38 +33,9 @@
|
|||||||
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
|
||||||
|
|
||||||
# Enable networking
|
# Enable networking
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "America/Los_Angeles";
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "en_US.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
|
||||||
LC_MEASUREMENT = "en_US.UTF-8";
|
|
||||||
LC_MONETARY = "en_US.UTF-8";
|
|
||||||
LC_NAME = "en_US.UTF-8";
|
|
||||||
LC_NUMERIC = "en_US.UTF-8";
|
|
||||||
LC_PAPER = "en_US.UTF-8";
|
|
||||||
LC_TELEPHONE = "en_US.UTF-8";
|
|
||||||
LC_TIME = "en_US.UTF-8";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
services.xserver.xkb = {
|
|
||||||
layout = "us";
|
|
||||||
variant = "";
|
|
||||||
options = "caps:escape";
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.graphics = {
|
hardware.graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
@@ -92,51 +45,6 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.pulseaudio.enable = true;
|
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users.users.johno = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "John Ogle";
|
|
||||||
extraGroups = [ "networkmanager" "wheel" "audio" ];
|
|
||||||
packages = with pkgs; [];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable automatic login for the user.
|
|
||||||
services.getty.autologinUser = "johno";
|
|
||||||
|
|
||||||
# Allow unfree packages
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
# 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
|
|
||||||
];
|
|
||||||
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
|
||||||
# started in user sessions.
|
|
||||||
# programs.mtr.enable = true;
|
|
||||||
programs.gnupg.agent = {
|
|
||||||
enable = true;
|
|
||||||
enableSSHSupport = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
users.extraGroups.docker.members = [ "johno" ];
|
|
||||||
|
|
||||||
# List services that you want to enable:
|
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
|
||||||
# services.openssh.enable = true;
|
|
||||||
|
|
||||||
# Open ports in the firewall.
|
|
||||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
|
||||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
|
||||||
# Or disable the firewall altogether.
|
|
||||||
# networking.firewall.enable = false;
|
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
# This value determines the NixOS release from which the default
|
||||||
# settings for stateful data, like file locations and database versions
|
# settings for stateful data, like file locations and database versions
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
@@ -144,21 +52,4 @@
|
|||||||
# Before changing this value read the documentation for this option
|
# Before changing this value read the documentation for this option
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
system.stateVersion = "24.05"; # Did you read the comment?
|
system.stateVersion = "24.05"; # Did you read the comment?
|
||||||
|
|
||||||
|
|
||||||
# Desktop
|
|
||||||
|
|
||||||
programs.steam.enable = true;
|
|
||||||
|
|
||||||
#services.xserver.enable = true;
|
|
||||||
services.displayManager = {
|
|
||||||
sddm.enable = true;
|
|
||||||
sddm.wayland.enable = true;
|
|
||||||
#defaultSession = "plasmax11";
|
|
||||||
};
|
|
||||||
services.desktopManager.plasma6.enable = true;
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,164 +2,56 @@
|
|||||||
# your system. Help is available in the configuration.nix(5) man page
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
|
||||||
{ inputs, config, pkgs, ... }:
|
{ ... }:
|
||||||
|
|
||||||
let
|
|
||||||
kidsPackages = with pkgs; [
|
|
||||||
firefox
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
[ # Include the results of the hardware scan.
|
[ # Include the results of the hardware scan.
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../../roles/virtualisation/default.nix
|
|
||||||
../../roles/nfs-mounts/default.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
roles = {
|
||||||
|
audio.enable = true;
|
||||||
|
desktop = {
|
||||||
|
enable = true;
|
||||||
|
x11Only = true;
|
||||||
|
};
|
||||||
|
kodi.enable = true;
|
||||||
|
nfs-mounts.enable = true;
|
||||||
|
printing.enable = true;
|
||||||
|
spotifyd.enable = true;
|
||||||
|
users = {
|
||||||
|
enable = true;
|
||||||
|
extraGroups = [ "input" "libvirtd" ];
|
||||||
|
kids = true;
|
||||||
|
};
|
||||||
|
virtualisation.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
# Use the systemd-boot EFI boot loader.
|
# Use the systemd-boot EFI boot loader.
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
boot.loader.grub.useOSProber = true;
|
boot.loader.grub.useOSProber = true;
|
||||||
|
|
||||||
networking.hostName = "z790prors-nix"; # Define your hostname.
|
networking = {
|
||||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
hostName = "z790prors-nix"; # Define your hostname.
|
||||||
|
domain = "oglehome";
|
||||||
|
defaultGateway = "10.0.0.1";
|
||||||
|
nameservers = [ "10.0.0.1" ];
|
||||||
|
|
||||||
# Set your time zone.
|
# The global useDHCP flag is deprecated, therefore explicitly set to false here.
|
||||||
time.timeZone = "America/Los_Angeles";
|
# Per-interface useDHCP will be mandatory in the future, so this generated config
|
||||||
|
# replicates the default behaviour.
|
||||||
|
useDHCP = false;
|
||||||
|
|
||||||
|
interfaces.enp3s0.ipv4.addresses = [{
|
||||||
|
address = "10.0.0.37";
|
||||||
|
prefixLength = 24;
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
|
||||||
# The global useDHCP flag is deprecated, therefore explicitly set to false here.
|
# TODO: Figure out something with this
|
||||||
# Per-interface useDHCP will be mandatory in the future, so this generated config
|
|
||||||
# replicates the default behaviour.
|
|
||||||
networking.useDHCP = false;
|
|
||||||
networking.interfaces.enp3s0.useDHCP = true;
|
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
# console = {
|
|
||||||
# font = "Lat2-Terminus16";
|
|
||||||
# keyMap = "us";
|
|
||||||
# };
|
|
||||||
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
nix.settings.secret-key-files = /root/cache-priv-key.pem;
|
nix.settings.secret-key-files = /root/cache-priv-key.pem;
|
||||||
nix.settings.max-jobs = "auto";
|
|
||||||
nix.settings.trusted-users = [ "johno" ];
|
|
||||||
nix.settings.substituters = [
|
|
||||||
"https://hyprland.cachix.org"
|
|
||||||
];
|
|
||||||
nix.settings.trusted-public-keys = [
|
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
# Enable the X11 windowing system.
|
|
||||||
services.xserver.enable = true;
|
|
||||||
hardware.graphics.enable = true;
|
|
||||||
services.xserver.videoDrivers = ["nvidia"];
|
|
||||||
hardware.nvidia = {
|
|
||||||
modesetting.enable = true;
|
|
||||||
powerManagement.enable = false;
|
|
||||||
powerManagement.finegrained = false;
|
|
||||||
open = false;
|
|
||||||
nvidiaSettings = true;
|
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.production;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
# services.xserver.layout = "us";
|
|
||||||
# services.xserver.xkbOptions = "eurosign:e";
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
# services.printing.enable = true;
|
|
||||||
|
|
||||||
# Enable sound.
|
|
||||||
hardware.pulseaudio.enable = true;
|
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
|
||||||
# services.xserver.libinput.enable = true;
|
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users.users.johno = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "John Ogle";
|
|
||||||
extraGroups = [ "wheel" "networkmanager" "audio" "libvirtd" ]; # Enable ‘sudo’ for the user.
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.eli = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "Eli";
|
|
||||||
home = "/arch/@home/eli";
|
|
||||||
packages = kidsPackages;
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.andrew = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "Andrew";
|
|
||||||
home = "/arch/@home/andrew";
|
|
||||||
packages = kidsPackages;
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.jules = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "Jules";
|
|
||||||
home = "/arch/@home/jules";
|
|
||||||
packages = kidsPackages;
|
|
||||||
};
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
git
|
|
||||||
];
|
|
||||||
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
|
||||||
# started in user sessions.
|
|
||||||
# programs.mtr.enable = true;
|
|
||||||
# programs.gnupg.agent = {
|
|
||||||
# enable = true;
|
|
||||||
# enableSSHSupport = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# List services that you want to enable:
|
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
|
||||||
services.openssh.enable = true;
|
|
||||||
|
|
||||||
services.displayManager = {
|
|
||||||
sddm.enable = true;
|
|
||||||
sddm.wayland.enable = true;
|
|
||||||
#defaultSession = "plasmax11";
|
|
||||||
};
|
|
||||||
services.desktopManager.plasma6.enable = true;
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.java.enable = true;
|
|
||||||
programs.steam = {
|
|
||||||
enable = true;
|
|
||||||
remotePlay.openFirewall = true;
|
|
||||||
localNetworkGameTransfers.openFirewall = true;
|
|
||||||
#package = pkgs.steam.override {
|
|
||||||
#withJava = true;
|
|
||||||
#withPrimus = true;
|
|
||||||
#extraPkgs = pkgs: [ bumblebee glxinfo ];
|
|
||||||
#};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Open ports in the firewall.
|
|
||||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
|
||||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
|
||||||
# Or disable the firewall altogether.
|
|
||||||
# networking.firewall.enable = false;
|
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
# This value determines the NixOS release from which the default
|
||||||
# settings for stateful data, like file locations and database versions
|
# settings for stateful data, like file locations and database versions
|
||||||
@@ -168,6 +60,4 @@ in
|
|||||||
# Before changing this value read the documentation for this option
|
# Before changing this value read the documentation for this option
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
system.stateVersion = "21.11"; # Did you read the comment?
|
system.stateVersion = "21.11"; # Did you read the comment?
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
@@ -9,10 +9,44 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [
|
||||||
|
"nvidia"
|
||||||
|
"nvidia_modeset"
|
||||||
|
"nvidia_uvm"
|
||||||
|
"nvidia_drm"
|
||||||
|
];
|
||||||
|
boot.kernelParams = [
|
||||||
|
"nvidia_drm.fbdev=1"
|
||||||
|
"nvidia_drm.modeset=1"
|
||||||
|
];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
hardware.graphics.enable = true;
|
||||||
|
services.xserver.videoDrivers = ["nvidia"];
|
||||||
|
services.xserver.screenSection = ''Option "metamodes" "3440x1440_165 +0+0"'';
|
||||||
|
services.xserver.enableTearFree = true;
|
||||||
|
hardware.nvidia = {
|
||||||
|
modesetting.enable = true;
|
||||||
|
powerManagement.enable = false;
|
||||||
|
powerManagement.finegrained = false;
|
||||||
|
open = false;
|
||||||
|
nvidiaSettings = true;
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.production;
|
||||||
|
#package = config.boot.kernelPackages.nvidiaPackages.mkDriver {
|
||||||
|
#version = "555.58";
|
||||||
|
|
||||||
|
#sha256_64bit = "sha256-bXvcXkg2kQZuCNKRZM5QoTaTjF4l2TtrsKUvyicj5ew=";
|
||||||
|
#sha256_aarch64 = lib.fakeSha256;
|
||||||
|
#openSha256 = lib.fakeSha256;
|
||||||
|
#settingsSha256 = "sha256-vWnrXlBCb3K5uVkDFmJDVq51wrCoqgPF03lSjZOuU8M=";
|
||||||
|
#persistencedSha256 = lib.fakeSha256;
|
||||||
|
#};
|
||||||
|
};
|
||||||
|
environment.sessionVariables = {
|
||||||
|
KWIN_DRM_ALLOW_NVIDIA_COLORSPACE = "1";
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" =
|
||||||
{ device = "/dev/disk/by-uuid/8d996d13-6d55-4524-83a2-6f6fb47a09ea";
|
{ device = "/dev/disk/by-uuid/8d996d13-6d55-4524-83a2-6f6fb47a09ea";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
@@ -30,6 +64,14 @@
|
|||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
services.beesd.filesystems = {
|
||||||
|
root = {
|
||||||
|
spec = "LABEL=nixos";
|
||||||
|
hashTableSizeMB = 4096;
|
||||||
|
verbosity = "crit";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
}
|
}
|
||||||
|
|||||||
4
packages/default.nix
Normal file
4
packages/default.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
nextcloudTalkDesktop = pkgs.callPackage ./nextcloud-talk-desktop {};
|
||||||
|
}
|
||||||
79
packages/nextcloud-talk-desktop/default.nix
Normal file
79
packages/nextcloud-talk-desktop/default.nix
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchzip
|
||||||
|
, autoPatchelfHook
|
||||||
|
|
||||||
|
, nss
|
||||||
|
, cairo
|
||||||
|
, xorg
|
||||||
|
, libxkbcommon
|
||||||
|
, alsa-lib
|
||||||
|
, at-spi2-core
|
||||||
|
, mesa
|
||||||
|
, pango
|
||||||
|
, libdrm
|
||||||
|
, vivaldi-ffmpeg-codecs
|
||||||
|
, gtk3
|
||||||
|
, libGL
|
||||||
|
, libglvnd
|
||||||
|
, systemd
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "nextcloud-talk-desktop";
|
||||||
|
version = "0.29.0";
|
||||||
|
|
||||||
|
# Building from source would require building also building Server and Talk components
|
||||||
|
# See https://github.com/nextcloud/talk-desktop?tab=readme-ov-file#%EF%B8%8F-prerequisites
|
||||||
|
src = fetchzip {
|
||||||
|
url = "https://github.com/nextcloud-releases/talk-desktop/releases/download/v${finalAttrs.version}/Nextcloud.Talk-linux-x64-${finalAttrs.version}.zip";
|
||||||
|
hash = "sha256-fBIeNv8tfrVTFExLQDBPhIazvbsJ7a76+W9G0cuQDlw=";
|
||||||
|
stripRoot = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ autoPatchelfHook ];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
nss
|
||||||
|
cairo
|
||||||
|
alsa-lib
|
||||||
|
at-spi2-core
|
||||||
|
pango
|
||||||
|
libdrm
|
||||||
|
libxkbcommon
|
||||||
|
gtk3
|
||||||
|
vivaldi-ffmpeg-codecs
|
||||||
|
mesa
|
||||||
|
libGL
|
||||||
|
libglvnd
|
||||||
|
] ++ (with xorg; [libX11 libXcomposite libXdamage libXrandr libXfixes libXcursor]);
|
||||||
|
|
||||||
|
# Required to launch the application and proceed past the zygote_linux fork() process
|
||||||
|
# Fixes `Zygote could not fork`
|
||||||
|
runtimeDependencies = [ systemd ];
|
||||||
|
|
||||||
|
preInstall = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
mkdir -p $out/opt
|
||||||
|
|
||||||
|
cp -r $src/* $out/opt/
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
# Link the application in $out/bin away from contents of `preInstall`
|
||||||
|
ln -s "$out/opt/Nextcloud Talk-linux-x64/Nextcloud Talk" $out/bin/${finalAttrs.pname}
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Nextcloud Talk Desktop Client Preview";
|
||||||
|
homepage = "https://github.com/nextcloud/talk-desktop";
|
||||||
|
changelog = "https://github.com/nextcloud/talk-desktop/blob/${finalAttrs.version}/CHANGELOG.md";
|
||||||
|
license = licenses.agpl3Only;
|
||||||
|
maintainers = with maintainers; [ kashw2 ];
|
||||||
|
mainProgram = finalAttrs.pname;
|
||||||
|
};
|
||||||
|
})
|
||||||
31
roles/audio/default.nix
Normal file
31
roles/audio/default.nix
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.roles.audio;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.roles.audio = {
|
||||||
|
enable = mkEnableOption "Enable the audio role";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable
|
||||||
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
alsa-utils
|
||||||
|
paprefs
|
||||||
|
pavucontrol
|
||||||
|
pulsemixer
|
||||||
|
];
|
||||||
|
|
||||||
|
hardware.pulseaudio.enable = true;
|
||||||
|
hardware.pulseaudio.package = pkgs.pulseaudioFull;
|
||||||
|
hardware.pulseaudio.support32Bit = true;
|
||||||
|
hardware.pulseaudio.extraConfig = "
|
||||||
|
load-module module-combine-sink
|
||||||
|
load-module module-switch-on-connect
|
||||||
|
";
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
26
roles/bluetooth/default.nix
Normal file
26
roles/bluetooth/default.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.roles.bluetooth;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.roles.bluetooth = {
|
||||||
|
enable = mkEnableOption "Enable the bluetooth role";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable
|
||||||
|
{
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
hardware.bluetooth.powerOnBoot = true;
|
||||||
|
hardware.bluetooth.settings = {
|
||||||
|
General = {
|
||||||
|
Enable = "Source,Sink,Media,Socket";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.blueman.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
72
roles/default.nix
Normal file
72
roles/default.nix
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
{ lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./audio
|
||||||
|
./bluetooth
|
||||||
|
./desktop
|
||||||
|
./kodi
|
||||||
|
./nfs-mounts
|
||||||
|
./printing
|
||||||
|
./secrets
|
||||||
|
./spotifyd
|
||||||
|
./users
|
||||||
|
./virtualisation
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
i18n.extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "en_US.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||||
|
LC_MEASUREMENT = "en_US.UTF-8";
|
||||||
|
LC_MONETARY = "en_US.UTF-8";
|
||||||
|
LC_NAME = "en_US.UTF-8";
|
||||||
|
LC_NUMERIC = "en_US.UTF-8";
|
||||||
|
LC_PAPER = "en_US.UTF-8";
|
||||||
|
LC_TELEPHONE = "en_US.UTF-8";
|
||||||
|
LC_TIME = "en_US.UTF-8";
|
||||||
|
};
|
||||||
|
time.timeZone = "America/Los_Angeles";
|
||||||
|
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
git
|
||||||
|
];
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
package = pkgs.nixFlakes;
|
||||||
|
distributedBuilds = true;
|
||||||
|
buildMachines = [{
|
||||||
|
hostName = "z790prors.oglehome";
|
||||||
|
system = "x86_64-linux";
|
||||||
|
protocol = "ssh-ng";
|
||||||
|
sshUser = "johno";
|
||||||
|
sshKey = "/root/.ssh/id_ed25519";
|
||||||
|
maxJobs = 3;
|
||||||
|
speedFactor = 2;
|
||||||
|
}];
|
||||||
|
settings = {
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
max-jobs = "auto";
|
||||||
|
trusted-users = [ "johno" ];
|
||||||
|
substituters = [
|
||||||
|
"https://hyprland.cachix.org"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
randomizedDelaySec = "14m";
|
||||||
|
options = "--delete-older-than 10d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
134
roles/desktop/default.nix
Normal file
134
roles/desktop/default.nix
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.roles.desktop;
|
||||||
|
|
||||||
|
basePackages = with pkgs; [
|
||||||
|
brightnessctl
|
||||||
|
mangohud # Should probably get refactored with steam/gamescope out to a gaming role
|
||||||
|
polonium # auto tiling kwin addon
|
||||||
|
];
|
||||||
|
|
||||||
|
x11BasePackages = with pkgs; [
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
x11OnlyPackages = with pkgs; [
|
||||||
|
emacs
|
||||||
|
];
|
||||||
|
|
||||||
|
waylandBasePackages = with pkgs; [
|
||||||
|
grim
|
||||||
|
slurp
|
||||||
|
wl-clipboard
|
||||||
|
mako
|
||||||
|
];
|
||||||
|
|
||||||
|
waylandOnlyPackages = with pkgs; [
|
||||||
|
emacs-gtk
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.roles.desktop = {
|
||||||
|
enable = mkEnableOption "Enable the desktop role";
|
||||||
|
x11Only = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable
|
||||||
|
{
|
||||||
|
services.xserver.xkb = {
|
||||||
|
layout = "us";
|
||||||
|
variant = "";
|
||||||
|
options = "caps:escape";
|
||||||
|
};
|
||||||
|
services.xserver.enable = true;
|
||||||
|
|
||||||
|
services.displayManager.sddm = {
|
||||||
|
enable = true;
|
||||||
|
wayland.enable = !cfg.x11Only;
|
||||||
|
};
|
||||||
|
services.desktopManager.plasma6.enable = true;
|
||||||
|
|
||||||
|
services.xserver.windowManager.i3 = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
dmenu
|
||||||
|
i3status
|
||||||
|
i3lock
|
||||||
|
];
|
||||||
|
};
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
programs.sway = mkIf (!cfg.x11Only) {
|
||||||
|
enable = true;
|
||||||
|
wrapperFeatures.gtk = true;
|
||||||
|
};
|
||||||
|
programs.light.enable = mkIf (!cfg.x11Only) true;
|
||||||
|
|
||||||
|
programs.kdeconnect.enable = true;
|
||||||
|
programs.java.enable = true;
|
||||||
|
programs.gamemode = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
programs.gamescope = {
|
||||||
|
enable = true;
|
||||||
|
#capSysNice = true;
|
||||||
|
args = [
|
||||||
|
#"--adaptive-sync"
|
||||||
|
#"--nested-refresh 165"
|
||||||
|
#"--backend wayland"
|
||||||
|
"--hdr-enabled"
|
||||||
|
"--hdr-itm-enable"
|
||||||
|
"--hdr-debug-force-output"
|
||||||
|
"--mangoapp"
|
||||||
|
"--rt"
|
||||||
|
"--steam"
|
||||||
|
#"--xwayland-count 2"
|
||||||
|
];
|
||||||
|
env = {
|
||||||
|
#PROTON_DISABLE_NVAPI = "1";
|
||||||
|
MANGOHUD = "1";
|
||||||
|
#MANGOHUD_CONFIG = "cpu_temp gpu_temp ram vram";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
remotePlay.openFirewall = true;
|
||||||
|
localNetworkGameTransfers.openFirewall = true;
|
||||||
|
gamescopeSession = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
#package = pkgs.steam.override {
|
||||||
|
#withJava = true;
|
||||||
|
#withPrimus = true;
|
||||||
|
#extraPkgs = pkgs: [ bumblebee glxinfo ];
|
||||||
|
#};
|
||||||
|
};
|
||||||
|
services.sunshine = {
|
||||||
|
enable = true;
|
||||||
|
autoStart = true;
|
||||||
|
capSysAdmin = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
users.extraGroups.docker.members = [ "johno" ];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; mkMerge [
|
||||||
|
basePackages
|
||||||
|
x11BasePackages
|
||||||
|
(mkIf cfg.x11Only x11OnlyPackages)
|
||||||
|
# TODO: Do we need a "wayland only" mode?
|
||||||
|
(mkIf (!cfg.x11Only) waylandBasePackages)
|
||||||
|
(mkIf (!cfg.x11Only) waylandOnlyPackages)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
82
roles/kodi/default.nix
Normal file
82
roles/kodi/default.nix
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.roles.kodi;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.roles.kodi = {
|
||||||
|
enable = mkEnableOption "Enable Kodi";
|
||||||
|
autologin = mkOption {
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
wayland = mkOption {
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
config = let
|
||||||
|
kodiBasePkg = if cfg.wayland then pkgs.kodi-wayland else pkgs.kodi;
|
||||||
|
kodiPkg = kodiBasePkg.withPackages (pkgs: with pkgs; [
|
||||||
|
jellyfin
|
||||||
|
steam-launcher
|
||||||
|
steam-library
|
||||||
|
youtube
|
||||||
|
]);
|
||||||
|
in mkIf cfg.enable
|
||||||
|
{
|
||||||
|
users.extraUsers.kodi.isNormalUser = true;
|
||||||
|
|
||||||
|
networking.firewall = {
|
||||||
|
allowedTCPPorts = [ 8080 ];
|
||||||
|
allowedUDPPorts = [ 8080 ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services = if cfg.autologin then mkMerge [
|
||||||
|
(mkIf cfg.wayland {
|
||||||
|
cage = mkIf cfg.wayland {
|
||||||
|
user = "kodi";
|
||||||
|
#program = "gamescope -f --hdr-enabled ${kodiPkg}/bin/kodi-standalone";
|
||||||
|
program =
|
||||||
|
let
|
||||||
|
kodiGamescope = pkgs.writeShellApplication {
|
||||||
|
name = "kodi-gamescope";
|
||||||
|
runtimeInputs = [ kodiPkg pkgs.gamescope ];
|
||||||
|
text = ''
|
||||||
|
${pkgs.gamescope}/bin/gamescope --hdr-enabled -f -- ${kodiPkg}/bin/kodi-standalone
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
"${lib.getExe kodiGamescope}";
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
xserver = {
|
||||||
|
enable = false;
|
||||||
|
autorun = false;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(mkIf (!cfg.wayland) {
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
desktopManager.kodi = {
|
||||||
|
enable = true;
|
||||||
|
package = kodiPkg;
|
||||||
|
};
|
||||||
|
displayManager.lightdm = {
|
||||||
|
enable = true;
|
||||||
|
greeter.enable = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
displayManager = {
|
||||||
|
autoLogin.enable = true;
|
||||||
|
autoLogin.user = "kodi";
|
||||||
|
defaultSession = "kodi";
|
||||||
|
sessionData.autologinSession = "kodi";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
] else {};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,8 +1,31 @@
|
|||||||
{ config, ... }:
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.roles.nfs-mounts;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
fileSystems."/media" = {
|
options.roles.nfs-mounts = {
|
||||||
device = "10.0.0.43:/media";
|
enable = mkEnableOption "Enable default NFS mounts";
|
||||||
fsType = "nfs";
|
# TODO: implement requireMount
|
||||||
|
requireMount = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
description = "Hard fail if the NFS mounts are not available";
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable
|
||||||
|
{
|
||||||
|
fileSystems."/media" = {
|
||||||
|
device = "10.0.0.43:/media";
|
||||||
|
fsType = "nfs";
|
||||||
|
options = [
|
||||||
|
"defaults"
|
||||||
|
"nofail"
|
||||||
|
"softreval"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
23
roles/printing/default.nix
Normal file
23
roles/printing/default.nix
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.roles.printing;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.roles.printing = {
|
||||||
|
enable = mkEnableOption "Enable default printing setup";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable
|
||||||
|
{
|
||||||
|
services.printing.enable = true;
|
||||||
|
|
||||||
|
services.avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
8
roles/secrets/default.nix
Normal file
8
roles/secrets/default.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
sops.defaultSopsFile = ../../secrets/secrets.yaml;
|
||||||
|
sops.defaultSopsFormat = "yaml";
|
||||||
|
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" "/home/johno/.ssh/id_ed25519" ];
|
||||||
|
sops.secrets.example_key = {};
|
||||||
|
}
|
||||||
49
roles/spotifyd/default.nix
Normal file
49
roles/spotifyd/default.nix
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.roles.spotifyd;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.roles.spotifyd = {
|
||||||
|
enable = mkEnableOption "Enable the spotifyd role";
|
||||||
|
deviceType = mkOption {
|
||||||
|
default = "computer";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable
|
||||||
|
{
|
||||||
|
roles.audio.enable = true;
|
||||||
|
hardware.pulseaudio.enable = true;
|
||||||
|
hardware.pulseaudio.extraConfig = ''
|
||||||
|
unload-module module-native-protocol-unix
|
||||||
|
load-module module-native-protocol-unix auth-anonymous=1
|
||||||
|
'';
|
||||||
|
hardware.pulseaudio.systemWide = true;
|
||||||
|
|
||||||
|
services.spotifyd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
global = {
|
||||||
|
use_mpris = false;
|
||||||
|
backend = "pulseaudio";
|
||||||
|
bitrate = 320;
|
||||||
|
cache_path = "";
|
||||||
|
zeroconf_port = 5354;
|
||||||
|
autoplay = false;
|
||||||
|
device_type = cfg.deviceType;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [
|
||||||
|
5354
|
||||||
|
57621
|
||||||
|
];
|
||||||
|
networking.firewall.allowedUDPPorts = [
|
||||||
|
5353
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
52
roles/users/default.nix
Normal file
52
roles/users/default.nix
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.roles.users;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.roles.users = {
|
||||||
|
enable = mkEnableOption "Enable default users";
|
||||||
|
extraGroups = mkOption {
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
kids = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = let
|
||||||
|
kidsPackages = with pkgs; [
|
||||||
|
firefox
|
||||||
|
];
|
||||||
|
in mkIf cfg.enable {
|
||||||
|
users.users.johno = {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "John Ogle";
|
||||||
|
extraGroups = [ "wheel" "networkmanager" "audio" ] ++ cfg.extraGroups;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.eli = mkIf cfg.kids {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "Eli";
|
||||||
|
home = "/home/eli";
|
||||||
|
packages = kidsPackages;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.andrew = mkIf cfg.kids {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "Andrew";
|
||||||
|
home = "/home/andrew";
|
||||||
|
packages = kidsPackages;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.jules = mkIf cfg.kids {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "Jules";
|
||||||
|
home = "/home/jules";
|
||||||
|
packages = kidsPackages;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +1,18 @@
|
|||||||
{ config, ... }:
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.roles.virtualisation;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
virtualisation.libvirtd.enable = true;
|
options.roles.virtualisation = {
|
||||||
programs.virt-manager.enable = true;
|
enable = mkEnableOption "Enable virtualisation";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable
|
||||||
|
{
|
||||||
|
virtualisation.libvirtd.enable = true;
|
||||||
|
programs.virt-manager.enable = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
48
secrets/secrets.yaml
Normal file
48
secrets/secrets.yaml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
hello: ENC[AES256_GCM,data:5ZpbPx3D8gQc1fOhViUqiCr0zLWYotB+vIBixqTbqP9XLS52y6tr5DXus0aV9mTgka5deqc=,iv:yPJaCqDD9WD56swfBjSm7A62ZTTIQDqyAKOgP1ese+U=,tag:bo8+7Ne2f9aEZSvpkt1fzA==,type:str]
|
||||||
|
example_key: ENC[AES256_GCM,data:v15bEcb0H3vaj13blg==,iv:9P3IA7ChBamo41VE8G8tj46sZqeijsO1LcvwLtEPVPA=,tag:o/lAyAYYGNLP9EjQNa/K8Q==,type:str]
|
||||||
|
example_array:
|
||||||
|
- ENC[AES256_GCM,data:3Vwa7dfNfKzRc/xpk6I=,iv:IevBgxwWdaBvZY1ywteWcfWwDIA8lK3FTWs67lLBKxw=,tag:Mx5lzUeNZ/3wJBWAl5XSBw==,type:str]
|
||||||
|
- ENC[AES256_GCM,data:epkT6WPGW5Oe/S+4HtU=,iv:N0yoDuieAaEi+NuCoCL4zrkhaDDdkttboI89m+UccjQ=,tag:OoERRByb0OM4un9oGLJQgA==,type:str]
|
||||||
|
#ENC[AES256_GCM,data:YzMFXxn3sbbHpGB4jPRtRw==,iv:TN6ogQuH7c6xtDoWt0Ew9B2f7wuaipJynvscZmaJYoU=,tag:No0UwEktEyMNBg/46P+Zmg==,type:comment]
|
||||||
|
example_number: ENC[AES256_GCM,data:jmLoVC+8YIlB2A==,iv:u9GztD/aE9UN5zWq3Am2nhYwmYt3sf8sy65MHbhVoD0=,tag:wKuf1mMr5XBJveJrz0uHPA==,type:float]
|
||||||
|
example_booleans:
|
||||||
|
- ENC[AES256_GCM,data:ZacILA==,iv:xo+7aFFQXzbJzKDY0mYTeFLf10AlnHkywDRAMHeprEM=,tag:F/OnJdqjrZP02sTLWLmnbg==,type:bool]
|
||||||
|
- ENC[AES256_GCM,data:NaFrvrs=,iv:kKDmGs9u/w5qrZ/379Jlx8AotUVADvH+eHwHCqykmkE=,tag:nD9TsmkXUm4ABaT1ABWmcg==,type:bool]
|
||||||
|
sops:
|
||||||
|
kms: []
|
||||||
|
gcp_kms: []
|
||||||
|
azure_kv: []
|
||||||
|
hc_vault: []
|
||||||
|
age:
|
||||||
|
- recipient: age1ls6a033d4p4u8h4rwazjwt8w4c4xg73wq0mdnm64jajxzcz4k9asvjnks3
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjak9vRVJtVmJoanhEZ0hQ
|
||||||
|
MFJwMEE4UDcrRkdPRmZ6R09FSDY1aTk3Y1dNClZJYXRLNU5senR3Qzh6VmZGMlhu
|
||||||
|
bnl6VjlaUEFISnBtSTVrcEd0ZjI5Q2MKLS0tIFl1b3A5ZWVqc1gvWVZnZis0ZHFk
|
||||||
|
bWhnNVB2TUJ4YzY4NHdSVXhPc3dReTgKWRYBbBE3+oGsRNw1CROhFY+btENbShfv
|
||||||
|
gw3IdW7OoZV6JpJBOcI82eOuOkIxrmgSGDGeyy10/a5MA/cB1umm+w==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age12l5u7sw59u5pkwp83qm8t3ff7uv0ld2c9k3zh5j4ame9k2szcynqu7ftqe
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGcmV3TDlNL2Zxb0h5QTYx
|
||||||
|
QkVmczA0MDc2ZnpNNU1YeFVzSXJwc3RWUmk4CjF4bHIrVU9VM3htTUxGZ2FUR256
|
||||||
|
UEovdVV2cmNIbkloS1VobTNFSDVyRG8KLS0tIEFhUk5kL3hCNGs4MGJBTmNJaVFm
|
||||||
|
b2ZBUGJ1K0lKTitKYTRUMWszQzhBU0UKBaM6t6JmWfiG+wPorGea1gqvV5RSIPyw
|
||||||
|
6yb2PcH2oZ0HrjJM5sjfu7XOWY3KneiZZikR1BpD5KvevfagWTSR/w==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age1fa3zqavfmqk4ssa22yne9td90gyqv9q5a8y0s8jp3xak8q7p3yjqyn7rkg
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaMFJiNjVOb0lTcmJ3VnhH
|
||||||
|
WlRKZERRZFM3TFZBZGNSZC9GdHlHakMza21zClJ3SDdFUkVRc3oyVVU3WEtDQzBu
|
||||||
|
OEFqS3NwbHZFUlpCYlN6RW84N0F1amcKLS0tIHFZK21aTHdwZ2dWbVRrWEZDWFZj
|
||||||
|
aU1IQzdTMVhnbHhsNENwMG05dXhOU2MK8fEJea9sL5JLgltVlTI6mRDb+Tl83Iz7
|
||||||
|
4wPYvo68cn8vimXqSk45ldHRrNa3zhYai3CalQaGtDT3fkWGvSq0zQ==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2024-09-28T15:44:39Z"
|
||||||
|
mac: ENC[AES256_GCM,data:YUi+AbS6DQTmrSyOXsbkZWfWaMyKGR8fYm/MHcxmqChi8hng+UWHBZjsLBe6ef/FLH3rnP6bhfwK8KYnVS6fHvHahoqIq/BHydTsqrclnSgRAGl8Lh0yuhwISNRvP1AuW5pd50sdQaS0uGOtzOCharI/pZ9H+cmt2SB5WOCdeLs=,iv:2nBG6it3tNSLSia8hGzCcesuK9QwzB9EzfjWegjQ2kw=,tag:RGGPAPw/rQKhWA2OqLjTJw==,type:str]
|
||||||
|
pgp: []
|
||||||
|
unencrypted_suffix: _unencrypted
|
||||||
|
version: 3.9.0
|
||||||
Reference in New Issue
Block a user