<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Ubuntu on Haseeb Majid</title>
    <link>https://haseebmajid.dev/tags/ubuntu/</link>
    <description>Recent content in Ubuntu on Haseeb Majid</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Fri, 12 Dec 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://haseebmajid.dev/tags/ubuntu/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How to Fix PAM Issues With Home Manager on Non-NixOS Setups</title>
      <link>https://haseebmajid.dev/posts/2025-12-12-how-to-fix-pam-issues-with-home-manager-on-non-nixos-setups/</link>
      <pubDate>Fri, 12 Dec 2025 00:00:00 +0000</pubDate>
      
      <guid>https://haseebmajid.dev/posts/2025-12-12-how-to-fix-pam-issues-with-home-manager-on-non-nixos-setups/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
The pam_shim is POC code, so be careful with using it on your own machine. Use it at your own risk.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;the-problem&#34;&gt;The problem&lt;/h2&gt;
&lt;p&gt;At work I have to use Ubuntu but I want to share my nix config between all my devices i.e. desktop and work laptop.
On my home setup I have been using Niri with Noctalia shell (quickshell) on NixOS. Everything works fine I can use
the Noctalia shell lock screen and can authenticate fine.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<blockquote>
<p>[!WARNING]
The pam_shim is POC code, so be careful with using it on your own machine. Use it at your own risk.</p>
</blockquote>
<h2 id="the-problem">The problem</h2>
<p>At work I have to use Ubuntu but I want to share my nix config between all my devices i.e. desktop and work laptop.
On my home setup I have been using Niri with Noctalia shell (quickshell) on NixOS. Everything works fine I can use
the Noctalia shell lock screen and can authenticate fine.</p>
<p>However when I tried to do that on my Ubuntu machine, it wouldn&rsquo;t let me log back in after locking the screen.
Remember everything is installed via Nix (home-manager).</p>
<h3 id="pam">PAM</h3>
<p>PAM is Linux&rsquo;s standard authentication framework. When you lock your screen and type your password, PAM handles the
authentication logic. It&rsquo;s called &ldquo;pluggable&rdquo; because system administrators can configure different authentication
methods (passwords, fingerprints, smart cards) without modifying applications.</p>
<h3 id="pam--nix">PAM &amp; Nix</h3>
<p>Nix packages are completely self-contained. When you install a package with Nix, it includes all its dependencies in <code>/nix/store/</code>.
But this creates a problem with PAM:</p>
<p>NixOS</p>
<pre tabindex="0"><code>Application → /nix/store/xxx-linux-pam/lib/libpam.so.2
           → /nix/store/yyy-pam-modules/lib/security/pam_unix.so
           → /etc/pam.d/ (managed by NixOS)
           → Authenticate ✅
</code></pre><p>Ubuntu</p>
<pre tabindex="0"><code>Application → /nix/store/xxx-linux-pam/lib/libpam.so.2
           → /nix/store/yyy-pam-modules/lib/security/pam_unix.so (doesn&#39;t exist!)
           → /etc/pam.d/ (managed by Ubuntu, expects different paths)
           → Authentication FAILS ❌
</code></pre><p>So we are locked out &ldquo;forever&rdquo; until we reboot, obviously not great. I know I hit this issue before with Hyprland
and hyprlock (or swaylock) and ended up installing them via apt and not Nix. But this time I wanted to avoid
doing that. I came across this <a href="https://github.com/nix-community/home-manager/issues/7027">issue</a>.</p>
<h2 id="solution">Solution</h2>
<p>We can use <code>pam_shim</code>, which creates a translation layer we can use. Whilst not breaking Nix&rsquo;s package isolation.</p>
<ol>
<li>
<p><strong>PAM Shim Library</strong>: <code>pam-shim</code> creates a wrapper library that intercepts PAM calls and redirects them to the host system&rsquo;s PAM library (<code>/lib/x86_64-linux-gnu/libpam.so.0</code> on Ubuntu)</p>
</li>
<li>
<p><strong>Patching</strong>: The <code>replacePam</code> function uses <code>patchelf</code> to replace PAM library references in the QuickShell binary with the shim library</p>
</li>
<li>
<p><strong>Runtime</strong>: When noctalia-shell&rsquo;s lock screen tries to authenticate:</p>
<ul>
<li>QuickShell calls PAM functions</li>
<li>Calls go through the shim library</li>
<li>Shim redirects to Ubuntu&rsquo;s native PAM</li>
<li>Authentication works against Ubuntu&rsquo;s PAM stack</li>
</ul>
</li>
</ol>
<pre tabindex="0"><code>QuickShell → pam_shim intercepts pam_authenticate()
        → fork() subprocess
        → exec /lib64/ld-linux-x86-64.so.2 (system dynamic linker)
        → loads /lib/x86_64-linux-gnu/libpam.so.0 (Ubuntu&#39;s native PAM)
        → reads /etc/pam.d/common-auth (Ubuntu&#39;s PAM config)
        → loads /lib/x86_64-linux-gnu/security/pam_unix.so (Ubuntu&#39;s PAM module)
        → checks /etc/shadow (system password database)
        → returns PAM_SUCCESS via IPC to pam_shim
        → pam_shim returns result to QuickShell
        → Authentication SUCCEEDS ✅
</code></pre><h2 id="fix">Fix</h2>
<p>update <code>flake.nix</code></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-nix" data-lang="nix"><span class="line"><span class="cl"><span class="c1"># PAM shim for non-NixOS systems</span>
</span></span><span class="line"><span class="cl"><span class="c1"># Using &#39;next&#39; branch for full libpam.so.0 API coverage</span>
</span></span><span class="line"><span class="cl"><span class="n">pam-shim</span> <span class="err">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="n">url</span> <span class="o">=</span> <span class="s2">&#34;github:Cu3PO42/pam_shim/next&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="n">inputs</span><span class="o">.</span><span class="n">nixpkgs</span><span class="o">.</span><span class="n">follows</span> <span class="o">=</span> <span class="s2">&#34;nixpkgs&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-nix" data-lang="nix"><span class="line"><span class="cl"><span class="n">inputs</span><span class="o">.</span><span class="n">pam-shim</span><span class="o">.</span><span class="n">homeModules</span><span class="o">.</span><span class="n">default</span>
</span></span></code></pre></div><p>In our non-NixOS system i.e. <code>modules/roles/non-nixos.nix</code></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-nix" data-lang="nix"><span class="line"><span class="cl"><span class="c1"># PAM authentication fix for non-NixOS</span>
</span></span><span class="line"><span class="cl"><span class="n">pamShim</span><span class="o">.</span><span class="n">enable</span> <span class="err">=</span> <span class="no">true</span><span class="p">;</span>
</span></span></code></pre></div><p>And add this overlay for all quickshell packages (what Noctalia shell uses). This will also work with other quickshells
like DankMaterialLinux.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-nix" data-lang="nix"><span class="line"><span class="cl"><span class="c1"># Override quickshell globally with PAM-shimmed version</span>
</span></span><span class="line"><span class="cl"><span class="n">nixpkgs</span><span class="o">.</span><span class="n">overlays</span> <span class="err">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">  <span class="p">(</span><span class="n">final</span><span class="p">:</span> <span class="n">prev</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="n">quickshell</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">pamShim</span><span class="o">.</span><span class="n">replacePam</span> <span class="n">prev</span><span class="o">.</span><span class="n">quickshell</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="p">})</span>
</span></span><span class="line"><span class="cl"><span class="p">];</span>
</span></span></code></pre></div><p>Where you have your noctalia-shell Nix config defined, i.e. <code>noctalia.nix</code>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-nix" data-lang="nix"><span class="line"><span class="cl"><span class="c1"># Noctalia shell with PAM shim for lock screen authentication</span>
</span></span><span class="line"><span class="cl"><span class="n">systemd</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">noctalia-shell</span> <span class="err">=</span> <span class="n">mkIf</span> <span class="n">config</span><span class="o">.</span><span class="n">desktops</span><span class="o">.</span><span class="n">addons</span><span class="o">.</span><span class="n">noctalia</span><span class="o">.</span><span class="n">enable</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl">  <span class="k">let</span>
</span></span><span class="line"><span class="cl">    <span class="n">shimmedQuickshell</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">pamShim</span><span class="o">.</span><span class="n">replacePam</span> <span class="n">pkgs</span><span class="o">.</span><span class="n">quickshell</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="k">in</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="n">Service</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="n">ExecStart</span> <span class="o">=</span> <span class="n">lib</span><span class="o">.</span><span class="n">mkForce</span> <span class="s2">&#34;</span><span class="si">${</span><span class="n">pkgs</span><span class="o">.</span><span class="n">writeShellScript</span> <span class="s2">&#34;noctalia-nixgl&#34;</span> <span class="s1">&#39;&#39;
</span></span></span><span class="line"><span class="cl"><span class="s1">        export PATH=&#34;</span><span class="si">${</span><span class="n">pkgs</span><span class="o">.</span><span class="n">wlsunset</span><span class="si">}</span><span class="s1">/bin:</span><span class="si">${</span><span class="n">pkgs</span><span class="o">.</span><span class="n">wl-clipboard</span><span class="si">}</span><span class="s1">/bin:</span><span class="si">${</span><span class="n">pkgs</span><span class="o">.</span><span class="n">cliphist</span><span class="si">}</span><span class="s1">/bin:</span><span class="si">${</span><span class="n">pkgs</span><span class="o">.</span><span class="n">coreutils</span><span class="si">}</span><span class="s1">/bin:</span><span class="si">${</span><span class="n">pkgs</span><span class="o">.</span><span class="n">gnugrep</span><span class="si">}</span><span class="s1">/bin:</span><span class="si">${</span><span class="n">pkgs</span><span class="o">.</span><span class="n">gnused</span><span class="si">}</span><span class="s1">/bin:</span><span class="si">${</span><span class="n">pkgs</span><span class="o">.</span><span class="n">bash</span><span class="si">}</span><span class="s1">/bin:/run/wrappers/bin:</span><span class="si">${</span><span class="n">config</span><span class="o">.</span><span class="n">home</span><span class="o">.</span><span class="n">profileDirectory</span><span class="si">}</span><span class="s1">/bin:/usr/bin:/bin&#34;
</span></span></span><span class="line"><span class="cl"><span class="s1">        exec </span><span class="si">${</span><span class="n">config</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">nixGL</span><span class="o">.</span><span class="n">wrap</span> <span class="n">shimmedQuickshell</span><span class="si">}</span><span class="s1">/bin/quickshell -p </span><span class="si">${</span><span class="n">config</span><span class="o">.</span><span class="n">programs</span><span class="o">.</span><span class="n">noctalia-shell</span><span class="o">.</span><span class="n">package</span><span class="si">}</span><span class="s1">/share/noctalia-shell
</span></span></span><span class="line"><span class="cl"><span class="s1">      &#39;&#39;</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">};</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">);</span>
</span></span></code></pre></div><h2 id="appendix">Appendix</h2>
<ul>
<li><a href="https://github.com/Cu3PO42/pam_shim">pam_shim Repository</a></li>
</ul>
]]></content:encoded>
    </item>
    
    <item>
      <title>TIL: How to Set the Path Variable When Using Ubuntu With Nix (Home Manager)</title>
      <link>https://haseebmajid.dev/posts/2023-11-25-til-how-to-set-the-path-variable-when-using-ubuntu-with-nix-home-manager/</link>
      <pubDate>Sat, 25 Nov 2023 00:00:00 +0000</pubDate>
      
      <guid>https://haseebmajid.dev/posts/2023-11-25-til-how-to-set-the-path-variable-when-using-ubuntu-with-nix-home-manager/</guid>
      <description>&lt;p&gt;&lt;strong&gt;TIL: How to Set the Path Variable When Using Ubuntu With Nix (Home Manager)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As per some of my recent articles, you will be aware I am using Hyprland (tiling manager) on Ubuntu and managing the
config using nix (home-manager). I was having issues where for some reason it wouldn&amp;rsquo;t set the &lt;code&gt;PATH&lt;/code&gt; variable correctly.&lt;/p&gt;
&lt;p&gt;On my NixOS machine, the following would be fine:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;bind&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;,XF86AudioRaiseVolume,exec, volume --inc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;bind&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;,XF86AudioLowerVolume,exec, volume --dec
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, on Ubuntu I needed to provide the full path:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><strong>TIL: How to Set the Path Variable When Using Ubuntu With Nix (Home Manager)</strong></p>
<p>As per some of my recent articles, you will be aware I am using Hyprland (tiling manager) on Ubuntu and managing the
config using nix (home-manager). I was having issues where for some reason it wouldn&rsquo;t set the <code>PATH</code> variable correctly.</p>
<p>On my NixOS machine, the following would be fine:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">bind</span><span class="o">=</span>,XF86AudioRaiseVolume,exec, volume --inc
</span></span><span class="line"><span class="cl"><span class="nv">bind</span><span class="o">=</span>,XF86AudioLowerVolume,exec, volume --dec
</span></span></code></pre></div><p>However, on Ubuntu I needed to provide the full path:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">bind</span><span class="o">=</span>,XF86AudioRaiseVolume,exec, <span class="si">${</span><span class="nv">volume</span><span class="si">}</span>/bin/volume --inc
</span></span></code></pre></div><p>So in the Hyprland config it would look like:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">bind</span><span class="o">=</span>,XF86AudioRaiseVolume,exec, /nix/store/q1wm84g65smaq4agq7zp40q57x3534ni-volume/bin/volume --inc
</span></span></code></pre></div><p>It was because the session was being started by GDM (gnome), and the <code>PATH</code> variable was not being set properly.
In Wayland GDM picks up environment variables from <code>~/.config/environment.d/envvars.conf</code> <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> so we can add it here.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">❯ bat ~/.config/environment.d/envvars.conf --plain
</span></span><span class="line"><span class="cl"><span class="nv">PATH</span><span class="o">=</span><span class="s2">&#34;</span><span class="nv">$PATH</span><span class="s2">:/home/haseebmajid/.nix-profile/bin&#34;</span>
</span></span></code></pre></div><p>Replace <code>haseebmajid</code> with your username (or I guess <code>$HOME</code> should work). This means when we run scripts now, it will
source them from this nix-profile folder. Where the binaries get symlinked, including the volume script above. So
now you don&rsquo;t need to specify the full path (though maybe you should 🤷)</p>
<h2 id="appendix">Appendix</h2>
<ul>
<li><a href="https://gitlab.com/hmajid2301/dotfiles/-/blob/9561a21fed329f25802290621a54588e314af1ee/home-manager/desktops/wms/hyprland.nix">Hyprland Config</a></li>
<li><a href="https://old.reddit.com/r/NixOS/comments/17rilhc/hyprlandsway_needs_full_path_to_scripts_on/">Reddit Thread</a></li>
<li><a href="https://discourse.nixos.org/t/hyprland-sway-need-full-path-to-scripts-on-non-nixos/35233">Discourse Thread</a></li>
</ul>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://wiki.archlinux.org/title/environment_variables#Graphical_environment">https://wiki.archlinux.org/title/environment_variables#Graphical_environment</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    
    <item>
      <title>How to Install Hyprland on Ubuntu (22.04)</title>
      <link>https://haseebmajid.dev/posts/2023-11-24-how-to-install-hyprland-on-ubuntu-22-04/</link>
      <pubDate>Fri, 24 Nov 2023 00:00:00 +0000</pubDate>
      
      <guid>https://haseebmajid.dev/posts/2023-11-24-how-to-install-hyprland-on-ubuntu-22-04/</guid>
      <description>&lt;p&gt;As you may know from my previous articles, my work laptop is an Ubuntu (22.04) laptop. However, on the rest of my devices
I use NixOS with Hyprland as my tiling window manager. I wanted to be able to use Hyprland on my laptop as well,
I tried using Sway and, it worked mostly pretty well, but it was yet another to manage and there were some slight
differences. Also, I like the animations on Hyprland 😅.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>As you may know from my previous articles, my work laptop is an Ubuntu (22.04) laptop. However, on the rest of my devices
I use NixOS with Hyprland as my tiling window manager. I wanted to be able to use Hyprland on my laptop as well,
I tried using Sway and, it worked mostly pretty well, but it was yet another to manage and there were some slight
differences. Also, I like the animations on Hyprland 😅.</p>
<p>So I had tried to work out how to install Hyprland on Ubuntu 22.04. I couldn&rsquo;t make it work via Nix/Home-manager.
There is this great gist for how to set it up on
<a href="https://gist.github.com/Vertecedoc4545/3b077301299c20c5b9b4db00f4ca6000">Ubuntu 23.04</a>. However, some of the versions
available to me in the Ubuntu repository didn&rsquo;t match the versions required by Hyprland. Hyprland is bleeding edge
and themselves say they do not officially support Ubuntu.</p>
<p>In that gist above, one of the comments <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> mentions <a href="https://pika-os.com/">Pika OS</a> which builds Debian packages
for Hyprland (and all of it dependencies). So we can add Pika OS as one of our sources and install Hyprland.
To achieve this, I downloaded the <a href="https://ppa.pika-os.com/dists/lunar/pika-sources.deb"><code>dists/lunar/pika-sources.deb</code></a> (Where I assume
Lunar is based on Lunar Lobster, Ubuntu 23.04).</p>
<p>First we can see what it is going to install and where, by doing:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">dpkg -c ./pika-sources.deb
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./etc/
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./etc/init.d/
</span></span><span class="line"><span class="cl">-rwxr-xr-x root/root       <span class="m">247</span> 2022-10-01 13:50 ./etc/init.d/calamares-sources-undo
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./etc/rc2.d/
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./etc/rc3.d/
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./etc/systemd/
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./etc/systemd/system/
</span></span><span class="line"><span class="cl">-rw-r--r-- root/root       <span class="m">522</span> 2022-10-01 13:50 ./etc/systemd/system/steam-repos-fix.service
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./usr/
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./usr/share/
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./usr/share/apt-pika/
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./usr/share/apt-pika/apt/
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./usr/share/apt-pika/apt/apt.conf.d/
</span></span><span class="line"><span class="cl">-rw-r--r-- root/root       <span class="m">146</span> 2022-10-01 13:50 ./usr/share/apt-pika/apt/apt.conf.d/99steam-launcher
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./usr/share/apt-pika/apt/keyrings/
</span></span><span class="line"><span class="cl">-rw-r--r-- root/root      <span class="m">1744</span> 2022-10-01 13:50 ./usr/share/apt-pika/apt/keyrings/pika-keyring.gpg.key
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./usr/share/apt-pika/apt/preferences.d/
</span></span><span class="line"><span class="cl">-rw-r--r-- root/root       <span class="m">282</span> 2022-10-01 13:50 ./usr/share/apt-pika/apt/preferences.d/0-pika-radeon-settings
</span></span><span class="line"><span class="cl">-rw-r--r-- root/root        <span class="m">91</span> 2022-10-01 13:50 ./usr/share/apt-pika/apt/preferences.d/1-pika-ubuntu-settings
</span></span><span class="line"><span class="cl">-rw-r--r-- root/root       <span class="m">102</span> 2022-10-01 13:50 ./usr/share/apt-pika/apt/sources.list
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./usr/share/apt-pika/apt/sources.list.d/
</span></span><span class="line"><span class="cl">-rw-r--r-- root/root       <span class="m">274</span> 2022-10-01 13:50 ./usr/share/apt-pika/apt/sources.list.d/system.sources
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./usr/share/doc/
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./usr/share/doc/pika-sources/
</span></span><span class="line"><span class="cl">-rw-r--r-- root/root       <span class="m">617</span> 2022-10-01 13:50 ./usr/share/doc/pika-sources/changelog.Debian.gz
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./usr/share/dpkg/
</span></span><span class="line"><span class="cl">drwxr-xr-x root/root         <span class="m">0</span> 2022-10-01 13:50 ./usr/share/dpkg/scripts/
</span></span><span class="line"><span class="cl">-rwxr-xr-x root/root       <span class="m">516</span> 2022-10-01 13:50 ./usr/share/dpkg/scripts/steam-launcher.sh
</span></span><span class="line"><span class="cl">-rwxr-xr-x root/root       <span class="m">643</span> 2022-10-01 13:50 ./usr/share/dpkg/scripts/steamdeps
</span></span><span class="line"><span class="cl">lrwxrwxrwx root/root         <span class="m">0</span> 2022-10-01 13:50 ./etc/rc2.d/S01calamares-sources-undo -&gt; ../init.d/calamares-sources-undo
</span></span><span class="line"><span class="cl">lrwxrwxrwx root/root         <span class="m">0</span> 2022-10-01 13:50 ./etc/rc3.d/S01calamares-sources-undo -&gt; ../init.d/calamares-sources-undo
</span></span></code></pre></div><p>The main file being <code>sources.list.d/system.sources</code> which will add the Pika repository a source to our (apt) package
manager. So after we download the pika-source file, we can then do:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Assuming you are in the folder where you downloaded pika-sources.deb</span>
</span></span><span class="line"><span class="cl">dpkg-deb --fsys-tarfile pika-sources.deb <span class="p">|</span> tar xv
</span></span><span class="line"><span class="cl">sudo xcp ./usr/share/apt/source.list.d/system.sources /etc/apt/sources.list.d/system.sources
</span></span><span class="line"><span class="cl">sudo apt update
</span></span><span class="line"><span class="cl">sudo apt install hyprland xdg-desktop-portal-hyprland -y
</span></span></code></pre></div><p>This will install Hyprland and the desktop portal, which will allow us to do things like screen share-specific windows
on apps like Google Meet.</p>
<p>Finally, you can also remove the Pika sources because in my case it wanted to upgrade 1600 packages as it uses
Ubuntu 23.04 as a base. So wants to update numerous packages. To achieve this we do: <code>sudo rm /etc/apt/sources.list.d/system.sources</code>.</p>
<p>That&rsquo;s It! You should now have Hyprland installed and when you reboot, you should be able to select Hyprland in the
GDM login screen, after selecting the user, click the settings and then select Hyprland. An example below showing different
versions of Gnome.</p>
<p> <sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<details
  class="notice caution"
  open="true"
>
    <summary class="notice-title">dpkg install</summary>
  
  I originally used <code>dpkg</code> to install the deb it will overwrite
your sources.list file. So make sure you revert back to the original version if you do that!
</details>

<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://gist.github.com/Vertecedoc4545/3b077301299c20c5b9b4db00f4ca6000?permalink_comment_id=4595603#gistcomment-4595603">https://gist.github.com/Vertecedoc4545/3b077301299c20c5b9b4db00f4ca6000?permalink_comment_id=4595603#gistcomment-4595603</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>Image Source: <a href="https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/">https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/</a>&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
