Compare commits

..

6 Commits

Author SHA1 Message Date
efe873d714 cleaned up the flake 2025-10-30 18:16:10 +01:00
a8d8c4dde9 had to switch to unstable for dms to work 2025-10-30 11:02:09 +01:00
f5d5791efd fix some regressions 2025-10-29 15:26:46 +01:00
6c53fe1aae switch to gnome for usb config 2025-10-09 09:36:41 +02:00
2e3b0b6a35 try to use watt (and quickshell) 2025-10-09 09:36:19 +02:00
38dc75a6e1 usability improvements 2025-09-23 00:06:24 +02:00
28 changed files with 853 additions and 520 deletions

View File

@@ -17,6 +17,7 @@ Don't forget to add the `#<host>` to the end of the target to specify the host c
### Spectre
###
@@ -53,7 +54,6 @@ TODO - disable root user
```
## TODO
- Have a wofi power menu with https://github.com/RiteshChepuri/wofi-scripts/blob/main/wofi-power-menu

499
flake.lock generated
View File

@@ -20,11 +20,11 @@
]
},
"locked": {
"lastModified": 1749155310,
"narHash": "sha256-t0HfHg/1+TbSra5s6nNM0o4tnb3uqWedShSpZXsUMYY=",
"lastModified": 1760101617,
"narHash": "sha256-8jf/3ZCi+B7zYpIyV04+3wm72BD7Z801IlOzsOACR7I=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "94981cf75a9f11da0b6dd6a1abbd7c50a36ab2d3",
"rev": "1826a9923881320306231b1c2090379ebf9fa4f8",
"type": "github"
},
"original": {
@@ -38,11 +38,11 @@
"fromYaml": "fromYaml"
},
"locked": {
"lastModified": 1745523430,
"narHash": "sha256-EAYWV+kXbwsH+8G/8UtmcunDeKwLwSOyfcmzZUkWE/c=",
"lastModified": 1755819240,
"narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=",
"owner": "SenchoPens",
"repo": "base16.nix",
"rev": "58bfe2553d937d8af0564f79d5b950afbef69717",
"rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6",
"type": "github"
},
"original": {
@@ -54,27 +54,28 @@
"base16-fish": {
"flake": false,
"locked": {
"lastModified": 1622559957,
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
"lastModified": 1754405784,
"narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=",
"owner": "tomyun",
"repo": "base16-fish",
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
"type": "github"
},
"original": {
"owner": "tomyun",
"repo": "base16-fish",
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
"type": "github"
}
},
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1736852337,
"narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=",
"lastModified": 1752979451,
"narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5",
"rev": "27cf1e66e50abc622fb76a3019012dc07c678fac",
"type": "github"
},
"original": {
@@ -100,14 +101,80 @@
"type": "github"
}
},
"dankMaterialShell": {
"inputs": {
"dgop": "dgop",
"dms-cli": [
"dms-cli"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1761744363,
"narHash": "sha256-c+lu6aSPPeI9HnqFg4pyNYUWqLrRL2Yju3sFDu42q/w=",
"owner": "AvengeMedia",
"repo": "DankMaterialShell",
"rev": "5e36b1454a7b2cec0c657fd4345a715736bbef19",
"type": "github"
},
"original": {
"owner": "AvengeMedia",
"repo": "DankMaterialShell",
"type": "github"
}
},
"dgop": {
"inputs": {
"nixpkgs": [
"dankMaterialShell",
"nixpkgs"
]
},
"locked": {
"lastModified": 1760238269,
"narHash": "sha256-7CeGZM/Z/5Qt3AYByCRohGYGR1MRuXYzTTbkV/JxyAs=",
"owner": "AvengeMedia",
"repo": "dgop",
"rev": "95acdfce2d323e28fa8f5a4f345160962034f2b5",
"type": "github"
},
"original": {
"owner": "AvengeMedia",
"repo": "dgop",
"type": "github"
}
},
"dms-cli": {
"inputs": {
"gomod2nix": "gomod2nix",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1761674192,
"narHash": "sha256-KpQxBHiXjs1xFlM8mtVaY/XcKX0J5tCoqg8lXtIC9Pk=",
"owner": "AvengeMedia",
"repo": "danklinux",
"rev": "477968d6b3e5dbb82f5e07feb0a1a7b2de9d948e",
"type": "github"
},
"original": {
"owner": "AvengeMedia",
"repo": "danklinux",
"type": "github"
}
},
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1743774811,
"narHash": "sha256-oiHLDHXq7ymsMVYSg92dD1OLnKLQoU/Gf2F1GoONLCE=",
"lastModified": 1758112371,
"narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "df53a7a31872faf5ca53dd0730038a62ec63ca9e",
"rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d",
"type": "github"
},
"original": {
@@ -119,11 +186,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
@@ -132,28 +199,30 @@
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"lastModified": 1756770412,
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "4524271976b625a4a605beefd893f270620fd751",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": [
"stylix",
"systems"
]
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
@@ -185,32 +254,6 @@
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": [
"stylix",
"flake-compat"
],
"gitignore": "gitignore_2",
"nixpkgs": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1742649964,
"narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
@@ -233,42 +276,43 @@
"type": "github"
}
},
"gitignore_2": {
"gnome-shell": {
"flake": false,
"locked": {
"lastModified": 1748186689,
"narHash": "sha256-UaD7Y9f8iuLBMGHXeJlRu6U1Ggw5B9JnkFs3enZlap0=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "8c88f917db0f1f0d80fa55206c863d3746fa18d0",
"type": "github"
},
"original": {
"owner": "GNOME",
"ref": "48.2",
"repo": "gnome-shell",
"type": "github"
}
},
"gomod2nix": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"stylix",
"git-hooks",
"dms-cli",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"lastModified": 1756047880,
"narHash": "sha256-JeuGh9kA1SPL70fnvpLxkIkCWpTjtoPaus3jzvdna0k=",
"owner": "nix-community",
"repo": "gomod2nix",
"rev": "47d628dc3b506bd28632e47280c6b89d3496909d",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gnome-shell": {
"flake": false,
"locked": {
"lastModified": 1732369855,
"narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "dadd58f630eeea41d645ee225a63f719390829dc",
"type": "github"
},
"original": {
"owner": "GNOME",
"ref": "47.2",
"repo": "gnome-shell",
"owner": "nix-community",
"ref": "v1.7.0",
"repo": "gomod2nix",
"type": "github"
}
},
@@ -279,43 +323,20 @@
]
},
"locked": {
"lastModified": 1749154018,
"narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=",
"lastModified": 1761750844,
"narHash": "sha256-ab6kNHAEP/oWz8qdblnDw7TIwetr4GnmnDyvya0aw/k=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111",
"rev": "b8082c6803353456d45e6a8c0d4b36ad33fb7d6a",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.05",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1743808813,
"narHash": "sha256-2lDQBOmlz9ggPxcS7/GvcVdzXMIiT+PpMao6FbLJSr0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "a9f8b3db211b4609ddd83683f9db89796c7f6ac6",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_3": {
"inputs": {
"nixpkgs": [
"zen-browser",
@@ -323,11 +344,11 @@
]
},
"locked": {
"lastModified": 1743604125,
"narHash": "sha256-ZD61DNbsBt1mQbinAaaEqKaJk2RFo9R/j+eYWeGMx7A=",
"lastModified": 1752603129,
"narHash": "sha256-S+wmHhwNQ5Ru689L2Gu8n1OD6s9eU9n9mD827JNR+kw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "180fd43eea296e62ae68e079fcf56aba268b9a1a",
"rev": "e8c19a3cec2814c754f031ab3ae7316b64da085b",
"type": "github"
},
"original": {
@@ -352,11 +373,11 @@
]
},
"locked": {
"lastModified": 1749155331,
"narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=",
"lastModified": 1753964049,
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80",
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5",
"type": "github"
},
"original": {
@@ -381,11 +402,11 @@
]
},
"locked": {
"lastModified": 1749238452,
"narHash": "sha256-8qiKEWcxUrjpUpK+WyFNg/72C8rp70LUuyTD23T+SdQ=",
"lastModified": 1760445448,
"narHash": "sha256-fXGjL6dw31FPFRrmIemzGiNSlfvEJTJNsmadZi+qNhI=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "c7225d73755a6c4c7c72f4d4f3925ea426e325a8",
"rev": "50fb9f069219f338a11cf0bcccb9e58357d67757",
"type": "github"
},
"original": {
@@ -406,15 +427,15 @@
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks",
"systems": "systems",
"systems": "systems_2",
"xdph": "xdph"
},
"locked": {
"lastModified": 1750106438,
"narHash": "sha256-zaTFR6NLaXkveEGl2kdl4UlvT7eHm3cYSbgSkibCO+M=",
"lastModified": 1761742422,
"narHash": "sha256-dke/JIFqles3r4nZwn+XPASGpIxIaKgeUp7NTBHpxgM=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "0ece4af36a988ad06b28ed666011d84372d9e4dc",
"rev": "ff50dc36e912b6ad764802d51be838bc7f6ed323",
"type": "github"
},
"original": {
@@ -435,11 +456,11 @@
]
},
"locked": {
"lastModified": 1749046714,
"narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=",
"lastModified": 1759610243,
"narHash": "sha256-+KEVnKBe8wz+a6dTLq8YDcF3UrhQElwsYJaVaHXJtoI=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330",
"rev": "bd153e76f751f150a09328dbdeb5e4fab9d23622",
"type": "github"
},
"original": {
@@ -503,11 +524,11 @@
]
},
"locked": {
"lastModified": 1749155776,
"narHash": "sha256-t1PM0wxQLQwv2F2AW23uA7pm5giwmcgYEWbNIRct9r4=",
"lastModified": 1759080228,
"narHash": "sha256-RgDoAja0T1hnF0pTc56xPfLfFOO8Utol2iITwYbUhTk=",
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"rev": "396e8aa1c06274835b69da7f9a015fff9a9b7522",
"rev": "629b15c19fa4082e4ce6be09fdb89e8c3312aed7",
"type": "github"
},
"original": {
@@ -532,11 +553,11 @@
]
},
"locked": {
"lastModified": 1749145882,
"narHash": "sha256-qr0KXeczF8Sma3Ae7+dR2NHhvG7YeLBJv19W4oMu6ZE=",
"lastModified": 1758927902,
"narHash": "sha256-LZgMds7M94+vuMql2bERQ6LiFFdhgsEFezE4Vn+Ys3A=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "1bfb84f54d50c7ae6558c794d3cfd5f6a7e6e676",
"rev": "4dafa28d4f79877d67a7d1a654cddccf8ebf15da",
"type": "github"
},
"original": {
@@ -557,11 +578,11 @@
]
},
"locked": {
"lastModified": 1749819919,
"narHash": "sha256-7F/KG8dwSH9JXdlpOVrEEArS+PJSn0iEnx5eVCk89/I=",
"lastModified": 1759619523,
"narHash": "sha256-r1ed7AR2ZEb2U8gy321/Xcp1ho2tzn+gG1te/Wxsj1A=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "57ab2a867d8b554ad89f29060c15efd11631db91",
"rev": "3df7bde01efb3a3e8e678d1155f2aa3f19e177ef",
"type": "github"
},
"original": {
@@ -582,11 +603,11 @@
]
},
"locked": {
"lastModified": 1749145760,
"narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=",
"lastModified": 1755184602,
"narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6",
"rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d",
"type": "github"
},
"original": {
@@ -597,27 +618,44 @@
},
"nix-flatpak": {
"locked": {
"lastModified": 1711997201,
"narHash": "sha256-J71xzQlVYsjagA4AsVwRazhBh2rZrPpKvxTgs6UzL7c=",
"lastModified": 1754777568,
"narHash": "sha256-0bBqT+3XncgF8F03RFAamw9vdf0VmaDoIJLTGkjfQZs=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "b76fa31346db7fc958a9898f3c594696ca71c4fd",
"rev": "62f636b87ef6050760a8cb325cadb90674d1e23e",
"type": "github"
},
"original": {
"owner": "gmodena",
"ref": "v0.4.1",
"repo": "nix-flatpak",
"type": "github"
}
},
"nix-vscode-extensions": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1761726545,
"narHash": "sha256-+Id4G/5NRpf8Lkdr5q4PBrQo6hvVFTbrN/J+0Q0KU6s=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "daf7c5026b02623d17ad74548a791c387db438d8",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1749794982,
"narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=",
"lastModified": 1761114652,
"narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81",
"rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c",
"type": "github"
},
"original": {
@@ -629,11 +667,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1749794982,
"narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=",
"lastModified": 1761373498,
"narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81",
"rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce",
"type": "github"
},
"original": {
@@ -645,36 +683,61 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1750005367,
"narHash": "sha256-h/aac1dGLhS3qpaD2aZt25NdKY7b+JT0ZIP2WuGsJMU=",
"lastModified": 1759770925,
"narHash": "sha256-CZwkCtzTNclqlhuwDsVtGoRumTpqCUK0xSnFIMgd8ls=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "6c64dabd3aa85e0c02ef1cdcb6e1213de64baee3",
"rev": "674c2b09c59a220204350ced584cadaacee30038",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"rev": "674c2b09c59a220204350ced584cadaacee30038",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1743703532,
"narHash": "sha256-s1KLDALEeqy+ttrvqV3jx9mBZEvmthQErTVOAzbjHZs=",
"owner": "NixOS",
"lastModified": 1761373498,
"narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "bdb91860de2f719b57eef819b5617762f7120c70",
"rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
"inputs": {
"flake-parts": [
"stylix",
"flake-parts"
],
"nixpkgs": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1758998580,
"narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=",
"owner": "nix-community",
"repo": "NUR",
"rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat",
@@ -685,11 +748,11 @@
]
},
"locked": {
"lastModified": 1749636823,
"narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=",
"lastModified": 1760663237,
"narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "623c56286de5a3193aa38891a6991b28f9bab056",
"rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37",
"type": "github"
},
"original": {
@@ -700,10 +763,13 @@
},
"root": {
"inputs": {
"dankMaterialShell": "dankMaterialShell",
"dms-cli": "dms-cli",
"home-manager": "home-manager",
"hyprland": "hyprland",
"nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs_2",
"nix-vscode-extensions": "nix-vscode-extensions",
"nixpkgs": "nixpkgs_3",
"nixpkgs-unstable": "nixpkgs-unstable",
"sops-nix": "sops-nix",
"stylix": "stylix",
@@ -718,11 +784,11 @@
]
},
"locked": {
"lastModified": 1750119275,
"narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=",
"lastModified": 1760998189,
"narHash": "sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2",
"rev": "5a7d18b5c55642df5c432aadb757140edfeb70b3",
"type": "github"
},
"original": {
@@ -738,33 +804,49 @@
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-compat": "flake-compat_2",
"flake-utils": "flake-utils",
"git-hooks": "git-hooks",
"flake-parts": "flake-parts",
"gnome-shell": "gnome-shell",
"home-manager": "home-manager_2",
"nixpkgs": "nixpkgs_3",
"systems": "systems_2",
"nixpkgs": [
"nixpkgs"
],
"nur": "nur",
"systems": "systems_3",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-tmux": "tinted-tmux"
"tinted-schemes": "tinted-schemes",
"tinted-tmux": "tinted-tmux",
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1747771231,
"narHash": "sha256-DYdmj22ZvkN5x9/VtdV5Wnze+UaPuboYraCPnOWn6u4=",
"owner": "danth",
"lastModified": 1761666531,
"narHash": "sha256-nKOOPeblDcebtYfBjHo+PHXHKNSNKuifn1EGcBEgKWs=",
"owner": "nix-community",
"repo": "stylix",
"rev": "66f554e4e32d804bcf2c007a7b7efef04a3773b0",
"rev": "f8f4e3c3658ee962f8f332a56720c8dfc2836f7a",
"type": "github"
},
"original": {
"owner": "danth",
"ref": "release-24.11",
"owner": "nix-community",
"repo": "stylix",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
@@ -779,7 +861,7 @@
"type": "github"
}
},
"systems_2": {
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@@ -814,28 +896,43 @@
"tinted-kitty": {
"flake": false,
"locked": {
"lastModified": 1716423189,
"narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=",
"lastModified": 1735730497,
"narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=",
"owner": "tinted-theming",
"repo": "tinted-kitty",
"rev": "eb39e141db14baef052893285df9f266df041ff8",
"rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-kitty",
"rev": "eb39e141db14baef052893285df9f266df041ff8",
"type": "github"
}
},
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1757716333,
"narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "317a5e10c35825a6c905d912e480dfe8e71c7559",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "schemes",
"type": "github"
}
},
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1743296873,
"narHash": "sha256-8IQulrb1OBSxMwdKijO9fB70ON//V32dpK9Uioy7FzY=",
"lastModified": 1757811970,
"narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "af5152c8d7546dfb4ff6df94080bf5ff54f64e3a",
"rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e",
"type": "github"
},
"original": {
@@ -844,6 +941,22 @@
"type": "github"
}
},
"tinted-zed": {
"flake": false,
"locked": {
"lastModified": 1757811247,
"narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=",
"owner": "tinted-theming",
"repo": "base16-zed",
"rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-zed",
"type": "github"
}
},
"watt": {
"inputs": {
"nixpkgs": [
@@ -893,11 +1006,11 @@
]
},
"locked": {
"lastModified": 1749490041,
"narHash": "sha256-R9Dn9IyUdPaJHD2Oqd7XJnnxpka6M6UYw4Ld0iA46HM=",
"lastModified": 1760713634,
"narHash": "sha256-5HXelmz2x/uO26lvW7MudnadbAfoBnve4tRBiDVLtOM=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "3cf35e178bc192ee51e3fddfd69e531e2c106a30",
"rev": "753bbbdf6a052994da94062e5b753288cef28dfb",
"type": "github"
},
"original": {
@@ -908,17 +1021,17 @@
},
"zen-browser": {
"inputs": {
"home-manager": "home-manager_3",
"home-manager": "home-manager_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1750130285,
"narHash": "sha256-fauK56RkWQcNaDOehxxE2lcmNG0Vi++4KWlFQIJm4QE=",
"lastModified": 1761712008,
"narHash": "sha256-Nf2s59dLg6KDUV0omZqIlOGNUxw/Rl/KKXEXQGFCAlo=",
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"rev": "00b7edda741d3380fa123f053efd59774361d888",
"rev": "1383ed38745d12f3896c996848d24c451643db58",
"type": "github"
},
"original": {

188
flake.nix
View File

@@ -2,21 +2,29 @@
description = "Nix config entry point";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
# Home manager
home-manager.url = "github:nix-community/home-manager/release-25.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
# Managing flatpak apps
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1";
nix-flatpak.url = "github:gmodena/nix-flatpak";
# hyprland, plugins and related utils
hyprland.url = "github:hyprwm/Hyprland";
stylix.url = "github:danth/stylix/release-24.11";
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
# zen browser
zen-browser.url = "github:0xc000022070/zen-browser-flake";
# IMPORTANT: we're using "libgbm" and is only available in unstable so ensure
# to have it up-to-date or simply don't specify the nixpkgs input
zen-browser.inputs.nixpkgs.follows = "nixpkgs";
zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
# power management
watt = {
@@ -25,114 +33,132 @@
};
# secrets
sops-nix.url = "github:Mic92/sops-nix";
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
# quickshell
dms-cli = {
url = "github:AvengeMedia/danklinux";
inputs.nixpkgs.follows = "nixpkgs";
};
dankMaterialShell = {
url = "github:AvengeMedia/DankMaterialShell";
inputs.nixpkgs.follows = "nixpkgs";
inputs.dms-cli.follows = "dms-cli";
};
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions";
};
outputs = {
self,
nixpkgs,
nixpkgs-unstable,
home-manager,
stylix,
sops-nix,
nix-vscode-extensions,
...
} @ inputs:
let
in
{
## NixOS configurations are the main output of this flake
# HP Spectre x360 2018
nixosConfigurations.Nixtre = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
username = "remy";
name = "Rémy";
modules = [
pkgs = nixpkgs.legacyPackages.${system};
pkgs-unstable = nixpkgs-unstable.legacyPackages.${system};
lib = nixpkgs.lib;
systems = {
# HP Spectre x360 2018
Nixtre = {
hostModules = [
./hosts/spectre-x360-2018
stylix.nixosModules.stylix
inputs.watt.nixosModules.default
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.remy.imports = [
];
userModules = [
./users/remy_spectre
inputs.nix-flatpak.homeManagerModules.nix-flatpak
];
}
extraModules = [
inputs.stylix.nixosModules.stylix
inputs.sops-nix.nixosModules.sops
];
};
nixosConfigurations.nichts = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
# Portable usb stick
nichts = {
hostModules = [
./hosts/mobile-usb
stylix.nixosModules.stylix
inputs.watt.nixosModules.default
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.remy.imports = [
];
userModules = [
./users/remy_usb
inputs.nix-flatpak.homeManagerModules.nix-flatpak
];
}
extraModules = [
inputs.stylix.nixosModules.stylix
inputs.sops-nix.nixosModules.sops
];
};
nixosConfigurations.nyx = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
# Lenovo yoga 7 pro
nyx = {
hostModules = [
./hosts/yoga-7-pro
sops-nix.nixosModules.sops
stylix.nixosModules.stylix
inputs.watt.nixosModules.default
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.remy.imports = [
];
userModules = [
./users/remy_yoga
inputs.nix-flatpak.homeManagerModules.nix-flatpak
inputs.dankMaterialShell.homeModules.dankMaterialShell.default
];
}
extraModules = [
inputs.stylix.nixosModules.stylix
inputs.sops-nix.nixosModules.sops
{ nixpkgs.overlays = [ inputs.nix-vscode-extensions.overlays.default ]; }
];
};
};
in
{
# For each entry in `systems` create a nixosConfiguration
nixosConfigurations = lib.mapAttrs (_name: cfg:
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs pkgs-unstable; };
modules =
cfg.hostModules ++
cfg.extraModules ++
[ home-manager.nixosModules.home-manager {
# Common home-manager flags
home-manager = {
backupFileExtension = ".backup";
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = { inherit inputs pkgs-unstable; };
};
# nixosConfigurations.raspberry-pi = nixpkgs.lib.nixosSystem {
# system = "aarch64-linux";
# Merge in all the user fragments for this host
home-manager.users.remy = lib.mkMerge cfg.userModules;
}
]
;
}
) systems;
# ## Useful nix build tools
# # iso builder TODO
# nixosConfigurations.bcachefs-iso = nixpkgs.lib.nixosSystem {
# system = "x86_64-linux";
# modules = [
# ./hosts/raspberry-pi/configuration.nix
# "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel-no-zfs.nix"
# ({ lib, pkgs, ... }: {
# boot.supportedFilesystems = [ "bcachefs" ];
# boot.kernelPackages = lib.mkOverride 0 pkgs.linuxPackages_latest;
# })
# ];
# };
## Home Manager configurations here?
## Useful nix build tools
# iso builder TODO
nixosConfigurations.bcachefs-iso = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel-no-zfs.nix"
({ lib, pkgs, ... }: {
boot.supportedFilesystems = [ "bcachefs" ];
boot.kernelPackages = lib.mkOverride 0 pkgs.linuxPackages_latest;
})
];
};
};
}

View File

@@ -5,6 +5,7 @@
networking.hostName = "nichts";
userName = "remy";
gnome.enable = true;
};
};
@@ -13,11 +14,12 @@
./configuration.nix
./hardware-configuration.nix
# ../../modules/nixos/backup.nix
../../modules/nixos/bluetooth.nix
../../modules/nixos/flakes.nix
../../modules/nixos/flatpak.nix
../../modules/nixos/fonts.nix
../../modules/nixos/hyprland.nix
../../modules/nixos/gnome.nix
../../modules/nixos/language.nix
../../modules/nixos/ld.nix
../../modules/nixos/monitoring.nix
@@ -27,12 +29,11 @@
../../modules/nixos/podman.nix
../../modules/nixos/power.nix
../../modules/nixos/stylix.nix
../../modules/nixos/usb_config.nix
../../modules/nixos/user.nix
../../utils/binary-cache.nix
../../utils/garbage-collection.nix
../../utils/unfree.nix
];
}

View File

@@ -3,7 +3,7 @@ Installed using
> sudo nixos-install --root /tmp/new-install/ --flake .#nyx --impure --no-root-passwd
```
where `/tmp/new-install` was the moint point of the target FS.
where `/tmp/new-install` was the mount point of the target FS.
The root user is effectively deactivated, hence the additional setup:
- users are part of the `wheel` group

View File

@@ -12,6 +12,25 @@
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.kernelParams = [
"quiet"
"splash"
];
# https://github.com/lwfinger/rtw89/issues/240
# boot.extraModprobeConfig = ''
# options rtw89_pci disable_aspm_l1ss=y disable_aspm_l1=y disable_clkreq=y
# options rtw89_core disable_ps_mode=y
# '';
# ipu is apparently required to make the webcam available as a camera device
hardware.ipu6 = {
enable = true;
platform = "ipu6";
};
services.fwupd.enable = true;
fileSystems."/" =
{ device = "/dev/disk/by-uuid/1ea0784c-4eeb-46f1-a0ae-f6b311b27bd1";
@@ -37,23 +56,26 @@
};
# TODO - only enable this if the user remy exists
fileSystems."/home/${config.nix-config.userName}/scratch" =
fileSystems."/scratch/${config.nix-config.userName}" =
{ device = "/dev/disk/by-uuid/1ea0784c-4eeb-46f1-a0ae-f6b311b27bd1";
fsType = "btrfs";
options = [ "subvol=@scratch" ];
options = [
"subvol=@scratch"
# Even though the mount point is not in home, we still want to show it in gnome-related file managers
"x-gvfs-show"
"x-gvfs-name=scratch"
"x-gvfs-icon=view-refresh"
];
# TODO make it owned by the user
};
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`.
# Enables DHCP on each ethernet and wireless interface.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.wireguard-home.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp192s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -0,0 +1,9 @@
{pkgs, ...}:
{
home.packages = [
pkgs.rofi-bluetooth
];
# patch the rofi-bluetooth script to use an alternative rofi-command variable
}

View File

@@ -1,26 +1,33 @@
{pkgs, ...}:
let
baseExtensions = with pkgs.vscode-extensions; [
baseExtensions = with pkgs.vscode-marketplace; [
# QOL
mhutchie.git-graph
redhat.vscode-yaml
github.copilot
github.copilot-chat
# github.copilot
# github.copilot-chat
# Nix environment selector
arrterian.nix-env-selector
continue.continue
];
baseSettings = {
# visual
"window.menuBarVisibility" = "toggle";
"window.titleBarStyle" = "native";
"window.customTitleBarVisibility" = "never";
"window.menuBarVisibility" = "hidden";
"window.autoDetectColorScheme" = true;
"workbench.preferredDarkColorTheme" = "Default Dark Modern";
"workbench.preferredLightColorTheme" = "Default Light Modern";
"editor.fontFamily" = "'FiraCode Nerd Font Mono', 'monospace', monospace";
"terminal.integrated.fontFamily" = "FiraCode Nerd Font Mono";
"workbench.iconTheme" = "vs-seti";
# telemetry
"telemetry.enableCrashReporter" = false;
"telemetry.enableTelemetry" = false;
"telemetry.telemetryLevel" = "off";
"redhat.telemetry.enabled" = false;
# editor QOL
@@ -86,17 +93,16 @@ in
{
programs.vscode = {
enable = true;
# install vscode in a FHS environment to allow extensions with prebuilt binaries
# package = pkgs.vscode.fhs;
profiles.default = {
userSettings = baseSettings // {
"window.newWindowProfile" = "development";
};
extensions = [];
};
profiles.development = {
extensions = baseExtensions ++ (with pkgs.vscode-extensions; [
extensions = baseExtensions ++ (with pkgs.vscode-marketplace; [
# python
ms-python.python
ms-python.isort
@@ -119,31 +125,19 @@ in
profiles.science = {
extensions = baseExtensions ++ (with pkgs.vscode-extensions; [
extensions = baseExtensions ++ (with pkgs.vscode-marketplace; [
# python + jupyter
ms-python.python
ms-python.isort
ms-python.debugpy
ms-python.vscode-pylance
# ms-python.vscode-pylance
ms-toolsai.vscode-jupyter-slideshow
ms-toolsai.jupyter
ms-toolsai.jupyter-hub
ms-toolsai.jupyter-renderers
# Typst
myriad-dreamin.tinymist
]) ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "jupyter";
publisher = "ms-toolsai";
version = "2025.3.2025032101";
sha256 = "sha256-s2qEUl9J6EOije6MasZOnHErYs3NYXBqLSfMT03vEH0=";
}
{
name = "jupyter-hub";
publisher = "ms-toolsai";
version = "2024.10.1002831100";
sha256 = "sha256-5IRczwXbYkDdYEOXvQnnH+HJNLvsRsrZ6fnoVCveqrs=";
}
];
]);
keybindings = baseKeybindings ++ [
# run code cell in jupyter
@@ -174,7 +168,6 @@ in
"editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
};
"[typst-code]" = {
"git.openRepositoryInParentFolders" = "never";
"editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
};
"tinymist.fontPaths" = [
@@ -183,10 +176,7 @@ in
"workbench.colorCustomizations" = {
"statusBar.background" = "#003f9293";
};
};
};
};
}

View File

@@ -8,7 +8,6 @@
services.flatpak.uninstallUnmanaged = false;
services.flatpak.packages = [
"com.github.flxzt.rnote"
"com.github.tchx84.Flatseal"
"com.spotify.Client"
"io.podman_desktop.PodmanDesktop"

View File

@@ -0,0 +1,47 @@
{pkgs, config, lib, ...}:
let
hyprctl = "${pkgs.hyprland}/bin/hyprctl";
in
{
config = {
services.fusuma = {
enable = true;
settings = {
swipe = {
"3" = {
up = {
command = "exec ${hyprctl} dispatch fullscreen 1";
};
down = {
command = "exec ${lib.getExe config.nix-config.launcher}";
};
};
};
pinch = {
"4" = {
"in" = {
command = "exec ${hyprctl} dispatch togglespecialworkspace magic";
};
"out" = {
command = "exec ${hyprctl} dispatch togglespecialworkspace magic";
};
};
};
hold = {
"5" = {
command = "exec ${lib.getExe config.nix-config.launcher}";
threshold = 0.1;
};
};
threshold = {
pinch = 0.1;
};
};
};
};
}

View File

@@ -4,9 +4,9 @@
enable = true;
settings = {
general = {
# avoid starting multiple hyprlock instances.
before_sleep_cmd = "pidof hyprlock || hyprlock --immediate-render --no-fade-in";
lock_cmd = "pidof hyprlock || hyprlock --immediate-render --no-fade-in";
# See: https://github.com/hyprwm/hypridle/issues/146
before_sleep_cmd = "hyprlock --no-fade-in";
lock_cmd = "hyprlock";
after_sleep_cmd = "hyprctl dispatch dpms on";
ignore_dbus_inhibit = false;
};
@@ -22,7 +22,7 @@
{
# dim screen after 2 minutes
timeout = 120;
on-timeout = "brightnessctl -s set 2";
on-timeout = "brightnessctl -s set 2%";
on-resume = "brightnessctl -r";
# monitor backlight restore.
}
@@ -40,6 +40,5 @@
}
];
};
};
}

View File

@@ -9,8 +9,8 @@ in
default = [
"gnome-keyring-daemon --start --components=secrets"
"wl-paste --watch cliphist store"
"${lib.getExe pkgs.waybar}"
"${lib.getExe pkgs.hypridle}"
# TODO - currently broken
"${pkgs.owncloud-client}"
"${lib.getExe pkgs.keepassxc}"
];

View File

@@ -23,6 +23,9 @@ in
enable = true;
systemd.enable = true;
settings = {
# debug = {
# disable_logs = false;
# };
general = {
resize_on_border = true;
gaps_in = 5;
@@ -98,6 +101,9 @@ in
# the internal monitor, always at the "center"
"eDP-1, ${cfg.internal-screen.resolution}, 0x0, ${cfg.internal-screen.scale}"
# ultra wide monitor at home
"desc:Samsung Electric Company C34H89x H4ZN501178, 3440x1440@99.98, auto-up, 1"
# Samsung monitors at irchel (matching the description)
"desc:Samsung Electric Company LS27D80xU, 2560x1440@59.95, auto-up, 1"
@@ -126,7 +132,7 @@ in
# Global overview
pkgs.hyprlandPlugins.hyprspace
# Touch gestures
pkgs.hyprlandPlugins.hyprgrass
# pkgs.hyprlandPlugins.hyprgrass
];
};
};

View File

@@ -28,7 +28,7 @@ in
# Close window
"$mod, Q, killactive,"
# Force close window
# "$mod+Shift, Q, forcekillactive,"
"$mod+Shift, Q, forcekillactive,"
# Toggle Floating and reduce size
"$mod, f, togglefloating,"
@@ -49,21 +49,25 @@ in
"$mod+Shift, up, movewindow, u"
"$mod+Shift, down, movewindow, d"
# Move window to workspace
"$mod+Ctrl, left, movetoworkspace, -1"
"$mod+Ctrl, right, movetoworkspace, +1"
# Switch workspace
"$mod+Alt, left, workspace, -1"
"$mod+Alt, right, workspace, +1"
"$mod, left, workspace, -1"
"$mod, right, workspace, +1"
"$mod, mouse_down, workspace, -1"
"$mod, mouse_up, workspace, +1"
# move to scratch workspace
"$mod+Ctrl, up, movetoworkspace, special:magic"
"$mod+Ctrl, down, movetoworkspace, 1"
# toggle scratch workspace
"$mod+Alt, up, togglespecialworkspace, magic"
"$mod+Alt, down, togglespecialworkspace, magic"
"$mod+Ctrl, down, movetoworkspace, prev"
# switch to scratch workspace
"$mod, up, togglespecialworkspace, magic"
"$mod, down, togglespecialworkspace, magic"
# Screenshot
"$mod, Print, exec, hyprshot -m region -o ~/Pictures/Screenshots"
@@ -80,7 +84,7 @@ in
# Other pickers using the same launcher
"$mod+Ctrl, space, exec, ${lib.getExe config.nix-config.filePicker}"
"$mod, period, exec, ${lib.getExe config.nix-config.emojiPicker}"
];
# repeatable bindings
@@ -97,25 +101,26 @@ in
"$mod, KP_Subtract, resizeactive, -2% -2%"
"$mod, PLUS, resizeactive, 2% 2%"
"$mod, KP_Add, resizeactive, 2% 2%"
];
# lock-screen bindings
bindl = [
## depending on the setup: lock screen or switch to clamshell mode
# in any case, the internal screen is turned off
# ", switch:on:Lid Switch, exec, loginctl lock-session"
", XF86PowerOff, exec, hyprctl dispatch dpms on eDP-1"
## depending on the setup we expect different behaviors when closing the lid:
# either sleep & lock screen OR switch to clamshell mode
# through the `services.logind.lidSwitch` and `services.logind.lidSwitchDocked` we can differentiate both cases
# when not docked, the system is put to sleep and the screen is implicitly locked as per the hypridle configuration
# when docked, the lid switch is ignored by logind and needs to be handled manually, see below:
# if an additional monitor is detected, simply deactivate the internal screen and continue working on the external monitor
", switch:on:Lid Switch, exec, hyprctl dispatch dpms off eDP-1"
", switch:on:Lid Switch, exec, sleep 0.5; hyprctl monitors | grep 'dpmsStatus: 1' && hyprctl keyword monitor 'eDP-1,disable'"
# # if no external monitor is detected, lock the screen
# ", switch:on:Lid Switch, exec, sleep 0.5; hyprctl monitors | grep 'dpmsStatus: 1' || loginctl lock-session"
", switch:on:Lid Switch, exec, hyprctl keyword monitor 'eDP-1,disable"
## on reopening the lid, turn the internal screen back on
", switch:off:Lid Switch, exec, hyprctl dispatch dpms on eDP-1"
# if an external monitor was connected, then we need to reload the monitor configuration
", switch:off:Lid Switch, exec, hyprctl monitors | grep 'ID 1' && hyprctl reload"
# we need to reload the monitor configuration so that the internal screen is turned back on
", switch:off:Lid Switch, exec, hyprctl reload"
];
# bindr = [
@@ -129,7 +134,21 @@ in
# resize the window using right click
"$mod, mouse:273, resizewindow"
];
};
extraConfig = ''
bind= , XF86AudioMicMute, submap, player_submap
submap=player_submap
bind=, XF86AudioRaiseVolume, exec, notify-send previous; hyprctl dispatch submap reset
bind=, XF86AudioLowerVolume, exec, notify-send next; hyprctl dispatch submap reset
bind=, XF86AudioMicMute, exec, notify-send pause; hyprctl dispatch submap reset
submap=reset
'';
};
};
}

View File

@@ -5,16 +5,12 @@
settings = {
# # prevent the screen being shown for a split second
# animations = {
# animation = "fadeIn, 0, 0, linear";
# };
general = {
# immediately lock the screen
grace = 0;
no_fade_in = false;
disable_loading_bar = false;
# no_fade_in = false;
# disable_loading_bar = false;
};
background = {

View File

@@ -17,7 +17,6 @@ in
config = {
# required to autoload fonts from packages installed via Home Manager
fonts.fontconfig.enable = true;
@@ -27,7 +26,7 @@ in
];
# enable waybar
programs.waybar.enable = true;
programs.waybar.enable = false;
programs.waybar = {
settings = {
@@ -85,14 +84,17 @@ in
};
};
"clock" = {
format = " {:%H:%M}";
format = "{:%H:%M}";
interval = 1;
tooltip-format = "{calendar}";
calendar = {
"format" = {
"today" = "<span color='#fAfBfC'><b>{}</b></span>";
};
};
# calendar = {
# format = "%Y-%m-%d\n󰃰 %A\n\n%H:%M";
# start-day = 1; # Monday
# first-weekday = 1; # Monday
# week-number = false;
# long-weekdays = true;
# hide-if-empty = false;
# };
};
"idle_inhibitor" = {
format = "{icon}";
@@ -104,7 +106,7 @@ in
};
"bluetooth" = {
format-on = "󰂯";
format-off = "BT-off";
format-off = "󰂲";
format-disabled = "󰂲";
format-connected-battery = "{device_battery_percentage}% 󰂯";
format-alt = "{device_alias} 󰂯";
@@ -137,7 +139,7 @@ in
format = "{volume}% {icon}";# {format_source}";
format-bluetooth = "{volume}% {icon}";# {format_source}";
format-bluetooth-muted = " {icon}";# {format_source}";
format-muted = "🔇";# {format_source}";
format-muted = "";# {format_source}";
format-alt = "{format_source} {icon}";
# format-source = " {volume}%";
# format-source-muted = "";

View File

@@ -47,6 +47,8 @@ in
cursor_trail_decay = "0.1 0.4";
url_style = "curly";
notify_on_cmd_finish = "unfocused";
window_padding_width = 5;
};
keybindings = {

View File

@@ -33,6 +33,10 @@ let
exit 1
fi
'';
emojiPicker = pkgs.writeShellScriptBin "emoji-picker" ''
curl -s https://raw.githubusercontent.com/littleboycoding/emoji-dmenu/refs/heads/master/emoji.txt | fuzzel --dmenu | cut -d ' ' -f 1 | wl-copy
'';
in
{
@@ -54,6 +58,12 @@ in
type = lib.types.package;
default = filePicker;
};
emojiPicker = lib.mkOption {
description = "Package to use as a emoji picker";
type = lib.types.package;
default = emojiPicker;
};
};
config = {
@@ -107,6 +117,7 @@ in
home.packages = with pkgs; [
powerMenu
filePicker
emojiPicker
];
};
}

View File

@@ -0,0 +1,28 @@
{
lib,
pkgs,
...
}:
{
programs.dankMaterialShell.enable = true;
programs.dankMaterialShell = {
enableSystemd = true;
enableSystemMonitoring = false;
enableClipboard = true;
enableVPN = true;
enableBrightnessControl = true;
enableColorPicker = false;
enableDynamicTheming = true;
enableAudioWavelength = false;
enableCalendarEvents = false;
enableSystemSound = true;
# default = {
# settings = ''{}'';
# session = ''{}'';
# };
# plugins = {};
};
}

View File

@@ -52,7 +52,8 @@ in
stylix = {
# Stylix is already enabled since the system is configured to use it
# enable = true;
enable = true;
image = ./../../wallpapers/magicpattern-87PP9Zd7MNo-unsplash.jpg;
# don't theme applications by default
autoEnable = false;
@@ -68,8 +69,8 @@ in
};
image = ./../../wallpapers/magicpattern-87PP9Zd7MNo-unsplash.jpg;
polarity = lib.mkDefault "dark";
fonts = {
@@ -107,9 +108,8 @@ in
popups = 0.9;
terminal = cfg.terminalOpacity;
};
};
stylix.base16Scheme = {
base16Scheme = {
scheme = "onelight";
author = "https://github.com/one-dark";
base00 = "#fafafa";
@@ -128,20 +128,55 @@ in
base0D = "#4078f2";
base0E = "#a626a4";
base0F = "#986801";
};
stylix.targets = {
targets = {
hyprpaper.enable = true;
hyprlock.enable = true;
gnome.enable = true;
# disabled because they overwrite too many settings
# wofi.enable = true;
# vscode.enable = true;
# waybar.enable = true;
# kitty.enable = true;
# gnome
# wofi
# vscode
# waybar
# kitty
fontconfig.enable = true;
font-packages.enable = true;
};
};
# https://pltanton.dev/posts/2024/02/nix-based-dark-light-theme-switch/
home.packages = [
(lib.lowPrio (pkgs.writeShellApplication {
name = "toggle-theme";
runtimeInputs = with pkgs; [ home-manager coreutils ripgrep ];
text =
''
"$(home-manager generations | head -1 | rg -o '/[^ ]*')"/specialisation/light-theme/activate
echo "Switched to light theme"
'';
}))
];
specialisation.light-theme.configuration = {
stylix = {
polarity = "light";
};
home.packages = [
(lib.hiPrio (pkgs.writeShellApplication {
name = "toggle-theme";
runtimeInputs = with pkgs; [ home-manager coreutils ripgrep ];
text =
''
"$(home-manager generations | head -2 | tail -1 | rg -o '/[^ ]*')"/activate
echo "Switched to dark theme"
'';
}))
];
};
};
}

View File

@@ -26,17 +26,6 @@
hardware.bluetooth = {
enable = true;
# powerOnBoot = true;
# settings = {
# General = {
# Name = "Nixtre";
# ControllerMode = "dual";
# FastConnectable = "true";
# Experimental = "true";
# };
# Policy = {
# AutoEnable = "true";
# };
# };
powerOnBoot = false;
};
}

31
modules/nixos/gnome.nix Normal file
View File

@@ -0,0 +1,31 @@
{
config,
lib,
pkgs,
...
}:
{
options.nix-config.gnome.enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable GNOME desktop environment.";
};
config = lib.mkIf config.nix-config.gnome.enable {
services = {
displayManager.gdm.enable = true;
desktopManager.gnome.enable = true;
gnome = {
core-apps.enable = false;
core-developer-tools.enable = false;
games.enable = false;
};
# Exclude some packages to keep the installation lean
environment.gnome.excludePackages = with pkgs; [
gnome-tour
gnome-user-docs
];
};
};
}

View File

@@ -1,5 +1,6 @@
{
config,
inputs,
lib,
pkgs,
...
@@ -15,94 +16,51 @@
};
};
imports = [
inputs.watt.nixosModules.default
];
config = {
services.tlp = {
enable = true;
settings = {
# processor chooses frequencies itself
CPU_DRIVER_OPMODE_ON_AC = "active";
CPU_DRIVER_OPMODE_ON_BAT = "active";
# governor dictates global behavior of the CPU
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_SCALING_GOVERNOR_ON_AC = "performance";
# energy performance policy (EPP) sets the energy/performance balance
CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
# CPU_MIN_PERF_ON_AC = 0;
# CPU_MAX_PERF_ON_AC = 100;
# CPU_MIN_PERF_ON_BAT = 0;
# CPU_MAX_PERF_ON_BAT = 50;
# enable battery charge thresholds on the default battery
STOP_CHARGE_THRESH_BAT0 = 1;
# STOP_CHARGE_THRESH_BAT0 = 80;
# CPU_BOOST_ON_AC = 1;
# CPU_BOOST_ON_BAT = 0;
# CPU_HWP_DYN_BOOST_ON_AC = 1;
# CPU_HWP_DYN_BOOST_ON_BAT = 0;
};
};
# services.watt = {
# services.tlp = {
# enable = true;
# settings = {
# charger = {
# governor = "performance";
# turbo = "auto";
# epp = "performance";
# epb = "balance_performance";
# platform_profile = "performance";
# # processor chooses frequencies itself but respects the limits set by the user
# CPU_DRIVER_OPMODE_ON_AC = "guided";
# CPU_DRIVER_OPMODE_ON_BAT = "guided";
# enable_auto_turbo = true;
# # Custom thresholds for auto turbo management
# turbo_auto_settings = {
# load_threshold_high = 70.0;
# load_threshold_low = 30.0;
# temp_threshold_high = 75.0;
# initial_turbo_state = false; # whether turbo should be initially enabled (false = disabled)
# # governor dictates global behavior of the CPU
# CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
# CPU_SCALING_GOVERNOR_ON_AC = "performance";
# # energy performance policy (EPP) sets the energy/performance balance
# CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power";
# CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
# # clock speeds reported by `sudo tlp-stat`
# # 623377 [kHz] and 5090910 [kHz]
# # CPU_SCALING_MIN_FREQ_ON_AC = 623377;
# # CPU_SCALING_MAX_FREQ_ON_AC = 5090910;
# # CPU_SCALING_MIN_FREQ_ON_BAT = 0;
# # # reduce max frequency on battery to save power
# # CPU_SCALING_MAX_FREQ_ON_BAT = 3000000;
# # Allow the CPU to boost
# CPU_BOOST_ON_AC = 1;
# CPU_BOOST_ON_BAT = 1;
# RADEON_DPM_PERF_LEVEL_ON_AC = "high";
# WIFI_PWR_ON_BAT = "off";
# # enable battery charge thresholds on the default battery
# STOP_CHARGE_THRESH_BAT0 = 1;
# };
# };
# battery = {
# governor = "powersave";
# turbo = "auto";
# epp = "power";
# epb = "balance_power";
# platform_profile = "low-power";
# enable_auto_turbo = true;
# # Custom thresholds for auto turbo management
# turbo_auto_settings = {
# load_threshold_high = 80.0;
# load_threshold_low = 40.0;
# temp_threshold_high = 65.0;
# initial_turbo_state = false; # whether turbo should be initially enabled (false = disabled)
# };
# };
# daemon = {
# poll_interval_sec = 10;
# adaptive_interval = true;
# min_poll_interval_sec = 1;
# max_poll_interval_sec = 30;
# throttle_on_battery = true;
# stats_file_path = "/var/run/watt-stats";
# };
# # battery_charge_thresholds = [50 90];
# };
# # logind.lidSwitchExternalPower = "ignore"; # prevent lid switch from triggering a suspend
# };
systemd.sleep.extraConfig = ''
AllowSuspend=yes
@@ -110,6 +68,28 @@
AllowHybridSleep=yes
AllowSuspendThenHibernate=yes
'';
services.watt = {
enable = true;
settings = {
battery_charge_thresholds = [
40
80
];
};
};
services.upower.enable = true;
services.irqbalance = {
enable = true;
};
services.thermald = {
enable = true;
};
};
}

View File

@@ -5,7 +5,29 @@
...
}:
{
stylix.enable = true;
stylix.image = ./../../wallpapers/magicpattern-87PP9Zd7MNo-unsplash.jpg;
stylix = {
enable = true;
polarity = "dark";
homeManagerIntegration.followSystem = false;
base16Scheme = {
# scheme = "onedark";
# author = "https://github.com/one-dark";
base00 = "#282c34";
base01 = "#353b45";
base02 = "#3e4451";
base03 = "#545862";
base04 = "#565c64";
base05 = "#abb2bf";
base06 = "#b6bdca";
base07 = "#c8ccd4";
base08 = "#e06c75";
base09 = "#d19a66";
base0A = "#e6c07b";
base0B = "#98c379";
base0C = "#56b6c2";
base0D = "#61afef";
base0E = "#c678dd";
base0F = "#be5046";
};
};
}

View File

@@ -20,6 +20,7 @@ in
isNormalUser = true;
extraGroups = [
"wheel" # Enable sudo for the user.
"input"
# other groups are added as needed, eg. networkmanager
];
};

View File

@@ -1,4 +1,4 @@
{ config, pkgs, lib, ... }:
{ config, nixpkgs, lib, ... }:
with lib.hm.gvariant;
{
config = {
@@ -9,6 +9,9 @@ with lib.hm.gvariant;
scale = "1.6";
};
};
# quickshell = {
# enable = true;
# };
};
};
@@ -22,6 +25,7 @@ with lib.hm.gvariant;
../../modules/home-manager/documents.nix
../../modules/home-manager/fish.nix
../../modules/home-manager/flatpaks.nix
../../modules/home-manager/fusuma.nix
../../modules/home-manager/hypr
../../modules/home-manager/keepassxc.nix
../../modules/home-manager/kitty.nix
@@ -30,6 +34,7 @@ with lib.hm.gvariant;
../../modules/home-manager/notifications.nix
../../modules/home-manager/obsidian.nix
../../modules/home-manager/owncloud-client.nix
../../modules/home-manager/quickshell
../../modules/home-manager/ssh.nix
../../modules/home-manager/stylix.nix
../../modules/home-manager/thunderbird.nix