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
|
||||
result
|
||||
result-*
|
||||
repl-result*
|
||||
|
||||
# ---> Kate
|
||||
# Ignore kate's swap files
|
||||
*.kate-swp
|
||||
|
||||
|
||||
# ---> Direnv
|
||||
.direnv
|
||||
# I don't want to do a commit everytime that I want to update stuff
|
||||
flake.lock
|
||||
|
|
|
|||
|
|
@ -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
|
||||
18
.vscode/settings.json
vendored
18
.vscode/settings.json
vendored
|
|
@ -1,15 +1,7 @@
|
|||
{
|
||||
"editor.detectIndentation": true,
|
||||
"editor.insertSpaces": true,
|
||||
"editor.defaultFormatter": "jnoortheen.nix-ide",
|
||||
"nix.formatterPath": "alejandra",
|
||||
"nix.serverSettings": {
|
||||
"nil": {
|
||||
"formatting": {
|
||||
"command": [
|
||||
"alejandra"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
"editor.detectIndentation": true,
|
||||
"editor.insertSpaces": false,
|
||||
"editor.tabSize": 2,
|
||||
"editor.renderWhitespace": "all",
|
||||
"editor.defaultFormatter": "jnoortheen.nix-ide"
|
||||
}
|
||||
|
|
|
|||
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
|
||||
}
|
||||
305
flake.nix
Normal file → Executable file
305
flake.nix
Normal file → Executable file
|
|
@ -1,239 +1,84 @@
|
|||
{
|
||||
description = "Configuration for Everest";
|
||||
description = "Configuration for Everest";
|
||||
|
||||
inputs = {
|
||||
secrets = {
|
||||
url = "git+ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets";
|
||||
flake = false;
|
||||
};
|
||||
nixpkgs-raw.url = "nixpkgs/nixos-25.11";
|
||||
nixpkgs-unstable-raw.url = "nixpkgs/nixos-unstable";
|
||||
inputs = {
|
||||
nixpkgs.url = "nixpkgs/nixos-23.05";
|
||||
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
|
||||
|
||||
agenix = {
|
||||
url = "github:ryantm/agenix";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs-raw";
|
||||
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";
|
||||
};
|
||||
agenix = {
|
||||
url = "github:ryantm/agenix";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
darwin.follows = ""; # Not using this on MacOS, so this doesn't pull it's dependencies
|
||||
};
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-25.11";
|
||||
inputs.nixpkgs.follows = "nixpkgs-raw";
|
||||
};
|
||||
home-manager.url = "github:nix-community/home-manager/release-23.05";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
home-manager-unstable = {
|
||||
url = "github:nix-community/home-manager/";
|
||||
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
||||
};
|
||||
nix-impermanence.url = "github:nix-community/impermanence";
|
||||
};
|
||||
|
||||
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 {
|
||||
name = "Environment for toast's nixos configurations";
|
||||
# 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.
|
||||
packages = [
|
||||
agenix.packages.x86_64-linux.default
|
||||
nixpkgs.legacyPackages.x86_64-linux.git
|
||||
];
|
||||
shellHook =''
|
||||
export PS1="$PS1(toast-configs)> "
|
||||
'';
|
||||
};
|
||||
|
||||
jovian = {
|
||||
url = "github:Jovian-Experiments/Jovian-NixOS";
|
||||
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
||||
};
|
||||
nixosConfigurations = {
|
||||
Archie = nixpkgs-unstable.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
pkgs = import nixpkgs-unstable {
|
||||
system = "x86_64-linux";
|
||||
config = { allowUnfree = true; }; # TODO: Find why this doesn't work
|
||||
overlays =
|
||||
let
|
||||
discordOverlay = self: super: {
|
||||
discord = super.discord.override {
|
||||
withOpenASAR = true;
|
||||
withVencord = true;
|
||||
};
|
||||
};
|
||||
in
|
||||
[ discordOverlay ];
|
||||
};
|
||||
modules = [
|
||||
# Needed for nix-index
|
||||
{ nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; }
|
||||
agenix.nixosModules.default
|
||||
home-manager.nixosModule
|
||||
./roles/common
|
||||
./roles/desktop
|
||||
./roles/kde
|
||||
./machines/Archie
|
||||
];
|
||||
};
|
||||
|
||||
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
|
||||
# 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; [
|
||||
agenix.packages.x86_64-linux.default
|
||||
git
|
||||
nvd
|
||||
nix-output-monitor
|
||||
nix-diff
|
||||
just
|
||||
alejandra
|
||||
];
|
||||
shellHook = ''
|
||||
export PS1="$PS1(toast-configs)> "
|
||||
'';
|
||||
};
|
||||
overlays.default = final: prev: {
|
||||
kasane-teto-cursor = final.callPackage ./pkgs/kasane-teto-cursor {};
|
||||
kame-editor = final.callPackage ./pkgs/kame-editor {};
|
||||
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";
|
||||
overlays = [self.overlays.default];
|
||||
}; {
|
||||
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";
|
||||
specialArgs = {
|
||||
flakeSelf = self;
|
||||
};
|
||||
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
|
||||
mkSystems {
|
||||
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 = [
|
||||
copyparty.nixosModules.default
|
||||
./roles/server
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
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
|
||||
./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,79 +1,105 @@
|
|||
# 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, ... }:
|
||||
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# Use grub boot loader
|
||||
boot.loader = {
|
||||
systemd-boot.enable = false;
|
||||
grub = {
|
||||
enable = true;
|
||||
device = "nodev";
|
||||
efiSupport = true;
|
||||
useOSProber = true;
|
||||
};
|
||||
efi.efiSysMountPoint = "/boot/efi";
|
||||
};
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
# Use grub boot loader
|
||||
boot.loader = {
|
||||
systemd-boot.enable = false;
|
||||
grub = {
|
||||
enable = true;
|
||||
device = "nodev";
|
||||
efiSupport = true;
|
||||
useOSProber = true;
|
||||
};
|
||||
efi.efiSysMountPoint = "/boot/efi";
|
||||
};
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_latest;
|
||||
networking.hostName = "Archie"; # Define your hostname.
|
||||
networking.networkmanager.enable = true; # Enable networking
|
||||
|
||||
networking.hostName = "Archie"; # Define your hostname.
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
# Set your time zone.
|
||||
time.timeZone = "Europe/Madrid";
|
||||
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
# 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";
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console = {
|
||||
keyMap = "es";
|
||||
};
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
# services.printing.enable = true;
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
|
||||
# Enable sound.
|
||||
# sound.enable = true;
|
||||
# hardware.pulseaudio.enable = true;
|
||||
# Enable the pipewire sound server
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.xserver.libinput.enable = true;
|
||||
# Configure keymap in X11
|
||||
# services.xserver.layout = "us";
|
||||
# services.xserver.xkbOptions = "eurosign:e,caps:escape";
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
# Enable CUPS to print documents.
|
||||
# services.printing.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
|
||||
# ];
|
||||
# Enable sound.
|
||||
# sound.enable = true;
|
||||
# hardware.pulseaudio.enable = true;
|
||||
|
||||
# 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;
|
||||
# };
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.xserver.libinput.enable = true;
|
||||
|
||||
# List services that you want to enable:
|
||||
# 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
|
||||
];
|
||||
};
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
# services.openssh.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
|
||||
# ];
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
# 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;
|
||||
|
||||
# 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 +1,8 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
./configuration.nix
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./configuration.nix
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,86 +1,43 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
modulesPath,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
# Enable support for the Xbox One wireless dongle
|
||||
hardware.xone.enable = true;
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "nvme" "sd_mod"];
|
||||
boot.initrd.kernelModules = ["amdgpu"];
|
||||
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";
|
||||
options = [ "subvol=@root" "compress=zstd" ];
|
||||
};
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@root"];
|
||||
};
|
||||
fileSystems."/nix" =
|
||||
{ device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@nix" "compress=zstd" ];
|
||||
};
|
||||
|
||||
fileSystems."/nix" = {
|
||||
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@nix"];
|
||||
};
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@boot" "compress=zstd" ];
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@boot"];
|
||||
};
|
||||
fileSystems."/boot/efi" =
|
||||
{ device = "/dev/disk/by-uuid/FB87-4CBC";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
fileSystems."/boot/efi" = {
|
||||
device = "/dev/disk/by-uuid/FB87-4CBC";
|
||||
fsType = "vfat";
|
||||
};
|
||||
swapDevices = [ ];
|
||||
|
||||
fileSystems = {
|
||||
/*
|
||||
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";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,60 +1,103 @@
|
|||
# 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’).
|
||||
{lib, ...}: {
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.timeout = 5;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
||||
|
||||
# I'm using Nix OS, it's logo is a snowflake and the computer is
|
||||
# a lot taller than the pi it's replacing, so Everest! :3 :3
|
||||
networking.hostName = "Everest"; # Define your hostname.
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
# Set up networking
|
||||
networking = {
|
||||
wireless.enable = false; # Computer doesn't have wifi
|
||||
enableIPv6 = false;
|
||||
useNetworkd = true;
|
||||
dhcpcd.enable = false;
|
||||
interfaces.eno1 = {
|
||||
wakeOnLan.enable = true;
|
||||
ipv4.addresses = [
|
||||
{
|
||||
address = "192.168.1.160";
|
||||
prefixLength = 24;
|
||||
}
|
||||
];
|
||||
};
|
||||
# I use networkd, so I need to declare the interface for the default gateway
|
||||
defaultGateway = {
|
||||
address = "192.168.1.1";
|
||||
interface = "eno1";
|
||||
};
|
||||
nameservers = ["9.9.9.9"];
|
||||
};
|
||||
systemd.network.wait-online.extraArgs = ["--dns"];
|
||||
{
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.timeout = 5;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
||||
|
||||
time.timeZone = "Europe/Madrid";
|
||||
services.automatic-timezoned.enable = lib.mkForce false;
|
||||
# I'm using Nix OS, it's logo is a snowflake and the computer is
|
||||
# a lot taller than the pi it's replacing, so Everest! :3 :3
|
||||
networking.hostName = "Everest"; # Define your hostname.
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.toast = {
|
||||
extraGroups = ["networkmanager" "transmission"];
|
||||
};
|
||||
# Set up networking
|
||||
networking = {
|
||||
wireless.enable = false; # Computer doesn't have wifi
|
||||
enableIPv6 = false;
|
||||
useNetworkd = true;
|
||||
dhcpcd.enable = false;
|
||||
interfaces.eno1 = {
|
||||
wakeOnLan.enable = true;
|
||||
ipv4.addresses = [ {
|
||||
address = "192.168.0.160";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
};
|
||||
defaultGateway = "192.168.0.1";
|
||||
nameservers = [ "8.8.8.8" ];
|
||||
};
|
||||
|
||||
# Large builds (the linux kernel) fail to build because /tmp is too small when using tmpfs
|
||||
boot.tmp.useTmpfs = false;
|
||||
# Set your time zone.
|
||||
time.timeZone = "Europe/Madrid";
|
||||
|
||||
home-manager = {
|
||||
users.toast = {config, ...}: {
|
||||
home = {
|
||||
file = {
|
||||
# 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
# 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’.
|
||||
users.users.toast = {
|
||||
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"
|
||||
];
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
backupFileExtension = "backup";
|
||||
useGlobalPkgs = true;
|
||||
users.toast = { config, ... }: {
|
||||
home = {
|
||||
stateVersion = "23.05";
|
||||
file = {
|
||||
# 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";
|
||||
};
|
||||
};
|
||||
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,6 +1,8 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
./configuration.nix
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./configuration.nix
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,69 +1,37 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
modulesPath,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"];
|
||||
boot.initrd.kernelModules = [];
|
||||
boot.kernelModules = ["kvm-intel"];
|
||||
boot.extraModulePackages = [];
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-label/Everest";
|
||||
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."/" =
|
||||
{ device = "/dev/disk/by-label/Everest";
|
||||
fsType = "btrfs";
|
||||
};
|
||||
|
||||
fileSystems."/boot/efi" = {
|
||||
device = "/dev/disk/by-uuid/FB87-4CBC";
|
||||
fsType = "vfat";
|
||||
};
|
||||
fileSystems."/boot/efi" =
|
||||
{ device = "/dev/disk/by-label/Boot";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices = [];
|
||||
swapDevices = [ ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
# 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
|
||||
defaultPackages = [];
|
||||
};
|
||||
environment = {
|
||||
# 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
|
||||
defaultPackages = [];
|
||||
variables = {
|
||||
# Environment variables go here
|
||||
EDITOR = "micro";
|
||||
};
|
||||
};
|
||||
|
||||
# Set up /tmp
|
||||
boot.tmp = {
|
||||
useTmpfs = false;
|
||||
# Cleaning out /tmp at boot if it's a tmpfs is quite stupid
|
||||
cleanOnBoot = !config.boot.tmp.useTmpfs;
|
||||
};
|
||||
# Set up secrets
|
||||
age = {
|
||||
identityPaths = [
|
||||
"/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";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
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
|
||||
age = {
|
||||
identityPaths = [
|
||||
"/persist/id_host"
|
||||
];
|
||||
};
|
||||
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;
|
||||
|
||||
/*
|
||||
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";
|
||||
};
|
||||
system.stateVersion = "23.05";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
./programs
|
||||
./services
|
||||
./configuration.nix
|
||||
];
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./programs
|
||||
./services/avahi.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 @@
|
|||
{...}: {
|
||||
# The nixpkgs command-not-found script does not work with flakes, so I disable it
|
||||
programs.command-not-found.enable = false;
|
||||
{ config, ... }:
|
||||
|
||||
{
|
||||
# The nixpkgs command-not-found script does not work with flakes, so I disable it
|
||||
programs.command-not-found.enable = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,32 +1,23 @@
|
|||
{pkgs, ...}: {
|
||||
imports = [
|
||||
./htop.nix
|
||||
./nix.nix
|
||||
./nix-index.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
|
||||
environment.systemPackages = with pkgs; [
|
||||
speedtest-cli
|
||||
# Bat has a home manager module, but I want it to be available system wide
|
||||
bat
|
||||
file
|
||||
nvd
|
||||
ncdu
|
||||
tree
|
||||
btdu
|
||||
iperf3
|
||||
restic
|
||||
];
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./htop.nix
|
||||
./nix.nix
|
||||
./nix-index.nix
|
||||
./command-not-found.nix
|
||||
];
|
||||
# Some programs dont have a programs.*.enable option, so I install their package here
|
||||
environment.systemPackages = with pkgs; [
|
||||
speedtest-cli
|
||||
bat
|
||||
micro
|
||||
nvd
|
||||
ncdu
|
||||
tree
|
||||
btdu
|
||||
btop
|
||||
iperf3
|
||||
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,13 +1,15 @@
|
|||
{...}: {
|
||||
programs.htop = {
|
||||
enable = true;
|
||||
settings = {
|
||||
tree_view = 1;
|
||||
highlight_base_name = 1;
|
||||
show_program_path = 0;
|
||||
show_cpu_frequency = 1;
|
||||
show_cpu_temperature = 1;
|
||||
hide_userland_threads = 1;
|
||||
};
|
||||
};
|
||||
{ config, ... }:
|
||||
|
||||
{
|
||||
programs.htop = {
|
||||
enable = true;
|
||||
settings = {
|
||||
tree_view = 1;
|
||||
highlight_base_name = 1;
|
||||
show_program_path = 0;
|
||||
show_cpu_frequency = 1;
|
||||
show_cpu_temperature = 1;
|
||||
hide_userland_threads = 1;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,8 @@
|
|||
{...}: {
|
||||
/*
|
||||
environment.systemPackages = [ pkgs.nix-index ];
|
||||
programs.bash.interactiveShellInit = ''
|
||||
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;
|
||||
};
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
environment.systemPackages = [ pkgs.nix-index ];
|
||||
programs.bash.interactiveShellInit = ''
|
||||
source ${pkgs.nix-index}/etc/profile.d/command-not-found.sh
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,62 +1,15 @@
|
|||
{ 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 = {
|
||||
settings = {
|
||||
auto-optimise-store = true;
|
||||
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 = {
|
||||
agenix = {
|
||||
from = {
|
||||
id = "agenix";
|
||||
type = "indirect";
|
||||
};
|
||||
to = {
|
||||
owner = "ryantm";
|
||||
repo = "agenix";
|
||||
type = "github";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
nix = {
|
||||
extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
'';
|
||||
registry = {
|
||||
agenix = {
|
||||
from = { id = "agenix"; 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, ...}: {
|
||||
services.avahi = {
|
||||
enable = true;
|
||||
nssmdns4 = true;
|
||||
};
|
||||
{ config, ... }:
|
||||
|
||||
{
|
||||
services.avahi = {
|
||||
enable = 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;
|
||||
}
|
||||
12
roles/desktop/default.nix
Normal file → Executable file
12
roles/desktop/default.nix
Normal file → Executable file
|
|
@ -1,7 +1,7 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
./services
|
||||
./programs
|
||||
./configuration.nix
|
||||
];
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./discord.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 = [
|
||||
./plasma.nix
|
||||
./sddm.nix
|
||||
./programs
|
||||
./patches
|
||||
];
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./plasma.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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