Compare commits
No commits in common. "main" and "upgrade-to-23.05" have entirely different histories.
main
...
upgrade-to
153 changed files with 843 additions and 9020 deletions
1
.envrc
1
.envrc
|
|
@ -1 +0,0 @@
|
||||||
use flake
|
|
||||||
10
.gitignore
vendored
10
.gitignore
vendored
|
|
@ -2,12 +2,6 @@
|
||||||
# Ignore build outputs from performing a nix-build or `nix build` command
|
# Ignore build outputs from performing a nix-build or `nix build` command
|
||||||
result
|
result
|
||||||
result-*
|
result-*
|
||||||
repl-result*
|
|
||||||
|
|
||||||
# ---> Kate
|
# I don't want to do a commit everytime that I want to update stuff
|
||||||
# Ignore kate's swap files
|
flake.lock
|
||||||
*.kate-swp
|
|
||||||
|
|
||||||
|
|
||||||
# ---> Direnv
|
|
||||||
.direnv
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
[[language]]
|
|
||||||
name = "nix"
|
|
||||||
formatter = { command = "alejandra" }
|
|
||||||
33
.justfile
33
.justfile
|
|
@ -1,33 +0,0 @@
|
||||||
# Hide the default option from the recipes list
|
|
||||||
_default: print-recipes
|
|
||||||
|
|
||||||
# Escape codes for text formatting
|
|
||||||
bold := `tput bold`
|
|
||||||
normal := `tput sgr0`
|
|
||||||
|
|
||||||
find-results:
|
|
||||||
find . -name '*result*'
|
|
||||||
|
|
||||||
print-recipes:
|
|
||||||
@just --list
|
|
||||||
|
|
||||||
update:
|
|
||||||
nix flake update
|
|
||||||
|
|
||||||
@edit-secrets:
|
|
||||||
git clone ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets.git /tmp/secrets
|
|
||||||
sed -i 's\git+ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets\/tmp/secrets\g' flake.nix
|
|
||||||
nix flake update secrets
|
|
||||||
echo "{{bold}}All done!"
|
|
||||||
echo "{{normal}}Remember to restore flake.nix"
|
|
||||||
echo ""
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
alias build := build-nixos
|
|
||||||
# Build a NixOS configuration
|
|
||||||
build-nixos host=`hostname`:
|
|
||||||
nom build .#nixosConfigurations.{{host}}.config.system.build.toplevel
|
|
||||||
|
|
||||||
# nix-diff with some parameters piped to less
|
|
||||||
nix-diff left right:
|
|
||||||
nix-diff --color=always --skip-already-compared {{left}} {{right}} | less -F
|
|
||||||
16
.vscode/settings.json
vendored
16
.vscode/settings.json
vendored
|
|
@ -1,15 +1,7 @@
|
||||||
{
|
{
|
||||||
"editor.detectIndentation": true,
|
"editor.detectIndentation": true,
|
||||||
"editor.insertSpaces": true,
|
"editor.insertSpaces": false,
|
||||||
"editor.defaultFormatter": "jnoortheen.nix-ide",
|
"editor.tabSize": 2,
|
||||||
"nix.formatterPath": "alejandra",
|
"editor.renderWhitespace": "all",
|
||||||
"nix.serverSettings": {
|
"editor.defaultFormatter": "jnoortheen.nix-ide"
|
||||||
"nil": {
|
|
||||||
"formatting": {
|
|
||||||
"command": [
|
|
||||||
"alejandra"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
608
flake.lock
generated
608
flake.lock
generated
|
|
@ -1,608 +0,0 @@
|
||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"agenix": {
|
|
||||||
"inputs": {
|
|
||||||
"darwin": [],
|
|
||||||
"home-manager": "home-manager",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-raw"
|
|
||||||
],
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1762618334,
|
|
||||||
"narHash": "sha256-wyT7Pl6tMFbFrs8Lk/TlEs81N6L+VSybPfiIgzU8lbQ=",
|
|
||||||
"owner": "ryantm",
|
|
||||||
"repo": "agenix",
|
|
||||||
"rev": "fcdea223397448d35d9b31f798479227e80183f6",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ryantm",
|
|
||||||
"repo": "agenix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"catppuccin": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765990358,
|
|
||||||
"narHash": "sha256-l8x0gU8mnYaGMl+gWrsSHKBJlZWD8KXJfHTkRlFiPI0=",
|
|
||||||
"owner": "catppuccin",
|
|
||||||
"repo": "nix",
|
|
||||||
"rev": "de1b60ca45a578f59f7d84c8d338b346017b2161",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "catppuccin",
|
|
||||||
"repo": "nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"catppuccin-konsole": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1720277724,
|
|
||||||
"narHash": "sha256-d5+ygDrNl2qBxZ5Cn4U7d836+ZHz77m6/yxTIANd9BU=",
|
|
||||||
"owner": "catppuccin",
|
|
||||||
"repo": "konsole",
|
|
||||||
"rev": "3b64040e3f4ae5afb2347e7be8a38bc3cd8c73a8",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "catppuccin",
|
|
||||||
"repo": "konsole",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"copyparty": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-raw"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1766045858,
|
|
||||||
"narHash": "sha256-lsbdHVSc5EB2+XgKDbeG1DjLLY5DnzlKQIPV0uQu/bQ=",
|
|
||||||
"owner": "9001",
|
|
||||||
"repo": "copyparty",
|
|
||||||
"rev": "0e6b167167eaf04036df8576f1ea96bc116ea951",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "9001",
|
|
||||||
"repo": "copyparty",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"eza-themes": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765813820,
|
|
||||||
"narHash": "sha256-WcwzKm2mi/tyA+zZCpyvTdrOrZ1R1ENA3t622SGzFas=",
|
|
||||||
"owner": "eza-community",
|
|
||||||
"repo": "eza-themes",
|
|
||||||
"rev": "1239cb1dd23fa8b70865550db77701b164a53cde",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "eza-community",
|
|
||||||
"repo": "eza-themes",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1678901627,
|
|
||||||
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_2": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731533236,
|
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_3": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_3"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731533236,
|
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flakey-profile": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1712898590,
|
|
||||||
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
|
|
||||||
"owner": "lf-",
|
|
||||||
"repo": "flakey-profile",
|
|
||||||
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "lf-",
|
|
||||||
"repo": "flakey-profile",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flakey-profile_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1712898590,
|
|
||||||
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
|
|
||||||
"owner": "lf-",
|
|
||||||
"repo": "flakey-profile",
|
|
||||||
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "lf-",
|
|
||||||
"repo": "flakey-profile",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"agenix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1745494811,
|
|
||||||
"narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager-unstable": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-unstable-raw"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765980955,
|
|
||||||
"narHash": "sha256-rB45jv4uwC90vM9UZ70plfvY/2Kdygs+zlQ07dGQFk4=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "89c9508bbe9b40d36b3dc206c2483ef176f15173",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-raw"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765979862,
|
|
||||||
"narHash": "sha256-/r9/1KamvbHJx6I40H4HsSXnEcBAkj46ZwibhBx9kg0=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "d3135ab747fd9dac250ffb90b4a7e80634eacbe9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"ref": "release-25.11",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"jovian": {
|
|
||||||
"inputs": {
|
|
||||||
"nix-github-actions": "nix-github-actions",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-unstable-raw"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1766067735,
|
|
||||||
"narHash": "sha256-cRC/rOYRtZNzc5y9nTccozyo/mkI4/1eFE33Aqgs+SQ=",
|
|
||||||
"owner": "Jovian-Experiments",
|
|
||||||
"repo": "Jovian-NixOS",
|
|
||||||
"rev": "34a16089be30f77ac9444907ec97c02b4b711896",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Jovian-Experiments",
|
|
||||||
"repo": "Jovian-NixOS",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lix": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765883751,
|
|
||||||
"narHash": "sha256-clrWX/t2swPGBVs50Yegq2HK3q5bbwOt3kWMsL7JIZM=",
|
|
||||||
"rev": "fc0073f54095f15ee272621d4746eb9f40946385",
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/fc0073f54095f15ee272621d4746eb9f40946385.tar.gz?rev=fc0073f54095f15ee272621d4746eb9f40946385"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://git.lix.systems/lix-project/lix/archive/main.tar.gz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lix-module": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils_2",
|
|
||||||
"flakey-profile": "flakey-profile",
|
|
||||||
"lix": [
|
|
||||||
"lix"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-raw"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1764519849,
|
|
||||||
"narHash": "sha256-XnNABKfIYKSimQVvKc9FnlC2H0LurOhd9MS6l0Z67lE=",
|
|
||||||
"rev": "6c95c0b6f73f831226453fc6905c216ab634c30f",
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/6c95c0b6f73f831226453fc6905c216ab634c30f.tar.gz?rev=6c95c0b6f73f831226453fc6905c216ab634c30f"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lix-module-unstable": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils_3",
|
|
||||||
"flakey-profile": "flakey-profile_2",
|
|
||||||
"lix": [
|
|
||||||
"lix"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-unstable-raw"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1764519849,
|
|
||||||
"narHash": "sha256-XnNABKfIYKSimQVvKc9FnlC2H0LurOhd9MS6l0Z67lE=",
|
|
||||||
"rev": "6c95c0b6f73f831226453fc6905c216ab634c30f",
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/6c95c0b6f73f831226453fc6905c216ab634c30f.tar.gz?rev=6c95c0b6f73f831226453fc6905c216ab634c30f"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-flatpak": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1754777568,
|
|
||||||
"narHash": "sha256-0bBqT+3XncgF8F03RFAamw9vdf0VmaDoIJLTGkjfQZs=",
|
|
||||||
"owner": "gmodena",
|
|
||||||
"repo": "nix-flatpak",
|
|
||||||
"rev": "62f636b87ef6050760a8cb325cadb90674d1e23e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "gmodena",
|
|
||||||
"ref": "main",
|
|
||||||
"repo": "nix-flatpak",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-github-actions": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"jovian",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1729697500,
|
|
||||||
"narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=",
|
|
||||||
"owner": "zhaofengli",
|
|
||||||
"repo": "nix-github-actions",
|
|
||||||
"rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "zhaofengli",
|
|
||||||
"ref": "matrix-name",
|
|
||||||
"repo": "nix-github-actions",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-impermanence": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1737831083,
|
|
||||||
"narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "impermanence",
|
|
||||||
"rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "impermanence",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-index-db": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-raw"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765267181,
|
|
||||||
"narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=",
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "nix-index-database",
|
|
||||||
"rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "nix-index-database",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-index-db-unstable": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-unstable-raw"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765267181,
|
|
||||||
"narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=",
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "nix-index-database",
|
|
||||||
"rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "nix-index-database",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixos-hardware": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1764440730,
|
|
||||||
"narHash": "sha256-ZlJTNLUKQRANlLDomuRWLBCH5792x+6XUJ4YdFRjtO4=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixos-hardware",
|
|
||||||
"rev": "9154f4569b6cdfd3c595851a6ba51bfaa472d9f3",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "nixos-hardware",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1763966396,
|
|
||||||
"narHash": "sha256-6eeL1YPcY1MV3DDStIDIdy/zZCDKgHdkCmsrLJFiZf0=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "5ae3b07d8d6527c42f17c876e404993199144b6a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-raw": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765838191,
|
|
||||||
"narHash": "sha256-m5KWt1nOm76ILk/JSCxBM4MfK3rYY7Wq9/TZIIeGnT8=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "c6f52ebd45e5925c188d1a20119978aa4ffd5ef6",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"ref": "nixos-25.11",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-unstable-raw": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765779637,
|
|
||||||
"narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "1306659b587dc277866c7b69eb97e5f07864d8c4",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"plasma-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"home-manager": [
|
|
||||||
"home-manager-unstable"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-unstable-raw"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1763909441,
|
|
||||||
"narHash": "sha256-56LwV51TX/FhgX+5LCG6akQ5KrOWuKgcJa+eUsRMxsc=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "plasma-manager",
|
|
||||||
"rev": "b24ed4b272256dfc1cc2291f89a9821d5f9e14b4",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "plasma-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"agenix": "agenix",
|
|
||||||
"catppuccin": "catppuccin",
|
|
||||||
"catppuccin-konsole": "catppuccin-konsole",
|
|
||||||
"copyparty": "copyparty",
|
|
||||||
"eza-themes": "eza-themes",
|
|
||||||
"home-manager": "home-manager_2",
|
|
||||||
"home-manager-unstable": "home-manager-unstable",
|
|
||||||
"jovian": "jovian",
|
|
||||||
"lix": "lix",
|
|
||||||
"lix-module": "lix-module",
|
|
||||||
"lix-module-unstable": "lix-module-unstable",
|
|
||||||
"nix-flatpak": "nix-flatpak",
|
|
||||||
"nix-impermanence": "nix-impermanence",
|
|
||||||
"nix-index-db": "nix-index-db",
|
|
||||||
"nix-index-db-unstable": "nix-index-db-unstable",
|
|
||||||
"nixos-hardware": "nixos-hardware",
|
|
||||||
"nixpkgs-raw": "nixpkgs-raw",
|
|
||||||
"nixpkgs-unstable-raw": "nixpkgs-unstable-raw",
|
|
||||||
"plasma-manager": "plasma-manager",
|
|
||||||
"secrets": "secrets",
|
|
||||||
"sops-nix": "sops-nix"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"secrets": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1766143747,
|
|
||||||
"narHash": "sha256-bG4QoCZLUDrubYFuRvxiXhycBD3R+UjrzXrNZ+qRnio=",
|
|
||||||
"ref": "refs/heads/main",
|
|
||||||
"rev": "8921f23861a82f0f8d706c276bc738ca72c053b1",
|
|
||||||
"revCount": 41,
|
|
||||||
"type": "git",
|
|
||||||
"url": "ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sops-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-unstable-raw"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765836173,
|
|
||||||
"narHash": "sha256-hWRYfdH2ONI7HXbqZqW8Q1y9IRbnXWvtvt/ONZovSNY=",
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"rev": "443a7f2e7e118c4fc63b7fae05ab3080dd0e5c63",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
||||||
267
flake.nix
Normal file → Executable file
267
flake.nix
Normal file → Executable file
|
|
@ -1,239 +1,84 @@
|
||||||
{
|
{
|
||||||
description = "Configuration for Everest";
|
description = "Configuration for Everest";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
secrets = {
|
nixpkgs.url = "nixpkgs/nixos-23.05";
|
||||||
url = "git+ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets";
|
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
nixpkgs-raw.url = "nixpkgs/nixos-25.11";
|
|
||||||
nixpkgs-unstable-raw.url = "nixpkgs/nixos-unstable";
|
|
||||||
|
|
||||||
agenix = {
|
agenix = {
|
||||||
url = "github:ryantm/agenix";
|
url = "github:ryantm/agenix";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.follows = "nixpkgs-raw";
|
nixpkgs.follows = "nixpkgs";
|
||||||
darwin.follows = ""; # Not using this on MacOS, so this doesn't pull it's dependencies
|
darwin.follows = ""; # Not using this on MacOS, so this doesn't pull it's dependencies
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
sops-nix = {
|
|
||||||
url = "github:Mic92/sops-nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager = {
|
home-manager.url = "github:nix-community/home-manager/release-23.05";
|
||||||
url = "github:nix-community/home-manager/release-25.11";
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.nixpkgs.follows = "nixpkgs-raw";
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager-unstable = {
|
nix-impermanence.url = "github:nix-community/impermanence";
|
||||||
url = "github:nix-community/home-manager/";
|
};
|
||||||
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
|
||||||
};
|
|
||||||
|
|
||||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
outputs = {nixpkgs, agenix, home-manager, nixpkgs-unstable, nix-impermanence, ... }: {
|
||||||
|
devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShell {
|
||||||
jovian = {
|
name = "Environment for toast's nixos configurations";
|
||||||
url = "github:Jovian-Experiments/Jovian-NixOS";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
|
||||||
};
|
|
||||||
|
|
||||||
nix-impermanence.url = "github:nix-community/impermanence";
|
|
||||||
|
|
||||||
copyparty.url = "github:9001/copyparty";
|
|
||||||
copyparty.inputs.nixpkgs.follows = "nixpkgs-raw";
|
|
||||||
|
|
||||||
/*
|
|
||||||
These are the same input, just following different nixpkgs versions
|
|
||||||
This avoids some wierdness when using one that follows unstable on a stable nixpkgs
|
|
||||||
*/
|
|
||||||
nix-index-db = {
|
|
||||||
url = "github:Mic92/nix-index-database";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs-raw";
|
|
||||||
};
|
|
||||||
|
|
||||||
nix-index-db-unstable = {
|
|
||||||
url = "github:Mic92/nix-index-database";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
|
||||||
};
|
|
||||||
|
|
||||||
plasma-manager = {
|
|
||||||
url = "github:nix-community/plasma-manager/";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
|
||||||
inputs.home-manager.follows = "home-manager-unstable";
|
|
||||||
};
|
|
||||||
|
|
||||||
nix-flatpak.url = "github:gmodena/nix-flatpak/main";
|
|
||||||
|
|
||||||
catppuccin.url = "github:catppuccin/nix";
|
|
||||||
|
|
||||||
lix-module = {
|
|
||||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs-raw";
|
|
||||||
inputs.lix.follows = "lix";
|
|
||||||
};
|
|
||||||
lix-module-unstable = {
|
|
||||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
|
||||||
inputs.lix.follows = "lix";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Non flake inputs / random things
|
|
||||||
lix = {
|
|
||||||
url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
eza-themes = {
|
|
||||||
url = "github:eza-community/eza-themes";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
catppuccin-konsole = {
|
|
||||||
url = "github:catppuccin/konsole";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = {...} @ inputs:
|
|
||||||
with inputs;
|
|
||||||
# Patch nixpkgs
|
|
||||||
# https://ertt.ca/nix/patch-nixpkgs/
|
|
||||||
let
|
|
||||||
nixpkgs-unstable-patched = nixpkgs-raw.legacyPackages.x86_64-linux.applyPatches {
|
|
||||||
name = "patched-nixpkgs-unstable";
|
|
||||||
src = nixpkgs-unstable-raw;
|
|
||||||
patches = [
|
|
||||||
./nixpkgs-patches/pr471291.patch
|
|
||||||
./nixpkgs-patches/revert-mangohud-update.patch
|
|
||||||
];
|
|
||||||
};
|
|
||||||
nixpkgs-patched = nixpkgs-raw.legacyPackages.x86_64-linux.applyPatches {
|
|
||||||
name = "patched-nixpkgs";
|
|
||||||
src = nixpkgs-raw;
|
|
||||||
patches = [
|
|
||||||
];
|
|
||||||
};
|
|
||||||
# https://discourse.nixos.org/t/proper-way-of-applying-patch-to-system-managed-via-flake/21073/26
|
|
||||||
nixpkgs-unstable = (import "${nixpkgs-unstable-patched}/flake.nix").outputs {self = inputs.nixpkgs-unstable-raw;};
|
|
||||||
nixpkgs = (import "${nixpkgs-patched}/flake.nix").outputs {self = inputs.nixpkgs-raw;};
|
|
||||||
in {
|
|
||||||
formatter.x86_64-linux = nixpkgs-unstable.legacyPackages.x86_64-linux.alejandra;
|
|
||||||
devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShellNoCC {
|
|
||||||
name = "toast-devshell";
|
|
||||||
# The agenix cli is not needed to activate a configuration, so instead of installing it
|
# The agenix cli is not needed to activate a configuration, so instead of installing it
|
||||||
# I'll just add it to de devShell, since that's the only real time I'm going to use it.
|
# I'll just add it to de devShell, since that's the only real time I'm going to use it.
|
||||||
packages = with nixpkgs.legacyPackages.x86_64-linux; [
|
packages = [
|
||||||
agenix.packages.x86_64-linux.default
|
agenix.packages.x86_64-linux.default
|
||||||
git
|
nixpkgs.legacyPackages.x86_64-linux.git
|
||||||
nvd
|
|
||||||
nix-output-monitor
|
|
||||||
nix-diff
|
|
||||||
just
|
|
||||||
alejandra
|
|
||||||
];
|
];
|
||||||
shellHook = ''
|
shellHook =''
|
||||||
export PS1="$PS1(toast-configs)> "
|
export PS1="$PS1(toast-configs)> "
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
overlays.default = final: prev: {
|
|
||||||
kasane-teto-cursor = final.callPackage ./pkgs/kasane-teto-cursor {};
|
nixosConfigurations = {
|
||||||
kame-editor = final.callPackage ./pkgs/kame-editor {};
|
Archie = nixpkgs-unstable.lib.nixosSystem {
|
||||||
kame-tools = final.callPackage ./pkgs/kame-tools {};
|
|
||||||
rstmcpp = final.callPackage ./pkgs/rstmcpp {};
|
|
||||||
};
|
|
||||||
packages = {
|
|
||||||
x86_64-linux = with import nixpkgs-unstable-raw {
|
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
overlays = [self.overlays.default];
|
pkgs = import nixpkgs-unstable {
|
||||||
}; {
|
|
||||||
inherit kasane-teto-cursor kame-editor kame-tools rstmcpp;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
nixosConfigurations = let
|
|
||||||
mkSystems = hosts:
|
|
||||||
builtins.mapAttrs (
|
|
||||||
host: settings: let
|
|
||||||
pkgs =
|
|
||||||
if isStable
|
|
||||||
then nixpkgs
|
|
||||||
else nixpkgs-unstable;
|
|
||||||
isStable = (settings ? stable) && (settings.stable == true);
|
|
||||||
in
|
|
||||||
mkSystem host settings.modules pkgs isStable
|
|
||||||
)
|
|
||||||
hosts;
|
|
||||||
mkSystem = host: modules: pkgs: stable:
|
|
||||||
pkgs.lib.nixosSystem {
|
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
specialArgs = {
|
config = { allowUnfree = true; }; # TODO: Find why this doesn't work
|
||||||
flakeSelf = self;
|
overlays =
|
||||||
|
let
|
||||||
|
discordOverlay = self: super: {
|
||||||
|
discord = super.discord.override {
|
||||||
|
withOpenASAR = true;
|
||||||
|
withVencord = true;
|
||||||
};
|
};
|
||||||
lib = import ./lib {nixpkgs = pkgs;};
|
|
||||||
modules =
|
|
||||||
[
|
|
||||||
agenix.nixosModules.default
|
|
||||||
sops-nix.nixosModules.sops
|
|
||||||
(
|
|
||||||
if stable
|
|
||||||
then home-manager
|
|
||||||
else home-manager-unstable
|
|
||||||
)
|
|
||||||
.nixosModules
|
|
||||||
.home-manager
|
|
||||||
(
|
|
||||||
if stable
|
|
||||||
then nix-index-db
|
|
||||||
else nix-index-db-unstable
|
|
||||||
)
|
|
||||||
.nixosModules
|
|
||||||
.nix-index
|
|
||||||
catppuccin.nixosModules.catppuccin
|
|
||||||
(
|
|
||||||
if stable
|
|
||||||
then lix-module
|
|
||||||
else lix-module-unstable
|
|
||||||
)
|
|
||||||
.nixosModules
|
|
||||||
.default
|
|
||||||
./roles/common
|
|
||||||
(./machines + "/${host}")
|
|
||||||
]
|
|
||||||
++ modules;
|
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
mkSystems {
|
[ discordOverlay ];
|
||||||
Archie.modules = [
|
};
|
||||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
|
||||||
./roles/desktop
|
|
||||||
./roles/kde
|
|
||||||
./roles/gaming
|
|
||||||
];
|
|
||||||
SurfaceGo.modules = [
|
|
||||||
nixos-hardware.nixosModules.microsoft-surface-go
|
|
||||||
./roles/desktop
|
|
||||||
./roles/kde
|
|
||||||
./machines/SurfaceGo
|
|
||||||
];
|
|
||||||
SteamDeck.modules = [
|
|
||||||
jovian.nixosModules.default
|
|
||||||
./roles/desktop
|
|
||||||
./roles/kde
|
|
||||||
./roles/gaming
|
|
||||||
];
|
|
||||||
WinMax2.modules = [
|
|
||||||
nixos-hardware.nixosModules.gpd-win-max-2-2023
|
|
||||||
./roles/desktop
|
|
||||||
./roles/kde
|
|
||||||
./roles/gaming
|
|
||||||
];
|
|
||||||
Everest = {
|
|
||||||
stable = true;
|
|
||||||
modules = [
|
modules = [
|
||||||
copyparty.nixosModules.default
|
# Needed for nix-index
|
||||||
|
{ nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; }
|
||||||
|
agenix.nixosModules.default
|
||||||
|
home-manager.nixosModule
|
||||||
|
./roles/common
|
||||||
|
./roles/desktop
|
||||||
|
./roles/kde
|
||||||
|
./machines/Archie
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
Everest = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
config = { allowUnfree = false; }; # TODO: Find why this doesn't work
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
# Needed for nix-index
|
||||||
|
{ nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; }
|
||||||
|
agenix.nixosModules.default
|
||||||
|
home-manager.nixosModule
|
||||||
|
./roles/common
|
||||||
./roles/server
|
./roles/server
|
||||||
|
./machines/Everest
|
||||||
|
./openbox.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
{nixpkgs}:
|
|
||||||
nixpkgs.lib.extend (final: prev: {
|
|
||||||
toast = let
|
|
||||||
importLib = file: import file {lib = final;};
|
|
||||||
in {
|
|
||||||
patches = importLib ./patches.nix;
|
|
||||||
networkManager = importLib ./networkManager.nix;
|
|
||||||
syncthing = importLib ./syncthing.nix;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
{lib}: {
|
|
||||||
/**
|
|
||||||
Make a NetworkManager wifi profile, to be used with ensureProfiles
|
|
||||||
*/
|
|
||||||
mkWifiProfile = {
|
|
||||||
id,
|
|
||||||
ssid,
|
|
||||||
priority ? 0,
|
|
||||||
wifi-security,
|
|
||||||
}: {
|
|
||||||
connection = {
|
|
||||||
inherit id;
|
|
||||||
type = "wifi";
|
|
||||||
autoconnect-priority = priority;
|
|
||||||
};
|
|
||||||
ipv4.method = "auto";
|
|
||||||
wifi = {
|
|
||||||
mode = "infrastructure";
|
|
||||||
inherit ssid;
|
|
||||||
};
|
|
||||||
inherit wifi-security;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
{lib}: {
|
|
||||||
/**
|
|
||||||
Get a list of patches from a path.
|
|
||||||
*/
|
|
||||||
patchesInPath = path: let
|
|
||||||
pathContents = builtins.readDir path;
|
|
||||||
filter = name: value:
|
|
||||||
(value == "regular" || value == "symlink") && lib.strings.hasSuffix ".patch" name;
|
|
||||||
filteredContents = lib.attrsets.filterAttrs filter pathContents;
|
|
||||||
patchFilenames = builtins.attrNames filteredContents;
|
|
||||||
in
|
|
||||||
builtins.map (value: lib.path.append path value) patchFilenames;
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
{lib}: let
|
|
||||||
data = import ./../syncthing.nix;
|
|
||||||
in {
|
|
||||||
devices = builtins.getAttr "devices" data;
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
# Edit this configuration file to define what should be installed on
|
# Edit this configuration file to define what should be installed on
|
||||||
# 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, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# Use grub boot loader
|
# Use grub boot loader
|
||||||
boot.loader = {
|
boot.loader = {
|
||||||
systemd-boot.enable = false;
|
systemd-boot.enable = false;
|
||||||
|
|
@ -19,17 +18,34 @@
|
||||||
};
|
};
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_latest;
|
|
||||||
|
|
||||||
networking.hostName = "Archie"; # Define your hostname.
|
networking.hostName = "Archie"; # Define your hostname.
|
||||||
|
networking.networkmanager.enable = true; # Enable networking
|
||||||
|
|
||||||
# Allow unfree packages
|
# Allow unfree packages
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "Europe/Madrid";
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
# Configure network proxy if necessary
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
console = {
|
||||||
|
keyMap = "es";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
services.xserver.enable = true;
|
||||||
|
|
||||||
|
# Enable the pipewire sound server
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
# Configure keymap in X11
|
# Configure keymap in X11
|
||||||
# services.xserver.layout = "us";
|
# services.xserver.layout = "us";
|
||||||
# services.xserver.xkbOptions = "eurosign:e,caps:escape";
|
# services.xserver.xkbOptions = "eurosign:e,caps:escape";
|
||||||
|
|
@ -44,7 +60,15 @@
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
# services.xserver.libinput.enable = true;
|
# services.xserver.libinput.enable = true;
|
||||||
|
|
||||||
hardware.bluetooth.enable = true;
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
users.users.toast = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
||||||
|
packages = with pkgs; [
|
||||||
|
firefox
|
||||||
|
tree
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
# List packages installed in system profile. To search, run:
|
||||||
# $ nix search wget
|
# $ nix search wget
|
||||||
|
|
@ -76,4 +100,6 @@
|
||||||
# (/run/current-system/configuration.nix). This is useful in case you
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
# accidentally delete configuration.nix.
|
# accidentally delete configuration.nix.
|
||||||
# system.copySystemConfiguration = true;
|
# system.copySystemConfiguration = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
|
||||||
|
|
@ -1,85 +1,42 @@
|
||||||
# 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,
|
imports =
|
||||||
lib,
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Enable support for the Xbox One wireless dongle
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
hardware.xone.enable = true;
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "nvme" "sd_mod"];
|
fileSystems."/" =
|
||||||
boot.initrd.kernelModules = ["amdgpu"];
|
{ device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||||
boot.kernelModules = ["kvm-amd"];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
boot.extraModprobeConfig = "options snd_hda_intel power_save=0";
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=@root"];
|
options = [ "subvol=@root" "compress=zstd" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/nix" = {
|
fileSystems."/nix" =
|
||||||
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
{ device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=@nix"];
|
options = [ "subvol=@nix" "compress=zstd" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" =
|
||||||
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
{ device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=@boot"];
|
options = [ "subvol=@boot" "compress=zstd" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot/efi" = {
|
fileSystems."/boot/efi" =
|
||||||
device = "/dev/disk/by-uuid/FB87-4CBC";
|
{ device = "/dev/disk/by-uuid/FB87-4CBC";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems = {
|
swapDevices = [ ];
|
||||||
/*
|
|
||||||
Mount the root subvolume of the SSD
|
|
||||||
This is helpful for getting things from
|
|
||||||
my old Arch install, as well as for running btdu
|
|
||||||
*/
|
|
||||||
"/mnt/ssd" = {
|
|
||||||
device = config.fileSystems."/".device;
|
|
||||||
fsType = config.fileSystems."/".fsType;
|
|
||||||
options = ["subvolid=5" "ro"];
|
|
||||||
};
|
|
||||||
"/mnt/hdd" = {
|
|
||||||
# device = "/dev/disk/by-id/ata-SAMSUNG_HD103SI_S1Y5J9CZA19763-part1";
|
|
||||||
label = "Archie\\x20HDD";
|
|
||||||
fsType = "bcachefs";
|
|
||||||
options = ["x-systemd.automount"];
|
|
||||||
};
|
|
||||||
"/mnt/windows" = {
|
|
||||||
device = "/dev/disk/by-uuid/B61AFDAC1AFD6A2F";
|
|
||||||
fsType = "ntfs3";
|
|
||||||
neededForBoot = false;
|
|
||||||
options = ["noauto" "windows_names"];
|
|
||||||
};
|
|
||||||
"/home" = {
|
|
||||||
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@home"];
|
|
||||||
};
|
|
||||||
"/persist" = {
|
|
||||||
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@persist"];
|
|
||||||
neededForBoot = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [];
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
# Edit this configuration file to define what should be installed on
|
# Edit this configuration file to define what should be installed on
|
||||||
# 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’).
|
||||||
{lib, ...}: {
|
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.timeout = 5;
|
boot.loader.timeout = 5;
|
||||||
|
|
@ -20,41 +23,81 @@
|
||||||
dhcpcd.enable = false;
|
dhcpcd.enable = false;
|
||||||
interfaces.eno1 = {
|
interfaces.eno1 = {
|
||||||
wakeOnLan.enable = true;
|
wakeOnLan.enable = true;
|
||||||
ipv4.addresses = [
|
ipv4.addresses = [ {
|
||||||
{
|
address = "192.168.0.160";
|
||||||
address = "192.168.1.160";
|
|
||||||
prefixLength = 24;
|
prefixLength = 24;
|
||||||
}
|
} ];
|
||||||
];
|
|
||||||
};
|
};
|
||||||
# I use networkd, so I need to declare the interface for the default gateway
|
defaultGateway = "192.168.0.1";
|
||||||
defaultGateway = {
|
nameservers = [ "8.8.8.8" ];
|
||||||
address = "192.168.1.1";
|
|
||||||
interface = "eno1";
|
|
||||||
};
|
};
|
||||||
nameservers = ["9.9.9.9"];
|
|
||||||
};
|
|
||||||
systemd.network.wait-online.extraArgs = ["--dns"];
|
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
time.timeZone = "Europe/Madrid";
|
time.timeZone = "Europe/Madrid";
|
||||||
services.automatic-timezoned.enable = lib.mkForce false;
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
i18n.extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "es_ES.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "es_ES.UTF-8";
|
||||||
|
LC_MEASUREMENT = "es_ES.UTF-8";
|
||||||
|
LC_MONETARY = "es_ES.UTF-8";
|
||||||
|
LC_NAME = "es_ES.UTF-8";
|
||||||
|
LC_NUMERIC = "es_ES.UTF-8";
|
||||||
|
LC_PAPER = "es_ES.UTF-8";
|
||||||
|
LC_TELEPHONE = "es_ES.UTF-8";
|
||||||
|
LC_TIME = "es_ES.UTF-8";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
services.xserver = {
|
||||||
|
layout = "es";
|
||||||
|
xkbVariant = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configure console keymap
|
||||||
|
console.keyMap = "es";
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
users.users.toast = {
|
users.users.toast = {
|
||||||
extraGroups = ["networkmanager" "transmission"];
|
isNormalUser = true;
|
||||||
|
description = "Toast";
|
||||||
|
extraGroups = [ "networkmanager" "wheel" "transmission"];
|
||||||
|
packages = with pkgs; [];
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC2bOVmxUNvg9qFv9DlzMmTRlzcNsyNq1F1wBuAXySwsWAzHGaO+WGdSCINxW3k2ccXn7M/o1r89LeTzRzi8sWQYCpBaIqYVszM/r7SvTS4gASyKhM6lNlyUEPOnvCXH7rdtF+fjoA1TJPv7GBk78QRhGh+eVO3qhY1m++5C1CPFlyrc6sSfgIBQJ5GQZFl/7YEgsrPo+M+0Sd7LkaCOyNmJA0Wi0BA3bbf5sJhrZVMMg/p7w+eMphz2kd1VTVjW3yeMq9zLCiu4SOTBNGCMEvKIdUZbQ83lNrqO2z1/3T1bDwJgpz3xusfkNCeNJSmhfFw5ydHEUp/9jshq38WmulKAMw2Kl/Zed62AVU7Ux7YjUkZkWvo8i3eXuLUxoG891S7cWV1/ijs9QMajOLLT14FG7RbzUYYaYlx+/iNGji9d4sp9/oMYyO45TMe+vEezFSBygP7TY0QFOr4xTi49ZRQFsszbFnGRv+k3wVKoGoeNt0xWB8pBEPFtaeHJpQyJX8= id_rsa_moon"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOeu3crGqtxwaqgoQPt5mWlC8+PL/Icvcvo0MBAaK80L Key for work laptop"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Large builds (the linux kernel) fail to build because /tmp is too small when using tmpfs
|
|
||||||
boot.tmp.useTmpfs = false;
|
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
users.toast = {config, ...}: {
|
backupFileExtension = "backup";
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
users.toast = { config, ... }: {
|
||||||
home = {
|
home = {
|
||||||
|
stateVersion = "23.05";
|
||||||
file = {
|
file = {
|
||||||
# This symlinks the Transmission downloads folder into my user's downloads folder for easy access
|
# This symlinks the Transmission downloads folder into my user's downloads folder for easy access
|
||||||
"Downloads/Transmission".source = config.lib.file.mkOutOfStoreSymlink "/var/lib/transmission/Downloads";
|
"Downloads/Transmission".source = config.lib.file.mkOutOfStoreSymlink "/var/lib/transmission/Downloads";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
xdg = {
|
||||||
|
#enable = true;
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
publicShare = null; # Disable the public folder
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# 8384 is syncthing's webui, and 22000 is syncthing related too
|
||||||
|
# No idea what 5201 and 21027 do tho
|
||||||
|
networking.firewall.allowedTCPPorts = [ 5201 8384 22000 ];
|
||||||
|
networking.firewall.allowedUDPPorts = [ 5201 22000 21027];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
|
||||||
|
|
@ -1,61 +1,29 @@
|
||||||
# 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,
|
imports =
|
||||||
lib,
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"];
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
boot.initrd.kernelModules = [];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = ["kvm-intel"];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems = {
|
fileSystems."/" =
|
||||||
"/" = {
|
{ device = "/dev/disk/by-label/Everest";
|
||||||
device = "/dev/disk/by-label/Everest";
|
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["compress=zstd" "subvol=@"];
|
|
||||||
};
|
|
||||||
"/nix" = {
|
|
||||||
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@nix-server"];
|
|
||||||
};
|
|
||||||
"/home" = {
|
|
||||||
device = "/dev/disk/by-label/Everest";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["compress=zstd" "subvol=@home"];
|
|
||||||
};
|
|
||||||
"/mnt/hdd" = {
|
|
||||||
device = "/dev/disk/by-label/Everest";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["compress=zstd" "subvol=/" "ro"];
|
|
||||||
};
|
|
||||||
"/mnt/ssd" = {
|
|
||||||
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=/" "ro"];
|
|
||||||
};
|
|
||||||
"/persist" = {
|
|
||||||
device = "/dev/disk/by-label/Everest";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["compress=zstd" "subvol=@persist"];
|
|
||||||
neededForBoot = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot/efi" = {
|
fileSystems."/boot/efi" =
|
||||||
device = "/dev/disk/by-uuid/FB87-4CBC";
|
{ device = "/dev/disk/by-label/Boot";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [];
|
swapDevices = [ ];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# 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
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
||||||
# Edit this configuration file to define what should be installed on
|
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
|
||||||
# and in the NixOS manual (accessible by running `nixos-help`).
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# Use grub boot loader
|
|
||||||
boot.loader = {
|
|
||||||
systemd-boot.enable = false;
|
|
||||||
grub = {
|
|
||||||
enable = true;
|
|
||||||
device = "nodev";
|
|
||||||
efiSupport = true;
|
|
||||||
# No other OS on here :P
|
|
||||||
useOSProber = false;
|
|
||||||
};
|
|
||||||
efi.efiSysMountPoint = config.fileSystems."efi_boot_partition".mountPoint;
|
|
||||||
};
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
networking.hostName = "SteamDeck"; # Define your hostname.
|
|
||||||
|
|
||||||
# Allow unfree packages
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
|
||||||
|
|
||||||
jovian = {
|
|
||||||
devices.steamdeck = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
# Steam Deck UI settings
|
|
||||||
steam = {
|
|
||||||
enable = true;
|
|
||||||
autoStart = true;
|
|
||||||
user = "toast";
|
|
||||||
desktopSession = "plasma";
|
|
||||||
};
|
|
||||||
decky-loader = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.displayManager.sddm.enable = lib.mkForce false;
|
|
||||||
|
|
||||||
# Enable bluetooth
|
|
||||||
hardware.bluetooth = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
# services.xserver.layout = "us";
|
|
||||||
# services.xserver.xkbOptions = "eurosign:e,caps:escape";
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
# services.printing.enable = true;
|
|
||||||
|
|
||||||
# Enable sound.
|
|
||||||
# sound.enable = true;
|
|
||||||
# hardware.pulseaudio.enable = true;
|
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
|
||||||
# services.xserver.libinput.enable = true;
|
|
||||||
|
|
||||||
# Large builds (the linux kernel) fail to build because /tmp is too small when using tmpfs
|
|
||||||
boot.tmp.useTmpfs = false;
|
|
||||||
|
|
||||||
environment.systemPackages = [pkgs.steamdeck-firmware pkgs.steamdeck-hw-theme];
|
|
||||||
# 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;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# 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;
|
|
||||||
|
|
||||||
# Copy the NixOS configuration file and link it from the resulting system
|
|
||||||
# (/run/current-system/configuration.nix). This is useful in case you
|
|
||||||
# accidentally delete configuration.nix.
|
|
||||||
# system.copySystemConfiguration = true;
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./configuration.nix
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
# 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,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
# \x20 is the escape code for a space
|
|
||||||
ssdLabel = ''Deck\\x20SSD'';
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enable support for the Xbox One wireless dongle
|
|
||||||
hardware.xone.enable = true;
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "usb_storage" "usbhid" "sd_mod" "sdhci_pci"];
|
|
||||||
boot.initrd.kernelModules = [];
|
|
||||||
boot.kernelModules = ["kvm-amd"];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
|
|
||||||
fileSystems = {
|
|
||||||
"efi_boot_partition" = {
|
|
||||||
mountPoint = "/boot/efi";
|
|
||||||
label = "deckboot";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
/*
|
|
||||||
Mount the root subvolume of the SSD
|
|
||||||
This is helpful for getting things from
|
|
||||||
my old Arch install, as well as for running btdu
|
|
||||||
*/
|
|
||||||
"btrfs_root_subvolume" = {
|
|
||||||
mountPoint = "/mnt/ssd";
|
|
||||||
label = ssdLabel;
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvolid=5" "ro"];
|
|
||||||
};
|
|
||||||
"btrfs_root" = {
|
|
||||||
mountPoint = "/";
|
|
||||||
label = ssdLabel;
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@" "compress=zstd"];
|
|
||||||
};
|
|
||||||
"btrfs_persist" = {
|
|
||||||
mountPoint = "/persist";
|
|
||||||
label = ssdLabel;
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@persist"];
|
|
||||||
neededForBoot = true;
|
|
||||||
};
|
|
||||||
"btrfs_boot" = {
|
|
||||||
mountPoint = "/boot";
|
|
||||||
label = ssdLabel;
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@boot" "compress=zstd"];
|
|
||||||
};
|
|
||||||
"btrfs_home" = {
|
|
||||||
mountPoint = "/home";
|
|
||||||
label = ssdLabel;
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@home" "compress=zstd"];
|
|
||||||
};
|
|
||||||
"btrfs_nix" = {
|
|
||||||
mountPoint = "/nix";
|
|
||||||
label = ssdLabel;
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@nix" "compress=zstd"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [];
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
|
|
@ -1,92 +0,0 @@
|
||||||
# Edit this configuration file to define what should be installed on
|
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
|
||||||
# and in the NixOS manual (accessible by running `nixos-help`).
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
boot = {
|
|
||||||
loader = {
|
|
||||||
# Use grub boot loader
|
|
||||||
systemd-boot.enable = false;
|
|
||||||
grub = {
|
|
||||||
enable = true;
|
|
||||||
device = "nodev";
|
|
||||||
efiSupport = true;
|
|
||||||
enableCryptodisk = true;
|
|
||||||
};
|
|
||||||
efi = {
|
|
||||||
efiSysMountPoint = "/boot/efi";
|
|
||||||
canTouchEfiVariables = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# I need systemd for tpm luks unlocking
|
|
||||||
initrd.systemd.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
security.tpm2.enable = true;
|
|
||||||
|
|
||||||
networking.hostName = "SurfaceGo"; # Define your hostname.
|
|
||||||
|
|
||||||
# Allow unfree packages
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
# services.xserver.layout = "us";
|
|
||||||
# services.xserver.xkbOptions = "eurosign:e,caps:escape";
|
|
||||||
|
|
||||||
console = {
|
|
||||||
# The kernel doesn't detect the scree as being HiDPI, so I need to use a bigger font
|
|
||||||
font = "ter-i32n";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
# services.printing.enable = true;
|
|
||||||
|
|
||||||
# Enable sound.
|
|
||||||
# sound.enable = true;
|
|
||||||
# hardware.pulseaudio.enable = true;
|
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
|
||||||
# services.xserver.libinput.enable = 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
|
|
||||||
# ];
|
|
||||||
|
|
||||||
# The surface kernel sometimes fails to suspend/shutdown and I got tired of fighting it
|
|
||||||
boot.kernelPackages = lib.mkForce pkgs.linuxPackages;
|
|
||||||
|
|
||||||
# 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;
|
|
||||||
|
|
||||||
# Open ports in the firewall.
|
|
||||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
|
||||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
|
||||||
# Or disable the firewall altogether.
|
|
||||||
# networking.firewall.enable = false;
|
|
||||||
|
|
||||||
# Copy the NixOS configuration file and link it from the resulting system
|
|
||||||
# (/run/current-system/configuration.nix). This is useful in case you
|
|
||||||
# accidentally delete configuration.nix.
|
|
||||||
# system.copySystemConfiguration = true;
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./configuration.nix
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
||||||
# 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,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usbhid" "rtsx_pci_sdmmc"];
|
|
||||||
boot.initrd.kernelModules = [];
|
|
||||||
boot.kernelModules = ["kvm-intel"];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
|
|
||||||
boot.initrd.luks.devices."SSD".device = "/dev/disk/by-uuid/1d8d7578-d3a1-4ea0-90ad-4257266a6caf";
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@" "compress=zstd"];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@boot" "compress=zstd"];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/nix" = {
|
|
||||||
device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@nix" "compress=zstd"];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/home" = {
|
|
||||||
device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@home" "compress=zstd"];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot/efi" = {
|
|
||||||
device = "/dev/disk/by-uuid/EC76-201F";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [];
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
|
|
@ -1,141 +0,0 @@
|
||||||
# Edit this configuration file to define what should be installed on
|
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
|
||||||
# and in the NixOS manual (accessible by running `nixos-help`).
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
boot = {
|
|
||||||
loader = {
|
|
||||||
systemd-boot.enable = false;
|
|
||||||
limine = {
|
|
||||||
enable = true;
|
|
||||||
enableEditor = true;
|
|
||||||
secureBoot.enable = true;
|
|
||||||
extraConfig = ''
|
|
||||||
timeout: 3
|
|
||||||
'';
|
|
||||||
style = {
|
|
||||||
graphicalTerminal.font.scale = "2x2";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
efi = {
|
|
||||||
efiSysMountPoint = config.fileSystems."efi_boot_partition".mountPoint;
|
|
||||||
canTouchEfiVariables = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
/*
|
|
||||||
I use luks, and the systemd initrd works better for this
|
|
||||||
Both for tpm unlocking (soon) and for plymouth
|
|
||||||
*/
|
|
||||||
initrd.systemd.enable = true;
|
|
||||||
# Plymouth doesn't support fractional scaling :(
|
|
||||||
plymouth.extraConfig = "DeviceScale=2";
|
|
||||||
|
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
|
||||||
};
|
|
||||||
catppuccin.limine.enable = true;
|
|
||||||
|
|
||||||
networking.hostName = "WinMax2"; # Define your hostname.
|
|
||||||
|
|
||||||
# Sleep fixes
|
|
||||||
boot.kernelParams = ["rtc_cmos.use_acpi_alarm=1" "panic=5"];
|
|
||||||
services.udev.extraRules = ''
|
|
||||||
ACTION=="add", SUBSYSTEM=="i2c", ATTR{name}=="GXTP7385:00", ATTR{power/wakeup}="disabled"
|
|
||||||
ACTION=="add", SUBSYSTEM=="i2c", ATTR{name}=="PNP0C50:00", ATTR{power/wakeup}="disabled"
|
|
||||||
SUBSYSTEM=="usb", ATTR{idVendor}=="2541", ATTR{idProduct}=="9711", ATTR{remove}="1"
|
|
||||||
'';
|
|
||||||
|
|
||||||
services = {
|
|
||||||
hardware.bolt.enable = true;
|
|
||||||
handheld-daemon = {
|
|
||||||
enable = true;
|
|
||||||
ui = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
user = "toast";
|
|
||||||
};
|
|
||||||
# Input plumber conflicts with hhd, and it doesn't let me use mouse mode
|
|
||||||
inputplumber.enable = lib.mkForce false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Allow unfree packages
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
|
||||||
|
|
||||||
services = {
|
|
||||||
xserver.xkb.layout = lib.mkForce "us";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable bluetooth
|
|
||||||
hardware.bluetooth = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
# services.xserver.layout = "us";
|
|
||||||
# services.xserver.xkbOptions = "eurosign:e,caps:escape";
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
# services.printing.enable = true;
|
|
||||||
home-manager.sharedModules = [
|
|
||||||
{
|
|
||||||
programs.plasma.input.keyboard.layouts = lib.mkForce [{layout = "us";} {layout = "es";}];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enable sound.
|
|
||||||
# sound.enable = true;
|
|
||||||
# hardware.pulseaudio.enable = true;
|
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
|
||||||
# services.xserver.libinput.enable = true;
|
|
||||||
|
|
||||||
# Large builds (the linux kernel) fail to build because /tmp is too small when using tmpfs
|
|
||||||
boot.tmp.useTmpfs = false;
|
|
||||||
|
|
||||||
# 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;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# 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;
|
|
||||||
|
|
||||||
# Copy the NixOS configuration file and link it from the resulting system
|
|
||||||
# (/run/current-system/configuration.nix). This is useful in case you
|
|
||||||
# accidentally delete configuration.nix.
|
|
||||||
# system.copySystemConfiguration = true;
|
|
||||||
specialisation.bootDebug.configuration = {
|
|
||||||
boot.kernelParams = [
|
|
||||||
"systemd.debug-shell=1"
|
|
||||||
"systemd.log_level=debug"
|
|
||||||
"systemd.log_target=kmsg"
|
|
||||||
"log_buf_len=1M"
|
|
||||||
"printk.devkmsg=on"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./configuration.nix
|
|
||||||
./hardware-configuration.nix
|
|
||||||
./remote-builder.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,87 +0,0 @@
|
||||||
# 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,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
# \x20 is the escape code for a space
|
|
||||||
ssdLabel = ''Win\\x20Max\\x202\\x20SSD'';
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "usbhid" "sdhci_pci"];
|
|
||||||
boot.initrd.kernelModules = [];
|
|
||||||
boot.kernelModules = ["kvm-amd"];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
|
|
||||||
boot.initrd.luks.devices = {
|
|
||||||
"SSD".device = "/dev/disk/by-label/wm2-enc";
|
|
||||||
"swap".device = "/dev/disk/by-label/wm2-swap";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems = {
|
|
||||||
"efi_boot_partition" = {
|
|
||||||
mountPoint = "/boot";
|
|
||||||
label = "winmax2boot";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
/*
|
|
||||||
Mount the root subvolume of the SSD
|
|
||||||
This is helpful for getting things from
|
|
||||||
my old Arch install, as well as for running btdu
|
|
||||||
*/
|
|
||||||
"btrfs_root_subvolume" = {
|
|
||||||
mountPoint = "/mnt/ssd";
|
|
||||||
label = ssdLabel;
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvolid=5" "ro"];
|
|
||||||
};
|
|
||||||
"btrfs_root" = {
|
|
||||||
mountPoint = "/";
|
|
||||||
label = ssdLabel;
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@"];
|
|
||||||
};
|
|
||||||
"btrfs_persist" = {
|
|
||||||
mountPoint = "/persist";
|
|
||||||
label = ssdLabel;
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@persist"];
|
|
||||||
neededForBoot = true;
|
|
||||||
};
|
|
||||||
"btrfs_home" = {
|
|
||||||
mountPoint = "/home";
|
|
||||||
label = ssdLabel;
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@home"];
|
|
||||||
};
|
|
||||||
"btrfs_nix" = {
|
|
||||||
mountPoint = "/nix";
|
|
||||||
label = ssdLabel;
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@nix"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [
|
|
||||||
{
|
|
||||||
device = "/dev/mapper/swap";
|
|
||||||
# only want to use the swap partition for hibernating
|
|
||||||
priority = 0;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware = {
|
|
||||||
cpu.amd = {
|
|
||||||
updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
ryzen-smu.enable = true;
|
|
||||||
};
|
|
||||||
sensor.iio.bmi260.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
flakeSelf,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
hostSecrets = "${flakeSelf.inputs.secrets}/" + config.networking.hostName + "/";
|
|
||||||
hostKeyPath = "/etc/ssh/winmax2_host_key";
|
|
||||||
in {
|
|
||||||
age.secrets = {
|
|
||||||
winmax2-host-key = {
|
|
||||||
file = hostSecrets + "host-private-key.age";
|
|
||||||
path = hostKeyPath;
|
|
||||||
mode = "0400";
|
|
||||||
};
|
|
||||||
"winmax2-host-key.pub" = {
|
|
||||||
file = hostSecrets + "host-public-key.age";
|
|
||||||
path = hostKeyPath + ".pub";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
users = {
|
|
||||||
groups.nixrbld = {};
|
|
||||||
users.nixrbld = {
|
|
||||||
isSystemUser = true;
|
|
||||||
useDefaultShell = true;
|
|
||||||
group = "nixrbld";
|
|
||||||
openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF8v+04ZwqHZRG8P8nxdQt+fGJfzlxHXF0F6jzENb+U6 Remote builder access key"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.settings.trusted-users = ["nixrbld"];
|
|
||||||
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
startWhenNeeded = true;
|
|
||||||
# I only want it to be accesible though tailscale
|
|
||||||
openFirewall = false;
|
|
||||||
allowSFTP = false;
|
|
||||||
settings = {
|
|
||||||
UseDns = true;
|
|
||||||
PermitRootLogin = "no";
|
|
||||||
PasswordAuthentication = false;
|
|
||||||
AllowUsers = ["nixrbld"];
|
|
||||||
};
|
|
||||||
hostKeys = [
|
|
||||||
{
|
|
||||||
path = hostKeyPath;
|
|
||||||
type = "ed25519";
|
|
||||||
comment = "Everest host key";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
networking.firewall.interfaces.tailscale0.allowedTCPPorts = [22];
|
|
||||||
}
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
From ef52b16862caa43dd4abc0aedf1814796342b664 Mon Sep 17 00:00:00 2001
|
|
||||||
From: K900 <me@0upti.me>
|
|
||||||
Date: Tue, 16 Dec 2025 11:48:37 +0300
|
|
||||||
Subject: [PATCH] kdePackages.plasma-vault: refresh patch
|
|
||||||
|
|
||||||
No idea how this happened.
|
|
||||||
---
|
|
||||||
.../plasma/plasma-vault/hardcode-paths.patch | 26 +++++++++----------
|
|
||||||
1 file changed, 13 insertions(+), 13 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch b/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch
|
|
||||||
index d8a5f4a025de3..090df77eb15b0 100644
|
|
||||||
--- a/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch
|
|
||||||
+++ b/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
diff --git a/kded/engine/backends/cryfs/cryfsbackend.cpp b/kded/engine/backends/cryfs/cryfsbackend.cpp
|
|
||||||
-index f425eb3..5b8cd43 100644
|
|
||||||
+index 64138b6..5d249aa 100644
|
|
||||||
--- a/kded/engine/backends/cryfs/cryfsbackend.cpp
|
|
||||||
+++ b/kded/engine/backends/cryfs/cryfsbackend.cpp
|
|
||||||
@@ -207,7 +207,7 @@ QProcess *CryFsBackend::cryfs(const QStringList &arguments) const
|
|
||||||
@@ -44,7 +44,7 @@ index b992f6f..eb828dd 100644
|
|
||||||
|
|
||||||
QString GocryptfsBackend::getConfigFilePath(const Device &device) const
|
|
||||||
diff --git a/kded/engine/fusebackend_p.cpp b/kded/engine/fusebackend_p.cpp
|
|
||||||
-index 8763304..e6860d2 100644
|
|
||||||
+index 714b660..61d8bf5 100644
|
|
||||||
--- a/kded/engine/fusebackend_p.cpp
|
|
||||||
+++ b/kded/engine/fusebackend_p.cpp
|
|
||||||
@@ -90,7 +90,7 @@ QProcess *FuseBackend::process(const QString &executable, const QStringList &arg
|
|
||||||
@@ -57,19 +57,19 @@ index 8763304..e6860d2 100644
|
|
||||||
|
|
||||||
FutureResult<> FuseBackend::initialize(const QString &name, const Device &device, const MountPoint &mountPoint, const Vault::Payload &payload)
|
|
||||||
diff --git a/kded/engine/vault.cpp b/kded/engine/vault.cpp
|
|
||||||
-index c101079..67c8a83 100644
|
|
||||||
+index a7a4741..773b671 100644
|
|
||||||
--- a/kded/engine/vault.cpp
|
|
||||||
+++ b/kded/engine/vault.cpp
|
|
||||||
-@@ -485,7 +485,7 @@ FutureResult<> Vault::close()
|
|
||||||
- } else {
|
|
||||||
- // We want to check whether there is an application
|
|
||||||
- // that is accessing the vault
|
|
||||||
-- AsynQt::Process::getOutput(QStringLiteral("lsof"), {QStringLiteral("-t"), mountPoint().data()}) | cast<QString>() | onError([this] {
|
|
||||||
-+ AsynQt::Process::getOutput(QStringLiteral("@lsof@"), {QStringLiteral("-t"), mountPoint().data()}) | cast<QString>() | onError([this] {
|
|
||||||
- d->updateMessage(i18n("Unable to lock the vault because an application is using it"));
|
|
||||||
- }) | onSuccess([this](const QString &result) {
|
|
||||||
- // based on ksolidnotify.cpp
|
|
||||||
-@@ -538,7 +538,7 @@ FutureResult<> Vault::forceClose()
|
|
||||||
+@@ -490,7 +490,7 @@ FutureResult<> Vault::close()
|
|
||||||
+ } else {
|
|
||||||
+ // We want to check whether there is an application
|
|
||||||
+ // that is accessing the vault
|
|
||||||
+- AsynQt::Process::getOutput(QStringLiteral("lsof"), { QStringLiteral("-t"), mountPoint().data() })
|
|
||||||
++ AsynQt::Process::getOutput(QStringLiteral("@lsof@"), { QStringLiteral("-t"), mountPoint().data() })
|
|
||||||
+ | cast<QString>()
|
|
||||||
+ | onError([this] {
|
|
||||||
+ d->updateMessage(i18n("Unable to close the vault because an application is using it"));
|
|
||||||
+@@ -546,7 +546,7 @@ FutureResult<> Vault::forceClose()
|
|
||||||
using namespace AsynQt::operators;
|
|
||||||
|
|
||||||
AsynQt::await(
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
diff --git a/pkgs/tools/graphics/mangohud/default.nix b/pkgs/tools/graphics/mangohud/default.nix
|
|
||||||
index cf83d4254baa..992afd60d3cb 100644
|
|
||||||
--- a/pkgs/tools/graphics/mangohud/default.nix
|
|
||||||
+++ b/pkgs/tools/graphics/mangohud/default.nix
|
|
||||||
@@ -24,8 +24,10 @@
|
|
||||||
unzip,
|
|
||||||
wayland,
|
|
||||||
libXNVCtrl,
|
|
||||||
+ nlohmann_json,
|
|
||||||
spdlog,
|
|
||||||
libxkbcommon,
|
|
||||||
+ glew,
|
|
||||||
glfw,
|
|
||||||
libXrandr,
|
|
||||||
x11Support ? true,
|
|
||||||
@@ -93,14 +95,14 @@ let
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
|
||||||
pname = "mangohud";
|
|
||||||
- version = "0.8.2";
|
|
||||||
+ version = "0.8.1";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "flightlessmango";
|
|
||||||
repo = "MangoHud";
|
|
||||||
tag = "v${finalAttrs.version}";
|
|
||||||
fetchSubmodules = true;
|
|
||||||
- hash = "sha256-BZ3R7D2zOlg69rx4y2FzzjpXuPOv913TOz9kSvRN+Wg=";
|
|
||||||
+ hash = "sha256-FvPhnOvcYE8vVB5R+ZRmuZxrC9U4GA338V7VAuUlHCE=";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = [
|
|
||||||
@@ -188,6 +190,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|
||||||
|
|
||||||
buildInputs = [
|
|
||||||
dbus
|
|
||||||
+ nlohmann_json
|
|
||||||
spdlog
|
|
||||||
]
|
|
||||||
++ lib.optional waylandSupport wayland
|
|
||||||
@@ -195,6 +198,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|
||||||
++ lib.optional nvidiaSupport libXNVCtrl
|
|
||||||
++ lib.optional (x11Support || waylandSupport) libxkbcommon
|
|
||||||
++ lib.optionals mangoappSupport [
|
|
||||||
+ glew
|
|
||||||
glfw
|
|
||||||
libXrandr
|
|
||||||
];
|
|
||||||
|
|
||||||
24
openbox.nix
Executable file
24
openbox.nix
Executable file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
autorun = false;
|
||||||
|
windowManager.openbox.enable = true;
|
||||||
|
};
|
||||||
|
xrdp = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
defaultWindowManager = "${pkgs.openbox}/bin/openbox-session";
|
||||||
|
#confDir = "/etc/xrdp";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
pcmanfm
|
||||||
|
obconf
|
||||||
|
firefox
|
||||||
|
gnome.gnome-calculator
|
||||||
|
alacritty
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
stdenv,
|
|
||||||
fetchFromGitLab,
|
|
||||||
qt6,
|
|
||||||
portaudio,
|
|
||||||
kame-tools,
|
|
||||||
vgmstream,
|
|
||||||
rstmcpp,
|
|
||||||
}:
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
name = "kame-editor";
|
|
||||||
version = "1.4.1";
|
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
|
||||||
owner = "beelzy";
|
|
||||||
repo = name;
|
|
||||||
# tag = version;
|
|
||||||
rev = "82c9c445644b133b6d0ce3529e65b1a3df83c804";
|
|
||||||
hash = "sha256-V2nMvVIjFRM8++XQ9tkE2OiZzCvdrg0jK69HM+ZIVyA=";
|
|
||||||
};
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
substituteInPlace kame-editor.pro \
|
|
||||||
--replace-fail "/usr/local/bin/" "$out/bin"
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildInputs = [
|
|
||||||
qt6.qtbase
|
|
||||||
portaudio
|
|
||||||
];
|
|
||||||
|
|
||||||
qtWrapperArgs = [
|
|
||||||
"--prefix PATH : ${
|
|
||||||
lib.makeBinPath [
|
|
||||||
kame-tools
|
|
||||||
vgmstream
|
|
||||||
rstmcpp
|
|
||||||
]
|
|
||||||
}"
|
|
||||||
];
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
qt6.qmake
|
|
||||||
qt6.wrapQtAppsHook
|
|
||||||
];
|
|
||||||
|
|
||||||
postBuild = ''
|
|
||||||
bash ./buildicons.sh
|
|
||||||
'';
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
mkdir -p $out/share/icons/hicolor
|
|
||||||
mkdir -p $out/share/applications
|
|
||||||
|
|
||||||
cp kame-editor.desktop $out/share/applications
|
|
||||||
cp -r icons/. $out/share/icons/hicolor
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
{
|
|
||||||
stdenv,
|
|
||||||
fetchFromGitLab,
|
|
||||||
zip,
|
|
||||||
}:
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
name = "kame-tools";
|
|
||||||
version = "a1fe47cc";
|
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
|
||||||
owner = "beelzy";
|
|
||||||
repo = name;
|
|
||||||
rev = version;
|
|
||||||
fetchSubmodules = true;
|
|
||||||
hash = "sha256-ETl5f8M4OJPFB7NEq2mVuMm4RhBtAbMzlrvGHD14zXw=";
|
|
||||||
};
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
substituteInPlace buildtools/make_base \
|
|
||||||
--replace-fail "/usr/local/bin" "$out/bin"
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/bin
|
|
||||||
cp output/linux-x86_64/* $out/bin/
|
|
||||||
'';
|
|
||||||
|
|
||||||
nativeBuildInputs = [zip];
|
|
||||||
}
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
stdenvNoCC,
|
|
||||||
fetchzip,
|
|
||||||
}:
|
|
||||||
stdenvNoCC.mkDerivation {
|
|
||||||
name = "kasane-teto-cursors";
|
|
||||||
|
|
||||||
src = fetchzip {
|
|
||||||
url = "http://dl.everest.tailscale/Kasane%20Teto%20Cursor%20-%20by%20wobb.zip";
|
|
||||||
hash = "sha256-4neZqApkK6hwufLTilUtPmgzyBih7onSdSZ9lezQbIU=";
|
|
||||||
};
|
|
||||||
|
|
||||||
dontBuild = true;
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/share/icons
|
|
||||||
cp -dr --no-preserve='ownership' $src/Linux/Kasane\ Teto $out/share/icons
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
stdenv,
|
|
||||||
fetchFromGitLab,
|
|
||||||
}:
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
name = "rstmcpp";
|
|
||||||
version = "fe8bee01";
|
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
|
||||||
owner = "beelzy";
|
|
||||||
repo = name;
|
|
||||||
rev = version;
|
|
||||||
fetchSubmodules = true;
|
|
||||||
hash = "sha256-T9mxTBj/eykvbBkbmEKTUFldtBp3cJgWAbeu44SwxiM=";
|
|
||||||
};
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/bin
|
|
||||||
cp rstmcpp $out/bin
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
@ -1,192 +1,51 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
flakeSelf,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
environment = {
|
environment = {
|
||||||
# As of the 1st of May 2023, the default packages are nano, perl, rsync and strace
|
# As of the 1st of May 2023, the default packages are nano, perl, rsync and strace
|
||||||
# I don't need any of them, so I just empty the list
|
# I don't need any of them, so I just empty the list
|
||||||
defaultPackages = [];
|
defaultPackages = [];
|
||||||
};
|
variables = {
|
||||||
|
# Environment variables go here
|
||||||
# Set up /tmp
|
EDITOR = "micro";
|
||||||
boot.tmp = {
|
|
||||||
useTmpfs = false;
|
|
||||||
# Cleaning out /tmp at boot if it's a tmpfs is quite stupid
|
|
||||||
cleanOnBoot = !config.boot.tmp.useTmpfs;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.localBinInPath = lib.mkDefault true;
|
|
||||||
|
|
||||||
# Set up zram
|
|
||||||
zramSwap = {
|
|
||||||
enable = true;
|
|
||||||
priority = 100;
|
|
||||||
memoryPercent = 60;
|
|
||||||
# zstd my beloved <3
|
|
||||||
algorithm = "zstd";
|
|
||||||
};
|
|
||||||
# zswap with zram is not a good idea
|
|
||||||
boot.kernelParams = ["zswap.enabled=0"];
|
|
||||||
|
|
||||||
# Set up keyboard layout
|
|
||||||
services.xserver.xkb.layout = "es";
|
|
||||||
|
|
||||||
# Set up console
|
|
||||||
console = {
|
|
||||||
packages = [pkgs.terminus_font];
|
|
||||||
earlySetup = true;
|
|
||||||
# mkDefault has 1000 priority, so that way I don't conflict with nixos-hardware
|
|
||||||
font = lib.mkOverride 999 "ter-i16n";
|
|
||||||
# Make the console use X's keyboard configuration
|
|
||||||
useXkbConfig = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.supportedFilesystems = ["nfs"];
|
|
||||||
|
|
||||||
security.pki.certificates = [
|
|
||||||
# Caddy
|
|
||||||
''
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIBqTCCAU+gAwIBAgIQceh0ZUBNrOmqLVsDr+2HBjAKBggqhkjOPQQDAjAzMTEw
|
|
||||||
LwYDVQQDEyhDYWRkeSAoRXZlcmVzdCkgbG9jYWwgQ0EgLSAyMDI0IEVDQyBSb290
|
|
||||||
MB4XDTI0MDcxODAwMDEwM1oXDTM0MDUyNzAwMDEwM1owMzExMC8GA1UEAxMoQ2Fk
|
|
||||||
ZHkgKEV2ZXJlc3QpIGxvY2FsIENBIC0gMjAyNCBFQ0MgUm9vdDBZMBMGByqGSM49
|
|
||||||
AgEGCCqGSM49AwEHA0IABJjrY8x6iDXncxG8exwLyaEq8N0XnCIbga8PVYiz3VLS
|
|
||||||
07++i0Dey9k68ag6KUZICfc8dX1uZ6/ozUZb4YO3xCSjRTBDMA4GA1UdDwEB/wQE
|
|
||||||
AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBTQAqZS9KeiAr9mSPV9
|
|
||||||
RIJbSvRsTzAKBggqhkjOPQQDAgNIADBFAiBIgHrD2cUfNEctVx0WzHb0cLAsrK4Q
|
|
||||||
3QbyxPLyenR+dAIhAMOIAyxlKKKvAJMOzAg0r+csSVRdP1YHsHiE7U1GeHWx
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
''
|
|
||||||
];
|
|
||||||
|
|
||||||
# Set up localisation
|
|
||||||
i18n = {
|
|
||||||
defaultLocale = "en_US.UTF-8";
|
|
||||||
supportedLocales = [
|
|
||||||
"es_US.UTF-8/UTF-8"
|
|
||||||
"es_ES.UTF-8/UTF-8"
|
|
||||||
"en_US.UTF-8/UTF-8"
|
|
||||||
];
|
|
||||||
extraLocaleSettings = {
|
|
||||||
LC_NUMERIC = "es_ES.UTF-8";
|
|
||||||
# am/pm is nice but mm/dd/yy is yucky
|
|
||||||
LC_TIME = "es_US.UTF-8";
|
|
||||||
LC_MONETARY = "es_ES.UTF-8";
|
|
||||||
LC_MEASUREMENT = "es_ES.UTF-8";
|
|
||||||
LC_PAPER = "es_ES.UTF-8";
|
|
||||||
LC_ADDRESS = "es_US.UTF-8";
|
|
||||||
LC_NAME = "es_ES.UTF-8";
|
|
||||||
LC_TELEPHONE = "es_ES.UTF-8";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
fstrim.enable = true;
|
|
||||||
fwupd.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Set up my user
|
|
||||||
users.mutableUsers = false;
|
|
||||||
users.users.toast = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "Toast";
|
|
||||||
extraGroups = ["wheel"];
|
|
||||||
hashedPasswordFile = config.sops.secrets.toast.path;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Set up time zone.
|
|
||||||
time.timeZone = lib.mkDefault "Europe/Madrid";
|
|
||||||
services.automatic-timezoned.enable = true;
|
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
flakeSelf.outputs.overlays.default
|
|
||||||
(
|
|
||||||
final: prev: {
|
|
||||||
catppuccin = prev.catppuccin.override {
|
|
||||||
accent = "mauve";
|
|
||||||
variant = "mocha";
|
|
||||||
themeList = [
|
|
||||||
"bat"
|
|
||||||
"btop"
|
|
||||||
"starship"
|
|
||||||
"grub"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
)
|
|
||||||
];
|
|
||||||
|
|
||||||
catppuccin = {
|
|
||||||
flavor = "mocha";
|
|
||||||
accent = "mauve";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.iotop.enable = true;
|
|
||||||
|
|
||||||
home-manager = {
|
|
||||||
backupFileExtension = "hm-backup";
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
verbose = true;
|
|
||||||
sharedModules = with flakeSelf; [
|
|
||||||
inputs.catppuccin.homeModules.catppuccin
|
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
|
||||||
];
|
|
||||||
users.toast = {osConfig, ...}: {
|
|
||||||
catppuccin.flavor = osConfig.catppuccin.flavor;
|
|
||||||
catppuccin.accent = osConfig.catppuccin.accent;
|
|
||||||
home.stateVersion = "25.05";
|
|
||||||
manual = {
|
|
||||||
manpages.enable = true;
|
|
||||||
html.enable = true;
|
|
||||||
};
|
|
||||||
xdg = {
|
|
||||||
enable = true;
|
|
||||||
userDirs = {
|
|
||||||
enable = true;
|
|
||||||
createDirectories = true;
|
|
||||||
publicShare = null; # Disable the public folder
|
|
||||||
};
|
|
||||||
};
|
|
||||||
systemd.user.startServices = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Set up secrets
|
# Set up secrets
|
||||||
age = {
|
age = {
|
||||||
identityPaths = [
|
identityPaths = [
|
||||||
"/persist/id_host"
|
"/etc/ssh/ssh_host_rsa_key"
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key"
|
||||||
|
# This key has a passcode, so if you need to use it you'll have to
|
||||||
|
# enter the password A LOT of times. Only on the first setup tho
|
||||||
|
"/tmp/id_ed25519_bootstrap"
|
||||||
];
|
];
|
||||||
|
# Copy (NOT SYMLINK) host ssh keys into place
|
||||||
|
secrets = {
|
||||||
|
"ed25519" = {
|
||||||
|
symlink = false;
|
||||||
|
file = ../../secrets/${config.networking.hostName}/host-key-ed25519;
|
||||||
|
path = "/etc/ssh/ssh_host_ed25519_key";
|
||||||
|
};
|
||||||
|
"rsa" = {
|
||||||
|
symlink = false;
|
||||||
|
file = ../../secrets/${config.networking.hostName}/host-key-rsa;
|
||||||
|
path= "/etc/ssh/ssh_host_rsa_key";
|
||||||
|
};
|
||||||
|
"ed25519-public" = {
|
||||||
|
symlink = false;
|
||||||
|
file = ../../secrets/${config.networking.hostName}/host-key-ed25519-public;
|
||||||
|
path = "/etc/ssh/ssh_host_ed25519_key.pub";
|
||||||
|
mode = "0644";
|
||||||
|
};
|
||||||
|
"rsa-public" = {
|
||||||
|
symlink = false;
|
||||||
|
file = ../../secrets/${config.networking.hostName}/host-key-rsa-public;
|
||||||
|
path = "/etc/ssh/ssh_host_rsa_key.pub";
|
||||||
|
mode = "0644";
|
||||||
};
|
};
|
||||||
sops = {
|
|
||||||
age.sshKeyPaths = ["/persist/id_host"];
|
|
||||||
defaultSopsFile = "${flakeSelf.inputs.secrets}/${config.networking.hostName}.yaml";
|
|
||||||
secrets.toast = {
|
|
||||||
sopsFile = "${flakeSelf.inputs.secrets}/passwd.yaml";
|
|
||||||
neededForUsers = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
catppuccin.grub.enable = true;
|
system.stateVersion = "23.05";
|
||||||
|
|
||||||
/*
|
|
||||||
I used to keep the host keys in the repo as a secret, but since I use the
|
|
||||||
host keys for decrypting too I'm not sure encrypting a key with itself
|
|
||||||
is a good idea. Now the host keys will need to be placed manually where they are needed
|
|
||||||
For first time installs they are generated by services.openssh.hostKeys on servers, and
|
|
||||||
manually on everything else
|
|
||||||
*/
|
|
||||||
|
|
||||||
system = {
|
|
||||||
stateVersion = "25.05";
|
|
||||||
# Nix on nixos 23.05 does not have dirtyRev
|
|
||||||
configurationRevision = flakeSelf.sourceInfo.rev or flakeSelf.sourceInfo.dirtyRev or "dirty";
|
|
||||||
nixos.variant_id = lib.mkDefault (lib.strings.toLower config.networking.hostName);
|
|
||||||
};
|
|
||||||
image.modules.iso = {
|
|
||||||
system.nixos.variant_id = "${lib.strings.toLower config.networking.hostName}-iso";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./programs
|
./programs
|
||||||
./services
|
./services/avahi.nix
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
{...}: {
|
|
||||||
home-manager.users.toast = {
|
|
||||||
catppuccin.atuin.enable = true;
|
|
||||||
programs.atuin = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
enter_accept = true;
|
|
||||||
workspaces = true;
|
|
||||||
filter_mode = "workspace";
|
|
||||||
style = "auto";
|
|
||||||
inline_height = 0;
|
|
||||||
stats = {
|
|
||||||
common_prefix = [
|
|
||||||
"sudo"
|
|
||||||
","
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
{...}: {
|
|
||||||
home-manager.users.toast = {...}: {
|
|
||||||
programs.bash = {
|
|
||||||
enable = true;
|
|
||||||
enableVteIntegration = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
{...}: {
|
|
||||||
home-manager = {
|
|
||||||
users.toast = {
|
|
||||||
programs.bat.enable = true;
|
|
||||||
catppuccin.bat.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
{...}: {
|
|
||||||
home-manager = {
|
|
||||||
users.toast = {
|
|
||||||
catppuccin.btop.enable = true;
|
|
||||||
programs.btop.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{...}: {
|
|
||||||
# Use nix-index-database's comma wrapper
|
|
||||||
programs.nix-index-database.comma.enable = true;
|
|
||||||
# Run programs from the system's nixpkgs
|
|
||||||
environment.variables = {COMMA_NIXPKGS_FLAKE = "system";};
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{...}: {
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
# The nixpkgs command-not-found script does not work with flakes, so I disable it
|
# The nixpkgs command-not-found script does not work with flakes, so I disable it
|
||||||
programs.command-not-found.enable = false;
|
programs.command-not-found.enable = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,22 @@
|
||||||
{pkgs, ...}: {
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./htop.nix
|
./htop.nix
|
||||||
./nix.nix
|
./nix.nix
|
||||||
./nix-index.nix
|
./nix-index.nix
|
||||||
./command-not-found.nix
|
./command-not-found.nix
|
||||||
./comma.nix
|
|
||||||
./bash.nix
|
|
||||||
./git.nix
|
|
||||||
./starship.nix
|
|
||||||
./bat.nix
|
|
||||||
./btop.nix
|
|
||||||
./helix.nix
|
|
||||||
./direnv.nix
|
|
||||||
./atuin.nix
|
|
||||||
./fish.nix
|
|
||||||
./eza.nix
|
|
||||||
];
|
];
|
||||||
# Some programs dont have a programs.*.enable option, so I install their package here
|
# Some programs dont have a programs.*.enable option, so I install their package here
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
speedtest-cli
|
speedtest-cli
|
||||||
# Bat has a home manager module, but I want it to be available system wide
|
|
||||||
bat
|
bat
|
||||||
file
|
micro
|
||||||
nvd
|
nvd
|
||||||
ncdu
|
ncdu
|
||||||
tree
|
tree
|
||||||
btdu
|
btdu
|
||||||
|
btop
|
||||||
iperf3
|
iperf3
|
||||||
restic
|
restic
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
{...}: {
|
|
||||||
home-manager.users.toast = {
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
flakeSelf,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home-manager = {
|
|
||||||
users.toast = {
|
|
||||||
programs.eza = {
|
|
||||||
enable = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
git = true;
|
|
||||||
icons = "auto";
|
|
||||||
extraOptions = [
|
|
||||||
"--group"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
xdg.configFile."eza/theme.yml".source = "${flakeSelf.inputs.eza-themes}/themes/catppuccin.yml";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
{...}: {
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.toast = {
|
|
||||||
catppuccin.fish.enable = true;
|
|
||||||
programs.fish.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
{...}: {
|
|
||||||
programs.ssh.knownHosts = {
|
|
||||||
"[git.toast003.xyz]:4222".publicKey = ''
|
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKoUcWx56NZ3kqydN3d0gLNz6SlBm1ArkHhqR9Fwd8qs
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
home-manager.users.toast = {
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
user.name = "toast";
|
|
||||||
user.email = "toast003@tutamail.com";
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
diff.colorMoved = "default";
|
|
||||||
commit.verbose = "true";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.delta = {
|
|
||||||
enable = true;
|
|
||||||
enableGitIntegration = true;
|
|
||||||
};
|
|
||||||
catppuccin.delta.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.nano.enable = false;
|
|
||||||
home-manager.users.toast = {
|
|
||||||
catppuccin.helix = {
|
|
||||||
enable = true;
|
|
||||||
useItalics = true;
|
|
||||||
};
|
|
||||||
programs.helix = {
|
|
||||||
enable = true;
|
|
||||||
defaultEditor = true;
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
nixpkgs-fmt
|
|
||||||
nil
|
|
||||||
taplo
|
|
||||||
];
|
|
||||||
settings = {
|
|
||||||
editor = {
|
|
||||||
mouse = true;
|
|
||||||
cursorline = true;
|
|
||||||
color-modes = true;
|
|
||||||
bufferline = "multiple";
|
|
||||||
statusline.mode = {
|
|
||||||
normal = "Normal";
|
|
||||||
insert = "Insert";
|
|
||||||
select = "Select";
|
|
||||||
};
|
|
||||||
indent-guides.render = true;
|
|
||||||
end-of-line-diagnostics = "hint";
|
|
||||||
inline-diagnostics.cursor-line = "warning";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
languages = {
|
|
||||||
language = [
|
|
||||||
{
|
|
||||||
name = "nix";
|
|
||||||
formatter.command = "nixpkgs-fmt";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
language-server.nil = {
|
|
||||||
config = {
|
|
||||||
flake = {
|
|
||||||
autoArchive = false;
|
|
||||||
autoEvalInputs = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{...}: {
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
programs.htop = {
|
programs.htop = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,8 @@
|
||||||
{...}: {
|
{ config, pkgs, ... }:
|
||||||
/*
|
|
||||||
|
{
|
||||||
environment.systemPackages = [ pkgs.nix-index ];
|
environment.systemPackages = [ pkgs.nix-index ];
|
||||||
programs.bash.interactiveShellInit = ''
|
programs.bash.interactiveShellInit = ''
|
||||||
source ${pkgs.nix-index}/etc/profile.d/command-not-found.sh
|
source ${pkgs.nix-index}/etc/profile.d/command-not-found.sh
|
||||||
'';
|
'';
|
||||||
*/
|
|
||||||
programs.nix-index = {
|
|
||||||
enable = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
# I don't use zsh or fish (yet)
|
|
||||||
enableZshIntegration = false;
|
|
||||||
enableFishIntegration = false;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,61 +1,14 @@
|
||||||
|
{ config, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
flakeSelf,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
age.secrets = {
|
|
||||||
remoteBuilderKey.file = "${flakeSelf.inputs.secrets}/WinMax2/nixrbld-private-key.age";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.ssh = {
|
|
||||||
knownHosts.winmax2.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPE+ksvEq/I2LMLOztVXpLE9yuI6EkRh4EtXdlYkhl6C WinMax2 host key";
|
|
||||||
extraConfig = ''
|
|
||||||
Host nixrbld
|
|
||||||
HostName winmax2
|
|
||||||
IdentitiesOnly yes
|
|
||||||
IdentityFile ${config.age.secrets.remoteBuilderKey.path}
|
|
||||||
User nixrbld
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
system.tools.nixos-option.enable = false;
|
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
settings = {
|
extraOptions = ''
|
||||||
auto-optimise-store = true;
|
experimental-features = nix-command flakes
|
||||||
experimental-features = "nix-command flakes";
|
'';
|
||||||
};
|
|
||||||
distributedBuilds = true;
|
|
||||||
# Don't use remote builder on the remote builder
|
|
||||||
buildMachines = lib.mkIf (config.networking.hostName != "WinMax2") [
|
|
||||||
{
|
|
||||||
hostName = "nixrbld";
|
|
||||||
system = "x86_64-linux";
|
|
||||||
protocol = "ssh-ng";
|
|
||||||
maxJobs = 4;
|
|
||||||
supportedFeatures = [
|
|
||||||
"big-parallel"
|
|
||||||
"kvm"
|
|
||||||
"nixos-test"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
optimise = {
|
|
||||||
automatic = true;
|
|
||||||
dates = ["weekly"];
|
|
||||||
};
|
|
||||||
registry = {
|
registry = {
|
||||||
agenix = {
|
agenix = {
|
||||||
from = {
|
from = { id = "agenix"; type = "indirect"; };
|
||||||
id = "agenix";
|
to = { owner = "ryantm"; repo = "agenix"; type = "github"; };
|
||||||
type = "indirect";
|
|
||||||
};
|
|
||||||
to = {
|
|
||||||
owner = "ryantm";
|
|
||||||
repo = "agenix";
|
|
||||||
type = "github";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
{...}: {
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
presets = [
|
|
||||||
"nerd-font-symbols"
|
|
||||||
];
|
|
||||||
settings = {
|
|
||||||
nix_shell = {
|
|
||||||
disabled = false;
|
|
||||||
heuristic = true;
|
|
||||||
};
|
|
||||||
os = {
|
|
||||||
disabled = false;
|
|
||||||
};
|
|
||||||
directory = {
|
|
||||||
disabled = false;
|
|
||||||
truncation_length = 6;
|
|
||||||
truncation_symbol = ".../";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# The catppuccin module only works for home-manager, so this
|
|
||||||
# sets up starship with home-manager using the system config
|
|
||||||
# home-manager.users.toast = {osConfig, ...}: {
|
|
||||||
# programs.starship = {
|
|
||||||
# enable = false;
|
|
||||||
# catppuccin.enable = true;
|
|
||||||
# settings = osConfig.programs.starship.settings;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
{config, ...}: {
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
services.avahi = {
|
services.avahi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
nssmdns4 = true;
|
nssmdns = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./avahi.nix
|
|
||||||
./tailscale.nix
|
|
||||||
./syncthing.nix
|
|
||||||
./kmscon.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
services.kmscon = {
|
|
||||||
enable = true;
|
|
||||||
useXkbConfig = true;
|
|
||||||
fonts = [
|
|
||||||
{
|
|
||||||
name = "JetBrains Mono Nerd Font";
|
|
||||||
package = pkgs.nerd-fonts.jetbrains-mono;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
extraConfig = ''
|
|
||||||
term=xterm-256color
|
|
||||||
font-size=10
|
|
||||||
'';
|
|
||||||
package = pkgs.kmscon.overrideAttrs (old: {
|
|
||||||
patches =
|
|
||||||
old.patches
|
|
||||||
++ [
|
|
||||||
# https://github.com/kmscon/kmscon/issues/133
|
|
||||||
(
|
|
||||||
pkgs.fetchpatch {
|
|
||||||
url = "https://github.com/Aetf/kmscon/pull/135.patch";
|
|
||||||
hash = "sha256-hJrKkONdQmz9gGMXbk11+4MF8Vn4guE3Bl1Ni6SGDw4=";
|
|
||||||
}
|
|
||||||
)
|
|
||||||
];
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
flakeSelf,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
hostSecrets = "${flakeSelf.inputs.secrets}/" + config.networking.hostName;
|
|
||||||
in {
|
|
||||||
# Get secrets
|
|
||||||
age.secrets = {
|
|
||||||
syncthingKey.file = hostSecrets + "/syncthingKey.age";
|
|
||||||
syncthingCert.file = hostSecrets + "/syncthingCert.age";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.syncthing = {
|
|
||||||
key = config.age.secrets.syncthingKey.path;
|
|
||||||
cert = config.age.secrets.syncthingCert.path;
|
|
||||||
overrideDevices = true;
|
|
||||||
overrideFolders = true;
|
|
||||||
openDefaultPorts = true;
|
|
||||||
settings = {
|
|
||||||
options = {
|
|
||||||
urAccepted = 3;
|
|
||||||
};
|
|
||||||
# Set up devices and folders common to every device
|
|
||||||
devices = lib.toast.syncthing.devices;
|
|
||||||
folders = {
|
|
||||||
"passwords" = {
|
|
||||||
label = "KeePassXC Passwords";
|
|
||||||
id = "rdyaq-ex659";
|
|
||||||
devices = ["phone" "pc" "steamdeck" "server" "surface" "winmax2"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
networking.firewall = {
|
|
||||||
allowedTCPPorts = [22000];
|
|
||||||
allowedUDPPorts = [22000 21027];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
{lib, ...}: {
|
|
||||||
services.tailscale = {
|
|
||||||
enable = true;
|
|
||||||
useRoutingFeatures = lib.mkDefault "client";
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.tailscaled.environment = {
|
|
||||||
TS_NO_LOGS_NO_SUPPORT = "true";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
# Enable scanning
|
|
||||||
hardware.sane = {
|
|
||||||
enable = true;
|
|
||||||
extraBackends = [pkgs.sane-airscan];
|
|
||||||
};
|
|
||||||
users.users.toast.extraGroups = ["scanner"];
|
|
||||||
|
|
||||||
services.xserver.enable = true;
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
daemonIOSchedClass = "idle";
|
|
||||||
daemonCPUSchedPolicy = "idle";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Set up fonts
|
|
||||||
fonts.packages = with pkgs.nerd-fonts; [
|
|
||||||
hack
|
|
||||||
jetbrains-mono
|
|
||||||
|
|
||||||
# Japanese fonts
|
|
||||||
pkgs.noto-fonts-cjk-sans
|
|
||||||
pkgs.noto-fonts-cjk-serif
|
|
||||||
];
|
|
||||||
|
|
||||||
# Already use electron apps (discord) so this only adds 20 mb more
|
|
||||||
environment.systemPackages = [pkgs.tetrio-desktop];
|
|
||||||
|
|
||||||
hardware.keyboard.qmk.enable = true;
|
|
||||||
home-manager.users.toast.home.packages = [pkgs.qmk];
|
|
||||||
|
|
||||||
home-manager.users.toast.xdg.autostart.enable = true;
|
|
||||||
|
|
||||||
boot.plymouth.enable = true;
|
|
||||||
}
|
|
||||||
8
roles/desktop/default.nix
Normal file → Executable file
8
roles/desktop/default.nix
Normal file → Executable file
|
|
@ -1,7 +1,7 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./services
|
./discord.nix
|
||||||
./programs
|
|
||||||
./configuration.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
19
roles/desktop/discord.nix
Normal file
19
roles/desktop/discord.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# TODO: Find out why this does not do anything. If I put this
|
||||||
|
# on flake.nix it does work, so it's not completely wrong.
|
||||||
|
/* nixpkgs.overlays =
|
||||||
|
let
|
||||||
|
discordOverlay = self: super: {
|
||||||
|
discord = super.discord.override {
|
||||||
|
withOpenASAR = true;
|
||||||
|
withVencord = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
[ discordOverlay ]; */
|
||||||
|
users.users.toast.packages = with pkgs; [
|
||||||
|
discord
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{...}: {
|
|
||||||
programs.appimage = {
|
|
||||||
enable = true;
|
|
||||||
binfmt = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./discord.nix
|
|
||||||
./firefox.nix
|
|
||||||
./keepassxc.nix
|
|
||||||
./jamesdsp.nix
|
|
||||||
./git.nix
|
|
||||||
./ssh.nix
|
|
||||||
./appimage.nix
|
|
||||||
./mpv.nix
|
|
||||||
./sysdvr-qt.nix
|
|
||||||
./spotify.nix
|
|
||||||
./distrobox.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
{pkgs, ...}: let
|
|
||||||
discordOverlay = _self: super: {
|
|
||||||
discord = super.discord.override {
|
|
||||||
withOpenASAR = true;
|
|
||||||
withVencord = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
nixpkgs.overlays = [discordOverlay];
|
|
||||||
home-manager.users.toast = {
|
|
||||||
catppuccin.vesktop.enable = true;
|
|
||||||
programs.vesktop = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
arRPC = true;
|
|
||||||
minimizeToTray = true;
|
|
||||||
discordBranch = "stable";
|
|
||||||
customTitleBar = true;
|
|
||||||
spellCheckLanguages = ["en-US" "en" "es"];
|
|
||||||
enableMenu = false;
|
|
||||||
};
|
|
||||||
vencord = {
|
|
||||||
settings = {
|
|
||||||
plugins = {
|
|
||||||
BetterGifPicker.enabled = true;
|
|
||||||
BetterSettings.enabled = true;
|
|
||||||
CallTimer.enabled = true;
|
|
||||||
ClearURLs.enabled = true;
|
|
||||||
FakeNitro.enabled = true;
|
|
||||||
FixSpotifyEmbeds.enabled = true;
|
|
||||||
FixYoutubeEmbeds.enabled = true;
|
|
||||||
FriendsSince.enabled = true;
|
|
||||||
iLoveSpam.enabled = true;
|
|
||||||
LoadingQuotes = {
|
|
||||||
enabled = true;
|
|
||||||
enableDiscordPresetQuotes = true;
|
|
||||||
};
|
|
||||||
MessageClickActions.enabled = true;
|
|
||||||
MessageLinkEmbeds.enabled = true;
|
|
||||||
MessageLogger.enabled = true;
|
|
||||||
Moyai = {
|
|
||||||
enabled = true;
|
|
||||||
volume = 1;
|
|
||||||
quality = "HD";
|
|
||||||
};
|
|
||||||
OpenInApp.enabled = true;
|
|
||||||
petpet.enabled = true;
|
|
||||||
PlatformIndicators.enabled = true;
|
|
||||||
ShowHiddenChannels.enabled = true;
|
|
||||||
ShowHiddenThings.enabled = true;
|
|
||||||
SpotifyControls.enabled = true;
|
|
||||||
Translate.enabled = true;
|
|
||||||
YoutubeAdblock.enabled = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
{...}: {
|
|
||||||
virtualisation.podman = {
|
|
||||||
# Due to limitations with home-manager, podman has to be available system wide
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
home-manager.users.toast = {
|
|
||||||
programs.distrobox = {
|
|
||||||
enable = true;
|
|
||||||
containers = {
|
|
||||||
uav = {
|
|
||||||
image = "quay.io/toolbx/ubuntu-toolbox:24.04";
|
|
||||||
# additional_packages = "lsb-release dmidecode git";
|
|
||||||
additional_packages = "git";
|
|
||||||
init_hooks = [
|
|
||||||
"git clone https://github.com/PX4/PX4-Autopilot.git --recursive /tmp/px4"
|
|
||||||
"cd /tmp/px4/Tools/setup/"
|
|
||||||
# The install scripts wants to add things to .bashrc, so it errors out
|
|
||||||
# This removes the line that does that
|
|
||||||
"sed -i '181d' ubuntu.sh"
|
|
||||||
"bash ubuntu.sh"
|
|
||||||
"rm -rf /tmp/px4 --one-file-system"
|
|
||||||
];
|
|
||||||
entry = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,147 +0,0 @@
|
||||||
{lib, ...}: {
|
|
||||||
home-manager.sharedModules = [
|
|
||||||
{
|
|
||||||
# System wide firefox settings
|
|
||||||
programs.firefox = {
|
|
||||||
enable = true;
|
|
||||||
policies = {
|
|
||||||
DisableTelemetry = true;
|
|
||||||
GenerativeAI = {
|
|
||||||
Chatbot = false;
|
|
||||||
LinkPreviews = false;
|
|
||||||
TabGroups = false;
|
|
||||||
Locked = true;
|
|
||||||
};
|
|
||||||
# You need these for Spotify
|
|
||||||
EncryptedMediaExtensions.Enabled = true;
|
|
||||||
ExtensionSettings = {
|
|
||||||
# TODO: Install extensions the NUR instead of from AMO
|
|
||||||
"uBlock0@raymondhill.net" = {
|
|
||||||
installation_mode = "force_installed";
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
|
||||||
};
|
|
||||||
# Decentraleyes
|
|
||||||
"jid1-BoFifL9Vbdl2zQ@jetpack" = {
|
|
||||||
installation_mode = "normal_installed";
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/decentraleyes/latest.xpi";
|
|
||||||
};
|
|
||||||
"jid1-MnnxcxisBPnSXQ@jetpack" = {
|
|
||||||
installation_mode = "normal_installed";
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
|
|
||||||
};
|
|
||||||
# Uninstall undeclared extensions
|
|
||||||
"*" = {
|
|
||||||
installation_mode = "blocked";
|
|
||||||
blocked_install_message = "Extensions are managed by home-manager";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
Preferences = {
|
|
||||||
# Enable video hardware acceleration
|
|
||||||
"media.ffmpeg.vaapi.enabled" = {
|
|
||||||
Value = true;
|
|
||||||
Status = "default";
|
|
||||||
};
|
|
||||||
"dom.security.https_only_mode" = {
|
|
||||||
Value = true;
|
|
||||||
Status = "locked";
|
|
||||||
};
|
|
||||||
"browser.ml.chat.page" = {
|
|
||||||
Value = false;
|
|
||||||
Status = "Locked";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
PromptForDownloadLocation = true;
|
|
||||||
# I use an external password manager, so the built in one just bothers me
|
|
||||||
PasswordManagerEnabled = false;
|
|
||||||
Permissions = {
|
|
||||||
Autoplay = {
|
|
||||||
Allow = [
|
|
||||||
"https://www.youtube.com"
|
|
||||||
"https://sync-tube.de"
|
|
||||||
];
|
|
||||||
Default = "block-audio-video";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
FirefoxHome.SponsoredTopSites = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
# Per-user settings
|
|
||||||
home-manager.users.toast = {
|
|
||||||
programs.firefox.policies = {
|
|
||||||
DisablePocket = true;
|
|
||||||
ExtensionSettings = {
|
|
||||||
"sponsorBlocker@ajay.app" = {
|
|
||||||
installation_mode = "normal_installed";
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi";
|
|
||||||
};
|
|
||||||
"@testpilot-containers" = {
|
|
||||||
installation_mode = "normal_installed";
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/multi-account-containers/latest.xpi";
|
|
||||||
};
|
|
||||||
"{5cce4ab5-3d47-41b9-af5e-8203eea05245}" = {
|
|
||||||
installation_mode = "normal_installed";
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/control-panel-for-twitter/latest.xpi";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
Preferences = {
|
|
||||||
"general.smoothScroll.msdPhysics.enabled" = {
|
|
||||||
Value = true;
|
|
||||||
Status = "default";
|
|
||||||
};
|
|
||||||
"browser.ctrlTab.sortByRecentlyUsed" = {
|
|
||||||
Value = true;
|
|
||||||
Status = "default";
|
|
||||||
};
|
|
||||||
# This should be set automatically, but it isn't for some reason
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.enabled" = {
|
|
||||||
Value = false;
|
|
||||||
Status = "locked";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.firefox.profiles = {
|
|
||||||
personal = {
|
|
||||||
name = "Personal";
|
|
||||||
id = 0;
|
|
||||||
isDefault = true;
|
|
||||||
containersForce = true;
|
|
||||||
containers = {
|
|
||||||
work = {
|
|
||||||
name = "Work";
|
|
||||||
id = 1;
|
|
||||||
icon = "briefcase";
|
|
||||||
color = "green";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extensions.force = true;
|
|
||||||
extensions.settings = {
|
|
||||||
"@testpilot-containers".settings = {
|
|
||||||
onboarding-stage = 8;
|
|
||||||
"siteContainerMap@@_teams.microsoft.com" = {
|
|
||||||
userContextId = "1";
|
|
||||||
neverAsk = false;
|
|
||||||
identityMacAddonUUID = "b50e5b1e-6f3b-4245-8eac-5654d889156e";
|
|
||||||
};
|
|
||||||
"siteContainerMap@@_outlook.office.com" = {
|
|
||||||
userContextId = "1";
|
|
||||||
neverAsk = false;
|
|
||||||
identityMacAddonUUID = "b50e5b1e-6f3b-4245-8eac-5654d889156e";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# Control panel for twitter
|
|
||||||
"{5cce4ab5-3d47-41b9-af5e-8203eea05245}".settings = {
|
|
||||||
hideForYouTimeline = false;
|
|
||||||
alwaysUseLatestTweets = false;
|
|
||||||
retweets = "ignore";
|
|
||||||
restoreOtherInteractionLinks = true;
|
|
||||||
navBaseFontSize = false;
|
|
||||||
followButtonStyle = "themed";
|
|
||||||
hideSidebarContent = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
home-manager.users.toast = {
|
|
||||||
programs.git = {
|
|
||||||
package = pkgs.gitFull;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
home-manager.users.toast = {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
jamesdsp
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
home-manager = {
|
|
||||||
users.toast = {
|
|
||||||
programs.keepassxc = {
|
|
||||||
enable = true;
|
|
||||||
autostart = true;
|
|
||||||
settings = {
|
|
||||||
General = {
|
|
||||||
# Not sure what changing this does, I'll leave it alone
|
|
||||||
ConfigVersion = 2;
|
|
||||||
MinimizeAfterUnlock = true;
|
|
||||||
AutoSaveAfterEveryChange = false;
|
|
||||||
};
|
|
||||||
GUI = {
|
|
||||||
ApplicationTheme = "classic";
|
|
||||||
MinimizeOnStartup = false;
|
|
||||||
MinimizeOnClose = true;
|
|
||||||
MinimizeToTray = true;
|
|
||||||
ShowTrayIcon = true;
|
|
||||||
# 0 is icons, 1 is text, 2 is text next to icons, 3 is text under icons, and 4 is follow style
|
|
||||||
ToolButtonStyle = 0; # Would choose 4 but it's too big for a small window
|
|
||||||
# monochrome-light, monochrome-dark or colorful
|
|
||||||
TrayIconAppearance = "monochrome-light";
|
|
||||||
};
|
|
||||||
Security = {
|
|
||||||
HideNotes = true;
|
|
||||||
IconDownloadFallback = true;
|
|
||||||
};
|
|
||||||
SSHAgent.Enabled = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
(
|
|
||||||
final: prev: {
|
|
||||||
mpv-unwrapped = prev.mpv-unwrapped.override {
|
|
||||||
cddaSupport = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
)
|
|
||||||
];
|
|
||||||
home-manager.users.toast = {
|
|
||||||
programs.mpv = {
|
|
||||||
enable = true;
|
|
||||||
scripts = with pkgs.mpvScripts; [
|
|
||||||
mpris
|
|
||||||
];
|
|
||||||
config = {
|
|
||||||
hwdec = "auto";
|
|
||||||
cache = true;
|
|
||||||
cdda-speed = "8";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
home-manager.users.toast = {
|
|
||||||
home.packages = [pkgs.spotify];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
{...}: {
|
|
||||||
programs.ssh.knownHosts = {
|
|
||||||
everest = {
|
|
||||||
hostNames = [
|
|
||||||
"everest.tailscale"
|
|
||||||
"toast003.xyz"
|
|
||||||
];
|
|
||||||
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAqfABZKnF5YYGZTOKuT7m+sOnUqBQSvLke9c3JDsF5s";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.toast = {
|
|
||||||
programs.ssh = {
|
|
||||||
enable = true;
|
|
||||||
enableDefaultConfig = false;
|
|
||||||
matchBlocks = {
|
|
||||||
"everest" = {
|
|
||||||
host = "toast003.xyz";
|
|
||||||
hostname = "toast003.xyz";
|
|
||||||
forwardAgent = true;
|
|
||||||
sendEnv = ["COLORTERM"];
|
|
||||||
port = 69;
|
|
||||||
};
|
|
||||||
"everest-tailscale" = {
|
|
||||||
host = "everest";
|
|
||||||
hostname = "everest.tailscale";
|
|
||||||
forwardAgent = true;
|
|
||||||
sendEnv = ["COLORTERM"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
{...}: {
|
|
||||||
services.udev.extraRules = ''
|
|
||||||
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee0", MODE="0666"
|
|
||||||
'';
|
|
||||||
home-manager.users.toast.services.flatpak = {
|
|
||||||
packages = ["io.github.parnassius.SysDVR-Qt"];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./ssh-agent.nix
|
|
||||||
./flatpak.nix
|
|
||||||
./syncthing.nix
|
|
||||||
./pipewire.nix
|
|
||||||
./printing.nix
|
|
||||||
./networkmanager.nix
|
|
||||||
./tailscale.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
{flakeSelf, ...}: {
|
|
||||||
services.flatpak.enable = true;
|
|
||||||
|
|
||||||
home-manager = {
|
|
||||||
sharedModules = [{imports = [flakeSelf.inputs.nix-flatpak.homeManagerModules.nix-flatpak];}];
|
|
||||||
users.toast = {
|
|
||||||
services.flatpak = {
|
|
||||||
packages = ["tv.plex.PlexDesktop"];
|
|
||||||
uninstallUnmanaged = true;
|
|
||||||
update.auto = {
|
|
||||||
enable = true;
|
|
||||||
onCalendar = "weekly";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
flakeSelf,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
tailscaleName = config.services.tailscale.interfaceName;
|
|
||||||
in {
|
|
||||||
sops.secrets.wifiPasswords = {
|
|
||||||
sopsFile = "${flakeSelf.inputs.secrets}/wifi-passwords.env";
|
|
||||||
format = "dotenv";
|
|
||||||
};
|
|
||||||
networking.networkmanager = {
|
|
||||||
enable = true;
|
|
||||||
unmanaged = [
|
|
||||||
"interface-name:${tailscaleName}"
|
|
||||||
];
|
|
||||||
ensureProfiles = {
|
|
||||||
environmentFiles = [config.sops.secrets.wifiPasswords.path];
|
|
||||||
profiles = with lib.toast.networkManager; {
|
|
||||||
"4g-modem" = mkWifiProfile {
|
|
||||||
id = "4G Modem";
|
|
||||||
priority = 5;
|
|
||||||
ssid = "TP-Link_CCB4";
|
|
||||||
wifi-security = {
|
|
||||||
auth-alg = "open";
|
|
||||||
key-mgmt = "wpa-psk";
|
|
||||||
psk = "$MODEM";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
phone = mkWifiProfile {
|
|
||||||
id = "Phone";
|
|
||||||
priority = 5;
|
|
||||||
ssid = "Redmi Note 10 Pro_5197";
|
|
||||||
wifi-security = {
|
|
||||||
auth-alg = "open";
|
|
||||||
key-mgmt = "sae";
|
|
||||||
psk = "$PHONE";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home = mkWifiProfile {
|
|
||||||
id = "Home";
|
|
||||||
ssid = "MOVISTAR-WIFI6-DC98";
|
|
||||||
wifi-security = {
|
|
||||||
key-mgmt = "sae";
|
|
||||||
psk = "$HOME";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
{...}: {
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# This allows pipewire to get realtime priority, which (hopefully) gets rid of stutters
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{...}: {
|
|
||||||
services.printing = {
|
|
||||||
enable = true;
|
|
||||||
startWhenNeeded = true;
|
|
||||||
stateless = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{...}: {
|
|
||||||
programs.ssh.startAgent = true;
|
|
||||||
/*
|
|
||||||
Home assistant added an option that does this
|
|
||||||
https://github.com/nix-community/home-manager/commit/2d9210f25ed18d5d4e11e6b886de4027c0c51a94
|
|
||||||
but since I still need to fix home-manager's envvars not applying I'll stick to the NixOS one
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
TODO: fix SSH_AUTH_SOCK not being set in Plasma
|
|
||||||
Turns out the NixOS module also has issues :3
|
|
||||||
The env is set but only in bash, not in the DE, so
|
|
||||||
keepass can't pick it up. For now I'll just set it manually
|
|
||||||
*/
|
|
||||||
home-manager.users.toast.xdg.configFile."plasma-workspace/env/ssh-agent.sh".text = ''
|
|
||||||
if [[ -z "$SSH_AUTH_SOCK" ]]; then
|
|
||||||
export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
@ -1,57 +0,0 @@
|
||||||
{config, ...}: {
|
|
||||||
services.syncthing = {
|
|
||||||
# enable = true;
|
|
||||||
# user = "toast";
|
|
||||||
# group = "users";
|
|
||||||
# dataDir = config.users.users.toast.home;
|
|
||||||
settings.folders."passwords".path = "~/Documents/Passwords";
|
|
||||||
};
|
|
||||||
age.secrets = {
|
|
||||||
syncthingCert = {
|
|
||||||
owner = "toast";
|
|
||||||
group = "users";
|
|
||||||
};
|
|
||||||
syncthingKey = {
|
|
||||||
owner = "toast";
|
|
||||||
group = "users";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home-manager.users.toast = {
|
|
||||||
osConfig,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
systemConfig = osConfig.services.syncthing;
|
|
||||||
missingOptions = [
|
|
||||||
"all_proxy"
|
|
||||||
"configDir"
|
|
||||||
"dataDir"
|
|
||||||
"databaseDir"
|
|
||||||
"declarative"
|
|
||||||
"devices"
|
|
||||||
"folders"
|
|
||||||
"extraFlags"
|
|
||||||
"user"
|
|
||||||
"group"
|
|
||||||
"systemService"
|
|
||||||
"openDefaultPorts"
|
|
||||||
"options"
|
|
||||||
"relay"
|
|
||||||
"useInotify"
|
|
||||||
"guiPasswordFile"
|
|
||||||
];
|
|
||||||
removeMissingOptions = rawOptions: (
|
|
||||||
# lib.attrsets.filterAttrs (n: v: n == "all_proxy") rawOptions
|
|
||||||
builtins.removeAttrs rawOptions missingOptions
|
|
||||||
);
|
|
||||||
in {
|
|
||||||
services.syncthing =
|
|
||||||
removeMissingOptions systemConfig
|
|
||||||
// {
|
|
||||||
enable = true;
|
|
||||||
# Renamed options
|
|
||||||
allProxy = systemConfig.all_proxy;
|
|
||||||
extraOptions = systemConfig.extraFlags;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
home-manager.users.toast = {
|
|
||||||
services.tailscale-systray = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.tailscale.overrideAttrs {
|
|
||||||
postPatch = ''
|
|
||||||
substituteInPlace client/systray/logo.go --replace-fail \
|
|
||||||
"color.NRGBA{0, 0, 0, 255}" "color.NRGBA{0, 0, 0, 0}"
|
|
||||||
'';
|
|
||||||
# Only use this for the tray, so no testing is needed
|
|
||||||
# Makes the build last a lot less too
|
|
||||||
doCheck = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
imports = [
|
|
||||||
./programs
|
|
||||||
./services
|
|
||||||
];
|
|
||||||
system.replaceDependencies.replacements = [
|
|
||||||
{
|
|
||||||
oldDependency = pkgs.sdl3;
|
|
||||||
newDependency = pkgs.sdl3.overrideAttrs {
|
|
||||||
patches = [
|
|
||||||
./sdl-keychron-blacklist.patch
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
# nixpkgs.overlays = [
|
|
||||||
# (
|
|
||||||
# final: prev: {
|
|
||||||
# azahar = prev.azahar.overrideAttrs (old: {
|
|
||||||
# version = "2120.3";
|
|
||||||
# src = final.fetchzip {
|
|
||||||
# url = "https://github.com/azahar-emu/azahar/releases/download/2120.3/azahar-unified-source-20250414-00e3bbb.tar.xz";
|
|
||||||
# hash = "sha256-3QKicmpmWDM7x9GDJ8sxm2Xu+0Yfho4LkSWMp+ixzRk=";
|
|
||||||
# };
|
|
||||||
# });
|
|
||||||
# }
|
|
||||||
# )
|
|
||||||
# ];
|
|
||||||
home-manager.users.toast = {
|
|
||||||
home.packages = [pkgs.azahar];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
home-manager.users.toast = {
|
|
||||||
home = {
|
|
||||||
packages = [pkgs.cemu];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
imports = [
|
|
||||||
./steam.nix
|
|
||||||
./mangohud.nix
|
|
||||||
./rpcs3.nix
|
|
||||||
./retroarch.nix
|
|
||||||
./pcsx2.nix
|
|
||||||
./cemu.nix
|
|
||||||
./azahar.nix
|
|
||||||
];
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
heroic
|
|
||||||
prismlauncher
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
{...}: {
|
|
||||||
home-manager.users.toast = {...}: {
|
|
||||||
programs.mangohud = {
|
|
||||||
enable = true;
|
|
||||||
# This only works for Vulkan, openGL programs still need the mangohud wrapper
|
|
||||||
enableSessionWide = true;
|
|
||||||
settings = {
|
|
||||||
preset = 4;
|
|
||||||
no_display = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,141 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
pcsx2-bios = pkgs.fetchzip {
|
|
||||||
url = "https://myrient.erista.me/files/Redump/Sony%20-%20PlayStation%202%20-%20BIOS%20Images%20%28DoM%20Version%29/ps2-0200a-20040614.zip";
|
|
||||||
hash = "sha256-wMvswgmsKl+cJl49VlVW84tvU5Jzd+2dl07SOiUDtwA=";
|
|
||||||
};
|
|
||||||
toPcsx2INI = lib.generators.toINI {listsAsDuplicateKeys = true;};
|
|
||||||
in {
|
|
||||||
home-manager.users.toast = {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
pcsx2
|
|
||||||
];
|
|
||||||
xdg.configFile = {
|
|
||||||
#PCSX2 silently overwrites the symlink so I need to force it's creation
|
|
||||||
"PCSX2/inis/PCSX2.ini".force = true;
|
|
||||||
"PCSX2/inis/PCSX2.ini".text = toPcsx2INI {
|
|
||||||
UI = {
|
|
||||||
SettingsVersion = 1;
|
|
||||||
# Use the system theme
|
|
||||||
Theme = "";
|
|
||||||
HideMouseCursor = true;
|
|
||||||
};
|
|
||||||
Folders = {
|
|
||||||
Bios = "/home/toast/.local/share/PCSX2/bios";
|
|
||||||
};
|
|
||||||
GameList.RecursivePaths = [
|
|
||||||
"/home/toast/Games/PS2/"
|
|
||||||
];
|
|
||||||
"EmuCore/GS" = {
|
|
||||||
dithering_ps2 = 1;
|
|
||||||
upscale_multiplier = 2;
|
|
||||||
};
|
|
||||||
EmuCore = {
|
|
||||||
EnableDiscordPresence = true;
|
|
||||||
EnableFastBoot = true;
|
|
||||||
McdFolderAutoManage = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
MemoryCards.Slot1_Filename = "MemoryCard1.ps2";
|
|
||||||
|
|
||||||
# Controller settings
|
|
||||||
Pad1 = {
|
|
||||||
Up = "SDL-0/DPadUp";
|
|
||||||
Right = "SDL-0/DPadRight";
|
|
||||||
Down = "SDL-0/DPadDown";
|
|
||||||
Left = "SDL-0/DPadLeft";
|
|
||||||
Triangle = "SDL-0/Y";
|
|
||||||
Circle = "SDL-0/B";
|
|
||||||
Cross = "SDL-0/A";
|
|
||||||
Square = "SDL-0/X";
|
|
||||||
Select = "SDL-0/Back";
|
|
||||||
Start = "SDL-0/Start";
|
|
||||||
L1 = "SDL-0/LeftShoulder";
|
|
||||||
L2 = "SDL-0/+LeftTrigger";
|
|
||||||
R1 = "SDL-0/RightShoulder";
|
|
||||||
R2 = "SDL-0/+RightTrigger";
|
|
||||||
L3 = "SDL-0/LeftStick";
|
|
||||||
R3 = "SDL-0/RightStick";
|
|
||||||
Analog = "SDL-0/Guide";
|
|
||||||
LUp = "SDL-0/-LeftY";
|
|
||||||
LRight = "SDL-0/+LeftX";
|
|
||||||
LDown = "SDL-0/+LeftY";
|
|
||||||
LLeft = "SDL-0/-LeftX";
|
|
||||||
RUp = "SDL-0/-RightY";
|
|
||||||
RRight = "SDL-0/+RightX";
|
|
||||||
RDown = "SDL-0/+RightY";
|
|
||||||
RLeft = "SDL-0/-RightX";
|
|
||||||
LargeMotor = "SDL-0/LargeMotor";
|
|
||||||
SmallMotor = "SDL-0/SmallMotor";
|
|
||||||
};
|
|
||||||
# Default hotkeys
|
|
||||||
Hotkeys = {
|
|
||||||
ToggleFullscreen = "Keyboard/Alt & Keyboard/Return";
|
|
||||||
CycleAspectRatio = "Keyboard/F6";
|
|
||||||
CycleInterlaceMode = "Keyboard/F5";
|
|
||||||
CycleMipmapMode = "Keyboard/Insert";
|
|
||||||
GSDumpMultiFrame = "Keyboard/Control & Keyboard/Shift & Keyboard/F8";
|
|
||||||
Screenshot = "Keyboard/F8";
|
|
||||||
GSDumpSingleFrame = "Keyboard/Shift & Keyboard/F8";
|
|
||||||
ToggleSoftwareRendering = "Keyboard/F9";
|
|
||||||
ZoomIn = "Keyboard/Control & Keyboard/Plus";
|
|
||||||
ZoomOut = "Keyboard/Control & Keyboard/Minus";
|
|
||||||
InputRecToggleMode = "Keyboard/Shift & Keyboard/R";
|
|
||||||
LoadStateFromSlot = "Keyboard/F3";
|
|
||||||
SaveStateToSlot = "Keyboard/F1";
|
|
||||||
NextSaveStateSlot = "Keyboard/F2";
|
|
||||||
PreviousSaveStateSlot = "Keyboard/Shift & Keyboard/F2";
|
|
||||||
OpenPauseMenu = "Keyboard/Escape";
|
|
||||||
ToggleFrameLimit = "Keyboard/F4";
|
|
||||||
TogglePause = "Keyboard/Space";
|
|
||||||
ToggleSlowMotion = "Keyboard/Shift & Keyboard/Backtab";
|
|
||||||
ToggleTurbo = "Keyboard/Tab";
|
|
||||||
HoldTurbo = "Keyboard/Period";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# 007 nightfire
|
|
||||||
"PCSX2/gamesettings/SLUS-20579_5B86BB62.ini".text = toPcsx2INI {
|
|
||||||
"EmuCore/GS".AspectRatio = "16:9";
|
|
||||||
};
|
|
||||||
"PCSX2/gamesettings/SLUS-21050_BEBF8793.ini".text = toPcsx2INI {
|
|
||||||
"EmuCore/GS".AspectRatio = "16:9";
|
|
||||||
Patches.Enable = [
|
|
||||||
"60 FPS for Crashes"
|
|
||||||
"60 FPS for Menus"
|
|
||||||
"Progressive Scan"
|
|
||||||
"MPH to KPH"
|
|
||||||
"Extra Particles While Driving"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
xdg.dataFile = {
|
|
||||||
# I would prefer to use symlinkJoin like I do for the ISOs, but
|
|
||||||
# the bios folder needs to be writable to store the bios settings
|
|
||||||
"PCSX2/bios/ntsc.bin".source = pkgs.runCommandLocal "pcsx2-bios" {} ''
|
|
||||||
cp -v ${pcsx2-bios}/*.bin $out
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Syncthing
|
|
||||||
services.syncthing.settings.folders."pcsx2" = {
|
|
||||||
label = "PCSX2";
|
|
||||||
id = "qcdsp-qaaej";
|
|
||||||
devices = ["steamdeck" "server" "pc" "winmax2"];
|
|
||||||
path = "~/.config/PCSX2";
|
|
||||||
};
|
|
||||||
home-manager.users.toast.xdg.configFile = {
|
|
||||||
"PCSX2/.stignore".text = ''
|
|
||||||
cache
|
|
||||||
bios
|
|
||||||
gamesettings
|
|
||||||
inis/PCSX2.ini*
|
|
||||||
inis/debuggersettings
|
|
||||||
inputprofiles
|
|
||||||
logs
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,87 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
home-manager.users.toast = {
|
|
||||||
home = {
|
|
||||||
packages = [
|
|
||||||
(
|
|
||||||
pkgs.wrapRetroArch {
|
|
||||||
cores = with pkgs.libretro; [
|
|
||||||
snes9x
|
|
||||||
];
|
|
||||||
settings = {
|
|
||||||
video_driver = "vulkan";
|
|
||||||
video_fullscreen = "true";
|
|
||||||
menu_swap_ok_cancel_buttons = "true";
|
|
||||||
input_joypad_driver = "sdl2";
|
|
||||||
# Enable touchscreen support
|
|
||||||
menu_pointer_enable = "true";
|
|
||||||
|
|
||||||
# Folder stuffs
|
|
||||||
|
|
||||||
# System/BIOS files
|
|
||||||
system_directory = "~/.local/share/retroarch/system";
|
|
||||||
# Downloads
|
|
||||||
core_assets_directory = "~/.local/share/retroarch/downloads";
|
|
||||||
thumbnails_directory = "~/.local/share/retroarch/thumbnails";
|
|
||||||
content_database_path = "~/.local/share/retroarch/database/rdb";
|
|
||||||
cheat_database_path = "~/.local/share/retroarch/cheats";
|
|
||||||
video_filter_dir = "~/.local/share/retroarch/filters/video";
|
|
||||||
audio_filter_dir = "~/.local/share/retroarch/filters/audio";
|
|
||||||
video_shader_dir = "~/.local/share/retroarch/shaders";
|
|
||||||
recording_output_directory = "~/.local/share/retroarch/records";
|
|
||||||
overlay_directory = "~/.local/share/retroarch/overlays";
|
|
||||||
osk_overlay_directory = "~/.local/share/retroarch/overlays/keyboards";
|
|
||||||
screenshot_directory = "~/.local/share/retroarch/screenshots";
|
|
||||||
playlist_directory = "~/.local/share/retroarch/playlists";
|
|
||||||
savefile_directory = "~/.local/share/retroarch/saves";
|
|
||||||
savestate_directory = "~/.local/share/retroarch/states";
|
|
||||||
log_dir = "~/.local/share/retroarch/logs";
|
|
||||||
|
|
||||||
# By default settings has some things that this overrides, so I need to set them myself
|
|
||||||
libretro_info_path = "${pkgs.libretro-core-info}/share/retroarch/cores";
|
|
||||||
joypad_autoconfig_dir = "${pkgs.retroarch-joypad-autoconfig}/share/libretro/autoconfig";
|
|
||||||
assets_directory = "${pkgs.retroarch-assets}/share/retroarch/assets";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
)
|
|
||||||
];
|
|
||||||
};
|
|
||||||
# Retroarch is dumb since it doesn't generate some folders (but it does for others)
|
|
||||||
systemd.user.tmpfiles.rules = [
|
|
||||||
"d /%h/.local/share/retroarch/playlists"
|
|
||||||
"d /%h/.local/share/retroarch/saves"
|
|
||||||
"d /%h/.local/share/retroarch/states"
|
|
||||||
];
|
|
||||||
systemd.user.paths = {
|
|
||||||
snes-roms = {
|
|
||||||
Unit.Description = "Monitor SNES rom path for changes";
|
|
||||||
Path = {
|
|
||||||
PathChanged = "/%h/Games/SNES";
|
|
||||||
Unit = "update-retroarch-library.service";
|
|
||||||
};
|
|
||||||
Install.WantedBy = ["default.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
systemd.user.services.update-retroarch-library = {
|
|
||||||
Service = {
|
|
||||||
Type = "oneshot";
|
|
||||||
ExecStart = pkgs.writeShellScript "scan-snes-games" ''
|
|
||||||
${pkgs.libnotify}/bin/notify-send -a RetroArch \
|
|
||||||
-i retroarch \
|
|
||||||
"SNES games changed!" \
|
|
||||||
"Scanning $TRIGGER_PATH..."
|
|
||||||
${pkgs.retroarch}/bin/retroarch --scan "/home/toast/Games/SNES"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Sync saves and some other stuff
|
|
||||||
services.syncthing.settings.folders = {
|
|
||||||
"retroarch" = {
|
|
||||||
label = "RetroArch";
|
|
||||||
id = "jxuou-2yjnu";
|
|
||||||
devices = ["steamdeck" "server" "pc" "winmax2"];
|
|
||||||
path = "~/.local/share/retroarch";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
rpcs3
|
|
||||||
];
|
|
||||||
|
|
||||||
# Increase the memory lock limit
|
|
||||||
security.pam.loginLimits = [
|
|
||||||
{
|
|
||||||
domain = "*";
|
|
||||||
item = "memlock";
|
|
||||||
type = "-"; # Applies to both hard and soft limits
|
|
||||||
value = "unlimited";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.steam = {
|
|
||||||
enable = true;
|
|
||||||
localNetworkGameTransfers.openFirewall = true;
|
|
||||||
# Doubt that I'll use it, but I'll enable it anyways
|
|
||||||
remotePlay.openFirewall = true;
|
|
||||||
|
|
||||||
extraCompatPackages = with pkgs; [
|
|
||||||
proton-ge-bin
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Some linux native games (rise of the tomb raider) use alsa for sound
|
|
||||||
services.pipewire.alsa.enable =
|
|
||||||
if config.services.pipewire.pulse.enable == true
|
|
||||||
then true
|
|
||||||
else false;
|
|
||||||
|
|
||||||
home-manager.users.toast = {
|
|
||||||
systemd.user.tmpfiles.rules = [
|
|
||||||
"r '/%h/.local/share/applications/Steam Linux Runtime *.desktop'"
|
|
||||||
"r '/%h/.local/share/applications/Proton *.desktop'"
|
|
||||||
];
|
|
||||||
services.flatpak.packages = [
|
|
||||||
# Celeste mod manager
|
|
||||||
"io.github.everestapi.Olympus"
|
|
||||||
];
|
|
||||||
home.packages = [pkgs.sgdboop];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c
|
|
||||||
index 5ce36de86..37bf5ca85 100644
|
|
||||||
--- a/src/joystick/SDL_joystick.c
|
|
||||||
+++ b/src/joystick/SDL_joystick.c
|
|
||||||
@@ -281,6 +281,8 @@ static Uint32 initial_blacklist_devices[] = {
|
|
||||||
MAKE_VIDPID(0x3297, 0x1969), // Moonlander MK1 Keyboard
|
|
||||||
MAKE_VIDPID(0x3434, 0x0211), // Keychron K1 Pro System Control
|
|
||||||
MAKE_VIDPID(0x04f2, 0xa13c), // HP Deluxe Webcam KQ246AA
|
|
||||||
+ MAKE_VIDPID(0x3434, 0x0353), // Keychron V5 System Control
|
|
||||||
+ MAKE_VIDPID(0x3434, 0xd030), // Keychron Link
|
|
||||||
};
|
|
||||||
static SDL_vidpid_list blacklist_devices = {
|
|
||||||
SDL_HINT_JOYSTICK_BLACKLIST_DEVICES, 0, 0, NULL,
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./syncthing.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
{...}: {
|
|
||||||
/*
|
|
||||||
This file will sync saves for games that don't have cloud saves
|
|
||||||
TODO: turn this into a module eventually
|
|
||||||
*/
|
|
||||||
|
|
||||||
services.syncthing.settings.folders = {
|
|
||||||
"steam-201810" = {
|
|
||||||
label = "Wolfenstein The New Order Saves";
|
|
||||||
id = "laxxf-t2wmy";
|
|
||||||
devices = ["steamdeck" "server" "pc" "winmax2"];
|
|
||||||
path = "~/.local/share/Steam/steamapps/compatdata/201810/pfx/drive_c/users/steamuser/Saved Games/MachineGames/Wolfenstein The New Order/";
|
|
||||||
};
|
|
||||||
"project-diva-mods" = {
|
|
||||||
label = "Project Diva Mods";
|
|
||||||
id = "7pscj-6egww";
|
|
||||||
devices = ["steamdeck" "server" "pc" "winmax2"];
|
|
||||||
path = "~/.local/share/Steam/steamapps/common/Hatsune Miku Project DIVA Mega Mix Plus/mods/";
|
|
||||||
};
|
|
||||||
"project-eden-saves" = {
|
|
||||||
label = "Project Eden saves";
|
|
||||||
id = "xa3qx-3ax5k";
|
|
||||||
devices = ["server" "pc" "winmax2" "steamdeck"];
|
|
||||||
path = "~/.local/share/Steam/steamapps/compatdata/1761390/pfx/drive_c/users/steamuser/AppData/Roaming/EDEN/";
|
|
||||||
};
|
|
||||||
"games" = {
|
|
||||||
label = "Games";
|
|
||||||
id = "mwzph-gf2df";
|
|
||||||
devices = ["server" "pc" "winmax2" "steamdeck"];
|
|
||||||
path = "~/Games";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home-manager.users.toast.home.file."steam-201810-ignore" = {
|
|
||||||
target = ".local/share/Steam/steamapps/compatdata/201810/pfx/drive_c/users/steamuser/Saved Games/MachineGames/Wolfenstein The New Order/.stignore";
|
|
||||||
text = "base/qconsole.log\nbase/wolfConfig.cfg";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./plasma.nix
|
./plasma.nix
|
||||||
./sddm.nix
|
|
||||||
./programs
|
|
||||||
./patches
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
{lib, ...}: let
|
|
||||||
rootDirs = builtins.readDir ./.;
|
|
||||||
removeFiles = lib.attrsets.filterAttrs (n: v: v == "directory") rootDirs;
|
|
||||||
programsToPatch = builtins.attrNames removeFiles;
|
|
||||||
|
|
||||||
bigOverlay = final: prev:
|
|
||||||
lib.attrsets.mergeAttrsList (
|
|
||||||
lib.lists.forEach programsToPatch (
|
|
||||||
program: let
|
|
||||||
unpatchedProgram = prev."${program}";
|
|
||||||
newPatches = lib.toast.patches.patchesInPath (lib.path.append ./. program);
|
|
||||||
in {
|
|
||||||
"${program}" = unpatchedProgram.overrideAttrs {
|
|
||||||
version = "${unpatchedProgram.version}-patched";
|
|
||||||
__intentionallyOverridingVersion = true;
|
|
||||||
patches = unpatchedProgram.patches ++ newPatches;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
in {
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
(
|
|
||||||
final: prev: {
|
|
||||||
kdePackages = prev.kdePackages.overrideScope bigOverlay;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
Plasma 6.6.0:
|
|
||||||
|
|
||||||
Pr 3256 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3256
|
|
||||||
Pr 3259 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3259
|
|
||||||
Pr 3269 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3269
|
|
||||||
Pr 3356 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3356
|
|
||||||
|
|
@ -1,94 +0,0 @@
|
||||||
From 79d010f4bcdb19d5a19d222dd3c3cb581fde891d Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Redondo <kde@david-redondo.de>
|
|
||||||
Date: Fri, 17 Oct 2025 15:15:51 +0200
|
|
||||||
Subject: [PATCH] applets/taskmanager: Allow changing a tasks volume by
|
|
||||||
scrolling
|
|
||||||
|
|
||||||
FEATURE:510668
|
|
||||||
FIXED-IN:6.6
|
|
||||||
---
|
|
||||||
.../package/contents/config/main.xml | 1 +
|
|
||||||
.../package/contents/ui/ConfigBehavior.qml | 3 ++-
|
|
||||||
.../package/contents/ui/MouseHandler.qml | 20 +++++++++++++++++++
|
|
||||||
3 files changed, 23 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/applets/taskmanager/package/contents/config/main.xml b/applets/taskmanager/package/contents/config/main.xml
|
|
||||||
index f71a7a8457..8c3b68785b 100644
|
|
||||||
--- a/applets/taskmanager/package/contents/config/main.xml
|
|
||||||
+++ b/applets/taskmanager/package/contents/config/main.xml
|
|
||||||
@@ -90,6 +90,7 @@
|
|
||||||
<choice name="None"/>
|
|
||||||
<choice name="AllTask"/>
|
|
||||||
<choice name="TaskOnly"/>
|
|
||||||
+ <choice name="AdjustVolume"/>
|
|
||||||
</choices>
|
|
||||||
<default>0</default>
|
|
||||||
</entry>
|
|
||||||
diff --git a/applets/taskmanager/package/contents/ui/ConfigBehavior.qml b/applets/taskmanager/package/contents/ui/ConfigBehavior.qml
|
|
||||||
index 2c0dc19154..73357e9dcd 100644
|
|
||||||
--- a/applets/taskmanager/package/contents/ui/ConfigBehavior.qml
|
|
||||||
+++ b/applets/taskmanager/package/contents/ui/ConfigBehavior.qml
|
|
||||||
@@ -202,13 +202,14 @@ KCMUtils.SimpleKCM {
|
|
||||||
|
|
||||||
QQC2.ComboBox {
|
|
||||||
id: wheelEnabled
|
|
||||||
- Kirigami.FormData.label: i18nc("@label:listbox Part of a sentence: 'Scrolling behavior does nothing/cycles through tasks/cycles through the selected task's windows'", "Scrolling behavior:")
|
|
||||||
+ Kirigami.FormData.label: i18nc("@label:listbox Part of a sentence: 'Scrolling behavior does nothing/cycles through tasks/cycles through the selected task's windows/adjusts the hovered task’s volume''", "Scrolling behavior:")
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.minimumWidth: Kirigami.Units.gridUnit * 14
|
|
||||||
model: [
|
|
||||||
i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior does nothing'", "Does nothing"),
|
|
||||||
i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior cycles through all tasks'", "Cycles through all tasks"),
|
|
||||||
i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior cycles through the hovered task's windows'", "Cycles through the hovered task’s windows"),
|
|
||||||
+ i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior adjusts the hovered task’s volume'", "Adjusts the hovered task’s volume"),
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/applets/taskmanager/package/contents/ui/MouseHandler.qml b/applets/taskmanager/package/contents/ui/MouseHandler.qml
|
|
||||||
index cf2362835a..3f8d703d73 100644
|
|
||||||
--- a/applets/taskmanager/package/contents/ui/MouseHandler.qml
|
|
||||||
+++ b/applets/taskmanager/package/contents/ui/MouseHandler.qml
|
|
||||||
@@ -8,6 +8,7 @@ import QtQuick
|
|
||||||
|
|
||||||
import org.kde.taskmanager as TaskManager
|
|
||||||
import org.kde.plasma.plasmoid
|
|
||||||
+import org.kde.plasma.private.volume as PlasmaPa
|
|
||||||
|
|
||||||
import "code/tools.js" as TaskTools
|
|
||||||
|
|
||||||
@@ -157,6 +158,10 @@ DropArea {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ PlasmaPa.GlobalConfig {
|
|
||||||
+ id: plasmaPaConfig
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
WheelHandler {
|
|
||||||
id: wheelHandler
|
|
||||||
|
|
||||||
@@ -179,6 +184,21 @@ DropArea {
|
|
||||||
increment--;
|
|
||||||
}
|
|
||||||
const anchor = dropArea.target.childAt(event.x, event.y);
|
|
||||||
+ if (Plasmoid.configuration.wheelEnabled === 3) {
|
|
||||||
+ const loudest = anchor?.audioStreams?.reduce((loudest, stream) => Math.max(loudest, stream.volume), 0)
|
|
||||||
+ const step = (pulseAudio.item.normalVolume - pulseAudio.item.minimalVolume) * plasmaPaConfig.volumeStep / 100;
|
|
||||||
+ anchor?.audioStreams?.forEach((stream) => {
|
|
||||||
+ let delta = step * increment;
|
|
||||||
+ if (loudest > 0) {
|
|
||||||
+ delta *= stream.volume / loudest;
|
|
||||||
+ }
|
|
||||||
+ const volume = stream.volume + delta;
|
|
||||||
+ console.log(volume, Math.max(pulseAudio.item.minimalVolume, Math.min(volume, pulseAudio.item.normalVolume)));
|
|
||||||
+ stream.model.Volume = Math.max(pulseAudio.item.minimalVolume, Math.min(volume, pulseAudio.item.normalVolume));
|
|
||||||
+ stream.model.Muted = volume === 0
|
|
||||||
+ })
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
while (increment !== 0) {
|
|
||||||
TaskTools.activateNextPrevTask(anchor, increment < 0, Plasmoid.configuration.wheelSkipMinimized, Plasmoid.configuration.wheelEnabled, tasks);
|
|
||||||
increment += (increment < 0) ? 1 : -1;
|
|
||||||
--
|
|
||||||
GitLab
|
|
||||||
|
|
||||||
|
|
@ -1,78 +0,0 @@
|
||||||
From 57885ba4ec524bdc1c1326228f27c1c3a3561bba Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nate Graham <nate@kde.org>
|
|
||||||
Date: Tue, 21 Oct 2025 13:39:40 -0600
|
|
||||||
Subject: [PATCH] applets/kickoff: add spacing between non-switch-on-hover
|
|
||||||
category items
|
|
||||||
|
|
||||||
Otherwise, their highlight effects touch, and it looks bad.
|
|
||||||
|
|
||||||
To avoid blowing up the layout as a result of this change, slightly
|
|
||||||
decrease the height of these category list items too, which also reduces
|
|
||||||
some code complexity.
|
|
||||||
|
|
||||||
BUG: 508985
|
|
||||||
FIXED-IN: 6.6.0
|
|
||||||
---
|
|
||||||
applets/kickoff/ApplicationsPage.qml | 1 +
|
|
||||||
applets/kickoff/KickoffListDelegate.qml | 9 ---------
|
|
||||||
applets/kickoff/KickoffListView.qml | 5 +++++
|
|
||||||
3 files changed, 6 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/applets/kickoff/ApplicationsPage.qml b/applets/kickoff/ApplicationsPage.qml
|
|
||||||
index c2baa75b52..fe8d6eaafb 100644
|
|
||||||
--- a/applets/kickoff/ApplicationsPage.qml
|
|
||||||
+++ b/applets/kickoff/ApplicationsPage.qml
|
|
||||||
@@ -20,6 +20,7 @@ BasePage {
|
|
||||||
id: sideBar
|
|
||||||
focus: true // needed for Loaders
|
|
||||||
model: kickoff.rootModel
|
|
||||||
+ showingCategories: true
|
|
||||||
// needed otherwise app displayed at top-level will show a first character as group.
|
|
||||||
section.property: ""
|
|
||||||
delegate: KickoffListDelegate {
|
|
||||||
diff --git a/applets/kickoff/KickoffListDelegate.qml b/applets/kickoff/KickoffListDelegate.qml
|
|
||||||
index b1f8afb3ce..02bfcfcacd 100644
|
|
||||||
--- a/applets/kickoff/KickoffListDelegate.qml
|
|
||||||
+++ b/applets/kickoff/KickoffListDelegate.qml
|
|
||||||
@@ -72,15 +72,6 @@ AbstractKickoffItemDelegate {
|
|
||||||
id: label
|
|
||||||
Layout.fillWidth: !descriptionLabel.visible
|
|
||||||
Layout.maximumWidth: root.width - root.leftPadding - root.rightPadding - icon.width - row.spacing
|
|
||||||
- Layout.preferredHeight: {
|
|
||||||
- if (root.isCategoryListItem) {
|
|
||||||
- return root.compact ? implicitHeight : Math.round(implicitHeight * 1.5);
|
|
||||||
- }
|
|
||||||
- if (!root.compact && !descriptionLabel.visible) {
|
|
||||||
- return implicitHeight + descriptionLabel.implicitHeight
|
|
||||||
- }
|
|
||||||
- return implicitHeight;
|
|
||||||
- }
|
|
||||||
text: root.text
|
|
||||||
textFormat: root.isMultilineText ? Text.StyledText : Text.PlainText
|
|
||||||
elide: Text.ElideRight
|
|
||||||
diff --git a/applets/kickoff/KickoffListView.qml b/applets/kickoff/KickoffListView.qml
|
|
||||||
index c7787493e0..382d146428 100644
|
|
||||||
--- a/applets/kickoff/KickoffListView.qml
|
|
||||||
+++ b/applets/kickoff/KickoffListView.qml
|
|
||||||
@@ -33,6 +33,7 @@ EmptyPage {
|
|
||||||
property alias section: view.section
|
|
||||||
property alias highlight: view.highlight
|
|
||||||
property alias view: view
|
|
||||||
+ property bool showingCategories: false
|
|
||||||
|
|
||||||
property bool mainContentView: false
|
|
||||||
property bool hasSectionView: false
|
|
||||||
@@ -144,6 +145,10 @@ EmptyPage {
|
|
||||||
width: view.availableWidth
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Without switch-on-hover, it's possible for the selected category and the hovered category to be adjacent.
|
|
||||||
+ // When this happens, their highlights tuoch and look ungly without some artificial spacing added.
|
|
||||||
+ spacing: root.showingCategories && !Plasmoid.configuration.switchCategoryOnHover ? Kirigami.Units.smallSpacing : 0
|
|
||||||
+
|
|
||||||
section {
|
|
||||||
property: "group"
|
|
||||||
criteria: ViewSection.FullString
|
|
||||||
--
|
|
||||||
GitLab
|
|
||||||
|
|
||||||
|
|
@ -1,66 +0,0 @@
|
||||||
From a63fce38f285b59407c24f44639023d41b5d3ca9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nate Graham <nate@kde.org>
|
|
||||||
Date: Thu, 30 Oct 2025 20:01:32 -0600
|
|
||||||
Subject: [PATCH] applets/kickoff: add separation between Places page list
|
|
||||||
items too
|
|
||||||
|
|
||||||
Missed in 57885ba4ec524bdc1c1326228f27c1c3a3561bba
|
|
||||||
|
|
||||||
BUG: 508985
|
|
||||||
FIXED-IN: 6.6.0
|
|
||||||
---
|
|
||||||
applets/kickoff/ApplicationsPage.qml | 2 +-
|
|
||||||
applets/kickoff/KickoffListView.qml | 4 ++--
|
|
||||||
applets/kickoff/PlacesPage.qml | 1 +
|
|
||||||
3 files changed, 4 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/applets/kickoff/ApplicationsPage.qml b/applets/kickoff/ApplicationsPage.qml
|
|
||||||
index fe8d6eaafb..206ddd958d 100644
|
|
||||||
--- a/applets/kickoff/ApplicationsPage.qml
|
|
||||||
+++ b/applets/kickoff/ApplicationsPage.qml
|
|
||||||
@@ -20,7 +20,7 @@ BasePage {
|
|
||||||
id: sideBar
|
|
||||||
focus: true // needed for Loaders
|
|
||||||
model: kickoff.rootModel
|
|
||||||
- showingCategories: true
|
|
||||||
+ isSidebar: true
|
|
||||||
// needed otherwise app displayed at top-level will show a first character as group.
|
|
||||||
section.property: ""
|
|
||||||
delegate: KickoffListDelegate {
|
|
||||||
diff --git a/applets/kickoff/KickoffListView.qml b/applets/kickoff/KickoffListView.qml
|
|
||||||
index 382d146428..2d67bd59b7 100644
|
|
||||||
--- a/applets/kickoff/KickoffListView.qml
|
|
||||||
+++ b/applets/kickoff/KickoffListView.qml
|
|
||||||
@@ -33,7 +33,7 @@ EmptyPage {
|
|
||||||
property alias section: view.section
|
|
||||||
property alias highlight: view.highlight
|
|
||||||
property alias view: view
|
|
||||||
- property bool showingCategories: false
|
|
||||||
+ property bool isSidebar: false
|
|
||||||
|
|
||||||
property bool mainContentView: false
|
|
||||||
property bool hasSectionView: false
|
|
||||||
@@ -147,7 +147,7 @@ EmptyPage {
|
|
||||||
|
|
||||||
// Without switch-on-hover, it's possible for the selected category and the hovered category to be adjacent.
|
|
||||||
// When this happens, their highlights tuoch and look ungly without some artificial spacing added.
|
|
||||||
- spacing: root.showingCategories && !Plasmoid.configuration.switchCategoryOnHover ? Kirigami.Units.smallSpacing : 0
|
|
||||||
+ spacing: root.isSidebar && !Plasmoid.configuration.switchCategoryOnHover ? Kirigami.Units.smallSpacing : 0
|
|
||||||
|
|
||||||
section {
|
|
||||||
property: "group"
|
|
||||||
diff --git a/applets/kickoff/PlacesPage.qml b/applets/kickoff/PlacesPage.qml
|
|
||||||
index ff92f535e4..7f81096834 100644
|
|
||||||
--- a/applets/kickoff/PlacesPage.qml
|
|
||||||
+++ b/applets/kickoff/PlacesPage.qml
|
|
||||||
@@ -19,6 +19,7 @@ BasePage {
|
|
||||||
id: sideBar
|
|
||||||
focus: true // needed for Loaders
|
|
||||||
model: placesCategoryModel
|
|
||||||
+ isSidebar: true
|
|
||||||
delegate: KickoffListDelegate {
|
|
||||||
url: ""
|
|
||||||
description: ""
|
|
||||||
--
|
|
||||||
GitLab
|
|
||||||
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
From 04c747a41d8c01248c7baeec5c852c2298f76fc3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christoph Wolk <cwo.kde@posteo.net>
|
|
||||||
Date: Mon, 1 Dec 2025 14:36:09 +0100
|
|
||||||
Subject: [PATCH] applets/kickoff: also close when triggering from footer menu
|
|
||||||
|
|
||||||
Kickoff already closes when one of the power/session buttons from the
|
|
||||||
menu is pressed, but the same does not happen if the same action is
|
|
||||||
shown in the overflow menu.
|
|
||||||
|
|
||||||
Instead, also close kickoff in that case.
|
|
||||||
|
|
||||||
CCBUG: 508725
|
|
||||||
---
|
|
||||||
applets/kickoff/LeaveButtons.qml | 7 ++++++-
|
|
||||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/applets/kickoff/LeaveButtons.qml b/applets/kickoff/LeaveButtons.qml
|
|
||||||
index c9a14dc3254..acf83639341 100644
|
|
||||||
--- a/applets/kickoff/LeaveButtons.qml
|
|
||||||
+++ b/applets/kickoff/LeaveButtons.qml
|
|
||||||
@@ -214,7 +214,12 @@ RowLayout {
|
|
||||||
|
|
||||||
text: model.display
|
|
||||||
icon: model.decoration
|
|
||||||
- onClicked: filteredMenuItemsModel.trigger(index)
|
|
||||||
+ onClicked: {
|
|
||||||
+ filteredMenuItemsModel.trigger(index)
|
|
||||||
+ if (kickoff.hideOnWindowDeactivate) {
|
|
||||||
+ kickoff.expanded = false;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
onObjectAdded: (index, object) => contextMenu.addMenuItem(object)
|
|
||||||
onObjectRemoved: (index, object) => contextMenu.removeMenuItem(object)
|
|
||||||
--
|
|
||||||
GitLab
|
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue